summaryrefslogtreecommitdiffhomepage
path: root/docs/examples
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2017-04-17 17:25:27 +0200
committerraysan5 <[email protected]>2017-04-17 17:25:27 +0200
commit4b8a0268ede4bd56a7b06fd2e2ea056f933f0f10 (patch)
treeaa91563c12ad9181b8ffe00ff2201c5ef7fce2ca /docs/examples
parent881f134f4d2fb4419d50382284e19b4f8ca4660e (diff)
downloadraylib-4b8a0268ede4bd56a7b06fd2e2ea056f933f0f10.tar.gz
raylib-4b8a0268ede4bd56a7b06fd2e2ea056f933f0f10.zip
Added physac examples to web
Some tweaks on original src files
Diffstat (limited to 'docs/examples')
-rw-r--r--docs/examples/src/physac/physics_demo.c2
-rw-r--r--docs/examples/src/physac/physics_friction.c2
-rw-r--r--docs/examples/src/physac/physics_movement.c2
-rw-r--r--docs/examples/src/physac/physics_restitution.c2
-rw-r--r--docs/examples/src/physac/physics_shatter.c2
-rw-r--r--docs/examples/web/makefile10
-rw-r--r--docs/examples/web/physac/physics_demo.c187
-rw-r--r--docs/examples/web/physac/physics_demo.js15134
-rw-r--r--docs/examples/web/physac/physics_friction.c181
-rw-r--r--docs/examples/web/physac/physics_friction.js15204
-rw-r--r--docs/examples/web/physac/physics_movement.c168
-rw-r--r--docs/examples/web/physac/physics_movement.js15122
-rw-r--r--docs/examples/web/physac/physics_restitution.c174
-rw-r--r--docs/examples/web/physac/physics_restitution.js15175
-rw-r--r--docs/examples/web/physac/physics_shatter.c159
-rw-r--r--docs/examples/web/physac/physics_shatter.js15078
-rw-r--r--docs/examples/web/physac/pthread-main.js115
17 files changed, 55064 insertions, 21653 deletions
diff --git a/docs/examples/src/physac/physics_demo.c b/docs/examples/src/physac/physics_demo.c
index 9bf04d50..55588363 100644
--- a/docs/examples/src/physac/physics_demo.c
+++ b/docs/examples/src/physac/physics_demo.c
@@ -119,7 +119,7 @@ int main()
// De-Initialization
//--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
+ ClosePhysics(); // Uninitialize physics
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
diff --git a/docs/examples/src/physac/physics_friction.c b/docs/examples/src/physac/physics_friction.c
index 25f31d3f..6ce1d406 100644
--- a/docs/examples/src/physac/physics_friction.c
+++ b/docs/examples/src/physac/physics_friction.c
@@ -133,7 +133,7 @@ int main()
// De-Initialization
//--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
+ ClosePhysics(); // Uninitialize physics
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
diff --git a/docs/examples/src/physac/physics_movement.c b/docs/examples/src/physac/physics_movement.c
index f81316ed..534997bf 100644
--- a/docs/examples/src/physac/physics_movement.c
+++ b/docs/examples/src/physac/physics_movement.c
@@ -119,7 +119,7 @@ int main()
// De-Initialization
//--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
+ ClosePhysics(); // Uninitialize physics
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
diff --git a/docs/examples/src/physac/physics_restitution.c b/docs/examples/src/physac/physics_restitution.c
index d58ec6e3..0809697c 100644
--- a/docs/examples/src/physac/physics_restitution.c
+++ b/docs/examples/src/physac/physics_restitution.c
@@ -112,7 +112,7 @@ int main()
// De-Initialization
//--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
+ ClosePhysics(); // Uninitialize physics
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
diff --git a/docs/examples/src/physac/physics_shatter.c b/docs/examples/src/physac/physics_shatter.c
index 4e3b0cb6..b237bfca 100644
--- a/docs/examples/src/physac/physics_shatter.c
+++ b/docs/examples/src/physac/physics_shatter.c
@@ -104,7 +104,7 @@ int main()
// De-Initialization
//--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
+ ClosePhysics(); // Uninitialize physics
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
diff --git a/docs/examples/web/makefile b/docs/examples/web/makefile
index 8771555a..bdf32bee 100644
--- a/docs/examples/web/makefile
+++ b/docs/examples/web/makefile
@@ -577,23 +577,23 @@ audio/audio_raw_stream: audio/audio_raw_stream.c
# compile [physac] example - physics demo
physac/physics_demo: physac/physics_demo.c
- $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL)
+ $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) -s USE_PTHREADS=1
# compile [physac] example - physics friction
physac/physics_friction: physac/physics_friction.c
- $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL)
+ $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) -s USE_PTHREADS=1
# compile [physac] example - physics movement
physac/physics_movement: physac/physics_movement.c
- $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL)
+ $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) -s USE_PTHREADS=1
# compile [physac] example - physics restitution
physac/physics_restitution: physac/physics_restitution.c
- $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL)
+ $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) -s USE_PTHREADS=1
# compile [physac] example - physics shatter
physac/physics_shatter: physac/physics_shatter.c
- $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL)
+ $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -static -lpthread -D$(PLATFORM) $(WINFLAGS) $(WEB_SHELL) -s USE_PTHREADS=1
# fix dylib install path name for each executable (MAC)
fix_dylib:
diff --git a/docs/examples/web/physac/physics_demo.c b/docs/examples/web/physac/physics_demo.c
index b12ac708..0c17fc31 100644
--- a/docs/examples/web/physac/physics_demo.c
+++ b/docs/examples/web/physac/physics_demo.c
@@ -2,9 +2,11 @@
*
* Physac - Physics demo
*
-* NOTE: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 1: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 2: Physac requires static C library linkage to avoid dependency on MinGW DLL (-static -lpthread)
+*
+* Use the following line to compile:
*
-* Use the following code to compile (-static -lpthread):
* gcc -o $(NAME_PART).exe $(FILE_NAME) -s $(RAYLIB_DIR)\raylib\raylib_icon -static -lraylib -lpthread
* -lglfw3 -lopengl32 -lgdi32 -lopenal32 -lwinmm -std=c99 -Wl,--subsystem,windows -Wl,-allow-multiple-definition
*
@@ -15,111 +17,148 @@
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
-#include "../src/physac.h"
+#include "physac.h"
+
+#if defined(PLATFORM_WEB)
+ #include <emscripten/emscripten.h>
+#endif
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+int screenWidth = 800;
+int screenHeight = 450;
+
+// Physac logo drawing position
+int logoX = 0;
+int logoY = 15;
+
+PhysicsBody ground;
+PhysicsBody circle;
+
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void); // Update and Draw one frame
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 450;
-
SetConfigFlags(FLAG_MSAA_4X_HINT);
InitWindow(screenWidth, screenHeight, "Physac [raylib] - Physics demo");
SetTargetFPS(60);
-
- // Physac logo drawing position
- int logoX = screenWidth - MeasureText("Physac", 30) - 10;
- int logoY = 15;
+
+ logoX = screenWidth - MeasureText("Physac", 30) - 10;
// Initialize physics and default physics bodies
InitPhysics();
// Create floor rectangle physics body
- PhysicsBody floor = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, 500, 100, 10);
- floor->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
+ ground = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, 500, 100, 10);
+ ground->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
// Create obstacle circle physics body
- PhysicsBody circle = CreatePhysicsBodyCircle((Vector2){ screenWidth/2, screenHeight/2 }, 45, 10);
+ circle = CreatePhysicsBodyCircle((Vector2){ screenWidth/2, screenHeight/2 }, 45, 10);
circle->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
- //--------------------------------------------------------------------------------------
+#if defined(PLATFORM_WEB)
+ emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
- // Update
- //----------------------------------------------------------------------------------
- if (IsKeyPressed('R')) // Reset physics input
- {
- ResetPhysics();
+ UpdateDrawFrame();
+ }
+#endif
- floor = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, 500, 100, 10);
- floor->enabled = false;
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ ClosePhysics(); // Uninitialize physics
- circle = CreatePhysicsBodyCircle((Vector2){ screenWidth/2, screenHeight/2 }, 45, 10);
- circle->enabled = false;
- }
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
- // Physics body creation inputs
- if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) CreatePhysicsBodyPolygon(GetMousePosition(), GetRandomValue(20, 80), GetRandomValue(3, 8), 10);
- else if (IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)) CreatePhysicsBodyCircle(GetMousePosition(), GetRandomValue(10, 45), 10);
+ return 0;
+}
- // Destroy falling physics bodies
- int bodiesCount = GetPhysicsBodiesCount();
- for (int i = bodiesCount - 1; i >= 0; i--)
- {
- PhysicsBody body = GetPhysicsBody(i);
- if (body != NULL && (body->position.y > screenHeight*2)) DestroyPhysicsBody(body);
- }
- //----------------------------------------------------------------------------------
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+ // Update
+ //----------------------------------------------------------------------------------
+ if (IsKeyPressed('R')) // Reset physics input
+ {
+ ResetPhysics();
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
+ ground = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, 500, 100, 10);
+ ground->enabled = false;
- ClearBackground(BLACK);
+ circle = CreatePhysicsBodyCircle((Vector2){ screenWidth/2, screenHeight/2 }, 45, 10);
+ circle->enabled = false;
+ }
- DrawFPS(screenWidth - 90, screenHeight - 30);
+ // Physics body creation inputs
+ if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) CreatePhysicsBodyPolygon(GetMousePosition(), GetRandomValue(20, 80), GetRandomValue(3, 8), 10);
+ else if (IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)) CreatePhysicsBodyCircle(GetMousePosition(), GetRandomValue(10, 45), 10);
- // Draw created physics bodies
- bodiesCount = GetPhysicsBodiesCount();
- for (int i = 0; i < bodiesCount; i++)
- {
- PhysicsBody body = GetPhysicsBody(i);
+ // Destroy falling physics bodies
+ int bodiesCount = GetPhysicsBodiesCount();
+
+ for (int i = bodiesCount - 1; i >= 0; i--)
+ {
+ PhysicsBody body = GetPhysicsBody(i);
+ if (body != NULL && (body->position.y > screenHeight*2)) DestroyPhysicsBody(body);
+ }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
- if (body != NULL)
+ ClearBackground(BLACK);
+
+ DrawFPS(screenWidth - 90, screenHeight - 30);
+
+ // Draw created physics bodies
+ bodiesCount = GetPhysicsBodiesCount();
+
+ for (int i = 0; i < bodiesCount; i++)
+ {
+ PhysicsBody body = GetPhysicsBody(i);
+
+ if (body != NULL)
+ {
+ int vertexCount = GetPhysicsShapeVerticesCount(i);
+ for (int j = 0; j < vertexCount; j++)
{
- int vertexCount = GetPhysicsShapeVerticesCount(i);
- for (int j = 0; j < vertexCount; j++)
- {
- // Get physics bodies shape vertices to draw lines
- // Note: GetPhysicsShapeVertex() already calculates rotation transformations
- Vector2 vertexA = GetPhysicsShapeVertex(body, j);
-
- int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
- Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
-
- DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
- }
+ // Get physics bodies shape vertices to draw lines
+ // Note: GetPhysicsShapeVertex() already calculates rotation transformations
+ Vector2 vertexA = GetPhysicsShapeVertex(body, j);
+
+ int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
+ Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
+
+ DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
}
}
+ }
- DrawText("Left mouse button to create a polygon", 10, 10, 10, WHITE);
- DrawText("Right mouse button to create a circle", 10, 25, 10, WHITE);
- DrawText("Press 'R' to reset example", 10, 40, 10, WHITE);
-
- DrawText("Physac", logoX, logoY, 30, WHITE);
- DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
+ DrawText("Left mouse button to create a polygon", 10, 10, 10, WHITE);
+ DrawText("Right mouse button to create a circle", 10, 25, 10, WHITE);
+ DrawText("Press 'R' to reset example", 10, 40, 10, WHITE);
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
+ DrawText("Physac", logoX, logoY, 30, WHITE);
+ DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
- // De-Initialization
- //--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
+ EndDrawing();
+ //----------------------------------------------------------------------------------
}
diff --git a/docs/examples/web/physac/physics_demo.js b/docs/examples/web/physac/physics_demo.js
index 81550e5f..d543eca6 100644
--- a/docs/examples/web/physac/physics_demo.js
+++ b/docs/examples/web/physac/physics_demo.js
@@ -59,6 +59,11 @@ if (Module['ENVIRONMENT']) {
ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
}
+var ENVIRONMENT_IS_PTHREAD;
+if (!ENVIRONMENT_IS_PTHREAD) ENVIRONMENT_IS_PTHREAD = false; // ENVIRONMENT_IS_PTHREAD=true will have been preset in pthread-main.js. Make it false in the main runtime thread.
+var PthreadWorkerInit; // Collects together variables that are needed at initialization time for the web workers that host pthreads.
+if (!ENVIRONMENT_IS_PTHREAD) PthreadWorkerInit = {};
+var currentScriptUrl = ENVIRONMENT_IS_WORKER ? undefined : document.currentScript.src;
if (ENVIRONMENT_IS_NODE) {
// Expose functionality in the same simple way that the shells work
@@ -1178,9 +1183,14 @@ var STATIC_BASE, STATICTOP, staticSealed; // static area
var STACK_BASE, STACKTOP, STACK_MAX; // stack area
var DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk
+if (!ENVIRONMENT_IS_PTHREAD) { // Pthreads have already initialized these variables in src/pthread-main.js, where they were passed to the thread worker at startup time
STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;
staticSealed = false;
+}
+if (ENVIRONMENT_IS_PTHREAD) {
+ staticSealed = true; // The static memory area has been initialized already in the main thread, pthreads skip this.
+}
// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode.
function writeStackCookie() {
@@ -1207,7 +1217,7 @@ function abortOnCannotGrowMemory() {
function enlargeMemory() {
- abortOnCannotGrowMemory();
+ abort('Cannot enlarge memory arrays, since compiling with pthreads support enabled (-s USE_PTHREADS=1).');
}
@@ -1221,27 +1231,69 @@ assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined'
'JS engine does not provide full typed array support');
-
-// Use a provided buffer, if there is one, or else allocate a new one
-if (Module['buffer']) {
- buffer = Module['buffer'];
- assert(buffer.byteLength === TOTAL_MEMORY, 'provided buffer should be ' + TOTAL_MEMORY + ' bytes, but it is ' + buffer.byteLength);
+if (typeof SharedArrayBuffer !== 'undefined') {
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new SharedArrayBuffer(TOTAL_MEMORY);
+ // Currently SharedArrayBuffer does not have a slice() operation, so polyfill it in.
+ // Adapted from https://github.com/ttaubert/node-arraybuffer-slice, (c) 2014 Tim Taubert <[email protected]>
+ // arraybuffer-slice may be freely distributed under the MIT license.
+ (function (undefined) {
+ "use strict";
+ function clamp(val, length) {
+ val = (val|0) || 0;
+ if (val < 0) return Math.max(val + length, 0);
+ return Math.min(val, length);
+ }
+ if (typeof SharedArrayBuffer !== 'undefined' && !SharedArrayBuffer.prototype.slice) {
+ SharedArrayBuffer.prototype.slice = function (from, to) {
+ var length = this.byteLength;
+ var begin = clamp(from, length);
+ var end = length;
+ if (to !== undefined) end = clamp(to, length);
+ if (begin > end) return new ArrayBuffer(0);
+ var num = end - begin;
+ var target = new ArrayBuffer(num);
+ var targetArray = new Uint8Array(target);
+ var sourceArray = new Uint8Array(this, begin, num);
+ targetArray.set(sourceArray);
+ return target;
+ };
+ }
+ })();
} else {
- // Use a WebAssembly memory where available
- {
- buffer = new ArrayBuffer(TOTAL_MEMORY);
- }
- assert(buffer.byteLength === TOTAL_MEMORY);
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new ArrayBuffer(TOTAL_MEMORY);
}
updateGlobalBufferViews();
+if (typeof Atomics === 'undefined') {
+ // Polyfill singlethreaded atomics ops from http://lars-t-hansen.github.io/ecmascript_sharedmem/shmem.html#Atomics.add
+ // No thread-safety needed since we don't have multithreading support.
+ Atomics = {};
+ Atomics['add'] = function(t, i, v) { var w = t[i]; t[i] += v; return w; }
+ Atomics['and'] = function(t, i, v) { var w = t[i]; t[i] &= v; return w; }
+ Atomics['compareExchange'] = function(t, i, e, r) { var w = t[i]; if (w == e) t[i] = r; return w; }
+ Atomics['exchange'] = function(t, i, v) { var w = t[i]; t[i] = v; return w; }
+ Atomics['wait'] = function(t, i, v, o) { if (t[i] != v) return 'not-equal'; else return 'timed-out'; }
+ Atomics['wake'] = function(t, i, c) { return 0; }
+ Atomics['wakeOrRequeue'] = function(t, i1, c, i2, v) { return 0; }
+ Atomics['isLockFree'] = function(s) { return true; }
+ Atomics['load'] = function(t, i) { return t[i]; }
+ Atomics['or'] = function(t, i, v) { var w = t[i]; t[i] |= v; return w; }
+ Atomics['store'] = function(t, i, v) { t[i] = v; return v; }
+ Atomics['sub'] = function(t, i, v) { var w = t[i]; t[i] -= v; return w; }
+ Atomics['xor'] = function(t, i, v) { var w = t[i]; t[i] ^= v; return w; }
+}
+
function getTotalMemory() {
return TOTAL_MEMORY;
}
// Endianness check (note: assumes compiler arch was little-endian)
+if (!ENVIRONMENT_IS_PTHREAD) {
HEAP32[0] = 0x63736d65; /* 'emsc' */
+} else {
+ if (HEAP32[0] !== 0x63736d65) throw 'Runtime error: The application has corrupted its heap memory area (address zero)!';
+}
HEAP16[1] = 0x6373;
if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!';
@@ -1285,8 +1337,10 @@ var __ATPOSTRUN__ = []; // functions called after the runtime has exited
var runtimeInitialized = false;
var runtimeExited = false;
+if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true; // The runtime is hosted in the main thread, and bits shared to pthreads via SharedArrayBuffer. No need to init again in pthread.
function preRun() {
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['preRun'] at this time
if (Module['preRun']) {
if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
@@ -1299,6 +1353,7 @@ function preRun() {
function ensureInitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
@@ -1306,17 +1361,20 @@ function ensureInitRuntime() {
function preMain() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATEXIT__);
runtimeExited = true;
}
function postRun() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['postRun'] at this time
if (Module['postRun']) {
if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
@@ -1435,6 +1493,18 @@ function reSign(value, bits, ignore) {
return value;
}
+// Atomics.exchange is not yet implemented in the spec, so polyfill that in via compareExchange in the meanwhile.
+// TODO: Keep an eye out for the opportunity to remove this once Atomics.exchange is available.
+if (typeof Atomics !== 'undefined' && !Atomics['exchange']) {
+ Atomics['exchange'] = function(heap, index, val) {
+ var oldVal, oldVal2;
+ do {
+ oldVal = Atomics['load'](heap, index);
+ oldVal2 = Atomics['compareExchange'](heap, index, oldVal, val);
+ } while(oldVal != oldVal2);
+ return oldVal;
+ }
+}
// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
@@ -1504,6 +1574,9 @@ function getUniqueRunDependency(id) {
}
function addRunDependency(id) {
+ // We should never get here in pthreads (could no-op this out if called in pthreads, but that might indicate a bug in caller side,
+ // so good to be very explicit)
+ assert(!ENVIRONMENT_IS_PTHREAD);
runDependencies++;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
@@ -1572,52 +1645,43 @@ var memoryInitializer = null;
-var /* show errors on likely calls to FS when it was not included */ FS = {
- error: function() {
- abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1');
- },
- init: function() { FS.error() },
- createDataFile: function() { FS.error() },
- createPreloadedFile: function() { FS.error() },
- createLazyFile: function() { FS.error() },
- open: function() { FS.error() },
- mkdev: function() { FS.error() },
- registerDevice: function() { FS.error() },
- analyzePath: function() { FS.error() },
- loadFilesFromDB: function() { FS.error() },
-
- ErrnoError: function ErrnoError() { FS.error() },
-};
-Module['FS_createDataFile'] = FS.createDataFile;
-Module['FS_createPreloadedFile'] = FS.createPreloadedFile;
// === Body ===
-var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } }];
+var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } },
+ function() { postMessage({ cmd: 'processQueuedMainThreadWork' }) }];
function _emscripten_asm_const_iii(code, a0, a1) {
return ASM_CONSTS[code](a0, a1);
}
+function _emscripten_asm_const_v(code) {
+ return ASM_CONSTS[code]();
+}
+
STATIC_BASE = 8;
-STATICTOP = STATIC_BASE + 36064;
- /* global initializers */ __ATINIT__.push();
+STATICTOP = STATIC_BASE + 38384;
+ /* global initializers */ if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({ func: function() { ___emscripten_pthread_data_constructor() } });
-/* memory initializer */ allocate([32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,12,0,0,5,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,1,0,0,0,2,0,0,0,223,136,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,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,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,100,101,109,111,0,80,104,121,115,97,99,0,76,101,102,116,32,109,111,117,115,101,32,98,117,116,116,111,110,32,116,111,32,99,114,101,97,116,101,32,97,32,112,111,108,121,103,111,110,0,82,105,103,104,116,32,109,111,117,115,101,32,98,117,116,116,111,110,32,116,111,32,99,114,101,97,116,101,32,97,32,99,105,114,99,108,101,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
-/* memory initializer */ allocate([111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+if (!ENVIRONMENT_IS_PTHREAD) {
+/* memory initializer */ allocate([32,3,0,0,194,1,0,0,15,0,0,0,32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,180,11,0,0,5,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,1,0,0,0,2,0,0,0,235,145,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,100,101,109,111,0,80,104,121,115,97,99,0,76,101,102,116,32,109,111,117,115,101,32,98,117,116,116,111,110,32,116,111,32,99,114,101,97,116,101,32,97,32,112,111,108,121,103,111,110,0,82,105,103,104,116,32,109,111,117,115,101,32,98,117,116,116,111,110,32,116,111,32,99,114,101,97,116,101,32,97,32,99,105,114,99,108,101,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
+/* memory initializer */ allocate([65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,101,109,115,99,114,105,112,116,101,110,95,105,115,95,109,97,105,110,95,114,117,110,116,105,109,101,95,116,104,114,101,97,100,40,41,32,38,38,32,34,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,32,109,117,115,116,32,98,101,32,99,97,108,108,101,100,32,102,114,111,109,32,116,104,101,32,109,97,105,110,32,116,104,114,101,97,100,33,34,0,67,58,92,101,109,115,100,107,92,101,109,115,99,114,105,112,116,101,110,92,49,46,51,55,46,57,92,115,121,115,116,101,109,92,108,105,98,92,112,116,104,114,101,97,100,92,108,105,98,114,97,114,121,95,112,116,104,114,101,97,100,46,99,0,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,0,48,32,38,38,32,34,73,110,118,97,108,105,100,32,69,109,115,99,114,105,112,116,101,110,32,112,116,104,114,101,97,100,32,95,100,111,95,99,97,108,108,32,111,112,99,111,100,101,33,34,0,95,100,111,95,99,97,108,108,0,99,97,108,108,0,101,109,115,99,114,105,112,116,101,110,95,97,115,121,110,99,95,114,117,110,95,105,110,95,109,97,105,110,95,116,104,114,101,97,100,0,112,111,115,116,77,101,115,115,97,103,101,40,123,32,99,109,100,58,32,39,112,114,111,99,101,115,115,81,117,101,117,101,100,77,97,105,110,84,104,114,101,97,100,87,111,114,107,39,32,125,41,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+}
/* no memory initializer */
-var tempDoublePtr = STATICTOP; STATICTOP += 16;
+var tempDoublePtr;
+
+if (!ENVIRONMENT_IS_PTHREAD) tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
@@ -1880,6 +1944,8 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilMaskSeparate(x0, x1) { GLctx['stencilMaskSeparate'](x0, x1) }
+ function ___pthread_setcancelstate() { return 0 }
+
function _emscripten_get_now() { abort() }
@@ -3360,13 +3426,3061 @@ function copyTempDouble(ptr) {
}
- var SYSCALLS={varargs:0,get:function (varargs) {
+
+
+ var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
+
+ var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
+
+ function ___setErrNo(value) {
+ if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
+ else Module.printErr('failed to set errno from JS');
+ return value;
+ }
+
+ var PATH={splitPath:function (filename) {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1);
+ },normalizeArray:function (parts, allowAboveRoot) {
+ // if the path tries to go above the root, `up` ends up > 0
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === '.') {
+ parts.splice(i, 1);
+ } else if (last === '..') {
+ parts.splice(i, 1);
+ up++;
+ } else if (up) {
+ parts.splice(i, 1);
+ up--;
+ }
+ }
+ // if the path is allowed to go above the root, restore leading ..s
+ if (allowAboveRoot) {
+ for (; up--; up) {
+ parts.unshift('..');
+ }
+ }
+ return parts;
+ },normalize:function (path) {
+ var isAbsolute = path.charAt(0) === '/',
+ trailingSlash = path.substr(-1) === '/';
+ // Normalize the path
+ path = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), !isAbsolute).join('/');
+ if (!path && !isAbsolute) {
+ path = '.';
+ }
+ if (path && trailingSlash) {
+ path += '/';
+ }
+ return (isAbsolute ? '/' : '') + path;
+ },dirname:function (path) {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ // No dirname whatsoever
+ return '.';
+ }
+ if (dir) {
+ // It has a dirname, strip trailing slash
+ dir = dir.substr(0, dir.length - 1);
+ }
+ return root + dir;
+ },basename:function (path) {
+ // EMSCRIPTEN return '/'' for '/', not an empty string
+ if (path === '/') return '/';
+ var lastSlash = path.lastIndexOf('/');
+ if (lastSlash === -1) return path;
+ return path.substr(lastSlash+1);
+ },extname:function (path) {
+ return PATH.splitPath(path)[3];
+ },join:function () {
+ var paths = Array.prototype.slice.call(arguments, 0);
+ return PATH.normalize(paths.join('/'));
+ },join2:function (l, r) {
+ return PATH.normalize(l + '/' + r);
+ },resolve:function () {
+ var resolvedPath = '',
+ resolvedAbsolute = false;
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = (i >= 0) ? arguments[i] : FS.cwd();
+ // Skip empty and invalid entries
+ if (typeof path !== 'string') {
+ throw new TypeError('Arguments to path.resolve must be strings');
+ } else if (!path) {
+ return ''; // an invalid portion invalidates the whole thing
+ }
+ resolvedPath = path + '/' + resolvedPath;
+ resolvedAbsolute = path.charAt(0) === '/';
+ }
+ // At this point the path should be resolved to a full absolute path, but
+ // handle relative paths to be safe (might happen when process.cwd() fails)
+ resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
+ return !!p;
+ }), !resolvedAbsolute).join('/');
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+ },relative:function (from, to) {
+ from = PATH.resolve(from).substr(1);
+ to = PATH.resolve(to).substr(1);
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== '') break;
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== '') break;
+ }
+ if (start > end) return [];
+ return arr.slice(start, end - start + 1);
+ }
+ var fromParts = trim(from.split('/'));
+ var toParts = trim(to.split('/'));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break;
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push('..');
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join('/');
+ }};
+
+ var TTY={ttys:[],init:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // currently, FS.init does not distinguish if process.stdin is a file or TTY
+ // // device, it always assumes it's a TTY device. because of this, we're forcing
+ // // process.stdin to UTF8 encoding to at least make stdin reading compatible
+ // // with text files until FS.init can be refactored.
+ // process['stdin']['setEncoding']('utf8');
+ // }
+ },shutdown:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
+ // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
+ // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
+ // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
+ // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
+ // process['stdin']['pause']();
+ // }
+ },register:function (dev, ops) {
+ TTY.ttys[dev] = { input: [], output: [], ops: ops };
+ FS.registerDevice(dev, TTY.stream_ops);
+ },stream_ops:{open:function (stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ stream.tty = tty;
+ stream.seekable = false;
+ },close:function (stream) {
+ // flush any pending line data
+ stream.tty.ops.flush(stream.tty);
+ },flush:function (stream) {
+ stream.tty.ops.flush(stream.tty);
+ },read:function (stream, buffer, offset, length, pos /* ignored */) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ for (var i = 0; i < length; i++) {
+ try {
+ stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }},default_tty_ops:{get_char:function (tty) {
+ if (!tty.input.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ // we will read data by chunks of BUFSIZE
+ var BUFSIZE = 256;
+ var buf = new Buffer(BUFSIZE);
+ var bytesRead = 0;
+
+ var isPosixPlatform = (process.platform != 'win32'); // Node doesn't offer a direct check, so test by exclusion
+
+ var fd = process.stdin.fd;
+ if (isPosixPlatform) {
+ // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync)
+ var usingDevice = false;
+ try {
+ fd = fs.openSync('/dev/stdin', 'r');
+ usingDevice = true;
+ } catch (e) {}
+ }
+
+ try {
+ bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
+ } catch(e) {
+ // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes,
+ // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0.
+ if (e.toString().indexOf('EOF') != -1) bytesRead = 0;
+ else throw e;
+ }
+
+ if (usingDevice) { fs.closeSync(fd); }
+ if (bytesRead > 0) {
+ result = buf.slice(0, bytesRead).toString('utf-8');
+ } else {
+ result = null;
+ }
+
+ } else if (typeof window != 'undefined' &&
+ typeof window.prompt == 'function') {
+ // Browser.
+ result = window.prompt('Input: '); // returns null on cancel
+ if (result !== null) {
+ result += '\n';
+ }
+ } else if (typeof readline == 'function') {
+ // Command line.
+ result = readline();
+ if (result !== null) {
+ result += '\n';
+ }
+ }
+ if (!result) {
+ return null;
+ }
+ tty.input = intArrayFromString(result, true);
+ }
+ return tty.input.shift();
+ },put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle.
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }},default_tty1_ops:{put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val);
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }}};
+
+ var MEMFS={ops_table:null,mount:function (mount) {
+ return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ // no supported
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (!MEMFS.ops_table) {
+ MEMFS.ops_table = {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap,
+ msync: MEMFS.stream_ops.msync
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ }
+ };
+ }
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {};
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity.
+ // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
+ // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
+ // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
+ node.contents = null;
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream;
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream;
+ }
+ node.timestamp = Date.now();
+ // add the new node to the parent
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },getFileDataAsRegularArray:function (node) {
+ if (node.contents && node.contents.subarray) {
+ var arr = [];
+ for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
+ return arr; // Returns a copy of the original data.
+ }
+ return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
+ },getFileDataAsTypedArray:function (node) {
+ if (!node.contents) return new Uint8Array;
+ if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
+ return new Uint8Array(node.contents);
+ },expandFileStorage:function (node, newCapacity) {
+ // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
+ // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
+ // increase the size.
+ if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
+ node.contents = MEMFS.getFileDataAsRegularArray(node);
+ node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
+ }
+
+ if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well.
+ var prevCapacity = node.contents ? node.contents.length : 0;
+ if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
+ // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
+ // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
+ // avoid overshooting the allocation cap by a very large margin.
+ var CAPACITY_DOUBLING_MAX = 1024 * 1024;
+ newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);
+ if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newCapacity); // Allocate new storage.
+ if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
+ return;
+ }
+ // Not using a typed array to back the file storage. Use a standard JS array instead.
+ if (!node.contents && newCapacity > 0) node.contents = [];
+ while (node.contents.length < newCapacity) node.contents.push(0);
+ },resizeFileStorage:function (node, newSize) {
+ if (node.usedBytes == newSize) return;
+ if (newSize == 0) {
+ node.contents = null; // Fully decommit when requesting a resize to zero.
+ node.usedBytes = 0;
+ return;
+ }
+ if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
+ if (oldContents) {
+ node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.
+ }
+ node.usedBytes = newSize;
+ return;
+ }
+ // Backing with a JS array.
+ if (!node.contents) node.contents = [];
+ if (node.contents.length > newSize) node.contents.length = newSize;
+ else while (node.contents.length < newSize) node.contents.push(0);
+ node.usedBytes = newSize;
+ },node_ops:{getattr:function (node) {
+ var attr = {};
+ // device numbers reuse inode numbers.
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096;
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.usedBytes;
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length;
+ } else {
+ attr.size = 0;
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
+ // but this is not required by the standard.
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr;
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ if (attr.size !== undefined) {
+ MEMFS.resizeFileStorage(node, attr.size);
+ }
+ },lookup:function (parent, name) {
+ throw FS.genericErrors[ERRNO_CODES.ENOENT];
+ },mknod:function (parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev);
+ },rename:function (old_node, new_dir, new_name) {
+ // if we're overwriting a directory at new_name, make sure it's empty.
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ }
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ }
+ }
+ // do the internal rewiring
+ delete old_node.parent.contents[old_node.name];
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ old_node.parent = new_dir;
+ },unlink:function (parent, name) {
+ delete parent.contents[name];
+ },rmdir:function (parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ delete parent.contents[name];
+ },readdir:function (node) {
+ var entries = ['.', '..']
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
+ node.link = oldpath;
+ return node;
+ },readlink:function (node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return node.link;
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= stream.node.usedBytes) return 0;
+ var size = Math.min(stream.node.usedBytes - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) { // non-trivial, and typed array
+ buffer.set(contents.subarray(position, position + size), offset);
+ } else {
+ for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
+ }
+ return size;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (!length) return 0;
+ var node = stream.node;
+ node.timestamp = Date.now();
+
+ if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array?
+ if (canOwn) {
+ assert(position === 0, 'canOwn must imply no weird position inside the file');
+ node.contents = buffer.subarray(offset, offset + length);
+ node.usedBytes = length;
+ return length;
+ } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
+ node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
+ node.usedBytes = length;
+ return length;
+ } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ return length;
+ }
+ }
+
+ // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
+ MEMFS.expandFileStorage(node, position+length);
+ if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.
+ else {
+ for (var i = 0; i < length; i++) {
+ node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
+ }
+ }
+ node.usedBytes = Math.max(node.usedBytes, position+length);
+ return length;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.usedBytes;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ },allocate:function (stream, offset, length) {
+ MEMFS.expandFileStorage(stream.node, offset + length);
+ stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ // Only make a new copy when MAP_PRIVATE is specified.
+ if ( !(flags & 2) &&
+ (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
+ // We can't emulate MAP_SHARED when the file is not backed by the buffer
+ // we're mapping to (e.g. the HEAP buffer).
+ allocated = false;
+ ptr = contents.byteOffset;
+ } else {
+ // Try to avoid unnecessary slices.
+ if (position > 0 || position + length < stream.node.usedBytes) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length);
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length);
+ }
+ }
+ allocated = true;
+ ptr = _malloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
+ }
+ buffer.set(contents, ptr);
+ }
+ return { ptr: ptr, allocated: allocated };
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (mmapFlags & 2) {
+ // MAP_PRIVATE calls need not to be synced back to underlying fs
+ return 0;
+ }
+
+ var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
+ // should we check if bytesWritten and length are the same?
+ return 0;
+ }}};
+
+ var IDBFS={dbs:{},indexedDB:function () {
+ if (typeof indexedDB !== 'undefined') return indexedDB;
+ var ret = null;
+ if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ assert(ret, 'IDBFS used, but indexedDB not supported');
+ return ret;
+ },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
+ // reuse all of the core MEMFS functionality
+ return MEMFS.mount.apply(null, arguments);
+ },syncfs:function (mount, populate, callback) {
+ IDBFS.getLocalSet(mount, function(err, local) {
+ if (err) return callback(err);
+
+ IDBFS.getRemoteSet(mount, function(err, remote) {
+ if (err) return callback(err);
+
+ var src = populate ? remote : local;
+ var dst = populate ? local : remote;
+
+ IDBFS.reconcile(src, dst, callback);
+ });
+ });
+ },getDB:function (name, callback) {
+ // check the cache first
+ var db = IDBFS.dbs[name];
+ if (db) {
+ return callback(null, db);
+ }
+
+ var req;
+ try {
+ req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
+ } catch (e) {
+ return callback(e);
+ }
+ if (!req) {
+ return callback("Unable to connect to IndexedDB");
+ }
+ req.onupgradeneeded = function(e) {
+ var db = e.target.result;
+ var transaction = e.target.transaction;
+
+ var fileStore;
+
+ if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
+ fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ } else {
+ fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
+ }
+
+ if (!fileStore.indexNames.contains('timestamp')) {
+ fileStore.createIndex('timestamp', 'timestamp', { unique: false });
+ }
+ };
+ req.onsuccess = function() {
+ db = req.result;
+
+ // add to the cache
+ IDBFS.dbs[name] = db;
+ callback(null, db);
+ };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },getLocalSet:function (mount, callback) {
+ var entries = {};
+
+ function isRealDir(p) {
+ return p !== '.' && p !== '..';
+ };
+ function toAbsolute(root) {
+ return function(p) {
+ return PATH.join2(root, p);
+ }
+ };
+
+ var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
+
+ while (check.length) {
+ var path = check.pop();
+ var stat;
+
+ try {
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
+ }
+
+ entries[path] = { timestamp: stat.mtime };
+ }
+
+ return callback(null, { type: 'local', entries: entries });
+ },getRemoteSet:function (mount, callback) {
+ var entries = {};
+
+ IDBFS.getDB(mount.mountpoint, function(err, db) {
+ if (err) return callback(err);
+
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
+ transaction.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ var index = store.index('timestamp');
+
+ index.openKeyCursor().onsuccess = function(event) {
+ var cursor = event.target.result;
+
+ if (!cursor) {
+ return callback(null, { type: 'remote', db: db, entries: entries });
+ }
+
+ entries[cursor.primaryKey] = { timestamp: cursor.key };
+
+ cursor.continue();
+ };
+ });
+ },loadLocalEntry:function (path, callback) {
+ var stat, node;
+
+ try {
+ var lookup = FS.lookupPath(path);
+ node = lookup.node;
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode });
+ } else if (FS.isFile(stat.mode)) {
+ // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
+ // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
+ node.contents = MEMFS.getFileDataAsTypedArray(node);
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+ },storeLocalEntry:function (path, entry, callback) {
+ try {
+ if (FS.isDir(entry.mode)) {
+ FS.mkdir(path, entry.mode);
+ } else if (FS.isFile(entry.mode)) {
+ FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+
+ FS.chmod(path, entry.mode);
+ FS.utime(path, entry.timestamp, entry.timestamp);
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },removeLocalEntry:function (path, callback) {
+ try {
+ var lookup = FS.lookupPath(path);
+ var stat = FS.stat(path);
+
+ if (FS.isDir(stat.mode)) {
+ FS.rmdir(path);
+ } else if (FS.isFile(stat.mode)) {
+ FS.unlink(path);
+ }
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },loadRemoteEntry:function (store, path, callback) {
+ var req = store.get(path);
+ req.onsuccess = function(event) { callback(null, event.target.result); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },storeRemoteEntry:function (store, path, entry, callback) {
+ var req = store.put(entry, path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },removeRemoteEntry:function (store, path, callback) {
+ var req = store.delete(path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },reconcile:function (src, dst, callback) {
+ var total = 0;
+
+ var create = [];
+ Object.keys(src.entries).forEach(function (key) {
+ var e = src.entries[key];
+ var e2 = dst.entries[key];
+ if (!e2 || e.timestamp > e2.timestamp) {
+ create.push(key);
+ total++;
+ }
+ });
+
+ var remove = [];
+ Object.keys(dst.entries).forEach(function (key) {
+ var e = dst.entries[key];
+ var e2 = src.entries[key];
+ if (!e2) {
+ remove.push(key);
+ total++;
+ }
+ });
+
+ if (!total) {
+ return callback(null);
+ }
+
+ var errored = false;
+ var completed = 0;
+ var db = src.type === 'remote' ? src.db : dst.db;
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return callback(err);
+ }
+ return;
+ }
+ if (++completed >= total) {
+ return callback(null);
+ }
+ };
+
+ transaction.onerror = function(e) {
+ done(this.error);
+ e.preventDefault();
+ };
+
+ // sort paths in ascending order so directory entries are created
+ // before the files inside them
+ create.sort().forEach(function (path) {
+ if (dst.type === 'local') {
+ IDBFS.loadRemoteEntry(store, path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeLocalEntry(path, entry, done);
+ });
+ } else {
+ IDBFS.loadLocalEntry(path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeRemoteEntry(store, path, entry, done);
+ });
+ }
+ });
+
+ // sort paths in descending order so files are deleted before their
+ // parent directories
+ remove.sort().reverse().forEach(function(path) {
+ if (dst.type === 'local') {
+ IDBFS.removeLocalEntry(path, done);
+ } else {
+ IDBFS.removeRemoteEntry(store, path, done);
+ }
+ });
+ }};
+
+ var NODEFS={isWindows:false,staticInit:function () {
+ NODEFS.isWindows = !!process.platform.match(/^win/);
+ },mount:function (mount) {
+ assert(ENVIRONMENT_IS_NODE);
+ return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node = FS.createNode(parent, name, mode);
+ node.node_ops = NODEFS.node_ops;
+ node.stream_ops = NODEFS.stream_ops;
+ return node;
+ },getMode:function (path) {
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ if (NODEFS.isWindows) {
+ // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
+ // propagate write bits to execute bits.
+ stat.mode = stat.mode | ((stat.mode & 146) >> 1);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return stat.mode;
+ },realPath:function (node) {
+ var parts = [];
+ while (node.parent !== node) {
+ parts.push(node.name);
+ node = node.parent;
+ }
+ parts.push(node.mount.opts.root);
+ parts.reverse();
+ return PATH.join.apply(null, parts);
+ },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
+ flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process.
+ if (flags in NODEFS.flagsToPermissionStringMap) {
+ return NODEFS.flagsToPermissionStringMap[flags];
+ } else {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ },node_ops:{getattr:function (node) {
+ var path = NODEFS.realPath(node);
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
+ // See http://support.microsoft.com/kb/140365
+ if (NODEFS.isWindows && !stat.blksize) {
+ stat.blksize = 4096;
+ }
+ if (NODEFS.isWindows && !stat.blocks) {
+ stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
+ }
+ return {
+ dev: stat.dev,
+ ino: stat.ino,
+ mode: stat.mode,
+ nlink: stat.nlink,
+ uid: stat.uid,
+ gid: stat.gid,
+ rdev: stat.rdev,
+ size: stat.size,
+ atime: stat.atime,
+ mtime: stat.mtime,
+ ctime: stat.ctime,
+ blksize: stat.blksize,
+ blocks: stat.blocks
+ };
+ },setattr:function (node, attr) {
+ var path = NODEFS.realPath(node);
+ try {
+ if (attr.mode !== undefined) {
+ fs.chmodSync(path, attr.mode);
+ // update the common node structure mode as well
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ var date = new Date(attr.timestamp);
+ fs.utimesSync(path, date, date);
+ }
+ if (attr.size !== undefined) {
+ fs.truncateSync(path, attr.size);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },lookup:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ var mode = NODEFS.getMode(path);
+ return NODEFS.createNode(parent, name, mode);
+ },mknod:function (parent, name, mode, dev) {
+ var node = NODEFS.createNode(parent, name, mode, dev);
+ // create the backing node for this in the fs root as well
+ var path = NODEFS.realPath(node);
+ try {
+ if (FS.isDir(node.mode)) {
+ fs.mkdirSync(path, node.mode);
+ } else {
+ fs.writeFileSync(path, '', { mode: node.mode });
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return node;
+ },rename:function (oldNode, newDir, newName) {
+ var oldPath = NODEFS.realPath(oldNode);
+ var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
+ try {
+ fs.renameSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },unlink:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.unlinkSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },rmdir:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.rmdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readdir:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },symlink:function (parent, newName, oldPath) {
+ var newPath = PATH.join2(NODEFS.realPath(parent), newName);
+ try {
+ fs.symlinkSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readlink:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ path = fs.readlinkSync(path);
+ path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
+ return path;
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }},stream_ops:{open:function (stream) {
+ var path = NODEFS.realPath(stream.node);
+ try {
+ if (FS.isFile(stream.node.mode)) {
+ stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },close:function (stream) {
+ try {
+ if (FS.isFile(stream.node.mode) && stream.nfd) {
+ fs.closeSync(stream.nfd);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },read:function (stream, buffer, offset, length, position) {
+ if (length === 0) return 0; // node errors on 0 length reads
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(length);
+ var res;
+ try {
+ res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ if (res > 0) {
+ for (var i = 0; i < res; i++) {
+ buffer[offset + i] = nbuffer[i];
+ }
+ }
+ return res;
+ },write:function (stream, buffer, offset, length, position) {
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
+ var res;
+ try {
+ res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return res;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ try {
+ var stat = fs.fstatSync(stream.nfd);
+ position += stat.size;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }
+ }
+
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ return position;
+ }}};
+
+ var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) {
+ assert(ENVIRONMENT_IS_WORKER);
+ if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();
+ var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0);
+ var createdParents = {};
+ function ensureParent(path) {
+ // return the parent node, creating subdirs as necessary
+ var parts = path.split('/');
+ var parent = root;
+ for (var i = 0; i < parts.length-1; i++) {
+ var curr = parts.slice(0, i+1).join('/');
+ // Issue 4254: Using curr as a node name will prevent the node
+ // from being found in FS.nameTable when FS.open is called on
+ // a path which holds a child of this node,
+ // given that all FS functions assume node names
+ // are just their corresponding parts within their given path,
+ // rather than incremental aggregates which include their parent's
+ // directories.
+ if (!createdParents[curr]) {
+ createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0);
+ }
+ parent = createdParents[curr];
+ }
+ return parent;
+ }
+ function base(path) {
+ var parts = path.split('/');
+ return parts[parts.length-1];
+ }
+ // We also accept FileList here, by using Array.prototype
+ Array.prototype.forEach.call(mount.opts["files"] || [], function(file) {
+ WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
+ });
+ (mount.opts["blobs"] || []).forEach(function(obj) {
+ WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
+ });
+ (mount.opts["packages"] || []).forEach(function(pack) {
+ pack['metadata'].files.forEach(function(file) {
+ var name = file.filename.substr(1); // remove initial slash
+ WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end));
+ });
+ });
+ return root;
+ },createNode:function (parent, name, mode, dev, contents, mtime) {
+ var node = FS.createNode(parent, name, mode);
+ node.mode = mode;
+ node.node_ops = WORKERFS.node_ops;
+ node.stream_ops = WORKERFS.stream_ops;
+ node.timestamp = (mtime || new Date).getTime();
+ assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
+ if (mode === WORKERFS.FILE_MODE) {
+ node.size = contents.size;
+ node.contents = contents;
+ } else {
+ node.size = 4096;
+ node.contents = {};
+ }
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },node_ops:{getattr:function (node) {
+ return {
+ dev: 1,
+ ino: undefined,
+ mode: node.mode,
+ nlink: 1,
+ uid: 0,
+ gid: 0,
+ rdev: undefined,
+ size: node.size,
+ atime: new Date(node.timestamp),
+ mtime: new Date(node.timestamp),
+ ctime: new Date(node.timestamp),
+ blksize: 4096,
+ blocks: Math.ceil(node.size / 4096),
+ };
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ },lookup:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ },mknod:function (parent, name, mode, dev) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rename:function (oldNode, newDir, newName) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },unlink:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rmdir:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readdir:function (node) {
+ var entries = ['.', '..'];
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newName, oldPath) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readlink:function (node) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ if (position >= stream.node.size) return 0;
+ var chunk = stream.node.contents.slice(position, position + length);
+ var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
+ buffer.set(new Uint8Array(ab), offset);
+ return chunk.size;
+ },write:function (stream, buffer, offset, length, position) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.size;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ }}};
+
+ var _stdin; if (ENVIRONMENT_IS_PTHREAD) _stdin = PthreadWorkerInit._stdin; else PthreadWorkerInit._stdin = _stdin = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stdout; if (ENVIRONMENT_IS_PTHREAD) _stdout = PthreadWorkerInit._stdout; else PthreadWorkerInit._stdout = _stdout = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stderr; if (ENVIRONMENT_IS_PTHREAD) _stderr = PthreadWorkerInit._stderr; else PthreadWorkerInit._stderr = _stderr = allocate(1, "i32*", ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function (e) {
+ if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
+ return ___setErrNo(e.errno);
+ },lookupPath:function (path, opts) {
+ path = PATH.resolve(FS.cwd(), path);
+ opts = opts || {};
+
+ if (!path) return { path: '', node: null };
+
+ var defaults = {
+ follow_mount: true,
+ recurse_count: 0
+ };
+ for (var key in defaults) {
+ if (opts[key] === undefined) {
+ opts[key] = defaults[key];
+ }
+ }
+
+ if (opts.recurse_count > 8) { // max recursive lookup of 8
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+
+ // split the path
+ var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), false);
+
+ // start at the root
+ var current = FS.root;
+ var current_path = '/';
+
+ for (var i = 0; i < parts.length; i++) {
+ var islast = (i === parts.length-1);
+ if (islast && opts.parent) {
+ // stop resolving
+ break;
+ }
+
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+
+ // jump to the mount's root node if this is a mountpoint
+ if (FS.isMountpoint(current)) {
+ if (!islast || (islast && opts.follow_mount)) {
+ current = current.mounted.root;
+ }
+ }
+
+ // by default, lookupPath will not follow a symlink if it is the final path component.
+ // setting opts.follow = true will override this behavior.
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH.resolve(PATH.dirname(current_path), link);
+
+ var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
+ current = lookup.node;
+
+ if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+ }
+ }
+ }
+
+ return { path: current_path, node: current };
+ },getPath:function (node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path) return mount;
+ return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
+ }
+ path = path ? node.name + '/' + path : node.name;
+ node = node.parent;
+ }
+ },hashName:function (parentid, name) {
+ var hash = 0;
+
+
+ for (var i = 0; i < name.length; i++) {
+ hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
+ }
+ return ((parentid + hash) >>> 0) % FS.nameTable.length;
+ },hashAddNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node;
+ },hashRemoveNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next;
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break;
+ }
+ current = current.name_next;
+ }
+ }
+ },lookupNode:function (parent, name) {
+ var err = FS.mayLookup(parent);
+ if (err) {
+ throw new FS.ErrnoError(err, parent);
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node;
+ }
+ }
+ // if we failed to find it in the cache, call into the VFS
+ return FS.lookup(parent, name);
+ },createNode:function (parent, name, mode, rdev) {
+ if (!FS.FSNode) {
+ FS.FSNode = function(parent, name, mode, rdev) {
+ if (!parent) {
+ parent = this; // root node sets parent to itself
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ this.mounted = null;
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev;
+ };
+
+ FS.FSNode.prototype = {};
+
+ // compatibility
+ var readMode = 292 | 73;
+ var writeMode = 146;
+
+ // NOTE we must use Object.defineProperties instead of individual calls to
+ // Object.defineProperty in order to make closure compiler happy
+ Object.defineProperties(FS.FSNode.prototype, {
+ read: {
+ get: function() { return (this.mode & readMode) === readMode; },
+ set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
+ },
+ write: {
+ get: function() { return (this.mode & writeMode) === writeMode; },
+ set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
+ },
+ isFolder: {
+ get: function() { return FS.isDir(this.mode); }
+ },
+ isDevice: {
+ get: function() { return FS.isChrdev(this.mode); }
+ }
+ });
+ }
+
+ var node = new FS.FSNode(parent, name, mode, rdev);
+
+ FS.hashAddNode(node);
+
+ return node;
+ },destroyNode:function (node) {
+ FS.hashRemoveNode(node);
+ },isRoot:function (node) {
+ return node === node.parent;
+ },isMountpoint:function (node) {
+ return !!node.mounted;
+ },isFile:function (mode) {
+ return (mode & 61440) === 32768;
+ },isDir:function (mode) {
+ return (mode & 61440) === 16384;
+ },isLink:function (mode) {
+ return (mode & 61440) === 40960;
+ },isChrdev:function (mode) {
+ return (mode & 61440) === 8192;
+ },isBlkdev:function (mode) {
+ return (mode & 61440) === 24576;
+ },isFIFO:function (mode) {
+ return (mode & 61440) === 4096;
+ },isSocket:function (mode) {
+ return (mode & 49152) === 49152;
+ },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
+ var flags = FS.flagModes[str];
+ if (typeof flags === 'undefined') {
+ throw new Error('Unknown file open mode: ' + str);
+ }
+ return flags;
+ },flagsToPermissionString:function (flag) {
+ var perms = ['r', 'w', 'rw'][flag & 3];
+ if ((flag & 512)) {
+ perms += 'w';
+ }
+ return perms;
+ },nodePermissions:function (node, perms) {
+ if (FS.ignorePermissions) {
+ return 0;
+ }
+ // return 0 if any user, group or owner bits are set.
+ if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
+ return ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },mayLookup:function (dir) {
+ var err = FS.nodePermissions(dir, 'x');
+ if (err) return err;
+ if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
+ return 0;
+ },mayCreate:function (dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return ERRNO_CODES.EEXIST;
+ } catch (e) {
+ }
+ return FS.nodePermissions(dir, 'wx');
+ },mayDelete:function (dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name);
+ } catch (e) {
+ return e.errno;
+ }
+ var err = FS.nodePermissions(dir, 'wx');
+ if (err) {
+ return err;
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return ERRNO_CODES.ENOTDIR;
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return ERRNO_CODES.EBUSY;
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return 0;
+ },mayOpen:function (node, flags) {
+ if (!node) {
+ return ERRNO_CODES.ENOENT;
+ }
+ if (FS.isLink(node.mode)) {
+ return ERRNO_CODES.ELOOP;
+ } else if (FS.isDir(node.mode)) {
+ if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write
+ (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only)
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
+ },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
+ fd_start = fd_start || 0;
+ fd_end = fd_end || FS.MAX_OPEN_FDS;
+ for (var fd = fd_start; fd <= fd_end; fd++) {
+ if (!FS.streams[fd]) {
+ return fd;
+ }
+ }
+ throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
+ },getStream:function (fd) {
+ return FS.streams[fd];
+ },createStream:function (stream, fd_start, fd_end) {
+ if (!FS.FSStream) {
+ FS.FSStream = function(){};
+ FS.FSStream.prototype = {};
+ // compatibility
+ Object.defineProperties(FS.FSStream.prototype, {
+ object: {
+ get: function() { return this.node; },
+ set: function(val) { this.node = val; }
+ },
+ isRead: {
+ get: function() { return (this.flags & 2097155) !== 1; }
+ },
+ isWrite: {
+ get: function() { return (this.flags & 2097155) !== 0; }
+ },
+ isAppend: {
+ get: function() { return (this.flags & 1024); }
+ }
+ });
+ }
+ // clone it, so we can return an instance of FSStream
+ var newStream = new FS.FSStream();
+ for (var p in stream) {
+ newStream[p] = stream[p];
+ }
+ stream = newStream;
+ var fd = FS.nextfd(fd_start, fd_end);
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream;
+ },closeStream:function (fd) {
+ FS.streams[fd] = null;
+ },chrdev_stream_ops:{open:function (stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ // override node's stream ops with the device's
+ stream.stream_ops = device.stream_ops;
+ // forward the open call
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ },llseek:function () {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }},major:function (dev) {
+ return ((dev) >> 8);
+ },minor:function (dev) {
+ return ((dev) & 0xff);
+ },makedev:function (ma, mi) {
+ return ((ma) << 8 | (mi));
+ },registerDevice:function (dev, ops) {
+ FS.devices[dev] = { stream_ops: ops };
+ },getDevice:function (dev) {
+ return FS.devices[dev];
+ },getMounts:function (mount) {
+ var mounts = [];
+ var check = [mount];
+
+ while (check.length) {
+ var m = check.pop();
+
+ mounts.push(m);
+
+ check.push.apply(check, m.mounts);
+ }
+
+ return mounts;
+ },syncfs:function (populate, callback) {
+ if (typeof(populate) === 'function') {
+ callback = populate;
+ populate = false;
+ }
+
+ FS.syncFSRequests++;
+
+ if (FS.syncFSRequests > 1) {
+ console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work');
+ }
+
+ var mounts = FS.getMounts(FS.root.mount);
+ var completed = 0;
+
+ function doCallback(err) {
+ assert(FS.syncFSRequests > 0);
+ FS.syncFSRequests--;
+ return callback(err);
+ }
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return doCallback(err);
+ }
+ return;
+ }
+ if (++completed >= mounts.length) {
+ doCallback(null);
+ }
+ };
+
+ // sync all mounts
+ mounts.forEach(function (mount) {
+ if (!mount.type.syncfs) {
+ return done(null);
+ }
+ mount.type.syncfs(mount, populate, done);
+ });
+ },mount:function (type, opts, mountpoint) {
+ var root = mountpoint === '/';
+ var pseudo = !mountpoint;
+ var node;
+
+ if (root && FS.root) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ } else if (!root && !pseudo) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ mountpoint = lookup.path; // use the absolute path
+ node = lookup.node;
+
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+
+ if (!FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ }
+
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ mounts: []
+ };
+
+ // create a root node for the fs
+ var mountRoot = type.mount(mount);
+ mountRoot.mount = mount;
+ mount.root = mountRoot;
+
+ if (root) {
+ FS.root = mountRoot;
+ } else if (node) {
+ // set as a mountpoint
+ node.mounted = mount;
+
+ // add the new mount to the current mount's children
+ if (node.mount) {
+ node.mount.mounts.push(mount);
+ }
+ }
+
+ return mountRoot;
+ },unmount:function (mountpoint) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ if (!FS.isMountpoint(lookup.node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ // destroy the nodes for this mount, and all its child mounts
+ var node = lookup.node;
+ var mount = node.mounted;
+ var mounts = FS.getMounts(mount);
+
+ Object.keys(FS.nameTable).forEach(function (hash) {
+ var current = FS.nameTable[hash];
+
+ while (current) {
+ var next = current.name_next;
+
+ if (mounts.indexOf(current.mount) !== -1) {
+ FS.destroyNode(current);
+ }
+
+ current = next;
+ }
+ });
+
+ // no longer a mountpoint
+ node.mounted = null;
+
+ // remove this mount from the child mounts
+ var idx = node.mount.mounts.indexOf(mount);
+ assert(idx !== -1);
+ node.mount.mounts.splice(idx, 1);
+ },lookup:function (parent, name) {
+ return parent.node_ops.lookup(parent, name);
+ },mknod:function (path, mode, dev) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ if (!name || name === '.' || name === '..') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.mayCreate(parent, name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev);
+ },create:function (path, mode) {
+ mode = mode !== undefined ? mode : 438 /* 0666 */;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0);
+ },mkdir:function (path, mode) {
+ mode = mode !== undefined ? mode : 511 /* 0777 */;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0);
+ },mkdirTree:function (path, mode) {
+ var dirs = path.split('/');
+ var d = '';
+ for (var i = 0; i < dirs.length; ++i) {
+ if (!dirs[i]) continue;
+ d += '/' + dirs[i];
+ try {
+ FS.mkdir(d, mode);
+ } catch(e) {
+ if (e.errno != ERRNO_CODES.EEXIST) throw e;
+ }
+ }
+ },mkdev:function (path, mode, dev) {
+ if (typeof(dev) === 'undefined') {
+ dev = mode;
+ mode = 438 /* 0666 */;
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev);
+ },symlink:function (oldpath, newpath) {
+ if (!PATH.resolve(oldpath)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var lookup = FS.lookupPath(newpath, { parent: true });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var newname = PATH.basename(newpath);
+ var err = FS.mayCreate(parent, newname);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath);
+ },rename:function (old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ // parents must exist
+ var lookup, old_dir, new_dir;
+ try {
+ lookup = FS.lookupPath(old_path, { parent: true });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, { parent: true });
+ new_dir = lookup.node;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ // need to be part of the same mount
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
+ }
+ // source must exist
+ var old_node = FS.lookupNode(old_dir, old_name);
+ // old path should not be an ancestor of the new path
+ var relative = PATH.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ // new path should not be an ancestor of the old path
+ relative = PATH.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ // see if the new path already exists
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ // not fatal
+ }
+ // early out if nothing needs to change
+ if (old_node === new_node) {
+ return;
+ }
+ // we'll need to delete the old entry
+ var isdir = FS.isDir(old_node.mode);
+ var err = FS.mayDelete(old_dir, old_name, isdir);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ // need delete permissions if we'll be overwriting.
+ // need create permissions if new doesn't already exist.
+ err = new_node ?
+ FS.mayDelete(new_dir, new_name, isdir) :
+ FS.mayCreate(new_dir, new_name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ // if we are going to change the parent, check write permissions
+ if (new_dir !== old_dir) {
+ err = FS.nodePermissions(old_dir, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['willMovePath']) {
+ FS.trackingDelegate['willMovePath'](old_path, new_path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ // remove the node from the lookup hash
+ FS.hashRemoveNode(old_node);
+ // do the underlying fs rename
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name);
+ } catch (e) {
+ throw e;
+ } finally {
+ // add the node back to the hash (in case node_ops.rename
+ // changed its name)
+ FS.hashAddNode(old_node);
+ }
+ try {
+ if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ },rmdir:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, true);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ return node.node_ops.readdir(node);
+ },unlink:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, false);
+ if (err) {
+ // According to POSIX, we should map EISDIR to EPERM, but
+ // we instead do what Linux does (and we must, as we use
+ // the musl linux libc).
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readlink:function (path) {
+ var lookup = FS.lookupPath(path);
+ var link = lookup.node;
+ if (!link) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
+ },stat:function (path, dontFollow) {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ var node = lookup.node;
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return node.node_ops.getattr(node);
+ },lstat:function (path) {
+ return FS.stat(path, true);
+ },chmod:function (path, mode, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ mode: (mode & 4095) | (node.mode & ~4095),
+ timestamp: Date.now()
+ });
+ },lchmod:function (path, mode) {
+ FS.chmod(path, mode, true);
+ },fchmod:function (fd, mode) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chmod(stream.node, mode);
+ },chown:function (path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ // we ignore the uid / gid for now
+ });
+ },lchown:function (path, uid, gid) {
+ FS.chown(path, uid, gid, true);
+ },fchown:function (fd, uid, gid) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chown(stream.node, uid, gid);
+ },truncate:function (path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.nodePermissions(node, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ });
+ },ftruncate:function (fd, len) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ FS.truncate(stream.node, len);
+ },utime:function (path, atime, mtime) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ });
+ },open:function (path, flags, mode, fd_start, fd_end) {
+ if (path === "") {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
+ mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
+ if ((flags & 64)) {
+ mode = (mode & 4095) | 32768;
+ } else {
+ mode = 0;
+ }
+ var node;
+ if (typeof path === 'object') {
+ node = path;
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node;
+ } catch (e) {
+ // ignore
+ }
+ }
+ // perhaps we need to create the node
+ var created = false;
+ if ((flags & 64)) {
+ if (node) {
+ // if O_CREAT and O_EXCL are set, error out if the node already exists
+ if ((flags & 128)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
+ }
+ } else {
+ // node doesn't exist, try to create it
+ node = FS.mknod(path, mode, 0);
+ created = true;
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ // can't truncate a device
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512;
+ }
+ // if asked only for a directory, then this must be one
+ if ((flags & 65536) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ // check permissions, if this is not a file we just created now (it is ok to
+ // create and write to a file with read-only permissions; it is read-only
+ // for later use)
+ if (!created) {
+ var err = FS.mayOpen(node, flags);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ // do truncation if necessary
+ if ((flags & 512)) {
+ FS.truncate(node, 0);
+ }
+ // we've already handled these, don't pass down to the underlying vfs
+ flags &= ~(128 | 512);
+
+ // register the stream with the filesystem
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node), // we want the absolute path to the node
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ // used by the file family libc calls (fopen, fwrite, ferror, etc.)
+ ungotten: [],
+ error: false
+ }, fd_start, fd_end);
+ // call the new stream's open function
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ if (Module['logReadFiles'] && !(flags & 1)) {
+ if (!FS.readFiles) FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1;
+ Module['printErr']('read file: ' + path);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['onOpenFile']) {
+ var trackingFlags = 0;
+ if ((flags & 2097155) !== 1) {
+ trackingFlags |= FS.tracking.openFlags.READ;
+ }
+ if ((flags & 2097155) !== 0) {
+ trackingFlags |= FS.tracking.openFlags.WRITE;
+ }
+ FS.trackingDelegate['onOpenFile'](path, trackingFlags);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message);
+ }
+ return stream;
+ },close:function (stream) {
+ if (stream.getdents) stream.getdents = null; // free readdir state
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream);
+ }
+ } catch (e) {
+ throw e;
+ } finally {
+ FS.closeStream(stream.fd);
+ }
+ },llseek:function (stream, offset, whence) {
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ stream.position = stream.stream_ops.llseek(stream, offset, whence);
+ stream.ungotten = [];
+ return stream.position;
+ },read:function (stream, buffer, offset, length, position) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking) stream.position += bytesRead;
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if (stream.flags & 1024) {
+ // seek to the end before writing in append mode
+ FS.llseek(stream, 0, 2);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking) stream.position += bytesWritten;
+ try {
+ if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message);
+ }
+ return bytesWritten;
+ },allocate:function (stream, offset, length) {
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
+ }
+ stream.stream_ops.allocate(stream, offset, length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ // TODO if PROT is PROT_WRITE, make sure we have write access
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EACCES);
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!stream || !stream.stream_ops.msync) {
+ return 0;
+ }
+ return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
+ },munmap:function (stream) {
+ return 0;
+ },ioctl:function (stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg);
+ },readFile:function (path, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'r';
+ opts.encoding = opts.encoding || 'binary';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === 'utf8') {
+ ret = UTF8ArrayToString(buf, 0);
+ } else if (opts.encoding === 'binary') {
+ ret = buf;
+ }
+ FS.close(stream);
+ return ret;
+ },writeFile:function (path, data, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'w';
+ opts.encoding = opts.encoding || 'utf8';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (opts.encoding === 'utf8') {
+ var buf = new Uint8Array(lengthBytesUTF8(data)+1);
+ var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
+ FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);
+ } else if (opts.encoding === 'binary') {
+ FS.write(stream, data, 0, data.length, 0, opts.canOwn);
+ }
+ FS.close(stream);
+ },cwd:function () {
+ return FS.currentPath;
+ },chdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ if (lookup.node === null) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ var err = FS.nodePermissions(lookup.node, 'x');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ FS.currentPath = lookup.path;
+ },createDefaultDirectories:function () {
+ FS.mkdir('/tmp');
+ FS.mkdir('/home');
+ FS.mkdir('/home/web_user');
+ },createDefaultDevices:function () {
+ // create /dev
+ FS.mkdir('/dev');
+ // setup /dev/null
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: function() { return 0; },
+ write: function(stream, buffer, offset, length, pos) { return length; }
+ });
+ FS.mkdev('/dev/null', FS.makedev(1, 3));
+ // setup /dev/tty and /dev/tty1
+ // stderr needs to print output using Module['printErr']
+ // so we register a second tty just for it.
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev('/dev/tty', FS.makedev(5, 0));
+ FS.mkdev('/dev/tty1', FS.makedev(6, 0));
+ // setup /dev/[u]random
+ var random_device;
+ if (typeof crypto !== 'undefined') {
+ // for modern web browsers
+ var randomBuffer = new Uint8Array(1);
+ random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; };
+ } else if (ENVIRONMENT_IS_NODE) {
+ // for nodejs
+ random_device = function() { return require('crypto').randomBytes(1)[0]; };
+ } else {
+ // default for ES5 platforms
+ random_device = function() { return (Math.random()*256)|0; };
+ }
+ FS.createDevice('/dev', 'random', random_device);
+ FS.createDevice('/dev', 'urandom', random_device);
+ // we're not going to emulate the actual shm device,
+ // just create the tmp dirs that reside in it commonly
+ FS.mkdir('/dev/shm');
+ FS.mkdir('/dev/shm/tmp');
+ },createSpecialDirectories:function () {
+ // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname)
+ FS.mkdir('/proc');
+ FS.mkdir('/proc/self');
+ FS.mkdir('/proc/self/fd');
+ FS.mount({
+ mount: function() {
+ var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73);
+ node.node_ops = {
+ lookup: function(parent, name) {
+ var fd = +name;
+ var stream = FS.getStream(fd);
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ var ret = {
+ parent: null,
+ mount: { mountpoint: 'fake' },
+ node_ops: { readlink: function() { return stream.path } }
+ };
+ ret.parent = ret; // make it look like a simple root node
+ return ret;
+ }
+ };
+ return node;
+ }
+ }, {}, '/proc/self/fd');
+ },createStandardStreams:function () {
+ // TODO deprecate the old functionality of a single
+ // input / output callback and that utilizes FS.createDevice
+ // and instead require a unique set of stream ops
+
+ // by default, we symlink the standard streams to the
+ // default tty devices. however, if the standard streams
+ // have been overwritten we create a unique device for
+ // them instead.
+ if (Module['stdin']) {
+ FS.createDevice('/dev', 'stdin', Module['stdin']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdin');
+ }
+ if (Module['stdout']) {
+ FS.createDevice('/dev', 'stdout', null, Module['stdout']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdout');
+ }
+ if (Module['stderr']) {
+ FS.createDevice('/dev', 'stderr', null, Module['stderr']);
+ } else {
+ FS.symlink('/dev/tty1', '/dev/stderr');
+ }
+
+ // open default streams for the stdin, stdout and stderr devices
+ var stdin = FS.open('/dev/stdin', 'r');
+ assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
+
+ var stdout = FS.open('/dev/stdout', 'w');
+ assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
+
+ var stderr = FS.open('/dev/stderr', 'w');
+ assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
+ },ensureErrnoError:function () {
+ if (FS.ErrnoError) return;
+ FS.ErrnoError = function ErrnoError(errno, node) {
+ //Module.printErr(stackTrace()); // useful for debugging
+ this.node = node;
+ this.setErrno = function(errno) {
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break;
+ }
+ }
+ };
+ this.setErrno(errno);
+ this.message = ERRNO_MESSAGES[errno];
+ if (this.stack) this.stack = demangleAll(this.stack);
+ };
+ FS.ErrnoError.prototype = new Error();
+ FS.ErrnoError.prototype.constructor = FS.ErrnoError;
+ // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
+ [ERRNO_CODES.ENOENT].forEach(function(code) {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = '<generic error, no stack>';
+ });
+ },staticInit:function () {
+ FS.ensureErrnoError();
+
+ FS.nameTable = new Array(4096);
+
+ FS.mount(MEMFS, {}, '/');
+
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ FS.createSpecialDirectories();
+
+ FS.filesystems = {
+ 'MEMFS': MEMFS,
+ 'IDBFS': IDBFS,
+ 'NODEFS': NODEFS,
+ 'WORKERFS': WORKERFS,
+ };
+ },init:function (input, output, error) {
+ assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
+ FS.init.initialized = true;
+
+ FS.ensureErrnoError();
+
+ // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
+ Module['stdin'] = input || Module['stdin'];
+ Module['stdout'] = output || Module['stdout'];
+ Module['stderr'] = error || Module['stderr'];
+
+ FS.createStandardStreams();
+ },quit:function () {
+ FS.init.initialized = false;
+ // force-flush all streams, so we get musl std streams printed out
+ var fflush = Module['_fflush'];
+ if (fflush) fflush(0);
+ // close all of our streams
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue;
+ }
+ FS.close(stream);
+ }
+ },getMode:function (canRead, canWrite) {
+ var mode = 0;
+ if (canRead) mode |= 292 | 73;
+ if (canWrite) mode |= 146;
+ return mode;
+ },joinPath:function (parts, forceRelative) {
+ var path = PATH.join.apply(null, parts);
+ if (forceRelative && path[0] == '/') path = path.substr(1);
+ return path;
+ },absolutePath:function (relative, base) {
+ return PATH.resolve(base, relative);
+ },standardizePath:function (path) {
+ return PATH.normalize(path);
+ },findObject:function (path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (ret.exists) {
+ return ret.object;
+ } else {
+ ___setErrNo(ret.error);
+ return null;
+ }
+ },analyzePath:function (path, dontResolveLastLink) {
+ // operate from within the context of the symlink's target
+ try {
+ var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ path = lookup.path;
+ } catch (e) {
+ }
+ var ret = {
+ isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
+ parentExists: false, parentPath: null, parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, { parent: true });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === '/';
+ } catch (e) {
+ ret.error = e.errno;
+ };
+ return ret;
+ },createFolder:function (parent, name, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.mkdir(path, mode);
+ },createPath:function (parent, path, canRead, canWrite) {
+ parent = typeof parent === 'string' ? parent : FS.getPath(parent);
+ var parts = path.split('/').reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part) continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current);
+ } catch (e) {
+ // ignore EEXIST
+ }
+ parent = current;
+ }
+ return current;
+ },createFile:function (parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.create(path, mode);
+ },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
+ var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
+ var mode = FS.getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data === 'string') {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
+ data = arr;
+ }
+ // make sure we can write to the file
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, 'w');
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode);
+ }
+ return node;
+ },createDevice:function (parent, name, input, output) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(!!input, !!output);
+ if (!FS.createDevice.major) FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ // Create a fake device that a set of stream ops to emulate
+ // the old behavior.
+ FS.registerDevice(dev, {
+ open: function(stream) {
+ stream.seekable = false;
+ },
+ close: function(stream) {
+ // flush any pending line data
+ if (output && output.buffer && output.buffer.length) {
+ output(10);
+ }
+ },
+ read: function(stream, buffer, offset, length, pos /* ignored */) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input();
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },
+ write: function(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }
+ });
+ return FS.mkdev(path, mode, dev);
+ },createLink:function (parent, name, target, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ return FS.symlink(target, path);
+ },forceLoadFile:function (obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
+ var success = true;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
+ } else if (Module['read']) {
+ // Command-line.
+ try {
+ // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
+ // read() will try to parse UTF8.
+ obj.contents = intArrayFromString(Module['read'](obj.url), true);
+ obj.usedBytes = obj.contents.length;
+ } catch (e) {
+ success = false;
+ }
+ } else {
+ throw new Error('Cannot load without read() or XMLHttpRequest.');
+ }
+ if (!success) ___setErrNo(ERRNO_CODES.EIO);
+ return success;
+ },createLazyFile:function (parent, name, url, canRead, canWrite) {
+ // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
+ function LazyUint8Array() {
+ this.lengthKnown = false;
+ this.chunks = []; // Loaded chunks. Index is the chunk number
+ }
+ LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
+ if (idx > this.length-1 || idx < 0) {
+ return undefined;
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = (idx / this.chunkSize)|0;
+ return this.getter(chunkNum)[chunkOffset];
+ }
+ LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
+ this.getter = getter;
+ }
+ LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
+ // Find length
+ var xhr = new XMLHttpRequest();
+ xhr.open('HEAD', url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
+
+ var chunkSize = 1024*1024; // Chunk size in bytes
+
+ if (!hasByteServing) chunkSize = datalength;
+
+ // Function to get a range from the remote URL.
+ var doXHR = (function(from, to) {
+ if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
+
+ // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, false);
+ if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+
+ // Some hints to the browser that we want binary data.
+ if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
+ }
+
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || []);
+ } else {
+ return intArrayFromString(xhr.responseText || '', true);
+ }
+ });
+ var lazyArray = this;
+ lazyArray.setDataGetter(function(chunkNum) {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum+1) * chunkSize - 1; // including this byte
+ end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end);
+ }
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum];
+ });
+
+ if (usesGzip || !datalength) {
+ // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length
+ chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file
+ datalength = this.getter(0).length;
+ chunkSize = datalength;
+ console.log("LazyFiles on gzip forces download of the whole file when length is accessed");
+ }
+
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true;
+ }
+ if (typeof XMLHttpRequest !== 'undefined') {
+ if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
+ var lazyArray = new LazyUint8Array();
+ Object.defineProperties(lazyArray, {
+ length: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._length;
+ }
+ },
+ chunkSize: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._chunkSize;
+ }
+ }
+ });
+
+ var properties = { isDevice: false, contents: lazyArray };
+ } else {
+ var properties = { isDevice: false, url: url };
+ }
+
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ // This is a total hack, but I want to get this lazy file code out of the
+ // core of MEMFS. If we want to keep this lazy file concept I feel it should
+ // be its own thin LAZYFS proxying calls to MEMFS.
+ if (properties.contents) {
+ node.contents = properties.contents;
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url;
+ }
+ // Add a function that defers querying the file size until it is asked the first time.
+ Object.defineProperties(node, {
+ usedBytes: {
+ get: function() { return this.contents.length; }
+ }
+ });
+ // override each stream op with one that tries to force load the lazy file first
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach(function(key) {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = function forceLoadLazyFile() {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ return fn.apply(null, arguments);
+ };
+ });
+ // use a custom read function
+ stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) { // normal array
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i];
+ }
+ } else {
+ for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
+ buffer[offset + i] = contents.get(position + i);
+ }
+ }
+ return size;
+ };
+ node.stream_ops = stream_ops;
+ return node;
+ },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
+ Browser.init(); // XXX perhaps this method should move onto Browser?
+ // TODO we should allow people to just pass in a complete filename instead
+ // of parent and name being that we just join them anyways
+ var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
+ var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname
+ function processData(byteArray) {
+ function finish(byteArray) {
+ if (preFinish) preFinish();
+ if (!dontCreateFile) {
+ FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
+ }
+ if (onload) onload();
+ removeRunDependency(dep);
+ }
+ var handled = false;
+ Module['preloadPlugins'].forEach(function(plugin) {
+ if (handled) return;
+ if (plugin['canHandle'](fullname)) {
+ plugin['handle'](byteArray, fullname, finish, function() {
+ if (onerror) onerror();
+ removeRunDependency(dep);
+ });
+ handled = true;
+ }
+ });
+ if (!handled) finish(byteArray);
+ }
+ addRunDependency(dep);
+ if (typeof url == 'string') {
+ Browser.asyncLoad(url, function(byteArray) {
+ processData(byteArray);
+ }, onerror);
+ } else {
+ processData(url);
+ }
+ },indexedDB:function () {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ },DB_NAME:function () {
+ return 'EM_FS_' + window.location.pathname;
+ },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
+ console.log('creating db');
+ var db = openRequest.result;
+ db.createObjectStore(FS.DB_STORE_NAME);
+ };
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var putRequest = files.put(FS.analyzePath(path).object.contents, path);
+ putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
+ putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ },loadFilesFromDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = onerror; // no database to load from
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ try {
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
+ } catch(e) {
+ onerror(e);
+ return;
+ }
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var getRequest = files.get(path);
+ getRequest.onsuccess = function getRequest_onsuccess() {
+ if (FS.analyzePath(path).exists) {
+ FS.unlink(path);
+ }
+ FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
+ ok++;
+ if (ok + fail == total) finish();
+ };
+ getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) {
+ if (path[0] !== '/') {
+ // relative path
+ var dir;
+ if (dirfd === -100) {
+ dir = FS.cwd();
+ } else {
+ var dirstream = FS.getStream(dirfd);
+ if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ dir = dirstream.path;
+ }
+ path = PATH.join2(dir, path);
+ }
+ return path;
+ },doStat:function (func, path, buf) {
+ try {
+ var stat = func(path);
+ } catch (e) {
+ if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
+ // an error occurred while trying to look up the path; we should just report ENOTDIR
+ return -ERRNO_CODES.ENOTDIR;
+ }
+ throw e;
+ }
+ HEAP32[((buf)>>2)]=stat.dev;
+ HEAP32[(((buf)+(4))>>2)]=0;
+ HEAP32[(((buf)+(8))>>2)]=stat.ino;
+ HEAP32[(((buf)+(12))>>2)]=stat.mode;
+ HEAP32[(((buf)+(16))>>2)]=stat.nlink;
+ HEAP32[(((buf)+(20))>>2)]=stat.uid;
+ HEAP32[(((buf)+(24))>>2)]=stat.gid;
+ HEAP32[(((buf)+(28))>>2)]=stat.rdev;
+ HEAP32[(((buf)+(32))>>2)]=0;
+ HEAP32[(((buf)+(36))>>2)]=stat.size;
+ HEAP32[(((buf)+(40))>>2)]=4096;
+ HEAP32[(((buf)+(44))>>2)]=stat.blocks;
+ HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(52))>>2)]=0;
+ HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(60))>>2)]=0;
+ HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(68))>>2)]=0;
+ HEAP32[(((buf)+(72))>>2)]=stat.ino;
+ return 0;
+ },doMsync:function (addr, stream, len, flags) {
+ var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
+ FS.msync(stream, buffer, 0, len, flags);
+ },doMkdir:function (path, mode) {
+ // remove a trailing slash, if one - /a/b/ has basename of '', but
+ // we want to create b in the context of this function
+ path = PATH.normalize(path);
+ if (path[path.length-1] === '/') path = path.substr(0, path.length-1);
+ FS.mkdir(path, mode, 0);
+ return 0;
+ },doMknod:function (path, mode, dev) {
+ // we don't want this in the JS API as it uses mknod to create all nodes.
+ switch (mode & 61440) {
+ case 32768:
+ case 8192:
+ case 24576:
+ case 4096:
+ case 49152:
+ break;
+ default: return -ERRNO_CODES.EINVAL;
+ }
+ FS.mknod(path, mode, dev);
+ return 0;
+ },doReadlink:function (path, buf, bufsize) {
+ if (bufsize <= 0) return -ERRNO_CODES.EINVAL;
+ var ret = FS.readlink(path);
+
+ var len = Math.min(bufsize, lengthBytesUTF8(ret));
+ var endChar = HEAP8[buf+len];
+ stringToUTF8(ret, buf, bufsize+1);
+ // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!)
+ // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write.
+ HEAP8[buf+len] = endChar;
+
+ return len;
+ },doAccess:function (path, amode) {
+ if (amode & ~7) {
+ // need a valid mode
+ return -ERRNO_CODES.EINVAL;
+ }
+ var node;
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ var perms = '';
+ if (amode & 4) perms += 'r';
+ if (amode & 2) perms += 'w';
+ if (amode & 1) perms += 'x';
+ if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) {
+ return -ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },doDup:function (path, flags, suggestFD) {
+ var suggest = FS.getStream(suggestFD);
+ if (suggest) FS.close(suggest);
+ return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
+ },doReadv:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.read(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ if (curr < len) break; // nothing more to read
+ }
+ return ret;
+ },doWritev:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.write(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ }
+ return ret;
+ },varargs:0,get:function (varargs) {
SYSCALLS.varargs += 4;
var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
return ret;
},getStr:function () {
var ret = Pointer_stringify(SYSCALLS.get());
return ret;
+ },getStreamFromFD:function () {
+ var stream = FS.getStream(SYSCALLS.get());
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return stream;
+ },getSocketFromFD:function () {
+ var socket = SOCKFS.getSocket(SYSCALLS.get());
+ if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return socket;
+ },getSocketAddress:function (allowNull) {
+ var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();
+ if (allowNull && addrp === 0) return null;
+ var info = __read_sockaddr(addrp, addrlen);
+ if (info.errno) throw new FS.ErrnoError(info.errno);
+ info.addr = DNS.lookup_addr(info.addr) || info.addr;
+ return info;
},get64:function () {
var low = SYSCALLS.get(), high = SYSCALLS.get();
if (low >= 0) assert(high === 0);
@@ -3374,10 +6488,42 @@ function copyTempDouble(ptr) {
return low;
},getZero:function () {
assert(SYSCALLS.get() === 0);
- }};function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;
+ }};function ___syscall54(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 54, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// ioctl
- return 0;
+ var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();
+ switch (op) {
+ case 21505: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ case 21506: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0; // no-op, not actually adjusting terminal settings
+ }
+ case 21519: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ var argp = SYSCALLS.get();
+ HEAP32[((argp)>>2)]=0;
+ return 0;
+ }
+ case 21520: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return -ERRNO_CODES.EINVAL; // not supported
+ }
+ case 21531: {
+ var argp = SYSCALLS.get();
+ return FS.ioctl(stream, op, argp);
+ }
+ case 21523: {
+ // TODO: in theory we should write to the winsize struct that gets
+ // passed in, but for now musl doesn't read anything on it
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ default: abort('bad ioctl syscall ' + op);
+ }
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4367,6 +7513,29 @@ function copyTempDouble(ptr) {
return 0;
}
+ function _utime(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(12, path, times);
+ // int utime(const char *path, const struct utimbuf *times);
+ // http://pubs.opengroup.org/onlinepubs/009695399/basedefs/utime.h.html
+ var time;
+ if (times) {
+ // NOTE: We don't keep track of access timestamps.
+ var offset = 4;
+ time = HEAP32[(((times)+(offset))>>2)];
+ time *= 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx['copyTexImage2D'](x0, x1, x2, x3, x4, x5, x6, x7) }
function _emscripten_glTexParameterfv(target, pname, params) {
@@ -4374,6 +7543,220 @@ function copyTempDouble(ptr) {
GLctx.texParameterf(target, pname, param);
}
+
+
+
+ var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};
+
+
+ var __pthread_ptr=0;
+
+ var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr, isMainBrowserThread, isMainRuntimeThread) {
+ pthreadPtr = pthreadPtr|0;
+ isMainBrowserThread = isMainBrowserThread|0;
+ isMainRuntimeThread = isMainRuntimeThread|0;
+ __pthread_ptr = pthreadPtr;
+ __pthread_is_main_browser_thread = isMainBrowserThread;
+ __pthread_is_main_runtime_thread = isMainRuntimeThread;
+ }
+
+ var _emscripten_main_thread_process_queued_calls=undefined;var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkerPool:[],runningWorkers:[],initMainThreadBlock:function () {
+ if (ENVIRONMENT_IS_PTHREAD) return undefined;
+ PThread.mainThreadBlock = allocate(244, "i32*", ALLOC_STATIC);
+ __register_pthread_ptr(PThread.mainThreadBlock, /*isMainBrowserThread=*/!ENVIRONMENT_IS_WORKER, /*isMainRuntimeThread=*/1); // Pass the thread address inside the asm.js scope to store it for fast access that avoids the need for a FFI out.
+
+ for (var i = 0; i < 244/4; ++i) HEAPU32[PThread.mainThreadBlock/4+i] = 0;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((PThread.mainThreadBlock)+(24))>>2)]=PThread.mainThreadBlock;
+
+ // Allocate memory for thread-local storage.
+ var tlsMemory = allocate(128 * 4, "i32*", ALLOC_STATIC);
+ for (var i = 0; i < 128; ++i) HEAPU32[tlsMemory/4+i] = 0;
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 52 ) >> 2, PThread.mainThreadBlock); // Main thread ID.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ },pthreads:{},pthreadIdCounter:2,exitHandlers:null,setThreadStatus:function () {},runExitHandlers:function () {
+ if (PThread.exitHandlers !== null) {
+ while (PThread.exitHandlers.length > 0) {
+ PThread.exitHandlers.pop()();
+ }
+ PThread.exitHandlers = null;
+ }
+
+ // Call into the musl function that runs destructors of all thread-specific data.
+ if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors();
+ },threadExit:function (exitCode) {
+ var tb = _pthread_self();
+ if (tb) { // If we haven't yet exited?
+ Atomics.store(HEAPU32, (tb + 4 ) >> 2, exitCode);
+ // When we publish this, the main thread is free to deallocate the thread object and we are done.
+ // Therefore set threadInfoStruct = 0; above to 'release' the object in this worker thread.
+ Atomics.store(HEAPU32, (tb + 0 ) >> 2, 1);
+
+ // Disable all cancellation so that executing the cleanup handlers won't trigger another JS
+ // canceled exception to be thrown.
+ Atomics.store(HEAPU32, (tb + 72 ) >> 2, 1/*PTHREAD_CANCEL_DISABLE*/);
+ Atomics.store(HEAPU32, (tb + 76 ) >> 2, 0/*PTHREAD_CANCEL_DEFERRED*/);
+ PThread.runExitHandlers();
+
+ _emscripten_futex_wake(tb + 0, 2147483647);
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ threadInfoStruct = 0;
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // This worker no longer owns any WebGL OffscreenCanvases, so transfer them back to parent thread.
+ var transferList = [];
+
+
+ postMessage({ cmd: 'exit' });
+ }
+ }
+ },threadCancel:function () {
+ PThread.runExitHandlers();
+ Atomics.store(HEAPU32, (threadInfoStruct + 4 ) >> 2, -1/*PTHREAD_CANCELED*/);
+ Atomics.store(HEAPU32, (threadInfoStruct + 0 ) >> 2, 1); // Mark the thread as no longer running.
+ _emscripten_futex_wake(threadInfoStruct + 0, 2147483647); // wake all threads
+ threadInfoStruct = selfThreadId = 0; // Not hosting a pthread anymore in this worker, reset the info structures to null.
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ postMessage({ cmd: 'cancelDone' });
+ },terminateAllThreads:function () {
+ for (var t in PThread.pthreads) {
+ var pthread = PThread.pthreads[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.pthreads = {};
+ for (var t in PThread.unusedWorkerPool) {
+ var pthread = PThread.unusedWorkerPool[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.unusedWorkerPool = [];
+ for (var t in PThread.runningWorkers) {
+ var pthread = PThread.runningWorkers[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.runningWorkers = [];
+ },freeThreadData:function (pthread) {
+ if (!pthread) return;
+ if (pthread.threadInfoStruct) {
+ var tlsMemory = HEAP32[(((pthread.threadInfoStruct)+(116))>>2)];
+ HEAP32[(((pthread.threadInfoStruct)+(116))>>2)]=0;
+ _free(pthread.tlsMemory);
+ _free(pthread.threadInfoStruct);
+ }
+ pthread.threadInfoStruct = 0;
+ if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase);
+ pthread.stackBase = 0;
+ if (pthread.worker) pthread.worker.pthread = null;
+ },receiveObjectTransfer:function (data) {
+ },allocateUnusedWorkers:function (numWorkers, onFinishedLoading) {
+ if (typeof SharedArrayBuffer === 'undefined') return; // No multithreading support, no-op.
+ Module['print']('Preallocating ' + numWorkers + ' workers for a pthread spawn pool.');
+
+ var numWorkersLoaded = 0;
+ for (var i = 0; i < numWorkers; ++i) {
+ var pthreadMainJs = 'pthread-main.js';
+ // Allow HTML module to configure the location where the 'pthread-main.js' file will be loaded from,
+ // either via Module.locateFile() function, or via Module.pthreadMainPrefixURL string. If neither
+ // of these are passed, then the default URL 'pthread-main.js' relative to the main html file is loaded.
+ if (typeof Module['locateFile'] === 'function') pthreadMainJs = Module['locateFile'](pthreadMainJs);
+ else if (Module['pthreadMainPrefixURL']) pthreadMainJs = Module['pthreadMainPrefixURL'] + pthreadMainJs;
+ var worker = new Worker(pthreadMainJs);
+
+ worker.onmessage = function(e) {
+ // If this message is intended to a recipient that is not the main thread, forward it to the target thread.
+ if (e.data.targetThread && e.data.targetThread != _pthread_self()) {
+ var thread = PThread.pthreads[e.data.targetThread];
+ if (thread) {
+ thread.worker.postMessage(e.data, e.data.transferList);
+ } else {
+ console.error('Internal error! Worker sent a message "' + e.data.cmd + '" to target pthread ' + e.data.targetThread + ', but that thread no longer exists!');
+ }
+ return;
+ }
+
+ if (e.data.cmd === 'processQueuedMainThreadWork') {
+ // TODO: Must post message to main Emscripten thread in PROXY_TO_WORKER mode.
+ _emscripten_main_thread_process_queued_calls();
+ } else if (e.data.cmd === 'spawnThread') {
+ __spawn_thread(e.data);
+ } else if (e.data.cmd === 'cleanupThread') {
+ __cleanup_thread(e.data.thread);
+ } else if (e.data.cmd === 'killThread') {
+ __kill_thread(e.data.thread);
+ } else if (e.data.cmd === 'cancelThread') {
+ __cancel_thread(e.data.thread);
+ } else if (e.data.cmd === 'loaded') {
+ ++numWorkersLoaded;
+ if (numWorkersLoaded === numWorkers && onFinishedLoading) {
+ onFinishedLoading();
+ }
+ } else if (e.data.cmd === 'print') {
+ Module['print']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'printErr') {
+ Module['printErr']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'alert') {
+ alert('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'exit') {
+ // currently no-op
+ } else if (e.data.cmd === 'cancelDone') {
+ PThread.freeThreadData(worker.pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ // TODO: Free if detached.
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ } else if (e.data.cmd === 'objectTransfer') {
+ PThread.receiveObjectTransfer(e.data);
+ } else {
+ Module['printErr']("worker sent an unknown command " + e.data.cmd);
+ }
+ };
+
+ worker.onerror = function(e) {
+ Module['printErr']('pthread sent an error! ' + e.filename + ':' + e.lineno + ': ' + e.message);
+ };
+
+ // Allocate tempDoublePtr for the worker. This is done here on the worker's behalf, since we may need to do this statically
+ // if the runtime has not been loaded yet, etc. - so we just use getMemory, which is main-thread only.
+ var tempDoublePtr = getMemory(8); // TODO: leaks. Cleanup after worker terminates.
+
+ // Ask the new worker to load up the Emscripten-compiled page. This is a heavy operation.
+ worker.postMessage({
+ cmd: 'load',
+ url: currentScriptUrl,
+ buffer: HEAPU8.buffer,
+ tempDoublePtr: tempDoublePtr,
+ TOTAL_MEMORY: TOTAL_MEMORY,
+ STATICTOP: STATICTOP,
+ DYNAMIC_BASE: DYNAMIC_BASE,
+ DYNAMICTOP_PTR: DYNAMICTOP_PTR,
+ PthreadWorkerInit: PthreadWorkerInit
+ });
+ PThread.unusedWorkerPool.push(worker);
+ }
+ },getNewWorker:function () {
+ if (PThread.unusedWorkerPool.length == 0) PThread.allocateUnusedWorkers(1);
+ if (PThread.unusedWorkerPool.length > 0) return PThread.unusedWorkerPool.pop();
+ else return null;
+ },busySpinWait:function (msecs) {
+ var t = performance.now() + msecs;
+ while(performance.now() < t) {
+ ;
+ }
+ }};var __pthread_is_main_runtime_thread=0;function _emscripten_is_main_runtime_thread() {
+ return __pthread_is_main_runtime_thread|0; // Semantically the same as testing "!ENVIRONMENT_IS_PTHREAD" outside the asm.js scope
+ }
+
function _emscripten_glLinkProgram(program) {
GLctx.linkProgram(GL.programs[program]);
GL.programInfos[program] = null; // uniforms no longer keep the same names after linking
@@ -4424,6 +7807,11 @@ function copyTempDouble(ptr) {
Module["_memset"] = _memset;
+ function _atexit(func, arg) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(110, func, arg);
+ __ATEXIT__.unshift({ func: func, arg: arg });
+ }
+
function _glfwMakeContextCurrent(winid) {}
function _emscripten_set_touchcancel_callback(target, userData, useCapture, callbackfunc) {
@@ -4621,7 +8009,8 @@ function copyTempDouble(ptr) {
GLctx.uniformMatrix2fv(GL.uniforms[location], !!transpose, view);
}
- function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall6(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 6, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// close
var stream = SYSCALLS.getStreamFromFD();
@@ -4691,7 +8080,8 @@ function copyTempDouble(ptr) {
Module['printErr']('missing function: emscripten_glGetPointerv'); abort(-1);
}
- function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall140(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 140, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// llseek
var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
@@ -4707,34 +8097,12 @@ function copyTempDouble(ptr) {
}
}
- function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall146(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 146, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// writev
- // hack to support printf in NO_FILESYSTEM
- var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
- var ret = 0;
- if (!___syscall146.buffer) {
- ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr
- ___syscall146.printChar = function(stream, curr) {
- var buffer = ___syscall146.buffers[stream];
- assert(buffer);
- if (curr === 0 || curr === 10) {
- (stream === 1 ? Module['print'] : Module['printErr'])(UTF8ArrayToString(buffer, 0));
- buffer.length = 0;
- } else {
- buffer.push(curr);
- }
- };
- }
- for (var i = 0; i < iovcnt; i++) {
- var ptr = HEAP32[(((iov)+(i*8))>>2)];
- var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
- for (var j = 0; j < len; j++) {
- ___syscall146.printChar(stream, HEAPU8[ptr+j]);
- }
- ret += len;
- }
- return ret;
+ var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
+ return SYSCALLS.doWritev(stream, iov, iovcnt);
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4749,6 +8117,41 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilFuncSeparate(x0, x1, x2, x3) { GLctx['stencilFuncSeparate'](x0, x1, x2, x3) }
+
+ var _tzname; if (ENVIRONMENT_IS_PTHREAD) _tzname = PthreadWorkerInit._tzname; else PthreadWorkerInit._tzname = _tzname = allocate(8, "i32*", ALLOC_STATIC);
+
+ var _daylight; if (ENVIRONMENT_IS_PTHREAD) _daylight = PthreadWorkerInit._daylight; else PthreadWorkerInit._daylight = _daylight = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _timezone; if (ENVIRONMENT_IS_PTHREAD) _timezone = PthreadWorkerInit._timezone; else PthreadWorkerInit._timezone = _timezone = allocate(1, "i32*", ALLOC_STATIC);function _tzset() {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_0(119);
+ // TODO: Use (malleable) environment variables instead of system settings.
+ if (_tzset.called) return;
+ _tzset.called = true;
+
+ HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60;
+
+ var winter = new Date(2000, 0, 1);
+ var summer = new Date(2000, 6, 1);
+ HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
+
+ function extractZone(date) {
+ var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
+ return match ? match[1] : "GMT";
+ };
+ var winterName = extractZone(winter);
+ var summerName = extractZone(summer);
+ var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);
+ var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);
+ if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {
+ // Northern hemisphere
+ HEAP32[((_tzname)>>2)]=winterNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr;
+ } else {
+ HEAP32[((_tzname)>>2)]=summerNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=winterNamePtr;
+ }
+ }
+
Module["_i64Subtract"] = _i64Subtract;
@@ -4789,6 +8192,155 @@ function copyTempDouble(ptr) {
return JSEvents.lastGamepadState.length;
}
+ function _sysconf(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(72, name);
+ // long sysconf(int name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
+ switch(name) {
+ case 30: return PAGE_SIZE;
+ case 85:
+ var maxHeapSize = 2*1024*1024*1024 - 16777216;
+ maxHeapSize = HEAPU8.length;
+ return maxHeapSize / PAGE_SIZE;
+ case 132:
+ case 133:
+ case 12:
+ case 137:
+ case 138:
+ case 15:
+ case 235:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 149:
+ case 13:
+ case 10:
+ case 236:
+ case 153:
+ case 9:
+ case 21:
+ case 22:
+ case 159:
+ case 154:
+ case 14:
+ case 77:
+ case 78:
+ case 139:
+ case 80:
+ case 81:
+ case 82:
+ case 68:
+ case 67:
+ case 164:
+ case 11:
+ case 29:
+ case 47:
+ case 48:
+ case 95:
+ case 52:
+ case 51:
+ case 46:
+ return 200809;
+ case 79:
+ return 0;
+ case 27:
+ case 246:
+ case 127:
+ case 128:
+ case 23:
+ case 24:
+ case 160:
+ case 161:
+ case 181:
+ case 182:
+ case 242:
+ case 183:
+ case 184:
+ case 243:
+ case 244:
+ case 245:
+ case 165:
+ case 178:
+ case 179:
+ case 49:
+ case 50:
+ case 168:
+ case 169:
+ case 175:
+ case 170:
+ case 171:
+ case 172:
+ case 97:
+ case 76:
+ case 32:
+ case 173:
+ case 35:
+ return -1;
+ case 176:
+ case 177:
+ case 7:
+ case 155:
+ case 8:
+ case 157:
+ case 125:
+ case 126:
+ case 92:
+ case 93:
+ case 129:
+ case 130:
+ case 131:
+ case 94:
+ case 91:
+ return 1;
+ case 74:
+ case 60:
+ case 69:
+ case 70:
+ case 4:
+ return 1024;
+ case 31:
+ case 42:
+ case 72:
+ return 32;
+ case 87:
+ case 26:
+ case 33:
+ return 2147483647;
+ case 34:
+ case 1:
+ return 47839;
+ case 38:
+ case 36:
+ return 99;
+ case 43:
+ case 37:
+ return 2048;
+ case 0: return 2097152;
+ case 3: return 65536;
+ case 28: return 32768;
+ case 44: return 32767;
+ case 75: return 16384;
+ case 39: return 1000;
+ case 89: return 700;
+ case 71: return 256;
+ case 40: return 255;
+ case 2: return 100;
+ case 180: return 64;
+ case 25: return 20;
+ case 5: return 16;
+ case 6: return 6;
+ case 73: return 4;
+ case 84: {
+ if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;
+ return 1;
+ }
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
function _emscripten_glUniform4iv(location, count, value) {
@@ -4832,6 +8384,7 @@ function copyTempDouble(ptr) {
GL.shaders[shader]);
}
+
function _glUniform4f(location, v0, v1, v2, v3) {
GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3);
}
@@ -4869,6 +8422,13 @@ function copyTempDouble(ptr) {
GLFW.hints = GLFW.defaultHints;
}
+ function _gettimeofday(ptr) {
+ var now = Date.now();
+ HEAP32[((ptr)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((ptr)+(4))>>2)]=((now % 1000)*1000)|0; // microseconds
+ return 0;
+ }
+
function _emscripten_glClearStencil(x0) { GLctx['clearStencil'](x0) }
function _emscripten_glDetachShader(program, shader) {
@@ -4925,6 +8485,70 @@ function copyTempDouble(ptr) {
function _emscripten_glGenerateMipmap(x0) { GLctx['generateMipmap'](x0) }
+
+
+
+
+ var _environ; if (ENVIRONMENT_IS_PTHREAD) _environ = PthreadWorkerInit._environ; else PthreadWorkerInit._environ = _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'] = ENV['LOGNAME'] = 'web_user';
+ ENV['PATH'] = '/';
+ ENV['PWD'] = '/';
+ ENV['HOME'] = '/home/web_user';
+ ENV['LANG'] = 'C';
+ ENV['_'] = Module['thisProgram'];
+ // 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];
+ writeAsciiToMemory(line, poolPtr);
+ HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
+ poolPtr += line.length + 1;
+ }
+ HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
+ }var ENV={};function _clearenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(112, name);
+ // int clearenv (void);
+ // http://www.gnu.org/s/hello/manual/libc/Environment-Access.html#index-clearenv-3107
+ ENV = {};
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glCullFace(x0) { GLctx['cullFace'](x0) }
function _emscripten_glUniform4f(location, v0, v1, v2, v3) {
@@ -5009,9 +8633,14 @@ function copyTempDouble(ptr) {
GLctx.uniform2iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*8)>>2));
}
- function _emscripten_glVertexAttrib1fv(index, v) {
-
- GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ var _emscripten_asm_const=true;
+
+ function _chroot(path) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(37, path);
+ // int chroot(const char *path);
+ // http://pubs.opengroup.org/onlinepubs/7908799/xsh/chroot.html
+ ___setErrNo(ERRNO_CODES.EACCES);
+ return -1;
}
function _glEnable(x0) { GLctx['enable'](x0) }
@@ -5180,13 +8809,57 @@ function copyTempDouble(ptr) {
emscriptenWebGLGetUniform(program, location, params, 'Integer');
}
+ function _unsetenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(114, name);
+ // int unsetenv(const char *name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/unsetenv.html
+ if (name === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ name = Pointer_stringify(name);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name)) {
+ delete ENV[name];
+ ___buildEnvironment(ENV);
+ }
+ return 0;
+ }
+
function _emscripten_glDepthMask(flag) {
GLctx.depthMask(!!flag);
}
+
function _emscripten_glDepthRangef(x0, x1) { GLctx['depthRange'](x0, x1) }
- function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
+
+ function _emscripten_get_now_is_monotonic() {
+ // return whether emscripten_get_now is guaranteed monotonic; the Date.now
+ // implementation is not :(
+ return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
+ ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
+ }function _clock_gettime(clk_id, tp) {
+ // int clock_gettime(clockid_t clk_id, struct timespec *tp);
+ var now;
+ if (clk_id === 0) {
+ now = Date.now();
+ } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
+ now = _emscripten_get_now();
+ } else {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
+ return 0;
+ }function ___clock_gettime() {
+ return _clock_gettime.apply(null, arguments)
+ }
function _emscripten_set_fullscreenchange_callback(target, userData, useCapture, callbackfunc) {
if (typeof JSEvents.fullscreenEnabled() === 'undefined') return -1;
@@ -5202,7 +8875,75 @@ function copyTempDouble(ptr) {
return 0;
}
- function _pthread_join() {}
+ function _emscripten_glVertexAttrib1fv(index, v) {
+
+ GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ }
+
+
+ function __cleanup_thread(pthread_ptr) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _cleanup_thread() can only ever be called from main application thread!';
+ if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _cleanup_thread!';
+ HEAP32[(((pthread_ptr)+(24))>>2)]=0;
+ var pthread = PThread.pthreads[pthread_ptr];
+ var worker = pthread.worker;
+ PThread.freeThreadData(pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ }
+
+ function __pthread_testcancel_js() {
+ if (!ENVIRONMENT_IS_PTHREAD) return;
+ if (!threadInfoStruct) return;
+ var cancelDisabled = Atomics.load(HEAPU32, (threadInfoStruct + 72 ) >> 2);
+ if (cancelDisabled) return;
+ var canceled = Atomics.load(HEAPU32, (threadInfoStruct + 0 ) >> 2);
+ if (canceled == 2) throw 'Canceled!';
+ }function _pthread_join(thread, status) {
+ if (!thread) {
+ Module['printErr']('pthread_join attempted on a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ if (ENVIRONMENT_IS_PTHREAD && selfThreadId == thread) {
+ Module['printErr']('PThread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ else if (!ENVIRONMENT_IS_PTHREAD && PThread.mainThreadBlock == thread) {
+ Module['printErr']('Main thread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_join attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var detached = Atomics.load(HEAPU32, (thread + 80 ) >> 2);
+ if (detached) {
+ Module['printErr']('Attempted to join thread ' + thread + ', which was already detached!');
+ return ERRNO_CODES.EINVAL; // The thread is already detached, can no longer join it!
+ }
+ for (;;) {
+ var threadStatus = Atomics.load(HEAPU32, (thread + 0 ) >> 2);
+ if (threadStatus == 1) { // Exited?
+ var threadExitCode = Atomics.load(HEAPU32, (thread + 4 ) >> 2);
+ if (status) HEAP32[((status)>>2)]=threadExitCode;
+ Atomics.store(HEAPU32, (thread + 80 ) >> 2, 1); // Mark the thread as detached.
+
+ if (!ENVIRONMENT_IS_PTHREAD) __cleanup_thread(thread);
+ else postMessage({ cmd: 'cleanupThread', thread: thread});
+ return 0;
+ }
+ // TODO HACK! Replace the _js variant with just _pthread_testcancel:
+ //_pthread_testcancel();
+ __pthread_testcancel_js();
+ // In main runtime thread (the thread that initialized the Emscripten C runtime and launched main()), assist pthreads in performing operations
+ // that they need to access the Emscripten main runtime for.
+ if (!ENVIRONMENT_IS_PTHREAD) _emscripten_main_thread_process_queued_calls();
+ _emscripten_futex_wait(thread + 0, threadStatus, ENVIRONMENT_IS_PTHREAD ? 100 : 1);
+ }
+ }
@@ -5494,12 +9235,6 @@ function copyTempDouble(ptr) {
win.shouldClose = value;
}
- function _glfwWindowShouldClose(winid) {
- var win = GLFW.WindowFromId(winid);
- if (!win) return 0;
- return win.shouldClose;
- }
-
function _emscripten_glClientActiveTexture() {
Module['printErr']('missing function: emscripten_glClientActiveTexture'); abort(-1);
}
@@ -5551,8 +9286,6 @@ function copyTempDouble(ptr) {
HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target, pname);
}
- function _glfwWaitEvents() {}
-
function _emscripten_glStencilOpSeparate(x0, x1, x2, x3) { GLctx['stencilOpSeparate'](x0, x1, x2, x3) }
function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) {
@@ -5611,45 +9344,45 @@ function copyTempDouble(ptr) {
function _glDepthFunc(x0) { GLctx['depthFunc'](x0) }
-
- var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
- Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
- Module["___udivmoddi4"] = ___udivmoddi4;
- Module["___uremdi3"] = ___uremdi3;
+ var __main_thread_futex_wait_address; if (ENVIRONMENT_IS_PTHREAD) __main_thread_futex_wait_address = PthreadWorkerInit.__main_thread_futex_wait_address; else PthreadWorkerInit.__main_thread_futex_wait_address = __main_thread_futex_wait_address = allocate(1, "i32*", ALLOC_STATIC);function _emscripten_futex_wait(addr, val, timeout) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0) return -22;
+ // dump('futex_wait addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ENVIRONMENT_IS_WORKER) {
+ var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout);
+ // dump('futex_wait done by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ret === 'timed-out') return -110;
+ if (ret === 'not-equal') return -11;
+ if (ret === 'ok') return 0;
+ throw 'Atomics.wait returned an unexpected value ' + ret;
+ } else {
+ // Atomics.wait is not available in the main browser thread, so simulate it via busy spinning.
+ var loadedVal = Atomics.load(HEAP32, addr >> 2);
+ if (val != loadedVal) return -11;
+
+ var tNow = performance.now();
+ var tEnd = tNow + timeout;
+
+
+ // Register globally which address the main thread is simulating to be waiting on. When zero, main thread is not waiting on anything,
+ // and on nonzero, the contents of address pointed by __main_thread_futex_wait_address tell which address the main thread is simulating its wait on.
+ Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr);
+ var ourWaitAddress = addr; // We may recursively re-enter this function while processing queued calls, in which case we'll do a spurious wakeup of the older wait operation.
+ while (addr == ourWaitAddress) {
+ tNow = performance.now();
+ if (tNow > tEnd) {
+ return -110;
+ }
+ _emscripten_main_thread_process_queued_calls(); // We are performing a blocking loop here, so must pump any pthreads if they want to perform operations that are proxied.
+ addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); // Look for a worker thread waking us up.
+ }
+ return 0;
+ }
+ }
function _emscripten_glClearDepthf(x0) { GLctx['clearDepth'](x0) }
function _emscripten_glClear(x0) { GLctx['clear'](x0) }
-
- function _emscripten_get_now_is_monotonic() {
- // return whether emscripten_get_now is guaranteed monotonic; the Date.now
- // implementation is not :(
- return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
- ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
- }
-
- var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
-
- function ___setErrNo(value) {
- if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
- else Module.printErr('failed to set errno from JS');
- return value;
- }function _clock_gettime(clk_id, tp) {
- // int clock_gettime(clockid_t clk_id, struct timespec *tp);
- var now;
- if (clk_id === 0) {
- now = Date.now();
- } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
- now = _emscripten_get_now();
- } else {
- ___setErrNo(ERRNO_CODES.EINVAL);
- return -1;
- }
- HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
- HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
- return 0;
- }
function _emscripten_glBindBuffer(target, buffer) {
var bufferObj = buffer ? GL.buffers[buffer] : null;
@@ -5736,6 +9469,13 @@ function copyTempDouble(ptr) {
return 0;
}
+
+
+ var cttz_i8; if (ENVIRONMENT_IS_PTHREAD) cttz_i8 = PthreadWorkerInit.cttz_i8; else PthreadWorkerInit.cttz_i8 = cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
+ Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
+ Module["___udivmoddi4"] = ___udivmoddi4;
+ Module["___uremdi3"] = ___uremdi3;
+
function _glGetUniformLocation(program, name) {
name = Pointer_stringify(name);
@@ -5830,6 +9570,8 @@ function copyTempDouble(ptr) {
GLFW.setCursorPosCallback(winid, cbfun);
}
+ function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
function _glBindAttribLocation(program, index, name) {
name = Pointer_stringify(name);
GLctx.bindAttribLocation(GL.programs[program], index, name);
@@ -5913,6 +9655,43 @@ function copyTempDouble(ptr) {
GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size));
}
+ function _emscripten_futex_wake(addr, count) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0 || count < 0) return -22;
+ if (count == 0) return 0;
+ // dump('futex_wake addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+
+ // See if main thread is waiting on this address? If so, wake it up by resetting its wake location to zero.
+ // Note that this is not a fair procedure, since we always wake main thread first before any workers, so
+ // this scheme does not adhere to real queue-based waiting.
+ var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2);
+ var mainThreadWoken = 0;
+ if (mainThreadWaitAddress == addr) {
+ var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0);
+ if (loadedAddr == mainThreadWaitAddress) {
+ --count;
+ mainThreadWoken = 1;
+ if (count <= 0) return 1;
+ }
+ }
+
+ // Wake any workers waiting on this address.
+ var ret = Atomics.wake(HEAP32, addr >> 2, count);
+ if (ret >= 0) return ret + mainThreadWoken;
+ throw 'Atomics.wake returned an unexpected value ' + ret;
+ }
+
+ function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
+ var log = GLctx.getProgramInfoLog(GL.programs[program]);
+ if (log === null) log = '(unknown error)';
+
+ if (maxLength > 0 && infoLog) {
+ var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
+ if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
+ } else {
+ if (length) HEAP32[((length)>>2)]=0;
+ }
+ }
+
function _emscripten_glGenFramebuffers(n, ids) {
for (var i = 0; i < n; ++i) {
var framebuffer = GLctx.createFramebuffer();
@@ -6019,8 +9798,181 @@ function copyTempDouble(ptr) {
GLctx.shaderSource(GL.shaders[shader], source);
}
- function _pthread_create() {
- return 11;
+
+ function __spawn_thread(threadParams) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _spawn_thread() can only ever be called from main application thread!';
+
+ var worker = PThread.getNewWorker();
+ if (worker.pthread !== undefined) throw 'Internal error!';
+ if (!threadParams.pthread_ptr) throw 'Internal error, no pthread ptr!';
+ PThread.runningWorkers.push(worker);
+
+ // Allocate memory for thread-local storage and initialize it to zero.
+ var tlsMemory = _malloc(128 * 4);
+ for (var i = 0; i < 128; ++i) {
+ HEAP32[(((tlsMemory)+(i*4))>>2)]=0;
+ }
+
+ var pthread = PThread.pthreads[threadParams.pthread_ptr] = { // Create a pthread info object to represent this thread.
+ worker: worker,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ allocatedOwnStack: threadParams.allocatedOwnStack,
+ thread: threadParams.pthread_ptr,
+ threadInfoStruct: threadParams.pthread_ptr // Info area for this thread in Emscripten HEAP (shared)
+ };
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 0 ) >> 2, 0); // threadStatus <- 0, meaning not yet exited.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 4 ) >> 2, 0); // threadExitCode <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 20 ) >> 2, 0); // profilerBlock <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 80 ) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 60 ) >> 2, 0); // Mark initial status to unused.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 52 ) >> 2, pthread.threadInfoStruct); // Main thread ID.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 96) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 92) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 8) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 12) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 20) >> 2, threadParams.schedPolicy);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 24) >> 2, threadParams.schedPrio);
+
+ var global_libc = _emscripten_get_global_libc();
+ var global_locale = global_libc + 40;
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 188) >> 2, global_locale);
+
+
+ worker.pthread = pthread;
+
+ // Ask the worker to start executing its pthread entry point function.
+ worker.postMessage({
+ cmd: 'run',
+ start_routine: threadParams.startRoutine,
+ arg: threadParams.arg,
+ threadInfoStruct: threadParams.pthread_ptr,
+ selfThreadId: threadParams.pthread_ptr, // TODO: Remove this since thread ID is now the same as the thread address.
+ parentThreadId: threadParams.parent_pthread_ptr,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ }, threadParams.transferList);
+ }
+
+ function _pthread_getschedparam(thread, policy, schedparam) {
+ if (!policy && !schedparam) return ERRNO_CODES.EINVAL;
+
+ if (!thread) {
+ Module['printErr']('pthread_getschedparam called with a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_getschedparam attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var schedPolicy = Atomics.load(HEAPU32, (thread + 120 + 20 ) >> 2);
+ var schedPrio = Atomics.load(HEAPU32, (thread + 120 + 24 ) >> 2);
+
+ if (policy) HEAP32[((policy)>>2)]=schedPolicy;
+ if (schedparam) HEAP32[((schedparam)>>2)]=schedPrio;
+ return 0;
+ }
+
+ function _pthread_self() {
+ return __pthread_ptr|0;
+ }function _pthread_create(pthread_ptr, attr, start_routine, arg) {
+ if (typeof SharedArrayBuffer === 'undefined') {
+ Module['printErr']('Current environment does not support SharedArrayBuffer, pthreads are not available!');
+ return 11;
+ }
+ if (!pthread_ptr) {
+ Module['printErr']('pthread_create called with a null thread pointer!');
+ return 22;
+ }
+
+ var transferList = []; // List of JS objects that will transfer ownership to the Worker hosting the thread
+
+
+ // Synchronously proxy the thread creation to main thread if possible. If we need to transfer ownership of objects, then
+ // proxy asynchronously via postMessage.
+ if (ENVIRONMENT_IS_PTHREAD && transferList.length == 0) {
+ return _emscripten_sync_run_in_main_thread_4(137, pthread_ptr, attr, start_routine, arg);
+ }
+
+ var stackSize = 0;
+ var stackBase = 0;
+ var detached = 0; // Default thread attr is PTHREAD_CREATE_JOINABLE, i.e. start as not detached.
+ var schedPolicy = 0; /*SCHED_OTHER*/
+ var schedPrio = 0;
+ if (attr) {
+ stackSize = HEAP32[((attr)>>2)];
+ stackBase = HEAP32[(((attr)+(8))>>2)];
+ detached = HEAP32[(((attr)+(12))>>2)] != 0/*PTHREAD_CREATE_JOINABLE*/;
+ var inheritSched = HEAP32[(((attr)+(16))>>2)] == 0/*PTHREAD_INHERIT_SCHED*/;
+ if (inheritSched) {
+ var prevSchedPolicy = HEAP32[(((attr)+(20))>>2)];
+ var prevSchedPrio = HEAP32[(((attr)+(24))>>2)];
+ _pthread_getschedparam(_pthread_self(), attr + 20, attr + 24);
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ HEAP32[(((attr)+(20))>>2)]=prevSchedPolicy;
+ HEAP32[(((attr)+(24))>>2)]=prevSchedPrio;
+ } else {
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ }
+ }
+ stackSize += 81920 /*DEFAULT_STACK_SIZE*/;
+ var allocatedOwnStack = stackBase == 0; // If allocatedOwnStack == true, then the pthread impl maintains the stack allocation.
+ if (allocatedOwnStack) {
+ stackBase = _malloc(stackSize); // Allocate a stack if the user doesn't want to place the stack in a custom memory area.
+ } else {
+ // Musl stores the stack base address assuming stack grows downwards, so adjust it to Emscripten convention that the
+ // stack grows upwards instead.
+ stackBase -= stackSize;
+ assert(stackBase > 0);
+ }
+
+ // Allocate thread block (pthread_t structure).
+ var threadInfoStruct = _malloc(244);
+ for (var i = 0; i < 244 >> 2; ++i) HEAPU32[(threadInfoStruct>>2) + i] = 0; // zero-initialize thread structure.
+ HEAP32[((pthread_ptr)>>2)]=threadInfoStruct;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((threadInfoStruct)+(24))>>2)]=threadInfoStruct;
+
+ // pthread struct robust_list head should point to itself.
+ var headPtr = threadInfoStruct + 168;
+ HEAP32[((headPtr)>>2)]=headPtr;
+
+ var threadParams = {
+ stackBase: stackBase,
+ stackSize: stackSize,
+ allocatedOwnStack: allocatedOwnStack,
+ schedPolicy: schedPolicy,
+ schedPrio: schedPrio,
+ detached: detached,
+ startRoutine: start_routine,
+ pthread_ptr: threadInfoStruct,
+ parent_pthread_ptr: _pthread_self(),
+ arg: arg,
+ transferList: transferList
+ };
+
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // The prepopulated pool of web workers that can host pthreads is stored in the main JS thread. Therefore if a
+ // pthread is attempting to spawn a new thread, the thread creation must be deferred to the main JS thread.
+ threadParams.cmd = 'spawnThread';
+ postMessage(threadParams, transferList);
+ } else {
+ // We are the main thread, so we have the pthread warmup pool in this thread and can fire off JS thread creation
+ // directly ourselves.
+ __spawn_thread(threadParams);
+ }
+
+ return 0;
}
function _emscripten_glDrawArrays(mode, first, count) {
@@ -6092,6 +10044,11 @@ function copyTempDouble(ptr) {
GLctx.bindBuffer(target, bufferObj);
}
+
+ function _emscripten_set_current_thread_status_js(newStatus) {
+ }
+ Module["_emscripten_set_current_thread_status"] = _emscripten_set_current_thread_status;
+
function _emscripten_glVertexAttrib4fv(index, v) {
GLctx.vertexAttrib4f(index, HEAPF32[v>>2], HEAPF32[v+4>>2], HEAPF32[v+8>>2], HEAPF32[v+12>>2]);
@@ -6108,6 +10065,61 @@ function copyTempDouble(ptr) {
Module["_bitshift64Lshr"] = _bitshift64Lshr;
+ function _confstr(name, buf, len) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(68, name, buf, len);
+ // size_t confstr(int name, char *buf, size_t len);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/confstr.html
+ var value;
+ switch (name) {
+ case 0:
+ value = ENV['PATH'] || '/';
+ break;
+ case 1:
+ // Mimicking glibc.
+ value = 'POSIX_V6_ILP32_OFF32\nPOSIX_V6_ILP32_OFFBIG';
+ break;
+ case 2:
+ // This JS implementation was tested against this glibc version.
+ value = 'glibc 2.14';
+ break;
+ case 3:
+ // We don't support pthreads.
+ value = '';
+ break;
+ case 1118:
+ case 1122:
+ case 1124:
+ case 1125:
+ case 1126:
+ case 1128:
+ case 1129:
+ case 1130:
+ value = '';
+ break;
+ case 1116:
+ case 1117:
+ case 1121:
+ value = '-m32';
+ break;
+ case 1120:
+ value = '-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64';
+ break;
+ default:
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return 0;
+ }
+ if (len == 0 || buf == 0) {
+ return value.length + 1;
+ } else {
+ var length = Math.min(len, value.length);
+ for (var i = 0; i < length; i++) {
+ HEAP8[(((buf)+(i))>>0)]=value.charCodeAt(i);
+ }
+ if (len > length) HEAP8[(((buf)+(i++))>>0)]=0;
+ return i;
+ }
+ }
+
function _glBufferData(target, size, data, usage) {
if (!data) {
GLctx.bufferData(target, size, usage);
@@ -6122,6 +10134,24 @@ function copyTempDouble(ptr) {
return GLctx.isShader(s);
}
+ function _getenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(111, 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 _emscripten_conditional_set_current_thread_status_js(expectedStatus, newStatus) {
+ }
+ Module["_emscripten_conditional_set_current_thread_status"] = _emscripten_conditional_set_current_thread_status;
+
function _emscripten_glDrawBuffers(n, bufs) {
var bufArray = GL.tempFixedLengthArray[n];
@@ -6200,16 +10230,9 @@ function copyTempDouble(ptr) {
GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);
}
- function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
- var log = GLctx.getProgramInfoLog(GL.programs[program]);
- if (log === null) log = '(unknown error)';
-
- if (maxLength > 0 && infoLog) {
- var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
- if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
- } else {
- if (length) HEAP32[((length)>>2)]=0;
- }
+ function ___assert_fail(condition, filename, line, func) {
+ ABORT = true;
+ throw 'Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + stackTrace();
}
function _emscripten_glVertexAttribDivisor(index, divisor) {
@@ -6248,6 +10271,26 @@ function copyTempDouble(ptr) {
GLctx['bindVertexArray'](GL.vaos[vao]);
}
+ function _setenv(envname, envval, overwrite) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(113, envname, envval, overwrite);
+ // int setenv(const char *envname, const char *envval, int overwrite);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html
+ if (envname === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ var name = Pointer_stringify(envname);
+ var val = Pointer_stringify(envval);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name) && !overwrite) return 0;
+ ENV[name] = val;
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glLoadMatrixf() {
Module['printErr']('missing function: emscripten_glLoadMatrixf'); abort(-1);
}
@@ -6402,6 +10445,16 @@ function copyTempDouble(ptr) {
GLctx.validateProgram(GL.programs[program]);
}
+ function _emscripten_syscall(which, varargs) {
+ switch (which) {
+ case 54: return ___syscall54(which, varargs);
+ case 6: return ___syscall6(which, varargs);
+ case 140: return ___syscall140(which, varargs);
+ case 146: return ___syscall146(which, varargs);
+ default: throw "surprising proxied syscall: " + which;
+ }
+ }
+
function _glTexParameteri(x0, x1, x2) { GLctx['texParameteri'](x0, x1, x2) }
function _glFrontFace(x0) { GLctx['frontFace'](x0) }
@@ -6430,6 +10483,72 @@ function copyTempDouble(ptr) {
}
}
+ function _fpathconf(fildes, name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(46, fildes, name);
+ // long fpathconf(int fildes, int name);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/encrypt.html
+ // NOTE: The first parameter is ignored, so pathconf == fpathconf.
+ // The constants here aren't real values. Just mimicking glibc.
+ switch (name) {
+ case 0:
+ return 32000;
+ case 1:
+ case 2:
+ case 3:
+ return 255;
+ case 4:
+ case 5:
+ case 16:
+ case 17:
+ case 18:
+ return 4096;
+ case 6:
+ case 7:
+ case 20:
+ return 1;
+ case 8:
+ return 0;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 14:
+ case 15:
+ case 19:
+ return -1;
+ case 13:
+ return 64;
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
+ function _putenv(string) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(115, 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 _emscripten_glGenVertexArrays(n, arrays) {
for (var i = 0; i < n; i++) {
@@ -6454,10 +10573,32 @@ function copyTempDouble(ptr) {
return ret;
}
+
function _emscripten_glGetBooleanv(name_, p) {
emscriptenWebGLGet(name_, p, 'Boolean');
}
+ function _utimes(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(13, path, times);
+ var time;
+ if (times) {
+ var offset = 8 + 0;
+ time = HEAP32[(((times)+(offset))>>2)] * 1000;
+ offset = 8 + 4;
+ time += HEAP32[(((times)+(offset))>>2)] / 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCompileShader(shader) {
GLctx.compileShader(GL.shaders[shader]);
}
@@ -6484,8 +10625,14 @@ Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, res
Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) };
+FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;Module["FS_unlink"] = FS.unlink;;
+__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() });;
+if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); };
JSEvents.staticInit();;
-/* flush anything remaining in the buffer during shutdown */ __ATEXIT__.push(function() { var fflush = Module["_fflush"]; if (fflush) fflush(0); var printChar = ___syscall146.printChar; if (!printChar) return; var buffers = ___syscall146.buffers; if (buffers[1].length) printChar(1, 10); if (buffers[2].length) printChar(2, 10); });;
+if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock();;
+if (!ENVIRONMENT_IS_PTHREAD) ___buildEnvironment(ENV);;
+if (!ENVIRONMENT_IS_PTHREAD) {
+ // Only main thread initializes these, pthreads copy them over at thread worker init time (in pthread-main.js)
DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC);
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
@@ -6500,6 +10647,8 @@ staticSealed = true; // seal the static portion of memory
assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
+}
+
function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
@@ -6767,8 +10916,8 @@ function invoke_viiii(index,a1,a2,a3,a4) {
}
Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity };
-
-Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_glUniform4f": _glUniform4f, "_glfwWindowShouldClose": _glfwWindowShouldClose, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "_glLinkProgram": _glLinkProgram, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "___syscall146": ___syscall146, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glGetFloatv": _glGetFloatv, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_glfwWaitEvents": _glfwWaitEvents, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
+Module.asmGlobalArg['Atomics'] = Atomics;
+Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "___assert_fail": ___assert_fail, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_sysconf": _sysconf, "_utime": _utime, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_chroot": _chroot, "_glUniform4f": _glUniform4f, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "__pthread_testcancel_js": __pthread_testcancel_js, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_unsetenv": _unsetenv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "___syscall146": ___syscall146, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_asm_const_v": _emscripten_asm_const_v, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_pthread_self": _pthread_self, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "__register_pthread_ptr": __register_pthread_ptr, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "_gettimeofday": _gettimeofday, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "__spawn_thread": __spawn_thread, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_emscripten_conditional_set_current_thread_status_js": _emscripten_conditional_set_current_thread_status_js, "_putenv": _putenv, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_fpathconf": _fpathconf, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_is_main_runtime_thread": _emscripten_is_main_runtime_thread, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "___buildEnvironment": ___buildEnvironment, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_utimes": _utimes, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_tzset": _tzset, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_glGetFloatv": _glGetFloatv, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "___clock_gettime": ___clock_gettime, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_clearenv": _clearenv, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_getenv": _getenv, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_emscripten_futex_wake": _emscripten_futex_wake, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "__cleanup_thread": __cleanup_thread, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_set_current_thread_status_js": _emscripten_set_current_thread_status_js, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_syscall": _emscripten_syscall, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_glLinkProgram": _glLinkProgram, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_futex_wait": _emscripten_futex_wait, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "___pthread_setcancelstate": ___pthread_setcancelstate, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_confstr": _confstr, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_pthread_getschedparam": _pthread_getschedparam, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_atexit": _atexit, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_setenv": _setenv, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
'use asm';
@@ -6873,7 +11022,6 @@ var asm = (function(global, env, buffer) {
var invoke_viiii=env.invoke_viiii;
var _emscripten_glGetTexParameterfv=env._emscripten_glGetTexParameterfv;
var _glUseProgram=env._glUseProgram;
- var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _glfwCreateWindow=env._glfwCreateWindow;
var _emscripten_glReleaseShaderCompiler=env._emscripten_glReleaseShaderCompiler;
var _emscripten_glBlendFuncSeparate=env._emscripten_glBlendFuncSeparate;
@@ -6884,6 +11032,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilMaskSeparate=env._emscripten_glStencilMaskSeparate;
var _emscripten_glViewport=env._emscripten_glViewport;
var _emscripten_glFrontFace=env._emscripten_glFrontFace;
+ var ___assert_fail=env.___assert_fail;
var _glDeleteProgram=env._glDeleteProgram;
var _emscripten_glUniform3fv=env._emscripten_glUniform3fv;
var _emscripten_glPolygonOffset=env._emscripten_glPolygonOffset;
@@ -6896,25 +11045,26 @@ var asm = (function(global, env, buffer) {
var _emscripten_set_fullscreenchange_callback=env._emscripten_set_fullscreenchange_callback;
var _emscripten_set_touchmove_callback=env._emscripten_set_touchmove_callback;
var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing;
- var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _glDisable=env._glDisable;
var _glBlendFunc=env._glBlendFunc;
var _emscripten_glDisableVertexAttribArray=env._emscripten_glDisableVertexAttribArray;
var _glGetAttribLocation=env._glGetAttribLocation;
var _glDisableVertexAttribArray=env._glDisableVertexAttribArray;
var _glCreateShader=env._glCreateShader;
+ var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _sysconf=env._sysconf;
+ var _utime=env._utime;
var _emscripten_glSampleCoverage=env._emscripten_glSampleCoverage;
var _emscripten_glVertexPointer=env._emscripten_glVertexPointer;
var _emscripten_set_touchstart_callback=env._emscripten_set_touchstart_callback;
var emscriptenWebGLComputeImageSize=env.emscriptenWebGLComputeImageSize;
var _emscripten_glGetBooleanv=env._emscripten_glGetBooleanv;
var _emscripten_glGetShaderSource=env._emscripten_glGetShaderSource;
+ var _chroot=env._chroot;
var _glUniform4f=env._glUniform4f;
- var _glfwWindowShouldClose=env._glfwWindowShouldClose;
var _llvm_stacksave=env._llvm_stacksave;
var _emscripten_glUniform1i=env._emscripten_glUniform1i;
- var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
- var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
var _emscripten_glGenBuffers=env._emscripten_glGenBuffers;
var _emscripten_glDeleteObjectARB=env._emscripten_glDeleteObjectARB;
var _glfwSetWindowSizeCallback=env._glfwSetWindowSizeCallback;
@@ -6926,9 +11076,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glIsFramebuffer=env._emscripten_glIsFramebuffer;
var _emscripten_glIsEnabled=env._emscripten_glIsEnabled;
var _emscripten_glScissor=env._emscripten_glScissor;
+ var __pthread_testcancel_js=env.__pthread_testcancel_js;
var _emscripten_glVertexAttrib4fv=env._emscripten_glVertexAttrib4fv;
var _emscripten_glFramebufferTexture2D=env._emscripten_glFramebufferTexture2D;
var _emscripten_glTexParameteriv=env._emscripten_glTexParameteriv;
+ var _unsetenv=env._unsetenv;
var _emscripten_glBindProgramARB=env._emscripten_glBindProgramARB;
var _emscripten_glStencilOpSeparate=env._emscripten_glStencilOpSeparate;
var _emscripten_glFramebufferRenderbuffer=env._emscripten_glFramebufferRenderbuffer;
@@ -6936,13 +11088,14 @@ var asm = (function(global, env, buffer) {
var _glfwSetErrorCallback=env._glfwSetErrorCallback;
var _glfwDefaultWindowHints=env._glfwDefaultWindowHints;
var _glfwDestroyWindow=env._glfwDestroyWindow;
- var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
+ var ___syscall146=env.___syscall146;
var _emscripten_glGetActiveAttrib=env._emscripten_glGetActiveAttrib;
var _emscripten_glAttachShader=env._emscripten_glAttachShader;
var _emscripten_get_now_is_monotonic=env._emscripten_get_now_is_monotonic;
var _emscripten_glUniform2i=env._emscripten_glUniform2i;
var _emscripten_glUniform2f=env._emscripten_glUniform2f;
var _emscripten_glTexParameterfv=env._emscripten_glTexParameterfv;
+ var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
var _emscripten_glUniformMatrix2fv=env._emscripten_glUniformMatrix2fv;
var _glGetProgramInfoLog=env._glGetProgramInfoLog;
var _glfwSetScrollCallback=env._glfwSetScrollCallback;
@@ -6967,17 +11120,21 @@ var asm = (function(global, env, buffer) {
var _glDepthFunc=env._glDepthFunc;
var _emscripten_glClientActiveTexture=env._emscripten_glClientActiveTexture;
var _emscripten_glVertexAttrib2f=env._emscripten_glVertexAttrib2f;
+ var _emscripten_asm_const_v=env._emscripten_asm_const_v;
var _emscripten_glFlush=env._emscripten_glFlush;
var _emscripten_glBlendFunc=env._emscripten_glBlendFunc;
var _emscripten_glCheckFramebufferStatus=env._emscripten_glCheckFramebufferStatus;
var _emscripten_glGenerateMipmap=env._emscripten_glGenerateMipmap;
var _emscripten_glGetError=env._emscripten_glGetError;
var _emscripten_glClearDepthf=env._emscripten_glClearDepthf;
+ var _pthread_self=env._pthread_self;
var _emscripten_glBufferData=env._emscripten_glBufferData;
var _emscripten_glUniform3i=env._emscripten_glUniform3i;
+ var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
var _emscripten_glRotatef=env._emscripten_glRotatef;
var _emscripten_glDeleteShader=env._emscripten_glDeleteShader;
var _glEnable=env._glEnable;
+ var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
var _emscripten_glReadPixels=env._emscripten_glReadPixels;
var _emscripten_glMatrixMode=env._emscripten_glMatrixMode;
var _glGetString=env._glGetString;
@@ -6985,7 +11142,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glGetUniformLocation=env._emscripten_glGetUniformLocation;
var emscriptenWebGLGet=env.emscriptenWebGLGet;
var _emscripten_glEnableVertexAttribArray=env._emscripten_glEnableVertexAttribArray;
- var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
+ var __register_pthread_ptr=env.__register_pthread_ptr;
var _emscripten_get_now=env._emscripten_get_now;
var _emscripten_glNormalPointer=env._emscripten_glNormalPointer;
var _glAttachShader=env._glAttachShader;
@@ -6994,41 +11151,49 @@ var asm = (function(global, env, buffer) {
var _glCreateProgram=env._glCreateProgram;
var _glUniformMatrix4fv=env._glUniformMatrix4fv;
var _emscripten_glClearDepth=env._emscripten_glClearDepth;
- var _glLinkProgram=env._glLinkProgram;
var ___lock=env.___lock;
var emscriptenWebGLGetTexPixelData=env.emscriptenWebGLGetTexPixelData;
var ___syscall6=env.___syscall6;
- var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
+ var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
var _emscripten_glVertexAttrib3f=env._emscripten_glVertexAttrib3f;
var _time=env._time;
- var ___syscall146=env.___syscall146;
+ var _gettimeofday=env._gettimeofday;
+ var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
var _emscripten_glGetFramebufferAttachmentParameteriv=env._emscripten_glGetFramebufferAttachmentParameteriv;
var _emscripten_glBlendEquationSeparate=env._emscripten_glBlendEquationSeparate;
var _exit=env._exit;
var _emscripten_glEnableClientState=env._emscripten_glEnableClientState;
+ var __spawn_thread=env.__spawn_thread;
var _emscripten_glUniform4i=env._emscripten_glUniform4i;
+ var _emscripten_conditional_set_current_thread_status_js=env._emscripten_conditional_set_current_thread_status_js;
+ var _putenv=env._putenv;
var _pthread_join=env._pthread_join;
var _glCullFace=env._glCullFace;
var _emscripten_glGetPointerv=env._emscripten_glGetPointerv;
var _emscripten_set_keypress_callback=env._emscripten_set_keypress_callback;
var __emscripten_sample_gamepad_data=env.__emscripten_sample_gamepad_data;
+ var _fpathconf=env._fpathconf;
var _emscripten_get_gamepad_status=env._emscripten_get_gamepad_status;
var _emscripten_glUniform4f=env._emscripten_glUniform4f;
var _emscripten_glUniform2fv=env._emscripten_glUniform2fv;
var _glfwGetVideoModes=env._glfwGetVideoModes;
var ___unlock=env.___unlock;
var _emscripten_set_click_callback=env._emscripten_set_click_callback;
+ var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_is_main_runtime_thread=env._emscripten_is_main_runtime_thread;
var _emscripten_glShaderBinary=env._emscripten_glShaderBinary;
var _emscripten_glDrawElements=env._emscripten_glDrawElements;
var _glVertexAttribPointer=env._glVertexAttribPointer;
var _emscripten_get_num_gamepads=env._emscripten_get_num_gamepads;
+ var ___buildEnvironment=env.___buildEnvironment;
var _glCompressedTexImage2D=env._glCompressedTexImage2D;
+ var _utimes=env._utimes;
var _emscripten_glUniform1iv=env._emscripten_glUniform1iv;
var _emscripten_glGetVertexAttribPointerv=env._emscripten_glGetVertexAttribPointerv;
var _glClearDepthf=env._glClearDepthf;
var _emscripten_glCompressedTexSubImage2D=env._emscripten_glCompressedTexSubImage2D;
var emscriptenWebGLGetUniform=env.emscriptenWebGLGetUniform;
- var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
+ var _tzset=env._tzset;
var _emscripten_glDeleteVertexArrays=env._emscripten_glDeleteVertexArrays;
var _glfwSetWindowShouldClose=env._glfwSetWindowShouldClose;
var _emscripten_glUniform1fv=env._emscripten_glUniform1fv;
@@ -7039,29 +11204,33 @@ var asm = (function(global, env, buffer) {
var _emscripten_glHint=env._emscripten_glHint;
var _glfwSetCharCallback=env._glfwSetCharCallback;
var emscriptenWebGLGetVertexAttrib=env.emscriptenWebGLGetVertexAttrib;
- var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
+ var _glGetFloatv=env._glGetFloatv;
var _emscripten_glDeleteProgram=env._emscripten_glDeleteProgram;
var _emscripten_glDeleteRenderbuffers=env._emscripten_glDeleteRenderbuffers;
+ var ___clock_gettime=env.___clock_gettime;
var _emscripten_glDrawElementsInstanced=env._emscripten_glDrawElementsInstanced;
var _emscripten_glVertexAttrib4f=env._emscripten_glVertexAttrib4f;
var _glDrawArrays=env._glDrawArrays;
var _emscripten_glTexSubImage2D=env._emscripten_glTexSubImage2D;
- var _emscripten_memcpy_big=env._emscripten_memcpy_big;
+ var _clearenv=env._clearenv;
var _emscripten_glPixelStorei=env._emscripten_glPixelStorei;
var _glCompileShader=env._glCompileShader;
var _emscripten_get_pointerlock_status=env._emscripten_get_pointerlock_status;
+ var _emscripten_memcpy_big=env._emscripten_memcpy_big;
var _emscripten_glUniformMatrix3fv=env._emscripten_glUniformMatrix3fv;
var _emscripten_glColorPointer=env._emscripten_glColorPointer;
+ var _getenv=env._getenv;
var _emscripten_glDepthRange=env._emscripten_glDepthRange;
var _emscripten_glGetBufferParameteriv=env._emscripten_glGetBufferParameteriv;
var _emscripten_glFinish=env._emscripten_glFinish;
- var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
- var _glGetFloatv=env._glGetFloatv;
+ var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _emscripten_asm_const_iii=env._emscripten_asm_const_iii;
var _emscripten_glDepthMask=env._emscripten_glDepthMask;
var _glfwSetWindowIconifyCallback=env._glfwSetWindowIconifyCallback;
var _emscripten_glDrawBuffers=env._emscripten_glDrawBuffers;
var _glfwTerminate=env._glfwTerminate;
+ var _emscripten_futex_wake=env._emscripten_futex_wake;
var _glFrontFace=env._glFrontFace;
var _emscripten_glGetObjectParameterivARB=env._emscripten_glGetObjectParameterivARB;
var _emscripten_exit_pointerlock=env._emscripten_exit_pointerlock;
@@ -7071,10 +11240,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilFunc=env._emscripten_glStencilFunc;
var _abort=env._abort;
var _emscripten_glGetUniformiv=env._emscripten_glGetUniformiv;
+ var __cleanup_thread=env.__cleanup_thread;
var _glDeleteBuffers=env._glDeleteBuffers;
var _glBufferData=env._glBufferData;
var _glTexImage2D=env._glTexImage2D;
- var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
+ var _emscripten_set_current_thread_status_js=env._emscripten_set_current_thread_status_js;
var _glfwSetKeyCallback=env._glfwSetKeyCallback;
var _emscripten_glGenFramebuffers=env._emscripten_glGenFramebuffers;
var _emscripten_glUniformMatrix4fv=env._emscripten_glUniformMatrix4fv;
@@ -7085,8 +11255,9 @@ var asm = (function(global, env, buffer) {
var _emscripten_glBindFramebuffer=env._emscripten_glBindFramebuffer;
var _emscripten_glIsRenderbuffer=env._emscripten_glIsRenderbuffer;
var _glfwGetTime=env._glfwGetTime;
- var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _emscripten_set_gamepadconnected_callback=env._emscripten_set_gamepadconnected_callback;
+ var _emscripten_syscall=env._emscripten_syscall;
var _emscripten_glGetVertexAttribiv=env._emscripten_glGetVertexAttribiv;
var _emscripten_glBindVertexArray=env._emscripten_glBindVertexArray;
var _emscripten_glDrawArraysInstanced=env._emscripten_glDrawArraysInstanced;
@@ -7096,18 +11267,19 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDeleteTextures=env._emscripten_glDeleteTextures;
var _emscripten_glBindRenderbuffer=env._emscripten_glBindRenderbuffer;
var _glfwGetPrimaryMonitor=env._glfwGetPrimaryMonitor;
- var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
+ var _glLinkProgram=env._glLinkProgram;
var _emscripten_glVertexAttribDivisor=env._emscripten_glVertexAttribDivisor;
var _emscripten_set_touchend_callback=env._emscripten_set_touchend_callback;
var _emscripten_glGetUniformfv=env._emscripten_glGetUniformfv;
var _emscripten_glGetVertexAttribfv=env._emscripten_glGetVertexAttribfv;
var _emscripten_glGetRenderbufferParameteriv=env._emscripten_glGetRenderbufferParameteriv;
+ var _emscripten_futex_wait=env._emscripten_futex_wait;
var _emscripten_glDeleteFramebuffers=env._emscripten_glDeleteFramebuffers;
var _glGetShaderiv=env._glGetShaderiv;
var _emscripten_glVertexAttrib3fv=env._emscripten_glVertexAttrib3fv;
var _glGetUniformLocation=env._glGetUniformLocation;
var _emscripten_glGetInfoLogARB=env._emscripten_glGetInfoLogARB;
- var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
var _glClear=env._glClear;
var _glGenTextures=env._glGenTextures;
var _emscripten_glDisable=env._emscripten_glDisable;
@@ -7117,12 +11289,14 @@ var asm = (function(global, env, buffer) {
var _emscripten_glUniform3f=env._emscripten_glUniform3f;
var _emscripten_glGetShaderInfoLog=env._emscripten_glGetShaderInfoLog;
var _emscripten_glStencilOp=env._emscripten_glStencilOp;
+ var ___pthread_setcancelstate=env.___pthread_setcancelstate;
var _glBindAttribLocation=env._glBindAttribLocation;
var _glPixelStorei=env._glPixelStorei;
var _emscripten_glColorMask=env._emscripten_glColorMask;
var _emscripten_glLinkProgram=env._emscripten_glLinkProgram;
var _emscripten_glBlendEquation=env._emscripten_glBlendEquation;
var _emscripten_glIsTexture=env._emscripten_glIsTexture;
+ var _confstr=env._confstr;
var _emscripten_glGetProgramiv=env._emscripten_glGetProgramiv;
var _emscripten_glVertexAttrib1fv=env._emscripten_glVertexAttrib1fv;
var _emscripten_glBindTexture=env._emscripten_glBindTexture;
@@ -7132,29 +11306,42 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDrawRangeElements=env._emscripten_glDrawRangeElements;
var ___syscall54=env.___syscall54;
var _emscripten_glDeleteBuffers=env._emscripten_glDeleteBuffers;
- var _glfwWaitEvents=env._glfwWaitEvents;
+ var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
var _glfwSwapBuffers=env._glfwSwapBuffers;
var _pthread_create=env._pthread_create;
var _emscripten_set_main_loop=env._emscripten_set_main_loop;
var _emscripten_glGetProgramInfoLog=env._emscripten_glGetProgramInfoLog;
var _glfwWindowHint=env._glfwWindowHint;
+ var _pthread_getschedparam=env._pthread_getschedparam;
var _emscripten_glIsShader=env._emscripten_glIsShader;
var _emscripten_glUniform4fv=env._emscripten_glUniform4fv;
var _emscripten_glGenVertexArrays=env._emscripten_glGenVertexArrays;
var _emscripten_glDrawArrays=env._emscripten_glDrawArrays;
var _emscripten_glCompressedTexImage2D=env._emscripten_glCompressedTexImage2D;
var _emscripten_glClearColor=env._emscripten_glClearColor;
+ var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
var _emscripten_glCreateProgram=env._emscripten_glCreateProgram;
var _emscripten_glCopyTexSubImage2D=env._emscripten_glCopyTexSubImage2D;
+ var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
var _glTexParameteri=env._glTexParameteri;
var _emscripten_glBindBuffer=env._emscripten_glBindBuffer;
+ var _atexit=env._atexit;
var _emscripten_glGetFloatv=env._emscripten_glGetFloatv;
var _emscripten_glDetachShader=env._emscripten_glDetachShader;
var _glClearColor=env._glClearColor;
var _glfwSetCursorPosCallback=env._glfwSetCursorPosCallback;
- var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
+ var _setenv=env._setenv;
var _emscripten_glCopyTexImage2D=env._emscripten_glCopyTexImage2D;
var _emscripten_glTexImage2D=env._emscripten_glTexImage2D;
+ var Atomics_load=global.Atomics.load;
+ var Atomics_store=global.Atomics.store;
+ var Atomics_exchange=global.Atomics.exchange;
+ var Atomics_compareExchange=global.Atomics.compareExchange;
+ var Atomics_add=global.Atomics.add;
+ var Atomics_sub=global.Atomics.sub;
+ var Atomics_and=global.Atomics.and;
+ var Atomics_or=global.Atomics.or;
+ var Atomics_xor=global.Atomics.xor;
var tempFloat = 0.0;
// EMSCRIPTEN_START_FUNCS
@@ -7203,7 +11390,7 @@ function getTempRet0() {
function _InitPhysics() {
var label = 0, sp = 0;
sp = STACKTOP;
- (_pthread_create((14160|0),(0|0),(2|0),(0|0))|0);
+ (_pthread_create((14312|0),(0|0),(2|0),(0|0))|0);
return;
}
function _PhysicsLoop($0) {
@@ -7211,53 +11398,53 @@ function _PhysicsLoop($0) {
var $$0 = 0, $$010 = 0, $$011 = 0, $$09 = 0, $$0912 = 0, $$0913 = 0, $$pr = 0.0, $1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0;
var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3541] = 1;
- HEAPF64[1732] = 0.0;
+ HEAP32[3579] = 1;
+ HEAPF64[1751] = 0.0;
_InitTimer();
- $1 = HEAP32[3541]|0;
+ $1 = HEAP32[3579]|0;
$2 = ($1|0)==(0);
if (!($2)) {
while(1) {
$3 = (+_GetCurrentTime());
- HEAPF64[1733] = $3;
- $4 = +HEAPF64[1734];
+ HEAPF64[1752] = $3;
+ $4 = +HEAPF64[1753];
$5 = $3 - $4;
- HEAPF64[1735] = $5;
- $6 = +HEAPF64[1732];
+ HEAPF64[1754] = $5;
+ $6 = +HEAPF64[1751];
$7 = $5 + $6;
- HEAPF64[1732] = $7;
+ HEAPF64[1751] = $7;
_MathClamp();
- $$pr = +HEAPF64[1732];
+ $$pr = +HEAPF64[1751];
$8 = !($$pr >= 0.016666666666666666);
if (!($8)) {
while(1) {
_PhysicsStep();
- $9 = +HEAPF64[1735];
- $10 = +HEAPF64[1732];
+ $9 = +HEAPF64[1754];
+ $10 = +HEAPF64[1751];
$11 = $10 - $9;
- HEAPF64[1732] = $11;
+ HEAPF64[1751] = $11;
$12 = !($11 >= 0.016666666666666666);
if ($12) {
break;
}
}
}
- $13 = +HEAPF64[1733];
- HEAPF64[1734] = $13;
- $14 = HEAP32[3541]|0;
+ $13 = +HEAPF64[1752];
+ HEAPF64[1753] = $13;
+ $14 = HEAP32[3579]|0;
$15 = ($14|0)==(0);
if ($15) {
break;
}
}
}
- $16 = HEAP32[3608]|0;
+ $16 = HEAP32[3646]|0;
$$0912 = (($16) + -1)|0;
$17 = ($$0912|0)>(-1);
if ($17) {
$$0913 = $$0912;
while(1) {
- $20 = (14436 + ($$0913<<2)|0);
+ $20 = (14588 + ($$0913<<2)|0);
$21 = HEAP32[$20>>2]|0;
_DestroyPhysicsManifold($21);
$$09 = (($$0913) + -1)|0;
@@ -7269,7 +11456,7 @@ function _PhysicsLoop($0) {
}
}
}
- $18 = HEAP32[3543]|0;
+ $18 = HEAP32[3581]|0;
$$010 = (($18) + -1)|0;
$19 = ($$010|0)>(-1);
if ($19) {
@@ -7278,7 +11465,7 @@ function _PhysicsLoop($0) {
return (0|0);
}
while(1) {
- $23 = (14176 + ($$011<<2)|0);
+ $23 = (14328 + ($$011<<2)|0);
$24 = HEAP32[$23>>2]|0;
_DestroyPhysicsBody($24);
$$0 = (($$011) + -1)|0;
@@ -7324,10 +11511,10 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
$5 = sp + 8|0;
$6 = sp;
$7 = (_malloc(500)|0);
- $8 = HEAP32[3542]|0;
+ $8 = HEAP32[3580]|0;
$9 = (($8) + 500)|0;
- HEAP32[3542] = $9;
- $10 = HEAP32[3543]|0;
+ HEAP32[3580] = $9;
+ $10 = HEAP32[3581]|0;
$11 = ($10|0)==(0);
$$0116149 = 0;
L1: while(1) {
@@ -7338,7 +11525,7 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
$$0119144 = 0;
}
while(1) {
- $14 = (14176 + ($$0119144<<2)|0);
+ $14 = (14328 + ($$0119144<<2)|0);
$15 = HEAP32[$14>>2]|0;
$16 = HEAP32[$15>>2]|0;
$17 = ($16|0)==($$0116149|0);
@@ -7534,11 +11721,11 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
HEAP32[$118>>2] = 0;
$119 = ((($7)) + 80|0);
HEAP32[$119>>2] = 0;
- $120 = HEAP32[3543]|0;
- $121 = (14176 + ($120<<2)|0);
+ $120 = HEAP32[3581]|0;
+ $121 = (14328 + ($120<<2)|0);
HEAP32[$121>>2] = $7;
$122 = (($120) + 1)|0;
- HEAP32[3543] = $122;
+ HEAP32[3581] = $122;
STACKTOP = sp;return ($7|0);
}
function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
@@ -7563,10 +11750,10 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$6 = sp + 8|0;
$7 = sp;
$8 = (_malloc(500)|0);
- $9 = HEAP32[3542]|0;
+ $9 = HEAP32[3580]|0;
$10 = (($9) + 500)|0;
- HEAP32[3542] = $10;
- $11 = HEAP32[3543]|0;
+ HEAP32[3580] = $10;
+ $11 = HEAP32[3581]|0;
$12 = ($11|0)==(0);
$$0116149 = 0;
L1: while(1) {
@@ -7577,7 +11764,7 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$$0119144 = 0;
}
while(1) {
- $15 = (14176 + ($$0119144<<2)|0);
+ $15 = (14328 + ($$0119144<<2)|0);
$16 = HEAP32[$15>>2]|0;
$17 = HEAP32[$16>>2]|0;
$18 = ($17|0)==($$0116149|0);
@@ -7778,11 +11965,11 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
HEAP32[$120>>2] = 0;
$121 = ((($8)) + 80|0);
HEAP32[$121>>2] = 0;
- $122 = HEAP32[3543]|0;
- $123 = (14176 + ($122<<2)|0);
+ $122 = HEAP32[3581]|0;
+ $123 = (14328 + ($122<<2)|0);
HEAP32[$123>>2] = $8;
$124 = (($122) + 1)|0;
- HEAP32[3543] = $124;
+ HEAP32[3581] = $124;
STACKTOP = sp;return ($8|0);
}
function _CreateRectanglePolygon($0,$1,$2) {
@@ -8055,16 +12242,16 @@ function _DestroyPhysicsBody($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3543]|0;
+ $3 = HEAP32[3581]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3543]|0;
+ $5 = HEAP32[3581]|0;
$$02023 = 0;
while(1) {
- $6 = (14176 + ($$02023<<2)|0);
+ $6 = (14328 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -8083,24 +12270,24 @@ function _DestroyPhysicsBody($0) {
}
}
} while(0);
- $12 = (14176 + ($$021<<2)|0);
+ $12 = (14328 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3542]|0;
+ $14 = HEAP32[3580]|0;
$15 = (($14) + -500)|0;
- HEAP32[3542] = $15;
+ HEAP32[3580] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3543]|0;
+ $16 = HEAP32[3581]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3543]|0;
+ $18 = HEAP32[3581]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14176 + ($$022<<2)|0);
- $25 = (14176 + ($20<<2)|0);
+ $24 = (14328 + ($$022<<2)|0);
+ $25 = (14328 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -8116,7 +12303,7 @@ function _DestroyPhysicsBody($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3543] = $19;
+ HEAP32[3581] = $19;
return;
}
function _Vector2Subtract_4($0,$1,$2) {
@@ -8161,20 +12348,20 @@ function _MathNormalize($0) {
function _GetPhysicsBodiesCount() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[3543]|0;
+ $0 = HEAP32[3581]|0;
return ($0|0);
}
function _GetPhysicsBody($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3543]|0;
+ $1 = HEAP32[3581]|0;
$2 = ($1>>>0)>($0>>>0);
if (!($2)) {
$$0 = 0;
return ($$0|0);
}
- $3 = (14176 + ($0<<2)|0);
+ $3 = (14328 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$0 = $4;
return ($$0|0);
@@ -8183,11 +12370,11 @@ function _GetPhysicsShapeVerticesCount($0) {
$0 = $0|0;
var $$1 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3543]|0;
+ $1 = HEAP32[3581]|0;
$2 = ($1>>>0)>($0>>>0);
L1: do {
if ($2) {
- $3 = (14176 + ($0<<2)|0);
+ $3 = (14328 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$5 = ($4|0)==(0|0);
if ($5) {
@@ -8314,20 +12501,20 @@ function _ResetPhysics() {
var $$0 = 0, $$016 = 0, $$01620 = 0, $$01621 = 0, $$018 = 0, $$019 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
var $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[3543]|0;
+ $0 = HEAP32[3581]|0;
$$01620 = (($0) + -1)|0;
$1 = ($$01620|0)>(-1);
if ($1) {
$$01621 = $$01620;
while(1) {
- $4 = (14176 + ($$01621<<2)|0);
+ $4 = (14328 + ($$01621<<2)|0);
$5 = HEAP32[$4>>2]|0;
$6 = ($5|0)==(0|0);
if (!($6)) {
_free($5);
- $8 = HEAP32[3542]|0;
+ $8 = HEAP32[3580]|0;
$9 = (($8) + -500)|0;
- HEAP32[3542] = $9;
+ HEAP32[3580] = $9;
}
$$016 = (($$01621) + -1)|0;
$7 = ($$016|0)>(-1);
@@ -8338,25 +12525,25 @@ function _ResetPhysics() {
}
}
}
- HEAP32[3543] = 0;
- $2 = HEAP32[3608]|0;
+ HEAP32[3581] = 0;
+ $2 = HEAP32[3646]|0;
$$018 = (($2) + -1)|0;
$3 = ($$018|0)>(-1);
if ($3) {
$$019 = $$018;
} else {
- HEAP32[3608] = 0;
+ HEAP32[3646] = 0;
return;
}
while(1) {
- $10 = (14436 + ($$019<<2)|0);
+ $10 = (14588 + ($$019<<2)|0);
$11 = HEAP32[$10>>2]|0;
$12 = ($11|0)==(0|0);
if (!($12)) {
_free($11);
- $14 = HEAP32[3542]|0;
+ $14 = HEAP32[3580]|0;
$15 = (($14) + -56)|0;
- HEAP32[3542] = $15;
+ HEAP32[3580] = $15;
}
$$0 = (($$019) + -1)|0;
$13 = ($$0|0)>(-1);
@@ -8366,219 +12553,256 @@ function _ResetPhysics() {
break;
}
}
- HEAP32[3608] = 0;
+ HEAP32[3646] = 0;
return;
}
function _ClosePhysics() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3541] = 0;
- $0 = HEAP32[3540]|0;
+ HEAP32[3579] = 0;
+ $0 = HEAP32[3578]|0;
(_pthread_join(($0|0),(0|0))|0);
return;
}
function _main() {
- var $$07279 = 0, $$07375 = 0, $$07375$in = 0, $$076 = 0, $$byval_copy7 = 0, $$byval_copy8 = 0, $$byval_copy9 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0;
- var $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0;
- var $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0.0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0;
- var $57 = 0, $58 = 0.0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $exitcond86 = 0, label = 0;
- var sp = 0;
+ var $$byval_copy1 = 0, $0 = 0, $1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0.0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0.0, $23 = 0, $24 = 0, $3 = 0;
+ var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
- $$byval_copy9 = sp + 112|0;
- $$byval_copy8 = sp + 104|0;
- $$byval_copy7 = sp + 96|0;
- $0 = sp + 88|0;
- $1 = sp + 80|0;
- $2 = sp + 72|0;
- $3 = sp + 64|0;
- $4 = sp + 56|0;
- $5 = sp + 48|0;
- $6 = sp + 124|0;
- $7 = sp + 24|0;
- $8 = sp + 8|0;
- $9 = sp + 120|0;
- $10 = sp + 40|0;
- $11 = sp + 36|0;
- $12 = sp + 32|0;
- $13 = sp + 16|0;
- $14 = sp;
+ STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
+ $$byval_copy1 = sp + 16|0;
+ $0 = sp + 8|0;
+ $1 = sp;
_SetConfigFlags(32);
- _InitWindow(800,450,3480);
+ $2 = HEAP32[2]|0;
+ $3 = HEAP32[3]|0;
+ _InitWindow($2,$3,3248);
_SetTargetFPS(60);
- $15 = (_MeasureText(3511,30)|0);
- $16 = (800 - ($15))|0;
- $17 = (($16) + -10)|0;
+ $4 = HEAP32[2]|0;
+ $5 = (_MeasureText(3279,30)|0);
+ $6 = (($4) + -10)|0;
+ $7 = (($6) - ($5))|0;
+ HEAP32[7743] = $7;
_InitPhysics();
- HEAPF32[$0>>2] = 400.0;
- $18 = ((($0)) + 4|0);
- HEAPF32[$18>>2] = 450.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$0+4>>2]|0;
- $19 = (_CreatePhysicsBodyRectangle($$byval_copy9,500.0,100.0,10.0)|0);
- $20 = ((($19)) + 4|0);
- HEAP32[$20>>2] = 0;
- HEAPF32[$1>>2] = 400.0;
- $21 = ((($1)) + 4|0);
- HEAPF32[$21>>2] = 225.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$1+4>>2]|0;
- $22 = (_CreatePhysicsBodyCircle($$byval_copy9,45.0,10.0)|0);
- $23 = ((($22)) + 4|0);
- HEAP32[$23>>2] = 0;
- $24 = (_WindowShouldClose()|0);
- $25 = ($24|0)==(0);
- if (!($25)) {
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
- }
- $26 = ((($6)) + 1|0);
- $27 = ((($6)) + 2|0);
- $28 = ((($6)) + 3|0);
- $29 = (($16) + 40)|0;
- $30 = ((($9)) + 1|0);
- $31 = ((($9)) + 2|0);
- $32 = ((($9)) + 3|0);
- $33 = ((($2)) + 4|0);
- $34 = ((($3)) + 4|0);
- while(1) {
- $35 = (_IsKeyPressed(82)|0);
- $36 = ($35|0)==(0);
- if (!($36)) {
- _ResetPhysics();
- HEAPF32[$2>>2] = 400.0;
- HEAPF32[$33>>2] = 450.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$2+4>>2]|0;
- $37 = (_CreatePhysicsBodyRectangle($$byval_copy9,500.0,100.0,10.0)|0);
- $38 = ((($37)) + 4|0);
- HEAP32[$38>>2] = 0;
- HEAPF32[$3>>2] = 400.0;
- HEAPF32[$34>>2] = 225.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$3+4>>2]|0;
- $39 = (_CreatePhysicsBodyCircle($$byval_copy9,45.0,10.0)|0);
- $40 = ((($39)) + 4|0);
- HEAP32[$40>>2] = 0;
- }
- $41 = (_IsMouseButtonPressed(0)|0);
- $42 = ($41|0)==(0);
- if ($42) {
- $46 = (_IsMouseButtonPressed(1)|0);
- $47 = ($46|0)==(0);
- if (!($47)) {
- _GetMousePosition($5);
- $48 = (_GetRandomValue(10,45)|0);
- $49 = (+($48|0));
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$5+4>>2]|0;
- (_CreatePhysicsBodyCircle($$byval_copy9,$49,10.0)|0);
- }
- } else {
- _GetMousePosition($4);
- $43 = (_GetRandomValue(20,80)|0);
- $44 = (+($43|0));
- $45 = (_GetRandomValue(3,8)|0);
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$4>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$4+4>>2]|0;
- (_CreatePhysicsBodyPolygon($$byval_copy9,$44,$45,10.0)|0);
- }
- $50 = (_GetPhysicsBodiesCount()|0);
- $51 = ($50|0)>(0);
- if ($51) {
- $$07375$in = $50;
- while(1) {
- $$07375 = (($$07375$in) + -1)|0;
- $54 = (_GetPhysicsBody($$07375)|0);
- $55 = ($54|0)==(0|0);
- if (!($55)) {
- $57 = ((($54)) + 12|0);
- $58 = +HEAPF32[$57>>2];
- $59 = $58 > 900.0;
- if ($59) {
- _DestroyPhysicsBody($54);
- }
- }
- $56 = ($$07375$in|0)>(1);
- if ($56) {
- $$07375$in = $$07375;
- } else {
- break;
- }
+ $8 = HEAP32[2]|0;
+ $9 = (($8|0) / 2)&-1;
+ $10 = (+($9|0));
+ HEAPF32[$0>>2] = $10;
+ $11 = ((($0)) + 4|0);
+ $12 = HEAP32[3]|0;
+ $13 = (+($12|0));
+ HEAPF32[$11>>2] = $13;
+ ;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;
+ $14 = (_CreatePhysicsBodyRectangle($$byval_copy1,500.0,100.0,10.0)|0);
+ HEAP32[7744] = $14;
+ $15 = ((($14)) + 4|0);
+ HEAP32[$15>>2] = 0;
+ $16 = HEAP32[2]|0;
+ $17 = (($16|0) / 2)&-1;
+ $18 = (+($17|0));
+ HEAPF32[$1>>2] = $18;
+ $19 = ((($1)) + 4|0);
+ $20 = HEAP32[3]|0;
+ $21 = (($20|0) / 2)&-1;
+ $22 = (+($21|0));
+ HEAPF32[$19>>2] = $22;
+ ;HEAP32[$$byval_copy1>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$1+4>>2]|0;
+ $23 = (_CreatePhysicsBodyCircle($$byval_copy1,45.0,10.0)|0);
+ HEAP32[7745] = $23;
+ $24 = ((($23)) + 4|0);
+ HEAP32[$24>>2] = 0;
+ _emscripten_set_main_loop((1|0),0,1);
+ _ClosePhysics();
+ _CloseWindow();
+ STACKTOP = sp;return 0;
+}
+function _UpdateDrawFrame() {
+ var $$03743 = 0, $$03743$in = 0, $$03840 = 0, $$039 = 0, $$byval_copy5 = 0, $$byval_copy6 = 0, $$byval_copy7 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0, $19 = 0, $2 = 0;
+ var $20 = 0.0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0.0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0.0, $36 = 0, $37 = 0, $38 = 0;
+ var $39 = 0, $4 = 0, $40 = 0.0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0;
+ var $57 = 0, $58 = 0, $59 = 0.0, $6 = 0, $60 = 0, $61 = 0, $62 = 0.0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0;
+ var $75 = 0, $76 = 0, $77 = 0, $8 = 0, $9 = 0, $exitcond = 0, $exitcond47 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 112|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(112|0);
+ $$byval_copy7 = sp + 88|0;
+ $$byval_copy6 = sp + 80|0;
+ $$byval_copy5 = sp + 72|0;
+ $0 = sp + 64|0;
+ $1 = sp + 56|0;
+ $2 = sp + 48|0;
+ $3 = sp + 40|0;
+ $4 = sp + 100|0;
+ $5 = sp + 24|0;
+ $6 = sp + 8|0;
+ $7 = sp + 96|0;
+ $8 = sp + 36|0;
+ $9 = sp + 32|0;
+ $10 = sp + 20|0;
+ $11 = sp + 16|0;
+ $12 = sp;
+ $13 = (_IsKeyPressed(82)|0);
+ $14 = ($13|0)==(0);
+ if (!($14)) {
+ _ResetPhysics();
+ $15 = HEAP32[2]|0;
+ $16 = (($15|0) / 2)&-1;
+ $17 = (+($16|0));
+ HEAPF32[$0>>2] = $17;
+ $18 = ((($0)) + 4|0);
+ $19 = HEAP32[3]|0;
+ $20 = (+($19|0));
+ HEAPF32[$18>>2] = $20;
+ ;HEAP32[$$byval_copy7>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$0+4>>2]|0;
+ $21 = (_CreatePhysicsBodyRectangle($$byval_copy7,500.0,100.0,10.0)|0);
+ HEAP32[7744] = $21;
+ $22 = ((($21)) + 4|0);
+ HEAP32[$22>>2] = 0;
+ $23 = HEAP32[2]|0;
+ $24 = (($23|0) / 2)&-1;
+ $25 = (+($24|0));
+ HEAPF32[$1>>2] = $25;
+ $26 = ((($1)) + 4|0);
+ $27 = HEAP32[3]|0;
+ $28 = (($27|0) / 2)&-1;
+ $29 = (+($28|0));
+ HEAPF32[$26>>2] = $29;
+ ;HEAP32[$$byval_copy7>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$1+4>>2]|0;
+ $30 = (_CreatePhysicsBodyCircle($$byval_copy7,45.0,10.0)|0);
+ HEAP32[7745] = $30;
+ $31 = ((($30)) + 4|0);
+ HEAP32[$31>>2] = 0;
+ }
+ $32 = (_IsMouseButtonPressed(0)|0);
+ $33 = ($32|0)==(0);
+ if ($33) {
+ $37 = (_IsMouseButtonPressed(1)|0);
+ $38 = ($37|0)==(0);
+ if (!($38)) {
+ _GetMousePosition($3);
+ $39 = (_GetRandomValue(10,45)|0);
+ $40 = (+($39|0));
+ ;HEAP32[$$byval_copy7>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$3+4>>2]|0;
+ (_CreatePhysicsBodyCircle($$byval_copy7,$40,10.0)|0);
+ }
+ } else {
+ _GetMousePosition($2);
+ $34 = (_GetRandomValue(20,80)|0);
+ $35 = (+($34|0));
+ $36 = (_GetRandomValue(3,8)|0);
+ ;HEAP32[$$byval_copy7>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$2+4>>2]|0;
+ (_CreatePhysicsBodyPolygon($$byval_copy7,$35,$36,10.0)|0);
+ }
+ $41 = (_GetPhysicsBodiesCount()|0);
+ $42 = ($41|0)>(0);
+ if ($42) {
+ $$03743$in = $41;
+ while(1) {
+ $$03743 = (($$03743$in) + -1)|0;
+ $55 = (_GetPhysicsBody($$03743)|0);
+ $56 = ($55|0)==(0|0);
+ if (!($56)) {
+ $58 = ((($55)) + 12|0);
+ $59 = +HEAPF32[$58>>2];
+ $60 = HEAP32[3]|0;
+ $61 = $60 << 1;
+ $62 = (+($61|0));
+ $63 = $59 > $62;
+ if ($63) {
+ _DestroyPhysicsBody($55);
+ }
+ }
+ $57 = ($$03743$in|0)>(1);
+ if ($57) {
+ $$03743$in = $$03743;
+ } else {
+ break;
}
}
- _BeginDrawing();
- HEAP8[$6>>0] = 0;
- HEAP8[$26>>0] = 0;
- HEAP8[$27>>0] = 0;
- HEAP8[$28>>0] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$6+3>>0]|0;
- _ClearBackground($$byval_copy9);
- _DrawFPS(710,420);
- $52 = (_GetPhysicsBodiesCount()|0);
- $53 = ($52|0)>(0);
- if ($53) {
- $$07279 = 0;
- while(1) {
- $62 = (_GetPhysicsBody($$07279)|0);
- $63 = ($62|0)==(0|0);
- if (!($63)) {
- $64 = (_GetPhysicsShapeVerticesCount($$07279)|0);
- $65 = ($64|0)>(0);
- if ($65) {
- $$076 = 0;
- while(1) {
- _GetPhysicsShapeVertex($7,$62,$$076);
- $66 = (($$076) + 1)|0;
- $67 = ($66|0)<($64|0);
- $68 = $67 ? $66 : 0;
- _GetPhysicsShapeVertex($8,$62,$68);
- HEAP8[$9>>0] = 0;
- HEAP8[$30>>0] = -28;
- HEAP8[$31>>0] = 48;
- HEAP8[$32>>0] = -1;
- ;HEAP32[$$byval_copy7>>2]=HEAP32[$7>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$7+4>>2]|0;
- ;HEAP32[$$byval_copy8>>2]=HEAP32[$8>>2]|0;HEAP32[$$byval_copy8+4>>2]=HEAP32[$8+4>>2]|0;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$9+3>>0]|0;
- _DrawLineV($$byval_copy7,$$byval_copy8,$$byval_copy9);
- $exitcond = ($66|0)==($64|0);
- if ($exitcond) {
- break;
- } else {
- $$076 = $66;
- }
+ }
+ _BeginDrawing();
+ HEAP8[$4>>0] = 0;
+ $43 = ((($4)) + 1|0);
+ HEAP8[$43>>0] = 0;
+ $44 = ((($4)) + 2|0);
+ HEAP8[$44>>0] = 0;
+ $45 = ((($4)) + 3|0);
+ HEAP8[$45>>0] = -1;
+ ;HEAP8[$$byval_copy7>>0]=HEAP8[$4>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$4+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$4+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$4+3>>0]|0;
+ _ClearBackground($$byval_copy7);
+ $46 = HEAP32[2]|0;
+ $47 = (($46) + -90)|0;
+ $48 = HEAP32[3]|0;
+ $49 = (($48) + -30)|0;
+ _DrawFPS($47,$49);
+ $50 = (_GetPhysicsBodiesCount()|0);
+ $51 = ($50|0)>(0);
+ if ($51) {
+ $52 = ((($7)) + 1|0);
+ $53 = ((($7)) + 2|0);
+ $54 = ((($7)) + 3|0);
+ $$03840 = 0;
+ while(1) {
+ $70 = (_GetPhysicsBody($$03840)|0);
+ $71 = ($70|0)==(0|0);
+ if (!($71)) {
+ $72 = (_GetPhysicsShapeVerticesCount($$03840)|0);
+ $73 = ($72|0)>(0);
+ if ($73) {
+ $$039 = 0;
+ while(1) {
+ _GetPhysicsShapeVertex($5,$70,$$039);
+ $74 = (($$039) + 1)|0;
+ $75 = ($74|0)<($72|0);
+ $76 = $75 ? $74 : 0;
+ _GetPhysicsShapeVertex($6,$70,$76);
+ HEAP8[$7>>0] = 0;
+ HEAP8[$52>>0] = -28;
+ HEAP8[$53>>0] = 48;
+ HEAP8[$54>>0] = -1;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$5+4>>2]|0;
+ ;HEAP32[$$byval_copy6>>2]=HEAP32[$6>>2]|0;HEAP32[$$byval_copy6+4>>2]=HEAP32[$6+4>>2]|0;
+ ;HEAP8[$$byval_copy7>>0]=HEAP8[$7>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$7+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$7+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$7+3>>0]|0;
+ _DrawLineV($$byval_copy5,$$byval_copy6,$$byval_copy7);
+ $exitcond = ($74|0)==($72|0);
+ if ($exitcond) {
+ break;
+ } else {
+ $$039 = $74;
}
}
}
- $69 = (($$07279) + 1)|0;
- $exitcond86 = ($69|0)==($52|0);
- if ($exitcond86) {
- break;
- } else {
- $$07279 = $69;
- }
- }
- }
- HEAP32[$10>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$10>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$10+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$10+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$10+3>>0]|0;
- _DrawText(3518,10,10,10,$$byval_copy9);
- HEAP32[$11>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$11>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$11+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$11+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$11+3>>0]|0;
- _DrawText(3556,10,25,10,$$byval_copy9);
- HEAP32[$12>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$12>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$12+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$12+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$12+3>>0]|0;
- _DrawText(3594,10,40,10,$$byval_copy9);
- HEAP32[$13>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$13>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$13+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$13+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$13+3>>0]|0;
- _DrawText(3511,$17,15,30,$$byval_copy9);
- HEAP32[$14>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$14>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$14+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$14+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$14+3>>0]|0;
- _DrawText(3621,$29,8,10,$$byval_copy9);
- _EndDrawing();
- $60 = (_WindowShouldClose()|0);
- $61 = ($60|0)==(0);
- if (!($61)) {
- break;
- }
- }
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
+ }
+ $77 = (($$03840) + 1)|0;
+ $exitcond47 = ($77|0)==($50|0);
+ if ($exitcond47) {
+ break;
+ } else {
+ $$03840 = $77;
+ }
+ }
+ }
+ HEAP32[$8>>2] = -1;
+ ;HEAP8[$$byval_copy7>>0]=HEAP8[$8>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$8+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$8+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$8+3>>0]|0;
+ _DrawText(3286,10,10,10,$$byval_copy7);
+ HEAP32[$9>>2] = -1;
+ ;HEAP8[$$byval_copy7>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$9+3>>0]|0;
+ _DrawText(3324,10,25,10,$$byval_copy7);
+ HEAP32[$10>>2] = -1;
+ ;HEAP8[$$byval_copy7>>0]=HEAP8[$10>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$10+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$10+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$10+3>>0]|0;
+ _DrawText(3362,10,40,10,$$byval_copy7);
+ $64 = HEAP32[7743]|0;
+ $65 = HEAP32[4]|0;
+ HEAP32[$11>>2] = -1;
+ ;HEAP8[$$byval_copy7>>0]=HEAP8[$11>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$11+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$11+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$11+3>>0]|0;
+ _DrawText(3279,$64,$65,30,$$byval_copy7);
+ $66 = HEAP32[7743]|0;
+ $67 = (($66) + 50)|0;
+ $68 = HEAP32[4]|0;
+ $69 = (($68) + -7)|0;
+ HEAP32[$12>>2] = -1;
+ ;HEAP8[$$byval_copy7>>0]=HEAP8[$12>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$12+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$12+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$12+3>>0]|0;
+ _DrawText(3389,$67,$69,10,$$byval_copy7);
+ _EndDrawing();
+ STACKTOP = sp;return;
}
function _GetRandomNumber() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
@@ -8593,7 +12817,7 @@ function _InitTimer() {
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetCurrentTime());
- HEAPF64[1734] = $1;
+ HEAPF64[1753] = $1;
return;
}
function _GetCurrentTime() {
@@ -8620,7 +12844,7 @@ function _GetCurrentTime() {
function _MathClamp() {
var $$sink = 0.0, $0 = 0.0, $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1732];
+ $0 = +HEAPF64[1751];
$1 = $0 < 0.0;
if ($1) {
$$sink = 0.0;
@@ -8632,7 +12856,7 @@ function _MathClamp() {
return;
}
}
- HEAPF64[1732] = $$sink;
+ HEAPF64[1751] = $$sink;
return;
}
function _PhysicsStep() {
@@ -8646,16 +12870,16 @@ function _PhysicsStep() {
var $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0;
var $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7705]|0;
+ $0 = HEAP32[7746]|0;
$1 = (($0) + 1)|0;
- HEAP32[7705] = $1;
- $2 = HEAP32[3608]|0;
+ HEAP32[7746] = $1;
+ $2 = HEAP32[3646]|0;
$$0167 = (($2) + -1)|0;
$3 = ($$0167|0)>(-1);
if ($3) {
$$0168 = $$0167;
while(1) {
- $6 = (14436 + ($$0168<<2)|0);
+ $6 = (14588 + ($$0168<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = ($7|0)==(0|0);
if (!($8)) {
@@ -8670,7 +12894,7 @@ function _PhysicsStep() {
}
}
}
- $4 = HEAP32[3543]|0;
+ $4 = HEAP32[3581]|0;
$5 = ($4|0)==(0);
if ($5) {
$17 = $4;
@@ -8678,7 +12902,7 @@ function _PhysicsStep() {
} else {
$$0125165 = 0;
while(1) {
- $11 = (14176 + ($$0125165<<2)|0);
+ $11 = (14328 + ($$0125165<<2)|0);
$12 = HEAP32[$11>>2]|0;
$13 = ((($12)) + 76|0);
HEAP32[$13>>2] = 0;
@@ -8690,24 +12914,24 @@ function _PhysicsStep() {
break;
}
}
- $$pr = HEAP32[3543]|0;
+ $$pr = HEAP32[3581]|0;
$10 = ($$pr|0)==(0);
if (!($10)) {
$$0126163 = 0;
while(1) {
- $19 = (14176 + ($$0126163<<2)|0);
+ $19 = (14328 + ($$0126163<<2)|0);
$20 = HEAP32[$19>>2]|0;
$21 = ($20|0)==(0|0);
if (!($21)) {
$$0130160 = (($$0126163) + 1)|0;
- $22 = HEAP32[3543]|0;
+ $22 = HEAP32[3581]|0;
$23 = ($$0130160>>>0)<($22>>>0);
if ($23) {
$24 = ((($20)) + 56|0);
$25 = ((($20)) + 84|0);
$$0130161 = $$0130160;
while(1) {
- $26 = (14176 + ($$0130161<<2)|0);
+ $26 = (14328 + ($$0130161<<2)|0);
$27 = HEAP32[$26>>2]|0;
$28 = ($27|0)==(0|0);
do {
@@ -8813,7 +13037,7 @@ function _PhysicsStep() {
}
} while(0);
$$0130 = (($$0130161) + 1)|0;
- $29 = HEAP32[3543]|0;
+ $29 = HEAP32[3581]|0;
$30 = ($$0130>>>0)<($29>>>0);
if ($30) {
$$0130161 = $$0130;
@@ -8824,7 +13048,7 @@ function _PhysicsStep() {
}
}
$97 = (($$0126163) + 1)|0;
- $98 = HEAP32[3543]|0;
+ $98 = HEAP32[3581]|0;
$99 = ($97>>>0)<($98>>>0);
if ($99) {
$$0126163 = $97;
@@ -8839,10 +13063,10 @@ function _PhysicsStep() {
if ((label|0) == 8) {
$16 = ($17|0)==(0);
if (!($16)) {
- $18 = HEAP32[3543]|0;
+ $18 = HEAP32[3581]|0;
$$0135158 = 0;
while(1) {
- $103 = (14176 + ($$0135158<<2)|0);
+ $103 = (14328 + ($$0135158<<2)|0);
$104 = HEAP32[$103>>2]|0;
$105 = ($104|0)==(0|0);
if (!($105)) {
@@ -8858,15 +13082,15 @@ function _PhysicsStep() {
}
}
}
- $100 = HEAP32[3608]|0;
+ $100 = HEAP32[3646]|0;
$101 = ($100|0)==(0);
if ($101) {
$$0134155 = 0;$114 = 0;
} else {
- $102 = HEAP32[3608]|0;
+ $102 = HEAP32[3646]|0;
$$0136156 = 0;
while(1) {
- $108 = (14436 + ($$0136156<<2)|0);
+ $108 = (14588 + ($$0136156<<2)|0);
$109 = HEAP32[$108>>2]|0;
$110 = ($109|0)==(0|0);
if (!($110)) {
@@ -8886,12 +13110,12 @@ function _PhysicsStep() {
while(1) {
if ((label|0) == 32) {
label = 0;
- $$pr172 = HEAP32[3608]|0;
+ $$pr172 = HEAP32[3646]|0;
$$0134155 = $$0134155$ph;$114 = $$pr172;
}
$113 = ($114|0)==(0);
if (!($113)) {
- $115 = (14436 + ($$0134155<<2)|0);
+ $115 = (14588 + ($$0134155<<2)|0);
$$0133152 = 0;
while(1) {
$120 = HEAP32[$115>>2]|0;
@@ -8900,7 +13124,7 @@ function _PhysicsStep() {
_IntegratePhysicsImpulses($120);
}
$122 = (($$0133152) + 1)|0;
- $123 = HEAP32[3608]|0;
+ $123 = HEAP32[3646]|0;
$124 = ($122>>>0)<($123>>>0);
if ($124) {
$$0133152 = $122;
@@ -8918,13 +13142,13 @@ function _PhysicsStep() {
label = 32;
}
}
- $116 = HEAP32[3543]|0;
+ $116 = HEAP32[3581]|0;
$117 = ($116|0)==(0);
if (!($117)) {
- $118 = HEAP32[3543]|0;
+ $118 = HEAP32[3581]|0;
$$0131150 = 0;
while(1) {
- $128 = (14176 + ($$0131150<<2)|0);
+ $128 = (14328 + ($$0131150<<2)|0);
$129 = HEAP32[$128>>2]|0;
$130 = ($129|0)==(0|0);
if (!($130)) {
@@ -8939,13 +13163,13 @@ function _PhysicsStep() {
}
}
}
- $125 = HEAP32[3608]|0;
+ $125 = HEAP32[3646]|0;
$126 = ($125|0)==(0);
if (!($126)) {
- $127 = HEAP32[3608]|0;
+ $127 = HEAP32[3646]|0;
$$0129148 = 0;
while(1) {
- $136 = (14436 + ($$0129148<<2)|0);
+ $136 = (14588 + ($$0129148<<2)|0);
$137 = HEAP32[$136>>2]|0;
$138 = ($137|0)==(0|0);
if (!($138)) {
@@ -8960,15 +13184,15 @@ function _PhysicsStep() {
}
}
}
- $133 = HEAP32[3543]|0;
+ $133 = HEAP32[3581]|0;
$134 = ($133|0)==(0);
if ($134) {
return;
}
- $135 = HEAP32[3543]|0;
+ $135 = HEAP32[3581]|0;
$$0127147 = 0;
while(1) {
- $141 = (14176 + ($$0127147<<2)|0);
+ $141 = (14328 + ($$0127147<<2)|0);
$142 = HEAP32[$141>>2]|0;
$143 = ($142|0)==(0|0);
if (!($143)) {
@@ -8999,16 +13223,16 @@ function _DestroyPhysicsManifold($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3608]|0;
+ $3 = HEAP32[3646]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3608]|0;
+ $5 = HEAP32[3646]|0;
$$02023 = 0;
while(1) {
- $6 = (14436 + ($$02023<<2)|0);
+ $6 = (14588 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -9027,24 +13251,24 @@ function _DestroyPhysicsManifold($0) {
}
}
} while(0);
- $12 = (14436 + ($$021<<2)|0);
+ $12 = (14588 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3542]|0;
+ $14 = HEAP32[3580]|0;
$15 = (($14) + -56)|0;
- HEAP32[3542] = $15;
+ HEAP32[3580] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3608]|0;
+ $16 = HEAP32[3646]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3608]|0;
+ $18 = HEAP32[3646]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14436 + ($$022<<2)|0);
- $25 = (14436 + ($20<<2)|0);
+ $24 = (14588 + ($$022<<2)|0);
+ $25 = (14588 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -9060,7 +13284,7 @@ function _DestroyPhysicsManifold($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3608] = $19;
+ HEAP32[3646] = $19;
return;
}
function _CreatePhysicsManifold($0,$1) {
@@ -9070,10 +13294,10 @@ function _CreatePhysicsManifold($0,$1) {
var $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
sp = STACKTOP;
$2 = (_malloc(56)|0);
- $3 = HEAP32[3542]|0;
+ $3 = HEAP32[3580]|0;
$4 = (($3) + 56)|0;
- HEAP32[3542] = $4;
- $5 = HEAP32[3608]|0;
+ HEAP32[3580] = $4;
+ $5 = HEAP32[3646]|0;
$6 = ($5|0)==(0);
$$04457 = 0;
L1: while(1) {
@@ -9084,7 +13308,7 @@ function _CreatePhysicsManifold($0,$1) {
$$04755 = 0;
}
while(1) {
- $9 = (14436 + ($$04755<<2)|0);
+ $9 = (14588 + ($$04755<<2)|0);
$10 = HEAP32[$9>>2]|0;
$11 = HEAP32[$10>>2]|0;
$12 = ($11|0)==($$04457|0);
@@ -9127,11 +13351,11 @@ function _CreatePhysicsManifold($0,$1) {
HEAP32[$17>>2] = $1;
$18 = ((($2)) + 12|0);
dest=$18; stop=dest+44|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
- $19 = HEAP32[3608]|0;
- $20 = (14436 + ($19<<2)|0);
+ $19 = HEAP32[3646]|0;
+ $20 = (14588 + ($19<<2)|0);
HEAP32[$20>>2] = $2;
$21 = (($19) + 1)|0;
- HEAP32[3608] = $21;
+ HEAP32[3646] = $21;
return ($2|0);
}
function _SolvePhysicsManifold($0) {
@@ -9231,7 +13455,7 @@ function _IntegratePhysicsForces($0) {
$8 = +HEAPF32[$7>>2];
$9 = $2 * $8;
$10 = $9;
- $11 = +HEAPF64[1735];
+ $11 = +HEAPF64[1754];
$12 = $11 * 0.5;
$13 = $10 * $12;
$14 = ((($0)) + 16|0);
@@ -9255,7 +13479,7 @@ function _IntegratePhysicsForces($0) {
$30 = HEAP32[$29>>2]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = +HEAPF32[7706];
+ $32 = +HEAPF32[7747];
$33 = $32;
$34 = $12 * $33;
$35 = +HEAPF32[$14>>2];
@@ -9263,7 +13487,7 @@ function _IntegratePhysicsForces($0) {
$37 = $36 + $34;
$38 = $37;
HEAPF32[$14>>2] = $38;
- $39 = +HEAPF32[2];
+ $39 = +HEAPF32[5];
$40 = $39;
$41 = $12 * $40;
$42 = +HEAPF32[$24>>2];
@@ -9348,13 +13572,13 @@ function _InitializePhysicsManifolds($0) {
$39 = ((($7)) + 20|0);
$40 = ((($$byval_copy9)) + 4|0);
$41 = ((($4)) + 4|0);
- $42 = +HEAPF32[7706];
+ $42 = +HEAPF32[7747];
$43 = $42;
- $44 = +HEAPF64[1735];
+ $44 = +HEAPF64[1754];
$45 = $43 * $44;
$46 = $45;
$47 = ((($5)) + 4|0);
- $48 = +HEAPF32[2];
+ $48 = +HEAPF32[5];
$49 = $48;
$50 = $49 * $44;
$51 = $50;
@@ -9851,7 +14075,7 @@ function _IntegratePhysicsVelocity($0) {
$4 = ((($0)) + 16|0);
$5 = +HEAPF32[$4>>2];
$6 = $5;
- $7 = +HEAPF64[1735];
+ $7 = +HEAPF64[1754];
$8 = $6 * $7;
$9 = ((($0)) + 8|0);
$10 = +HEAPF32[$9>>2];
@@ -12272,7 +16496,7 @@ function _ProcessGestureEvent($0) {
$moveDownPosition$byval_copy11 = sp;
$1 = ((($0)) + 4|0);
$2 = HEAP32[$1>>2]|0;
- HEAP32[7708] = $2;
+ HEAP32[7749] = $2;
$3 = ($2|0)<(2);
$4 = HEAP32[$0>>2]|0;
$5 = ($4|0)==(1);
@@ -12285,7 +16509,7 @@ function _ProcessGestureEvent($0) {
$92 = (($89) + 4)|0;
$93 = $92;
$94 = HEAP32[$93>>2]|0;
- $95 = 13888;
+ $95 = 14040;
$96 = $95;
HEAP32[$96>>2] = $91;
$97 = (($95) + 4)|0;
@@ -12298,48 +16522,48 @@ function _ProcessGestureEvent($0) {
$103 = (($100) + 4)|0;
$104 = $103;
$105 = HEAP32[$104>>2]|0;
- $106 = 13928;
+ $106 = 14080;
$107 = $106;
HEAP32[$107>>2] = $102;
$108 = (($106) + 4)|0;
$109 = $108;
HEAP32[$109>>2] = $105;
- $110 = +HEAPF32[3482];
- $111 = +HEAPF32[3472];
+ $110 = +HEAPF32[3520];
+ $111 = +HEAPF32[3510];
$112 = $110 - $111;
- HEAPF32[3484] = $112;
- $113 = +HEAPF32[(13932)>>2];
- $114 = +HEAPF32[(13892)>>2];
+ HEAPF32[3522] = $112;
+ $113 = +HEAPF32[(14084)>>2];
+ $114 = +HEAPF32[(14044)>>2];
$115 = $113 - $114;
- HEAPF32[(13940)>>2] = $115;
- HEAP32[7707] = 4;
+ HEAPF32[(14092)>>2] = $115;
+ HEAP32[7748] = 4;
STACKTOP = sp;return;
}
switch ($4|0) {
case 2: {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13920>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13920+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13944>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13944+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14096>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14096+4>>2]|0;
$116 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- HEAPF32[7713] = $116;
- $117 = 13920;
+ HEAPF32[7754] = $116;
+ $117 = 14072;
$118 = $117;
$119 = HEAP32[$118>>2]|0;
$120 = (($117) + 4)|0;
$121 = $120;
$122 = HEAP32[$121>>2]|0;
- $123 = 13888;
+ $123 = 14040;
$124 = $123;
HEAP32[$124>>2] = $119;
$125 = (($123) + 4)|0;
$126 = $125;
HEAP32[$126>>2] = $122;
- $127 = 13944;
+ $127 = 14096;
$128 = $127;
$129 = HEAP32[$128>>2]|0;
$130 = (($127) + 4)|0;
$131 = $130;
$132 = HEAP32[$131>>2]|0;
- $133 = 13928;
+ $133 = 14080;
$134 = $133;
HEAP32[$134>>2] = $129;
$135 = (($133) + 4)|0;
@@ -12352,7 +16576,7 @@ function _ProcessGestureEvent($0) {
$141 = (($138) + 4)|0;
$142 = $141;
$143 = HEAP32[$142>>2]|0;
- $144 = 13920;
+ $144 = 14072;
$145 = $144;
HEAP32[$145>>2] = $140;
$146 = (($144) + 4)|0;
@@ -12365,27 +16589,27 @@ function _ProcessGestureEvent($0) {
$152 = (($149) + 4)|0;
$153 = $152;
$154 = HEAP32[$153>>2]|0;
- $155 = 13944;
+ $155 = 14096;
$156 = $155;
HEAP32[$156>>2] = $151;
$157 = (($155) + 4)|0;
$158 = $157;
HEAP32[$158>>2] = $154;
- $159 = +HEAPF32[3486];
- $160 = +HEAPF32[3480];
+ $159 = +HEAPF32[3524];
+ $160 = +HEAPF32[3518];
$161 = $159 - $160;
- HEAPF32[3484] = $161;
- $162 = +HEAPF32[(13948)>>2];
- $163 = +HEAPF32[(13924)>>2];
+ HEAPF32[3522] = $161;
+ $162 = +HEAPF32[(14100)>>2];
+ $163 = +HEAPF32[(14076)>>2];
$164 = $162 - $163;
- HEAPF32[(13940)>>2] = $164;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13888>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13888+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13920>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13920+4>>2]|0;
+ HEAPF32[(14092)>>2] = $164;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14072+4>>2]|0;
$165 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$166 = !($165 >= 0.004999999888241291);
if ($166) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13928>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13928+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13944>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13944+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14080>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14080+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14096>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14096+4>>2]|0;
$167 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$168 = !($167 >= 0.004999999888241291);
if ($168) {
@@ -12397,31 +16621,31 @@ function _ProcessGestureEvent($0) {
label = 29;
}
if ((label|0) == 29) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13920>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13920+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13944>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13944+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14096>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14096+4>>2]|0;
$169 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- $170 = +HEAPF32[7713];
+ $170 = +HEAPF32[7754];
$171 = $169 - $170;
$172 = $171 < 0.0;
$$sink11 = $172 ? 256 : 512;
$$sink16 = $$sink11;
}
- HEAP32[7707] = $$sink16;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13920>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13920+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13944>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13944+4>>2]|0;
+ HEAP32[7748] = $$sink16;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14096>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14096+4>>2]|0;
$173 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$174 = 360.0 - $173;
- HEAPF32[7714] = $174;
+ HEAPF32[7755] = $174;
STACKTOP = sp;return;
break;
}
case 0: {
- HEAPF32[7713] = 0.0;
- HEAPF32[7714] = 0.0;
- HEAPF32[3484] = 0.0;
- HEAPF32[(13940)>>2] = 0.0;
- HEAP32[7708] = 0;
- HEAP32[7707] = 0;
+ HEAPF32[7754] = 0.0;
+ HEAPF32[7755] = 0.0;
+ HEAPF32[3522] = 0.0;
+ HEAPF32[(14092)>>2] = 0.0;
+ HEAP32[7749] = 0;
+ HEAP32[7748] = 0;
STACKTOP = sp;return;
break;
}
@@ -12431,22 +16655,22 @@ function _ProcessGestureEvent($0) {
}
}
if ($5) {
- $6 = HEAP32[7709]|0;
+ $6 = HEAP32[7750]|0;
$7 = (($6) + 1)|0;
- HEAP32[7709] = $7;
- $8 = HEAP32[7707]|0;
+ HEAP32[7750] = $7;
+ $8 = HEAP32[7748]|0;
$9 = ($8|0)==(0);
$10 = ($6|0)>(0);
$or$cond = $10 & $9;
if ($or$cond) {
$11 = ((($0)) + 24|0);
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13888>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13888+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[$11>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[$11+4>>2]|0;
$12 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$13 = $12 < 0.029999999329447746;
if ($13) {
- HEAP32[7707] = 2;
- HEAP32[7709] = 0;
+ HEAP32[7748] = 2;
+ HEAP32[7750] = 0;
} else {
label = 6;
}
@@ -12454,8 +16678,8 @@ function _ProcessGestureEvent($0) {
label = 6;
}
if ((label|0) == 6) {
- HEAP32[7709] = 1;
- HEAP32[7707] = 1;
+ HEAP32[7750] = 1;
+ HEAP32[7748] = 1;
}
$14 = ((($0)) + 24|0);
$15 = $14;
@@ -12464,19 +16688,19 @@ function _ProcessGestureEvent($0) {
$18 = (($15) + 4)|0;
$19 = $18;
$20 = HEAP32[$19>>2]|0;
- $21 = 13888;
+ $21 = 14040;
$22 = $21;
HEAP32[$22>>2] = $17;
$23 = (($21) + 4)|0;
$24 = $23;
HEAP32[$24>>2] = $20;
- $25 = 13896;
+ $25 = 14048;
$26 = $25;
HEAP32[$26>>2] = $17;
$27 = (($25) + 4)|0;
$28 = $27;
HEAP32[$28>>2] = $20;
- $29 = 13904;
+ $29 = 14056;
$30 = $29;
HEAP32[$30>>2] = $17;
$31 = (($29) + 4)|0;
@@ -12484,14 +16708,14 @@ function _ProcessGestureEvent($0) {
HEAP32[$32>>2] = $20;
$33 = ((($0)) + 8|0);
$34 = HEAP32[$33>>2]|0;
- HEAP32[3] = $34;
- HEAPF32[3478] = 0.0;
- HEAPF32[(13916)>>2] = 0.0;
+ HEAP32[6] = $34;
+ HEAPF32[3516] = 0.0;
+ HEAPF32[(14068)>>2] = 0.0;
STACKTOP = sp;return;
}
switch ($4|0) {
case 0: {
- $35 = HEAP32[7707]|0;
+ $35 = HEAP32[7748]|0;
$36 = ($35|0)==(8);
if ($36) {
$37 = ((($0)) + 24|0);
@@ -12501,31 +16725,31 @@ function _ProcessGestureEvent($0) {
$41 = (($38) + 4)|0;
$42 = $41;
$43 = HEAP32[$42>>2]|0;
- $44 = 13904;
+ $44 = 14056;
$45 = $44;
HEAP32[$45>>2] = $40;
$46 = (($44) + 4)|0;
$47 = $46;
HEAP32[$47>>2] = $43;
}
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13888>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13888+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$48 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$49 = $48 / 0.0;
- HEAPF32[7710] = $49;
- HEAP32[7711] = 0;
+ HEAPF32[7751] = $49;
+ HEAP32[7752] = 0;
$50 = $49 > 5.0000002374872565E-4;
if ($50) {
- $51 = HEAP32[3]|0;
+ $51 = HEAP32[6]|0;
$52 = ((($0)) + 8|0);
$53 = HEAP32[$52>>2]|0;
$54 = ($51|0)==($53|0);
if ($54) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13888>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13888+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$55 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$56 = 360.0 - $55;
- HEAPF32[7712] = $56;
+ HEAPF32[7753] = $56;
$57 = $56 < 30.0;
$58 = $56 > 330.0;
$or$cond3 = $57 | $58;
@@ -12556,22 +16780,22 @@ function _ProcessGestureEvent($0) {
label = 16;
}
if ((label|0) == 16) {
- HEAPF32[7710] = 0.0;
- HEAPF32[7712] = 0.0;
+ HEAPF32[7751] = 0.0;
+ HEAPF32[7753] = 0.0;
$$sink10 = 0;
}
- HEAP32[7707] = $$sink10;
- HEAPF32[3474] = 0.0;
- HEAPF32[(13900)>>2] = 0.0;
- HEAP32[7708] = 0;
+ HEAP32[7748] = $$sink10;
+ HEAPF32[3512] = 0.0;
+ HEAPF32[(14052)>>2] = 0.0;
+ HEAP32[7749] = 0;
STACKTOP = sp;return;
break;
}
case 2: {
- $65 = HEAP32[7711]|0;
+ $65 = HEAP32[7752]|0;
$66 = ($65|0)==(0);
if ($66) {
- HEAP32[7711] = 1;
+ HEAP32[7752] = 1;
}
$67 = ((($0)) + 24|0);
$68 = $67;
@@ -12580,31 +16804,31 @@ function _ProcessGestureEvent($0) {
$71 = (($68) + 4)|0;
$72 = $71;
$73 = HEAP32[$72>>2]|0;
- $74 = 13920;
+ $74 = 14072;
$75 = $74;
HEAP32[$75>>2] = $70;
$76 = (($74) + 4)|0;
$77 = $76;
HEAP32[$77>>2] = $73;
- $78 = HEAP32[7707]|0;
+ $78 = HEAP32[7748]|0;
$79 = ($78|0)==(4);
if ($79) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13888>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13888+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13920>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13920+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14072+4>>2]|0;
$80 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$81 = !($80 >= 0.014999999664723873);
if (!($81)) {
- HEAP32[7707] = 8;
+ HEAP32[7748] = 8;
}
}
- $82 = +HEAPF32[3480];
- $83 = +HEAPF32[3474];
+ $82 = +HEAPF32[3518];
+ $83 = +HEAPF32[3512];
$84 = $82 - $83;
- HEAPF32[3478] = $84;
- $85 = +HEAPF32[(13924)>>2];
- $86 = +HEAPF32[(13900)>>2];
+ HEAPF32[3516] = $84;
+ $85 = +HEAPF32[(14076)>>2];
+ $86 = +HEAPF32[(14052)>>2];
$87 = $85 - $86;
- HEAPF32[(13916)>>2] = $87;
+ HEAPF32[(14068)>>2] = $87;
STACKTOP = sp;return;
break;
}
@@ -12616,16 +16840,16 @@ function _ProcessGestureEvent($0) {
function _UpdateGestures() {
var $$off = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $or$cond3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7707]|0;
+ $0 = HEAP32[7748]|0;
$$off = (($0) + -1)|0;
$1 = ($$off>>>0)<(2);
- $2 = HEAP32[7708]|0;
+ $2 = HEAP32[7749]|0;
$3 = ($2|0)<(2);
$or$cond3 = $1 & $3;
if ($or$cond3) {
- HEAP32[7707] = 4;
+ HEAP32[7748] = 4;
}
- $4 = HEAP32[7707]|0;
+ $4 = HEAP32[7748]|0;
$5 = (($4) + -16)|0;
$6 = $5 >>> 4;
$7 = $5 << 28;
@@ -12638,14 +16862,14 @@ function _UpdateGestures() {
return;
}
}
- HEAP32[7707] = 0;
+ HEAP32[7748] = 0;
return;
}
function _GetMousePosition($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = 13952;
+ $1 = 14104;
$2 = $1;
$3 = HEAP32[$2>>2]|0;
$4 = (($1) + 4)|0;
@@ -12662,13 +16886,13 @@ function _GetMousePosition($0) {
function _GetScreenWidth() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7717]|0;
+ $0 = HEAP32[7758]|0;
return ($0|0);
}
function _GetScreenHeight() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7716]|0;
+ $0 = HEAP32[7757]|0;
return ($0|0);
}
function _InitWindow($0,$1,$2) {
@@ -12679,29 +16903,29 @@ function _InitWindow($0,$1,$2) {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- _TraceLog(0,3632,$vararg_buffer);
- HEAP32[7719] = $2;
+ _TraceLog(0,3400,$vararg_buffer);
+ HEAP32[7760] = $2;
_InitGraphicsDevice($0,$1);
_LoadDefaultFont();
- _InitTimer_10();
+ _InitTimer_12();
(_emscripten_set_fullscreenchange_callback((0|0),(0|0),1,(4|0))|0);
- (_emscripten_set_keypress_callback((3661|0),(0|0),1,(5|0))|0);
- (_emscripten_set_click_callback((3661|0),(0|0),1,(6|0))|0);
- (_emscripten_set_touchstart_callback((3661|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchend_callback((3661|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchmove_callback((3661|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchcancel_callback((3661|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_keypress_callback((3429|0),(0|0),1,(5|0))|0);
+ (_emscripten_set_click_callback((3429|0),(0|0),1,(6|0))|0);
+ (_emscripten_set_touchstart_callback((3429|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchend_callback((3429|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchmove_callback((3429|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchcancel_callback((3429|0),(0|0),1,(7|0))|0);
(_emscripten_set_gamepadconnected_callback((0|0),1,(8|0))|0);
(_emscripten_set_gamepaddisconnected_callback((0|0),1,(8|0))|0);
- $3 = HEAP32[7717]|0;
+ $3 = HEAP32[7758]|0;
$4 = (+($3|0));
$5 = $4 * 0.5;
- HEAPF32[3488] = $5;
- $6 = HEAP32[7716]|0;
+ HEAPF32[3526] = $5;
+ $6 = HEAP32[7757]|0;
$7 = (+($6|0));
$8 = $7 * 0.5;
- HEAPF32[(13956)>>2] = $8;
- $9 = HEAP32[7720]|0;
+ HEAPF32[(14108)>>2] = $8;
+ $9 = HEAP32[7761]|0;
$10 = ($9|0)==(0);
if ($10) {
STACKTOP = sp;return;
@@ -12720,11 +16944,11 @@ function _TraceLog($0,$1,$varargs) {
$2 = sp;
switch ($0|0) {
case 0: {
- ;HEAP8[13992>>0]=HEAP8[8190>>0]|0;HEAP8[13992+1>>0]=HEAP8[8190+1>>0]|0;HEAP8[13992+2>>0]=HEAP8[8190+2>>0]|0;HEAP8[13992+3>>0]=HEAP8[8190+3>>0]|0;HEAP8[13992+4>>0]=HEAP8[8190+4>>0]|0;HEAP8[13992+5>>0]=HEAP8[8190+5>>0]|0;HEAP8[13992+6>>0]=HEAP8[8190+6>>0]|0;
+ ;HEAP8[14144>>0]=HEAP8[7958>>0]|0;HEAP8[14144+1>>0]=HEAP8[7958+1>>0]|0;HEAP8[14144+2>>0]=HEAP8[7958+2>>0]|0;HEAP8[14144+3>>0]=HEAP8[7958+3>>0]|0;HEAP8[14144+4>>0]=HEAP8[7958+4>>0]|0;HEAP8[14144+5>>0]=HEAP8[7958+5>>0]|0;HEAP8[14144+6>>0]=HEAP8[7958+6>>0]|0;
break;
}
case 1: {
- $3 = 13992;
+ $3 = 14144;
$4 = $3;
HEAP32[$4>>2] = 1330795077;
$5 = (($3) + 4)|0;
@@ -12733,11 +16957,11 @@ function _TraceLog($0,$1,$varargs) {
break;
}
case 2: {
- dest=13992; src=8197; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
+ dest=14144; src=7965; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
break;
}
case 3: {
- $7 = 13992;
+ $7 = 14144;
$8 = $7;
HEAP32[$8>>2] = 1430406468;
$9 = (($7) + 4)|0;
@@ -12748,16 +16972,16 @@ function _TraceLog($0,$1,$varargs) {
default: {
}
}
- (_strcat(13992,$1)|0);
- $strlen = (_strlen(13992)|0);
- $endptr = (13992 + ($strlen)|0);
+ (_strcat(14144,$1)|0);
+ $strlen = (_strlen(14144)|0);
+ $endptr = (14144 + ($strlen)|0);
HEAP8[$endptr>>0]=10&255;HEAP8[$endptr+1>>0]=10>>8;
HEAP32[$2>>2] = $varargs;
$11 = ($0|0)==(3);
if ($11) {
STACKTOP = sp;return;
}
- (_vprintf(13992,$2)|0);
+ (_vprintf(14144,$2)|0);
$12 = ($0|0)==(1);
if ($12) {
_exit(1);
@@ -12789,22 +17013,22 @@ function _InitGraphicsDevice($0,$1) {
$vararg_buffer = sp;
$2 = sp + 72|0;
$3 = sp + 140|0;
- HEAP32[7717] = $0;
- HEAP32[7716] = $1;
+ HEAP32[7758] = $0;
+ HEAP32[7757] = $1;
_MatrixIdentity($2);
- dest=30956; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31120; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_glfwSetErrorCallback((1|0))|0);
$4 = (_glfwInit()|0);
$5 = ($4|0)==(0);
if ($5) {
- _TraceLog(1,4332,$vararg_buffer);
+ _TraceLog(1,4100,$vararg_buffer);
}
- $6 = HEAP32[7717]|0;
- HEAP32[7755] = $6;
- $7 = HEAP32[7716]|0;
- HEAP32[7756] = $7;
+ $6 = HEAP32[7758]|0;
+ HEAP32[7796] = $6;
+ $7 = HEAP32[7757]|0;
+ HEAP32[7797] = $7;
_glfwDefaultWindowHints();
- $8 = HEAP8[33680]|0;
+ $8 = HEAP8[35996]|0;
$9 = $8 & 4;
$10 = ($9<<24>>24)==(0);
if ($10) {
@@ -12812,18 +17036,18 @@ function _InitGraphicsDevice($0,$1) {
} else {
_glfwWindowHint(131075,1);
}
- $11 = HEAP8[33680]|0;
+ $11 = HEAP8[35996]|0;
$12 = $11 & 8;
$13 = ($12<<24>>24)==(0);
if (!($13)) {
_glfwWindowHint(131077,1);
}
- $14 = HEAP8[33680]|0;
+ $14 = HEAP8[35996]|0;
$15 = $14 & 32;
$16 = ($15<<24>>24)==(0);
if (!($16)) {
_glfwWindowHint(135181,4);
- _TraceLog(0,4358,$vararg_buffer1);
+ _TraceLog(0,4126,$vararg_buffer1);
}
$17 = (_rlGetVersion()|0);
$18 = ($17|0)==(2);
@@ -12840,18 +17064,18 @@ function _InitGraphicsDevice($0,$1) {
_glfwWindowHint(139270,0);
}
}
- $21 = HEAP32[7757]|0;
+ $21 = HEAP32[7798]|0;
$22 = ($21|0)==(0);
if ($22) {
- $47 = HEAP32[7717]|0;
- $48 = HEAP32[7716]|0;
- $49 = HEAP32[7719]|0;
+ $47 = HEAP32[7758]|0;
+ $48 = HEAP32[7757]|0;
+ $49 = HEAP32[7760]|0;
$50 = (_glfwCreateWindow(($47|0),($48|0),($49|0),(0|0),(0|0))|0);
- HEAP32[7715] = $50;
- $51 = HEAP32[7717]|0;
- HEAP32[7758] = $51;
- $52 = HEAP32[7716]|0;
- HEAP32[7759] = $52;
+ HEAP32[7756] = $50;
+ $51 = HEAP32[7758]|0;
+ HEAP32[7799] = $51;
+ $52 = HEAP32[7757]|0;
+ HEAP32[7800] = $52;
$54 = $50;
} else {
$23 = (_glfwGetPrimaryMonitor()|0);
@@ -12860,9 +17084,9 @@ function _InitGraphicsDevice($0,$1) {
$26 = ($25|0)>(0);
L22: do {
if ($26) {
- $27 = HEAP32[7717]|0;
+ $27 = HEAP32[7758]|0;
$28 = HEAP32[$$byval_copy>>2]|0;
- $29 = HEAP32[7716]|0;
+ $29 = HEAP32[7757]|0;
$$015 = 0;
while(1) {
$30 = (($24) + (($$015*24)|0)|0);
@@ -12884,87 +17108,87 @@ function _InitGraphicsDevice($0,$1) {
break L22;
}
}
- HEAP32[7755] = $31;
- HEAP32[7756] = $34;
+ HEAP32[7796] = $31;
+ HEAP32[7797] = $34;
}
} while(0);
- $38 = HEAP32[7755]|0;
- $39 = HEAP32[7756]|0;
+ $38 = HEAP32[7796]|0;
+ $39 = HEAP32[7797]|0;
HEAP32[$vararg_buffer3>>2] = $38;
$vararg_ptr5 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr5>>2] = $39;
- _TraceLog(2,4383,$vararg_buffer3);
- $40 = HEAP32[7755]|0;
- $41 = HEAP32[7756]|0;
+ _TraceLog(2,4151,$vararg_buffer3);
+ $40 = HEAP32[7796]|0;
+ $41 = HEAP32[7797]|0;
_SetupFramebufferSize($40,$41);
- $42 = HEAP32[7755]|0;
- $43 = HEAP32[7756]|0;
- $44 = HEAP32[7719]|0;
+ $42 = HEAP32[7796]|0;
+ $43 = HEAP32[7797]|0;
+ $44 = HEAP32[7760]|0;
$45 = (_glfwGetPrimaryMonitor()|0);
$46 = (_glfwCreateWindow(($42|0),($43|0),($44|0),($45|0),(0|0))|0);
- HEAP32[7715] = $46;
+ HEAP32[7756] = $46;
$54 = $46;
}
$53 = ($54|0)==(0|0);
if ($53) {
_glfwTerminate();
- _TraceLog(1,4421,$vararg_buffer6);
+ _TraceLog(1,4189,$vararg_buffer6);
} else {
- _TraceLog(0,4454,$vararg_buffer8);
- $55 = HEAP32[7758]|0;
- $56 = HEAP32[7759]|0;
+ _TraceLog(0,4222,$vararg_buffer8);
+ $55 = HEAP32[7799]|0;
+ $56 = HEAP32[7800]|0;
HEAP32[$vararg_buffer10>>2] = $55;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $56;
- _TraceLog(0,4494,$vararg_buffer10);
- $57 = HEAP32[7717]|0;
- $58 = HEAP32[7716]|0;
+ _TraceLog(0,4262,$vararg_buffer10);
+ $57 = HEAP32[7758]|0;
+ $58 = HEAP32[7757]|0;
HEAP32[$vararg_buffer14>>2] = $57;
$vararg_ptr17 = ((($vararg_buffer14)) + 4|0);
HEAP32[$vararg_ptr17>>2] = $58;
- _TraceLog(0,4515,$vararg_buffer14);
- $59 = HEAP32[7760]|0;
- $60 = HEAP32[7761]|0;
+ _TraceLog(0,4283,$vararg_buffer14);
+ $59 = HEAP32[7801]|0;
+ $60 = HEAP32[7802]|0;
HEAP32[$vararg_buffer18>>2] = $59;
$vararg_ptr21 = ((($vararg_buffer18)) + 4|0);
HEAP32[$vararg_ptr21>>2] = $60;
- _TraceLog(0,4536,$vararg_buffer18);
+ _TraceLog(0,4304,$vararg_buffer18);
}
- $61 = HEAP32[7715]|0;
+ $61 = HEAP32[7756]|0;
(_glfwSetWindowSizeCallback(($61|0),(1|0))|0);
- $62 = HEAP32[7715]|0;
+ $62 = HEAP32[7756]|0;
(_glfwSetCursorEnterCallback(($62|0),(2|0))|0);
- $63 = HEAP32[7715]|0;
+ $63 = HEAP32[7756]|0;
(_glfwSetKeyCallback(($63|0),(1|0))|0);
- $64 = HEAP32[7715]|0;
+ $64 = HEAP32[7756]|0;
(_glfwSetMouseButtonCallback(($64|0),(1|0))|0);
- $65 = HEAP32[7715]|0;
+ $65 = HEAP32[7756]|0;
(_glfwSetCursorPosCallback(($65|0),(1|0))|0);
- $66 = HEAP32[7715]|0;
+ $66 = HEAP32[7756]|0;
(_glfwSetCharCallback(($66|0),(3|0))|0);
- $67 = HEAP32[7715]|0;
+ $67 = HEAP32[7756]|0;
(_glfwSetScrollCallback(($67|0),(2|0))|0);
- $68 = HEAP32[7715]|0;
+ $68 = HEAP32[7756]|0;
(_glfwSetWindowIconifyCallback(($68|0),(4|0))|0);
- $69 = HEAP32[7715]|0;
+ $69 = HEAP32[7756]|0;
_glfwMakeContextCurrent(($69|0));
_glfwSwapInterval(0);
- $70 = HEAP8[33680]|0;
+ $70 = HEAP8[35996]|0;
$71 = $70 & 64;
$72 = ($71<<24>>24)==(0);
if ($72) {
- $73 = HEAP32[7717]|0;
- $74 = HEAP32[7716]|0;
+ $73 = HEAP32[7758]|0;
+ $74 = HEAP32[7757]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7758]|0;
- $76 = HEAP32[7760]|0;
+ $75 = HEAP32[7799]|0;
+ $76 = HEAP32[7801]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7759]|0;
- $80 = HEAP32[7761]|0;
+ $79 = HEAP32[7800]|0;
+ $80 = HEAP32[7802]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -12982,19 +17206,19 @@ function _InitGraphicsDevice($0,$1) {
STACKTOP = sp;return;
}
_glfwSwapInterval(1);
- _TraceLog(0,4561,$vararg_buffer22);
- $73 = HEAP32[7717]|0;
- $74 = HEAP32[7716]|0;
+ _TraceLog(0,4329,$vararg_buffer22);
+ $73 = HEAP32[7758]|0;
+ $74 = HEAP32[7757]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7758]|0;
- $76 = HEAP32[7760]|0;
+ $75 = HEAP32[7799]|0;
+ $76 = HEAP32[7801]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7759]|0;
- $80 = HEAP32[7761]|0;
+ $79 = HEAP32[7800]|0;
+ $80 = HEAP32[7802]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -13022,12 +17246,12 @@ function _LoadDefaultFont() {
$vararg_buffer = sp;
$0 = sp + 4|0;
$1 = sp + 24|0;
- HEAP32[(30924)>>2] = 224;
+ HEAP32[(31088)>>2] = 224;
$2 = (_malloc(65536)|0);
_memset(($2|0),0,65536)|0;
$$095104 = 0;$$096103 = 0;
while(1) {
- $3 = (16 + ($$095104<<2)|0);
+ $3 = (28 + ($$095104<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$097102 = 31;
while(1) {
@@ -13063,27 +17287,27 @@ function _LoadDefaultFont() {
_free($2);
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_LoadTextureFromImage($1,$$byval_copy1);
- ;HEAP32[30900>>2]=HEAP32[$1>>2]|0;HEAP32[30900+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[30900+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[30900+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[30900+16>>2]=HEAP32[$1+16>>2]|0;
+ ;HEAP32[31064>>2]=HEAP32[$1>>2]|0;HEAP32[31064+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[31064+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[31064+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[31064+16>>2]=HEAP32[$1+16>>2]|0;
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_UnloadImage($$byval_copy1);
- $5 = HEAP32[(30924)>>2]|0;
+ $5 = HEAP32[(31088)>>2]|0;
$6 = $5 << 5;
$7 = (_malloc($6)|0);
- HEAP32[(30928)>>2] = $7;
+ HEAP32[(31092)>>2] = $7;
$8 = ($5|0)>(0);
if (!($8)) {
$$lcssa = $7;
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30920)>>2] = $23;
- $24 = HEAP32[7725]|0;
+ HEAP32[(31084)>>2] = $23;
+ $24 = HEAP32[7766]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3856,$vararg_buffer);
+ _TraceLog(0,3624,$vararg_buffer);
STACKTOP = sp;return;
}
- $9 = HEAP32[(30904)>>2]|0;
- $10 = HEAP32[(30924)>>2]|0;
- $11 = HEAP32[(30928)>>2]|0;
+ $9 = HEAP32[(31068)>>2]|0;
+ $10 = HEAP32[(31088)>>2]|0;
+ $11 = HEAP32[(31092)>>2]|0;
$$0101 = 0;$$090100 = 1;$$09299 = 0;$27 = $7;
while(1) {
$25 = (($$0101) + 32)|0;
@@ -13095,7 +17319,7 @@ function _LoadDefaultFont() {
$30 = (($29) + 1)|0;
$31 = (((($27) + ($$0101<<5)|0)) + 8|0);
HEAP32[$31>>2] = $30;
- $32 = (2064 + ($$0101<<2)|0);
+ $32 = (2076 + ($$0101<<2)|0);
$33 = HEAP32[$32>>2]|0;
$34 = (((($27) + ($$0101<<5)|0)) + 12|0);
HEAP32[$34>>2] = $33;
@@ -13132,19 +17356,19 @@ function _LoadDefaultFont() {
}
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30920)>>2] = $23;
- $24 = HEAP32[7725]|0;
+ HEAP32[(31084)>>2] = $23;
+ $24 = HEAP32[7766]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3856,$vararg_buffer);
+ _TraceLog(0,3624,$vararg_buffer);
STACKTOP = sp;return;
}
-function _InitTimer_10() {
+function _InitTimer_12() {
var $0 = 0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetTime());
- HEAPF64[1748] = $1;
+ HEAPF64[1767] = $1;
return;
}
function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
@@ -13174,7 +17398,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr8>>2] = $10;
$vararg_ptr9 = ((($vararg_buffer4)) + 12|0);
HEAP32[$vararg_ptr9>>2] = $12;
- _TraceLog(0,3789,$vararg_buffer4);
+ _TraceLog(0,3557,$vararg_buffer4);
STACKTOP = sp;return 0;
} else {
HEAP32[$vararg_buffer>>2] = $6;
@@ -13184,7 +17408,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr2>>2] = $10;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $12;
- _TraceLog(0,3720,$vararg_buffer);
+ _TraceLog(0,3488,$vararg_buffer);
STACKTOP = sp;return 0;
}
return (0)|0;
@@ -13200,7 +17424,7 @@ function _EmscriptenKeyboardCallback($0,$1,$2) {
return 0;
}
$4 = ((($1)) + 32|0);
- $5 = (_strcmp($4,3713)|0);
+ $5 = (_strcmp($4,3481)|0);
$6 = ($5|0)==(0);
if (!($6)) {
return 0;
@@ -13303,7 +17527,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$28 = (($25) + 4)|0;
$29 = $28;
$30 = HEAP32[$29>>2]|0;
- $31 = 13968;
+ $31 = 14120;
$32 = $31;
HEAP32[$32>>2] = $27;
$33 = (($31) + 4)|0;
@@ -13316,7 +17540,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$39 = (($36) + 4)|0;
$40 = $39;
$41 = HEAP32[$40>>2]|0;
- $42 = (13976);
+ $42 = (14128);
$43 = $42;
HEAP32[$43>>2] = $38;
$44 = (($42) + 4)|0;
@@ -13372,7 +17596,7 @@ function _EmscriptenGamepadCallback($0,$1,$2) {
}
$9 = ((($1)) + 1300|0);
$10 = HEAP32[$9>>2]|0;
- $11 = (30884 + ($10<<2)|0);
+ $11 = (31048 + ($10<<2)|0);
HEAP32[$11>>2] = $$sink;
return 0;
}
@@ -13386,19 +17610,19 @@ function _SetTargetFPS($0) {
$2 = (+($0|0));
$3 = 1.0 / $2;
$$ = $1 ? 0.0 : $3;
- HEAPF64[1745] = $$;
+ HEAPF64[1764] = $$;
$4 = $3;
$$op = $4 * 1000.0;
$5 = $$op;
$6 = $1 ? 0.0 : $5;
HEAPF64[$vararg_buffer>>3] = $6;
- _TraceLog(0,3669,$vararg_buffer);
+ _TraceLog(0,3437,$vararg_buffer);
STACKTOP = sp;return;
}
function _LogoAnimation() {
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7720] = 0;
+ HEAP32[7761] = 0;
return;
}
function _GetTime() {
@@ -13497,7 +17721,7 @@ function _ImageFormat($0,$1) {
$6 = ($1|0)<(8);
$or$cond = $6 & $5;
if (!($or$cond)) {
- _TraceLog(2,4232,$vararg_buffer);
+ _TraceLog(2,4000,$vararg_buffer);
STACKTOP = sp;return;
}
;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[$0+16>>2]|0;
@@ -13974,52 +18198,52 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$5 = sp + 68|0;
_glBindTexture(3553,0);
HEAP32[$5>>2] = 0;
- $6 = HEAP32[7733]|0;
+ $6 = HEAP32[7774]|0;
$7 = ($6|0)==(0);
$8 = $3 & -4;
$switch = ($8|0)==(8);
$or$cond100 = $switch & $7;
if ($or$cond100) {
- _TraceLog(2,3901,$vararg_buffer);
+ _TraceLog(2,3669,$vararg_buffer);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $9 = HEAP32[7734]|0;
+ $9 = HEAP32[7775]|0;
$10 = ($9|0)==(0);
$11 = ($3|0)==(12);
$or$cond7 = $11 & $10;
if ($or$cond7) {
- _TraceLog(2,3945,$vararg_buffer1);
+ _TraceLog(2,3713,$vararg_buffer1);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $12 = HEAP32[7735]|0;
+ $12 = HEAP32[7776]|0;
$13 = ($12|0)==(0);
$$off = (($3) + -13)|0;
$14 = ($$off>>>0)<(2);
$or$cond = $14 & $13;
if ($or$cond) {
- _TraceLog(2,3990,$vararg_buffer3);
+ _TraceLog(2,3758,$vararg_buffer3);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $15 = HEAP32[7736]|0;
+ $15 = HEAP32[7777]|0;
$16 = ($15|0)==(0);
$$off92 = (($3) + -15)|0;
$17 = ($$off92>>>0)<(2);
$or$cond96 = $17 & $16;
if ($or$cond96) {
- _TraceLog(2,4035,$vararg_buffer5);
+ _TraceLog(2,3803,$vararg_buffer5);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $18 = HEAP32[7737]|0;
+ $18 = HEAP32[7778]|0;
$19 = ($18|0)==(0);
$$off93 = (($3) + -17)|0;
$20 = ($$off93>>>0)<(2);
$or$cond98 = $20 & $19;
if ($or$cond98) {
- _TraceLog(2,4080,$vararg_buffer7);
+ _TraceLog(2,3848,$vararg_buffer7);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14057,7 +18281,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 8: {
- $22 = HEAP32[7733]|0;
+ $22 = HEAP32[7774]|0;
$23 = ($22|0)==(0);
if (!($23)) {
_LoadCompressedTexture($0,$1,$2,$4,33776);
@@ -14065,7 +18289,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 9: {
- $24 = HEAP32[7733]|0;
+ $24 = HEAP32[7774]|0;
$25 = ($24|0)==(0);
if (!($25)) {
_LoadCompressedTexture($0,$1,$2,$4,33777);
@@ -14073,7 +18297,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 10: {
- $26 = HEAP32[7733]|0;
+ $26 = HEAP32[7774]|0;
$27 = ($26|0)==(0);
if (!($27)) {
_LoadCompressedTexture($0,$1,$2,$4,33778);
@@ -14081,7 +18305,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 11: {
- $28 = HEAP32[7733]|0;
+ $28 = HEAP32[7774]|0;
$29 = ($28|0)==(0);
if (!($29)) {
_LoadCompressedTexture($0,$1,$2,$4,33779);
@@ -14089,7 +18313,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 12: {
- $30 = HEAP32[7734]|0;
+ $30 = HEAP32[7775]|0;
$31 = ($30|0)==(0);
if (!($31)) {
_LoadCompressedTexture($0,$1,$2,$4,36196);
@@ -14097,7 +18321,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 13: {
- $32 = HEAP32[7735]|0;
+ $32 = HEAP32[7776]|0;
$33 = ($32|0)==(0);
if (!($33)) {
_LoadCompressedTexture($0,$1,$2,$4,37492);
@@ -14105,7 +18329,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 14: {
- $34 = HEAP32[7735]|0;
+ $34 = HEAP32[7776]|0;
$35 = ($34|0)==(0);
if (!($35)) {
_LoadCompressedTexture($0,$1,$2,$4,37496);
@@ -14113,7 +18337,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 15: {
- $36 = HEAP32[7736]|0;
+ $36 = HEAP32[7777]|0;
$37 = ($36|0)==(0);
if (!($37)) {
_LoadCompressedTexture($0,$1,$2,$4,35840);
@@ -14121,7 +18345,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 16: {
- $38 = HEAP32[7736]|0;
+ $38 = HEAP32[7777]|0;
$39 = ($38|0)==(0);
if (!($39)) {
_LoadCompressedTexture($0,$1,$2,$4,35842);
@@ -14129,7 +18353,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 17: {
- $40 = HEAP32[7737]|0;
+ $40 = HEAP32[7778]|0;
$41 = ($40|0)==(0);
if (!($41)) {
_LoadCompressedTexture($0,$1,$2,$4,37808);
@@ -14137,7 +18361,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 18: {
- $42 = HEAP32[7737]|0;
+ $42 = HEAP32[7778]|0;
$43 = ($42|0)==(0);
if (!($43)) {
_LoadCompressedTexture($0,$1,$2,$4,37815);
@@ -14145,11 +18369,11 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
default: {
- _TraceLog(2,4125,$vararg_buffer9);
+ _TraceLog(2,3893,$vararg_buffer9);
}
}
} while(0);
- $44 = HEAP32[7738]|0;
+ $44 = HEAP32[7779]|0;
$45 = ($44|0)==(0);
if ($45) {
_glTexParameteri(3553,10242,33071);
@@ -14164,7 +18388,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$46 = HEAP32[$5>>2]|0;
$47 = ($46|0)==(0);
if ($47) {
- _TraceLog(2,4203,$vararg_buffer15);
+ _TraceLog(2,3971,$vararg_buffer15);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
} else {
@@ -14173,7 +18397,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
HEAP32[$vararg_ptr13>>2] = $1;
$vararg_ptr14 = ((($vararg_buffer11)) + 8|0);
HEAP32[$vararg_ptr14>>2] = $2;
- _TraceLog(0,4154,$vararg_buffer11);
+ _TraceLog(0,3922,$vararg_buffer11);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14447,7 +18671,7 @@ function _GetImageData($0) {
break;
}
default: {
- _TraceLog(2,4286,$vararg_buffer);
+ _TraceLog(2,4054,$vararg_buffer);
$$1 = $$0106;
}
}
@@ -14474,7 +18698,7 @@ function _ErrorCallback($0,$1) {
HEAP32[$vararg_buffer>>2] = $0;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $1;
- _TraceLog(2,8152,$vararg_buffer);
+ _TraceLog(2,7920,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlGetVersion() {
@@ -14495,20 +18719,20 @@ function _SetupFramebufferSize($0,$1) {
$vararg_buffer4 = sp + 16|0;
$vararg_buffer = sp;
$2 = sp + 40|0;
- $3 = HEAP32[7717]|0;
+ $3 = HEAP32[7758]|0;
$4 = ($3|0)>($0|0);
if (!($4)) {
- $5 = HEAP32[7716]|0;
+ $5 = HEAP32[7757]|0;
$6 = ($5|0)>($1|0);
if (!($6)) {
$30 = ($3|0)<($0|0);
$31 = ($5|0)<($1|0);
$or$cond = $30 | $31;
if (!($or$cond)) {
- HEAP32[7758] = $3;
- HEAP32[7759] = $5;
- HEAP32[7760] = 0;
- HEAP32[7761] = 0;
+ HEAP32[7799] = $3;
+ HEAP32[7800] = $5;
+ HEAP32[7801] = 0;
+ HEAP32[7802] = 0;
STACKTOP = sp;return;
}
HEAP32[$vararg_buffer8>>2] = $3;
@@ -14518,13 +18742,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr12>>2] = $0;
$vararg_ptr13 = ((($vararg_buffer8)) + 12|0);
HEAP32[$vararg_ptr13>>2] = $1;
- _TraceLog(0,8086,$vararg_buffer8);
+ _TraceLog(0,7854,$vararg_buffer8);
$32 = (+($0|0));
$33 = (+($1|0));
$34 = $32 / $33;
- $35 = HEAP32[7717]|0;
+ $35 = HEAP32[7758]|0;
$36 = (+($35|0));
- $37 = HEAP32[7716]|0;
+ $37 = HEAP32[7757]|0;
$38 = (+($37|0));
$39 = $36 / $38;
$40 = !($34 <= $39);
@@ -14532,26 +18756,26 @@ function _SetupFramebufferSize($0,$1) {
$44 = $34 * $38;
$roundf = (+_roundf((+$44)));
$45 = (~~(($roundf)));
- HEAP32[7758] = $45;
- HEAP32[7759] = $37;
+ HEAP32[7799] = $45;
+ HEAP32[7800] = $37;
$46 = (($45) - ($35))|0;
- HEAP32[7760] = $46;
+ HEAP32[7801] = $46;
$$sink1 = 0;
} else {
- HEAP32[7758] = $35;
+ HEAP32[7799] = $35;
$41 = $36 / $34;
$roundf38 = (+_roundf((+$41)));
$42 = (~~(($roundf38)));
- HEAP32[7759] = $42;
- HEAP32[7760] = 0;
+ HEAP32[7800] = $42;
+ HEAP32[7801] = 0;
$43 = (($42) - ($37))|0;
$$sink1 = $43;
}
- HEAP32[7761] = $$sink1;
+ HEAP32[7802] = $$sink1;
STACKTOP = sp;return;
}
}
- $7 = HEAP32[7716]|0;
+ $7 = HEAP32[7757]|0;
HEAP32[$vararg_buffer>>2] = $3;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $7;
@@ -14559,13 +18783,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr2>>2] = $0;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $1;
- _TraceLog(2,7943,$vararg_buffer);
+ _TraceLog(2,7711,$vararg_buffer);
$8 = (+($0|0));
- $9 = HEAP32[7717]|0;
+ $9 = HEAP32[7758]|0;
$10 = (+($9|0));
$11 = $8 / $10;
$12 = (+($1|0));
- $13 = HEAP32[7716]|0;
+ $13 = HEAP32[7757]|0;
$14 = (+($13|0));
$15 = $12 / $14;
$16 = !($11 <= $15);
@@ -14573,37 +18797,37 @@ function _SetupFramebufferSize($0,$1) {
$22 = $10 * $15;
$roundf39 = (+_roundf((+$22)));
$23 = (~~(($roundf39)));
- HEAP32[7758] = $23;
- HEAP32[7759] = $1;
+ HEAP32[7799] = $23;
+ HEAP32[7800] = $1;
$24 = (($0) - ($23))|0;
- HEAP32[7760] = $24;
+ HEAP32[7801] = $24;
$$sink = 0;
} else {
- HEAP32[7758] = $0;
- $17 = HEAP32[7716]|0;
+ HEAP32[7799] = $0;
+ $17 = HEAP32[7757]|0;
$18 = (+($17|0));
$19 = $11 * $18;
$roundf40 = (+_roundf((+$19)));
$20 = (~~(($roundf40)));
- HEAP32[7759] = $20;
- HEAP32[7760] = 0;
+ HEAP32[7800] = $20;
+ HEAP32[7801] = 0;
$21 = (($1) - ($20))|0;
$$sink = $21;
}
- HEAP32[7761] = $$sink;
- $25 = HEAP32[7758]|0;
+ HEAP32[7802] = $$sink;
+ $25 = HEAP32[7799]|0;
$26 = (+($25|0));
- $27 = HEAP32[7717]|0;
+ $27 = HEAP32[7758]|0;
$28 = (+($27|0));
$29 = $26 / $28;
_MatrixScale($2,$29,$29,$29);
- dest=30956; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7758] = $0;
- HEAP32[7759] = $1;
+ dest=31120; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7799] = $0;
+ HEAP32[7800] = $1;
HEAP32[$vararg_buffer4>>2] = $0;
$vararg_ptr7 = ((($vararg_buffer4)) + 4|0);
HEAP32[$vararg_ptr7>>2] = $1;
- _TraceLog(2,8021,$vararg_buffer4);
+ _TraceLog(2,7789,$vararg_buffer4);
STACKTOP = sp;return;
}
function _WindowSizeCallback($0,$1,$2) {
@@ -14621,10 +18845,10 @@ function _WindowSizeCallback($0,$1,$2) {
_rlMatrixMode(5888);
_rlLoadIdentity();
_rlClearScreenBuffers();
- HEAP32[7717] = $1;
- HEAP32[7716] = $2;
HEAP32[7758] = $1;
- HEAP32[7759] = $2;
+ HEAP32[7757] = $2;
+ HEAP32[7799] = $1;
+ HEAP32[7800] = $2;
return;
}
function _CursorEnterCallback($0,$1) {
@@ -14642,7 +18866,7 @@ function _KeyCallback($0,$1,$2,$3,$4) {
$4 = $4|0;
var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $5 = HEAP32[741]|0;
+ $5 = HEAP32[744]|0;
$6 = ($5|0)==($1|0);
$7 = ($3|0)==(1);
$or$cond = $7 & $6;
@@ -14651,12 +18875,12 @@ function _KeyCallback($0,$1,$2,$3,$4) {
return;
}
$8 = $3&255;
- $9 = (33687 + ($1)|0);
+ $9 = (36003 + ($1)|0);
HEAP8[$9>>0] = $8;
if (!($7)) {
return;
}
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _MouseButtonCallback($0,$1,$2,$3) {
@@ -14672,7 +18896,7 @@ function _MouseButtonCallback($0,$1,$2,$3) {
$4 = sp + 8|0;
$5 = sp;
$6 = $2&255;
- $7 = (33681 + ($1)|0);
+ $7 = (35997 + ($1)|0);
HEAP8[$7>>0] = $6;
$8 = (_IsMouseButtonPressed(0)|0);
$9 = ($8|0)==(0);
@@ -14751,7 +18975,7 @@ function _MouseCursorPosCallback($0,$1,$2) {
$12 = (($9) + 4)|0;
$13 = $12;
$14 = HEAP32[$13>>2]|0;
- $15 = 13968;
+ $15 = 14120;
$16 = $15;
HEAP32[$16>>2] = $11;
$17 = (($15) + 4)|0;
@@ -14776,7 +19000,7 @@ function _CharCallback($0,$1) {
$1 = $1|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _ScrollCallback($0,$1,$2) {
@@ -14786,7 +19010,7 @@ function _ScrollCallback($0,$1,$2) {
var $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
$3 = (~~(($2)));
- HEAP32[8131] = $3;
+ HEAP32[8172] = $3;
return;
}
function _WindowIconifyCallback($0,$1) {
@@ -14796,7 +19020,7 @@ function _WindowIconifyCallback($0,$1) {
sp = STACKTOP;
$2 = ($1|0)!=(0);
$$sink = $2&1;
- HEAP32[8130] = $$sink;
+ HEAP32[8171] = $$sink;
return;
}
function _rlglInit($0,$1) {
@@ -14836,16 +19060,16 @@ function _rlglInit($0,$1) {
$6 = sp + 2192|0;
$7 = (_glGetString(7936)|0);
HEAP32[$vararg_buffer>>2] = $7;
- _TraceLog(0,4584,$vararg_buffer);
+ _TraceLog(0,4352,$vararg_buffer);
$8 = (_glGetString(7937)|0);
HEAP32[$vararg_buffer1>>2] = $8;
- _TraceLog(0,4602,$vararg_buffer1);
+ _TraceLog(0,4370,$vararg_buffer1);
$9 = (_glGetString(7938)|0);
HEAP32[$vararg_buffer4>>2] = $9;
- _TraceLog(0,4620,$vararg_buffer4);
+ _TraceLog(0,4388,$vararg_buffer4);
$10 = (_glGetString(35724)|0);
HEAP32[$vararg_buffer7>>2] = $10;
- _TraceLog(0,4638,$vararg_buffer7);
+ _TraceLog(0,4406,$vararg_buffer7);
$11 = (_glGetString(7939)|0);
$12 = (_strlen($11)|0);
$13 = (($12) + 1)|0;
@@ -14853,7 +19077,7 @@ function _rlglInit($0,$1) {
_memcpy(($14|0),($11|0),($13|0))|0;
$$062 = 0;$$sink63 = $14;
while(1) {
- $15 = (_strtok($$sink63,4656)|0);
+ $15 = (_strtok($$sink63,4424)|0);
$16 = (($vararg_buffer7) + ($$062<<2)|0);
HEAP32[$16>>2] = $15;
$17 = ($15|0)==(0|0);
@@ -14867,41 +19091,41 @@ function _rlglInit($0,$1) {
_free($14);
$19 = (($$062) + -1)|0;
HEAP32[$vararg_buffer10>>2] = $19;
- _TraceLog(0,4658,$vararg_buffer10);
+ _TraceLog(0,4426,$vararg_buffer10);
$20 = ($$062|0)>(1);
if ($20) {
$$06167 = 0;
while(1) {
$23 = (($vararg_buffer7) + ($$06167<<2)|0);
$24 = HEAP32[$23>>2]|0;
- $25 = (_strcmp($24,4693)|0);
+ $25 = (_strcmp($24,4461)|0);
$26 = ($25|0)==(0);
if ($26) {
- HEAP32[7796] = 1;
- $27 = (_eglGetProcAddress((4720|0))|0);
- HEAP32[7797] = $27;
- $28 = (_eglGetProcAddress((4741|0))|0);
- HEAP32[7798] = $28;
- $29 = (_eglGetProcAddress((4762|0))|0);
- HEAP32[7799] = $29;
- }
- $30 = (_strcmp($24,4786)|0);
+ HEAP32[7837] = 1;
+ $27 = (_eglGetProcAddress((4488|0))|0);
+ HEAP32[7838] = $27;
+ $28 = (_eglGetProcAddress((4509|0))|0);
+ HEAP32[7839] = $28;
+ $29 = (_eglGetProcAddress((4530|0))|0);
+ HEAP32[7840] = $29;
+ }
+ $30 = (_strcmp($24,4554)|0);
$31 = ($30|0)==(0);
if ($31) {
- HEAP32[7738] = 1;
+ HEAP32[7779] = 1;
}
- $32 = (_strcmp($24,4806)|0);
+ $32 = (_strcmp($24,4574)|0);
$33 = ($32|0)==(0);
if ($33) {
label = 12;
} else {
$34 = HEAP32[$23>>2]|0;
- $35 = (_strcmp($34,4838)|0);
+ $35 = (_strcmp($34,4606)|0);
$36 = ($35|0)==(0);
if ($36) {
label = 12;
} else {
- $37 = (_strcmp($34,4871)|0);
+ $37 = (_strcmp($34,4639)|0);
$38 = ($37|0)==(0);
if ($38) {
label = 12;
@@ -14910,15 +19134,15 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 12) {
label = 0;
- HEAP32[7733] = 1;
+ HEAP32[7774] = 1;
}
- $39 = (_strcmp($24,4911)|0);
+ $39 = (_strcmp($24,4679)|0);
$40 = ($39|0)==(0);
if ($40) {
label = 15;
} else {
$41 = HEAP32[$23>>2]|0;
- $42 = (_strcmp($41,4947)|0);
+ $42 = (_strcmp($41,4715)|0);
$43 = ($42|0)==(0);
if ($43) {
label = 15;
@@ -14926,35 +19150,35 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 15) {
label = 0;
- HEAP32[7734] = 1;
+ HEAP32[7775] = 1;
}
$44 = HEAP32[$23>>2]|0;
- $45 = (_strcmp($44,4980)|0);
+ $45 = (_strcmp($44,4748)|0);
$46 = ($45|0)==(0);
if ($46) {
- HEAP32[7735] = 1;
+ HEAP32[7776] = 1;
}
- $47 = (_strcmp($44,5005)|0);
+ $47 = (_strcmp($44,4773)|0);
$48 = ($47|0)==(0);
if ($48) {
- HEAP32[7736] = 1;
+ HEAP32[7777] = 1;
}
- $49 = (_strcmp($44,5038)|0);
+ $49 = (_strcmp($44,4806)|0);
$50 = ($49|0)==(0);
if ($50) {
- HEAP32[7737] = 1;
+ HEAP32[7778] = 1;
}
- $51 = (_strcmp($44,5074)|0);
+ $51 = (_strcmp($44,4842)|0);
$52 = ($51|0)==(0);
if ($52) {
- HEAP32[7800] = 1;
- _glGetFloatv(34047,(31204|0));
+ HEAP32[7841] = 1;
+ _glGetFloatv(34047,(31368|0));
}
$53 = HEAP32[$23>>2]|0;
- $54 = (_strcmp($53,5108)|0);
+ $54 = (_strcmp($53,4876)|0);
$55 = ($54|0)==(0);
if ($55) {
- HEAP32[7802] = 1;
+ HEAP32[7843] = 1;
}
$56 = (($$06167) + 1)|0;
$exitcond70 = ($56|0)==($19|0);
@@ -14965,77 +19189,77 @@ function _rlglInit($0,$1) {
}
}
}
- $21 = HEAP32[7796]|0;
+ $21 = HEAP32[7837]|0;
$22 = ($21|0)==(0);
if ($22) {
- _TraceLog(2,5211,$vararg_buffer15);
+ _TraceLog(2,4979,$vararg_buffer15);
} else {
- _TraceLog(0,5136,$vararg_buffer13);
+ _TraceLog(0,4904,$vararg_buffer13);
}
- $57 = HEAP32[7738]|0;
+ $57 = HEAP32[7779]|0;
$58 = ($57|0)==(0);
if ($58) {
- _TraceLog(2,5347,$vararg_buffer19);
+ _TraceLog(2,5115,$vararg_buffer19);
} else {
- _TraceLog(0,5272,$vararg_buffer17);
+ _TraceLog(0,5040,$vararg_buffer17);
}
- $59 = HEAP32[7733]|0;
+ $59 = HEAP32[7774]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- _TraceLog(0,5439,$vararg_buffer21);
+ _TraceLog(0,5207,$vararg_buffer21);
}
- $61 = HEAP32[7734]|0;
+ $61 = HEAP32[7775]|0;
$62 = ($61|0)==(0);
if (!($62)) {
- _TraceLog(0,5485,$vararg_buffer23);
+ _TraceLog(0,5253,$vararg_buffer23);
}
- $63 = HEAP32[7735]|0;
+ $63 = HEAP32[7776]|0;
$64 = ($63|0)==(0);
if (!($64)) {
- _TraceLog(0,5532,$vararg_buffer25);
+ _TraceLog(0,5300,$vararg_buffer25);
}
- $65 = HEAP32[7736]|0;
+ $65 = HEAP32[7777]|0;
$66 = ($65|0)==(0);
if (!($66)) {
- _TraceLog(0,5583,$vararg_buffer27);
+ _TraceLog(0,5351,$vararg_buffer27);
}
- $67 = HEAP32[7737]|0;
+ $67 = HEAP32[7778]|0;
$68 = ($67|0)==(0);
if (!($68)) {
- _TraceLog(0,5630,$vararg_buffer29);
+ _TraceLog(0,5398,$vararg_buffer29);
}
- $69 = HEAP32[7800]|0;
+ $69 = HEAP32[7841]|0;
$70 = ($69|0)==(0);
if (!($70)) {
- $71 = +HEAPF32[7801];
+ $71 = +HEAPF32[7842];
$72 = $71;
HEAPF64[$vararg_buffer31>>3] = $72;
- _TraceLog(0,5677,$vararg_buffer31);
+ _TraceLog(0,5445,$vararg_buffer31);
}
- $73 = HEAP32[7802]|0;
+ $73 = HEAP32[7843]|0;
$74 = ($73|0)==(0);
if (!($74)) {
- _TraceLog(0,5743,$vararg_buffer34);
+ _TraceLog(0,5511,$vararg_buffer34);
}
HEAP32[$vararg_buffer10>>2] = -1;
$75 = (_rlglLoadTexture($vararg_buffer10,1,1,7,1)|0);
- HEAP32[7803] = $75;
+ HEAP32[7844] = $75;
$76 = ($75|0)==(0);
if ($76) {
- _TraceLog(2,5847,$vararg_buffer39);
+ _TraceLog(2,5615,$vararg_buffer39);
} else {
HEAP32[$vararg_buffer36>>2] = $75;
- _TraceLog(0,5796,$vararg_buffer36);
+ _TraceLog(0,5564,$vararg_buffer36);
}
_LoadDefaultShader($2);
- dest=31216; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31272; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31380; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31436; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_LoadDefaultBuffers();
$77 = (_malloc(49152)|0);
- HEAP32[7832] = $77;
+ HEAP32[7873] = $77;
$$06066 = 0;
while(1) {
- $79 = HEAP32[7832]|0;
+ $79 = HEAP32[7873]|0;
$80 = (($79) + (($$06066*12)|0)|0);
_VectorZero($3);
;HEAP32[$80>>2]=HEAP32[$3>>2]|0;HEAP32[$80+4>>2]=HEAP32[$3+4>>2]|0;HEAP32[$80+8>>2]=HEAP32[$3+8>>2]|0;
@@ -15048,7 +19272,7 @@ function _rlglInit($0,$1) {
}
}
$78 = (_malloc(36864)|0);
- HEAP32[7833] = $78;
+ HEAP32[7874] = $78;
$$05965 = 0;
while(1) {
$82 = (((($78) + (($$05965*144)|0)|0)) + 8|0);
@@ -15063,48 +19287,48 @@ function _rlglInit($0,$1) {
$$05965 = $84;
}
}
- HEAP32[7834] = 1;
- $85 = HEAP32[7803]|0;
+ HEAP32[7875] = 1;
+ $85 = HEAP32[7844]|0;
$86 = ((($78)) + 8|0);
HEAP32[$86>>2] = $85;
- HEAP32[7835] = 4;
+ HEAP32[7876] = 4;
_MatrixIdentity($4);
- dest=31344; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31508; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31408); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31572); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31472); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31636); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31536); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31700); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31600); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31764); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31664); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31828); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31728); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31892); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31792); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31956); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31856); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32020); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31920); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32084); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31984); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32148); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32048); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32212); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32112); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32276); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32176); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32340); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32240); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32404); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32304); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32468); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($5);
- dest=31052; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31216; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($6);
- dest=31116; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7762] = 31116;
+ dest=31280; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7803] = 31280;
_glDepthFunc(515);
_glDisable(2929);
_glBlendFunc(770,771);
@@ -15115,21 +19339,21 @@ function _rlglInit($0,$1) {
_glClearColor(0.0,0.0,0.0,1.0);
_glClearDepthf(1.0);
_glClear(16640);
- HEAP32[8092] = $0;
- HEAP32[8093] = $1;
- _TraceLog(0,5886,$vararg_buffer41);
+ HEAP32[8133] = $0;
+ HEAP32[8134] = $1;
+ _TraceLog(0,5654,$vararg_buffer41);
STACKTOP = sp;return;
}
function _SetupViewport() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7760]|0;
+ $0 = HEAP32[7801]|0;
$1 = (($0|0) / 2)&-1;
- $2 = HEAP32[7761]|0;
+ $2 = HEAP32[7802]|0;
$3 = (($2|0) / 2)&-1;
- $4 = HEAP32[7758]|0;
+ $4 = HEAP32[7799]|0;
$5 = (($4) - ($0))|0;
- $6 = HEAP32[7759]|0;
+ $6 = HEAP32[7800]|0;
$7 = (($6) - ($2))|0;
_rlViewport($1,$3,$5,$7);
return;
@@ -15140,12 +19364,12 @@ function _rlMatrixMode($0) {
sp = STACKTOP;
switch ($0|0) {
case 5889: {
- $modelview$sink = 31052;
+ $modelview$sink = 31216;
label = 3;
break;
}
case 5888: {
- $modelview$sink = 31116;
+ $modelview$sink = 31280;
label = 3;
break;
}
@@ -15153,9 +19377,9 @@ function _rlMatrixMode($0) {
}
}
if ((label|0) == 3) {
- HEAP32[7762] = $modelview$sink;
+ HEAP32[7803] = $modelview$sink;
}
- HEAP32[7795] = $0;
+ HEAP32[7836] = $0;
return;
}
function _rlLoadIdentity() {
@@ -15163,7 +19387,7 @@ function _rlLoadIdentity() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$0 = sp;
- $1 = HEAP32[7762]|0;
+ $1 = HEAP32[7803]|0;
_MatrixIdentity($0);
dest=$1; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
@@ -15184,7 +19408,7 @@ function _rlOrtho($0,$1,$2,$3,$4,$5) {
$7 = sp;
_MatrixOrtho($6,$0,$1,$2,$3,$4,$5);
_MatrixTranspose($6);
- $8 = HEAP32[7762]|0;
+ $8 = HEAP32[7803]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy,$$byval_copy1);
@@ -15243,17 +19467,17 @@ function _LoadDefaultShader($0) {
$1 = sp + 16|0;
$2 = sp + 513|0;
$3 = sp + 72|0;
- _memcpy(($2|0),(6462|0),489)|0;
- _memcpy(($3|0),(6951|0),441)|0;
+ _memcpy(($2|0),(6230|0),489)|0;
+ _memcpy(($3|0),(6719|0),441)|0;
$4 = (_LoadShaderProgram($2,$3)|0);
HEAP32[$1>>2] = $4;
$5 = ($4|0)==(0);
if ($5) {
HEAP32[$vararg_buffer1>>2] = $4;
- _TraceLog(2,7440,$vararg_buffer1);
+ _TraceLog(2,7208,$vararg_buffer1);
} else {
HEAP32[$vararg_buffer>>2] = $4;
- _TraceLog(0,7392,$vararg_buffer);
+ _TraceLog(0,7160,$vararg_buffer);
}
$6 = HEAP32[$1>>2]|0;
$7 = ($6|0)==(0);
@@ -15281,15 +19505,15 @@ function _LoadDefaultBuffers() {
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
$0 = (_malloc(24576)|0);
- HEAP32[(32388)>>2] = $0;
+ HEAP32[(32552)>>2] = $0;
$1 = (_malloc(8192)|0);
- HEAP32[(32396)>>2] = $1;
- HEAP32[(32392)>>2] = 0;
- HEAP32[(32400)>>2] = 0;
+ HEAP32[(32560)>>2] = $1;
+ HEAP32[(32556)>>2] = 0;
+ HEAP32[(32564)>>2] = 0;
_memset(($0|0),0,24576)|0;
$$05972 = 0;
while(1) {
- $2 = HEAP32[(32396)>>2]|0;
+ $2 = HEAP32[(32560)>>2]|0;
$3 = (($2) + ($$05972)|0);
HEAP8[$3>>0] = 0;
$4 = (($$05972) + 1)|0;
@@ -15300,19 +19524,19 @@ function _LoadDefaultBuffers() {
$$05972 = $4;
}
}
- HEAP32[8094] = 0;
- HEAP32[(32384)>>2] = 0;
- HEAP32[(32380)>>2] = 0;
+ HEAP32[8135] = 0;
+ HEAP32[(32548)>>2] = 0;
+ HEAP32[(32544)>>2] = 0;
$5 = (_malloc(73728)|0);
- HEAP32[(32436)>>2] = $5;
+ HEAP32[(32600)>>2] = $5;
$6 = (_malloc(24576)|0);
- HEAP32[(32444)>>2] = $6;
- HEAP32[(32440)>>2] = 0;
- HEAP32[(32448)>>2] = 0;
+ HEAP32[(32608)>>2] = $6;
+ HEAP32[(32604)>>2] = 0;
+ HEAP32[(32612)>>2] = 0;
_memset(($5|0),0,73728)|0;
$$05770 = 0;
while(1) {
- $7 = HEAP32[(32444)>>2]|0;
+ $7 = HEAP32[(32608)>>2]|0;
$8 = (($7) + ($$05770)|0);
HEAP8[$8>>0] = 0;
$9 = (($$05770) + 1)|0;
@@ -15323,24 +19547,24 @@ function _LoadDefaultBuffers() {
$$05770 = $9;
}
}
- HEAP32[8106] = 0;
- HEAP32[(32432)>>2] = 0;
- HEAP32[(32428)>>2] = 0;
+ HEAP32[8147] = 0;
+ HEAP32[(32596)>>2] = 0;
+ HEAP32[(32592)>>2] = 0;
$10 = (_malloc(49152)|0);
- HEAP32[(32484)>>2] = $10;
+ HEAP32[(32648)>>2] = $10;
$11 = (_malloc(32768)|0);
- HEAP32[(32488)>>2] = $11;
+ HEAP32[(32652)>>2] = $11;
$12 = (_malloc(16384)|0);
- HEAP32[(32492)>>2] = $12;
+ HEAP32[(32656)>>2] = $12;
$13 = (_malloc(12288)|0);
- HEAP32[(32496)>>2] = $13;
- $14 = HEAP32[(32484)>>2]|0;
+ HEAP32[(32660)>>2] = $13;
+ $14 = HEAP32[(32648)>>2]|0;
_memset(($14|0),0,49152)|0;
- $15 = HEAP32[(32488)>>2]|0;
+ $15 = HEAP32[(32652)>>2]|0;
_memset(($15|0),0,32768)|0;
$$05467 = 0;
while(1) {
- $17 = HEAP32[(32492)>>2]|0;
+ $17 = HEAP32[(32656)>>2]|0;
$18 = (($17) + ($$05467)|0);
HEAP8[$18>>0] = 0;
$19 = (($$05467) + 1)|0;
@@ -15351,7 +19575,7 @@ function _LoadDefaultBuffers() {
$$05467 = $19;
}
}
- $16 = HEAP32[(32496)>>2]|0;
+ $16 = HEAP32[(32660)>>2]|0;
$$05365 = 0;$$066 = 0;
while(1) {
$22 = $$05365 << 2;
@@ -15388,140 +19612,140 @@ function _LoadDefaultBuffers() {
$$05365 = $41;$$066 = $42;
}
}
- HEAP32[8118] = 0;
- HEAP32[(32476)>>2] = 0;
- HEAP32[(32480)>>2] = 0;
- _TraceLog(0,5933,$vararg_buffer);
- $20 = HEAP32[7796]|0;
+ HEAP32[8159] = 0;
+ HEAP32[(32640)>>2] = 0;
+ HEAP32[(32644)>>2] = 0;
+ _TraceLog(0,5701,$vararg_buffer);
+ $20 = HEAP32[7837]|0;
$21 = ($20|0)==(0);
if (!($21)) {
- $43 = HEAP32[7797]|0;
- FUNCTION_TABLE_vii[$43 & 63](1,(32404));
- $44 = HEAP32[7798]|0;
- $45 = HEAP32[(32404)>>2]|0;
+ $43 = HEAP32[7838]|0;
+ FUNCTION_TABLE_vii[$43 & 63](1,(32568));
+ $44 = HEAP32[7839]|0;
+ $45 = HEAP32[(32568)>>2]|0;
FUNCTION_TABLE_vi[$44 & 31]($45);
}
- _glGenBuffers(2,((32408)|0));
- $46 = HEAP32[(32408)>>2]|0;
+ _glGenBuffers(2,((32572)|0));
+ $46 = HEAP32[(32572)>>2]|0;
_glBindBuffer(34962,($46|0));
- $47 = HEAP32[(32388)>>2]|0;
+ $47 = HEAP32[(32552)>>2]|0;
_glBufferData(34962,24576,($47|0),35048);
- $48 = HEAP32[(31276)>>2]|0;
+ $48 = HEAP32[(31440)>>2]|0;
_glEnableVertexAttribArray(($48|0));
- $49 = HEAP32[(31276)>>2]|0;
+ $49 = HEAP32[(31440)>>2]|0;
_glVertexAttribPointer(($49|0),3,5126,0,0,(0|0));
- _glGenBuffers(2,((32412)|0));
- $50 = HEAP32[(32412)>>2]|0;
+ _glGenBuffers(2,((32576)|0));
+ $50 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($50|0));
- $51 = HEAP32[(32396)>>2]|0;
+ $51 = HEAP32[(32560)>>2]|0;
_glBufferData(34962,8192,($51|0),35048);
- $52 = HEAP32[(31296)>>2]|0;
+ $52 = HEAP32[(31460)>>2]|0;
_glEnableVertexAttribArray(($52|0));
- $53 = HEAP32[(31296)>>2]|0;
+ $53 = HEAP32[(31460)>>2]|0;
_glVertexAttribPointer(($53|0),4,5121,1,0,(0|0));
- $54 = HEAP32[7796]|0;
+ $54 = HEAP32[7837]|0;
$55 = ($54|0)==(0);
if ($55) {
- $57 = HEAP32[(32408)>>2]|0;
- $58 = HEAP32[(32412)>>2]|0;
+ $57 = HEAP32[(32572)>>2]|0;
+ $58 = HEAP32[(32576)>>2]|0;
HEAP32[$vararg_buffer3>>2] = $57;
$vararg_ptr6 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr6>>2] = $58;
- _TraceLog(0,6071,$vararg_buffer3);
+ _TraceLog(0,5839,$vararg_buffer3);
} else {
- $56 = HEAP32[(32404)>>2]|0;
+ $56 = HEAP32[(32568)>>2]|0;
HEAP32[$vararg_buffer1>>2] = $56;
- _TraceLog(0,6006,$vararg_buffer1);
+ _TraceLog(0,5774,$vararg_buffer1);
}
- $59 = HEAP32[7796]|0;
+ $59 = HEAP32[7837]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- $61 = HEAP32[7797]|0;
- FUNCTION_TABLE_vii[$61 & 63](1,(32452));
- $62 = HEAP32[7798]|0;
- $63 = HEAP32[(32452)>>2]|0;
+ $61 = HEAP32[7838]|0;
+ FUNCTION_TABLE_vii[$61 & 63](1,(32616));
+ $62 = HEAP32[7839]|0;
+ $63 = HEAP32[(32616)>>2]|0;
FUNCTION_TABLE_vi[$62 & 31]($63);
}
- _glGenBuffers(1,((32456)|0));
- $64 = HEAP32[(32456)>>2]|0;
+ _glGenBuffers(1,((32620)|0));
+ $64 = HEAP32[(32620)>>2]|0;
_glBindBuffer(34962,($64|0));
- $65 = HEAP32[(32436)>>2]|0;
+ $65 = HEAP32[(32600)>>2]|0;
_glBufferData(34962,73728,($65|0),35048);
- $66 = HEAP32[(31276)>>2]|0;
+ $66 = HEAP32[(31440)>>2]|0;
_glEnableVertexAttribArray(($66|0));
- $67 = HEAP32[(31276)>>2]|0;
+ $67 = HEAP32[(31440)>>2]|0;
_glVertexAttribPointer(($67|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32460)|0));
- $68 = HEAP32[(32460)>>2]|0;
+ _glGenBuffers(1,((32624)|0));
+ $68 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($68|0));
- $69 = HEAP32[(32444)>>2]|0;
+ $69 = HEAP32[(32608)>>2]|0;
_glBufferData(34962,24576,($69|0),35048);
- $70 = HEAP32[(31296)>>2]|0;
+ $70 = HEAP32[(31460)>>2]|0;
_glEnableVertexAttribArray(($70|0));
- $71 = HEAP32[(31296)>>2]|0;
+ $71 = HEAP32[(31460)>>2]|0;
_glVertexAttribPointer(($71|0),4,5121,1,0,(0|0));
- $72 = HEAP32[7796]|0;
+ $72 = HEAP32[7837]|0;
$73 = ($72|0)==(0);
if ($73) {
- $75 = HEAP32[(32456)>>2]|0;
- $76 = HEAP32[(32460)>>2]|0;
+ $75 = HEAP32[(32620)>>2]|0;
+ $76 = HEAP32[(32624)>>2]|0;
HEAP32[$vararg_buffer10>>2] = $75;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $76;
- _TraceLog(0,6217,$vararg_buffer10);
+ _TraceLog(0,5985,$vararg_buffer10);
} else {
- $74 = HEAP32[(32452)>>2]|0;
+ $74 = HEAP32[(32616)>>2]|0;
HEAP32[$vararg_buffer7>>2] = $74;
- _TraceLog(0,6148,$vararg_buffer7);
+ _TraceLog(0,5916,$vararg_buffer7);
}
- $77 = HEAP32[7796]|0;
+ $77 = HEAP32[7837]|0;
$78 = ($77|0)==(0);
if (!($78)) {
- $79 = HEAP32[7797]|0;
- FUNCTION_TABLE_vii[$79 & 63](1,(32500));
- $80 = HEAP32[7798]|0;
- $81 = HEAP32[(32500)>>2]|0;
+ $79 = HEAP32[7838]|0;
+ FUNCTION_TABLE_vii[$79 & 63](1,(32664));
+ $80 = HEAP32[7839]|0;
+ $81 = HEAP32[(32664)>>2]|0;
FUNCTION_TABLE_vi[$80 & 31]($81);
}
- _glGenBuffers(1,((32504)|0));
- $82 = HEAP32[(32504)>>2]|0;
+ _glGenBuffers(1,((32668)|0));
+ $82 = HEAP32[(32668)>>2]|0;
_glBindBuffer(34962,($82|0));
- $83 = HEAP32[(32484)>>2]|0;
+ $83 = HEAP32[(32648)>>2]|0;
_glBufferData(34962,49152,($83|0),35048);
- $84 = HEAP32[(31276)>>2]|0;
+ $84 = HEAP32[(31440)>>2]|0;
_glEnableVertexAttribArray(($84|0));
- $85 = HEAP32[(31276)>>2]|0;
+ $85 = HEAP32[(31440)>>2]|0;
_glVertexAttribPointer(($85|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32508)|0));
- $86 = HEAP32[(32508)>>2]|0;
+ _glGenBuffers(1,((32672)|0));
+ $86 = HEAP32[(32672)>>2]|0;
_glBindBuffer(34962,($86|0));
- $87 = HEAP32[(32488)>>2]|0;
+ $87 = HEAP32[(32652)>>2]|0;
_glBufferData(34962,32768,($87|0),35048);
- $88 = HEAP32[(31280)>>2]|0;
+ $88 = HEAP32[(31444)>>2]|0;
_glEnableVertexAttribArray(($88|0));
- $89 = HEAP32[(31280)>>2]|0;
+ $89 = HEAP32[(31444)>>2]|0;
_glVertexAttribPointer(($89|0),2,5126,0,0,(0|0));
- _glGenBuffers(1,((32512)|0));
- $90 = HEAP32[(32512)>>2]|0;
+ _glGenBuffers(1,((32676)|0));
+ $90 = HEAP32[(32676)>>2]|0;
_glBindBuffer(34962,($90|0));
- $91 = HEAP32[(32492)>>2]|0;
+ $91 = HEAP32[(32656)>>2]|0;
_glBufferData(34962,16384,($91|0),35048);
- $92 = HEAP32[(31296)>>2]|0;
+ $92 = HEAP32[(31460)>>2]|0;
_glEnableVertexAttribArray(($92|0));
- $93 = HEAP32[(31296)>>2]|0;
+ $93 = HEAP32[(31460)>>2]|0;
_glVertexAttribPointer(($93|0),4,5121,1,0,(0|0));
- _glGenBuffers(1,((32516)|0));
- $94 = HEAP32[(32516)>>2]|0;
+ _glGenBuffers(1,((32680)|0));
+ $94 = HEAP32[(32680)>>2]|0;
_glBindBuffer(34963,($94|0));
- $95 = HEAP32[(32496)>>2]|0;
+ $95 = HEAP32[(32660)>>2]|0;
_glBufferData(34963,12288,($95|0),35044);
- $96 = HEAP32[7796]|0;
+ $96 = HEAP32[7837]|0;
$97 = ($96|0)==(0);
if ($97) {
- $99 = HEAP32[(32504)>>2]|0;
- $100 = HEAP32[(32508)>>2]|0;
- $101 = HEAP32[(32512)>>2]|0;
- $102 = HEAP32[(32516)>>2]|0;
+ $99 = HEAP32[(32668)>>2]|0;
+ $100 = HEAP32[(32672)>>2]|0;
+ $101 = HEAP32[(32676)>>2]|0;
+ $102 = HEAP32[(32680)>>2]|0;
HEAP32[$vararg_buffer17>>2] = $99;
$vararg_ptr20 = ((($vararg_buffer17)) + 4|0);
HEAP32[$vararg_ptr20>>2] = $100;
@@ -15529,18 +19753,18 @@ function _LoadDefaultBuffers() {
HEAP32[$vararg_ptr21>>2] = $101;
$vararg_ptr22 = ((($vararg_buffer17)) + 12|0);
HEAP32[$vararg_ptr22>>2] = $102;
- _TraceLog(0,6363,$vararg_buffer17);
+ _TraceLog(0,6131,$vararg_buffer17);
} else {
- $98 = HEAP32[(32500)>>2]|0;
+ $98 = HEAP32[(32664)>>2]|0;
HEAP32[$vararg_buffer14>>2] = $98;
- _TraceLog(0,6298,$vararg_buffer14);
+ _TraceLog(0,6066,$vararg_buffer14);
}
- $103 = HEAP32[7796]|0;
+ $103 = HEAP32[7837]|0;
$104 = ($103|0)==(0);
if ($104) {
STACKTOP = sp;return;
}
- $105 = HEAP32[7798]|0;
+ $105 = HEAP32[7839]|0;
FUNCTION_TABLE_vi[$105 & 31](0);
STACKTOP = sp;return;
}
@@ -15577,10 +19801,10 @@ function _LoadShaderProgram($0,$1) {
$9 = ($8|0)==(1);
if ($9) {
HEAP32[$vararg_buffer4>>2] = $6;
- _TraceLog(0,7696,$vararg_buffer4);
+ _TraceLog(0,7464,$vararg_buffer4);
} else {
HEAP32[$vararg_buffer>>2] = $6;
- _TraceLog(2,7644,$vararg_buffer);
+ _TraceLog(2,7412,$vararg_buffer);
HEAP32[$vararg_buffer>>2] = 0;
_glGetShaderiv(($6|0),35716,($vararg_buffer|0));
$10 = HEAP32[$vararg_buffer>>2]|0;
@@ -15590,7 +19814,7 @@ function _LoadShaderProgram($0,$1) {
$13 = HEAP32[$vararg_buffer>>2]|0;
_glGetShaderInfoLog(($6|0),($13|0),($5|0),($12|0));
HEAP32[$vararg_buffer1>>2] = $12;
- _TraceLog(0,7693,$vararg_buffer1);
+ _TraceLog(0,7461,$vararg_buffer1);
_llvm_stackrestore(($11|0));
}
_glCompileShader(($7|0));
@@ -15599,10 +19823,10 @@ function _LoadShaderProgram($0,$1) {
$15 = ($14|0)==(1);
if ($15) {
HEAP32[$vararg_buffer13>>2] = $7;
- _TraceLog(0,7797,$vararg_buffer13);
+ _TraceLog(0,7565,$vararg_buffer13);
} else {
HEAP32[$vararg_buffer7>>2] = $7;
- _TraceLog(2,7746,$vararg_buffer7);
+ _TraceLog(2,7514,$vararg_buffer7);
HEAP32[$vararg_buffer7>>2] = 0;
_glGetShaderiv(($7|0),35716,($vararg_buffer7|0));
$16 = HEAP32[$vararg_buffer7>>2]|0;
@@ -15612,25 +19836,25 @@ function _LoadShaderProgram($0,$1) {
$19 = HEAP32[$vararg_buffer7>>2]|0;
_glGetShaderInfoLog(($7|0),($19|0),($5|0),($18|0));
HEAP32[$vararg_buffer10>>2] = $18;
- _TraceLog(0,7693,$vararg_buffer10);
+ _TraceLog(0,7461,$vararg_buffer10);
_llvm_stackrestore(($17|0));
}
$20 = (_glCreateProgram()|0);
_glAttachShader(($20|0),($6|0));
_glAttachShader(($20|0),($7|0));
- _glBindAttribLocation(($20|0),0,(7488|0));
- _glBindAttribLocation(($20|0),1,(7503|0));
- _glBindAttribLocation(($20|0),2,(7534|0));
- _glBindAttribLocation(($20|0),3,(7561|0));
- _glBindAttribLocation(($20|0),4,(7547|0));
- _glBindAttribLocation(($20|0),5,(7518|0));
+ _glBindAttribLocation(($20|0),0,(7256|0));
+ _glBindAttribLocation(($20|0),1,(7271|0));
+ _glBindAttribLocation(($20|0),2,(7302|0));
+ _glBindAttribLocation(($20|0),3,(7329|0));
+ _glBindAttribLocation(($20|0),4,(7315|0));
+ _glBindAttribLocation(($20|0),5,(7286|0));
_glLinkProgram(($20|0));
_glGetProgramiv(($20|0),35714,($4|0));
$21 = HEAP32[$4>>2]|0;
$22 = ($21|0)==(0);
if ($22) {
HEAP32[$vararg_buffer16>>2] = $20;
- _TraceLog(2,7849,$vararg_buffer16);
+ _TraceLog(2,7617,$vararg_buffer16);
HEAP32[$vararg_buffer16>>2] = 0;
_glGetProgramiv(($20|0),35716,($vararg_buffer16|0));
$23 = HEAP32[$vararg_buffer16>>2]|0;
@@ -15640,7 +19864,7 @@ function _LoadShaderProgram($0,$1) {
$26 = HEAP32[$vararg_buffer16>>2]|0;
_glGetProgramInfoLog(($20|0),($26|0),($5|0),($25|0));
HEAP32[$vararg_buffer19>>2] = $25;
- _TraceLog(0,7693,$vararg_buffer19);
+ _TraceLog(0,7461,$vararg_buffer19);
_glDeleteProgram(($20|0));
_llvm_stackrestore(($24|0));
$$0 = 0;
@@ -15649,7 +19873,7 @@ function _LoadShaderProgram($0,$1) {
STACKTOP = sp;return ($$0|0);
} else {
HEAP32[$vararg_buffer22>>2] = $20;
- _TraceLog(0,7895,$vararg_buffer22);
+ _TraceLog(0,7663,$vararg_buffer22);
$$0 = $20;
_glDeleteShader(($6|0));
_glDeleteShader(($7|0));
@@ -15664,55 +19888,55 @@ function _LoadDefaultShaderLocations($0) {
var sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- $2 = (_glGetAttribLocation(($1|0),(7488|0))|0);
+ $2 = (_glGetAttribLocation(($1|0),(7256|0))|0);
$3 = ((($0)) + 4|0);
HEAP32[$3>>2] = $2;
$4 = HEAP32[$0>>2]|0;
- $5 = (_glGetAttribLocation(($4|0),(7503|0))|0);
+ $5 = (_glGetAttribLocation(($4|0),(7271|0))|0);
$6 = ((($0)) + 8|0);
HEAP32[$6>>2] = $5;
$7 = HEAP32[$0>>2]|0;
- $8 = (_glGetAttribLocation(($7|0),(7518|0))|0);
+ $8 = (_glGetAttribLocation(($7|0),(7286|0))|0);
$9 = ((($0)) + 12|0);
HEAP32[$9>>2] = $8;
$10 = HEAP32[$0>>2]|0;
- $11 = (_glGetAttribLocation(($10|0),(7534|0))|0);
+ $11 = (_glGetAttribLocation(($10|0),(7302|0))|0);
$12 = ((($0)) + 16|0);
HEAP32[$12>>2] = $11;
$13 = HEAP32[$0>>2]|0;
- $14 = (_glGetAttribLocation(($13|0),(7547|0))|0);
+ $14 = (_glGetAttribLocation(($13|0),(7315|0))|0);
$15 = ((($0)) + 20|0);
HEAP32[$15>>2] = $14;
$16 = HEAP32[$0>>2]|0;
- $17 = (_glGetAttribLocation(($16|0),(7561|0))|0);
+ $17 = (_glGetAttribLocation(($16|0),(7329|0))|0);
$18 = ((($0)) + 24|0);
HEAP32[$18>>2] = $17;
$19 = HEAP32[$0>>2]|0;
- $20 = (_glGetUniformLocation(($19|0),(7573|0))|0);
+ $20 = (_glGetUniformLocation(($19|0),(7341|0))|0);
$21 = ((($0)) + 28|0);
HEAP32[$21>>2] = $20;
$22 = HEAP32[$0>>2]|0;
- $23 = (_glGetUniformLocation(($22|0),(7583|0))|0);
+ $23 = (_glGetUniformLocation(($22|0),(7351|0))|0);
$24 = ((($0)) + 32|0);
HEAP32[$24>>2] = $23;
$25 = HEAP32[$0>>2]|0;
- $26 = (_glGetUniformLocation(($25|0),(7594|0))|0);
+ $26 = (_glGetUniformLocation(($25|0),(7362|0))|0);
$27 = ((($0)) + 36|0);
HEAP32[$27>>2] = $26;
$28 = HEAP32[$0>>2]|0;
- $29 = (_glGetUniformLocation(($28|0),(7605|0))|0);
+ $29 = (_glGetUniformLocation(($28|0),(7373|0))|0);
$30 = ((($0)) + 40|0);
HEAP32[$30>>2] = $29;
$31 = HEAP32[$0>>2]|0;
- $32 = (_glGetUniformLocation(($31|0),(7617|0))|0);
+ $32 = (_glGetUniformLocation(($31|0),(7385|0))|0);
$33 = ((($0)) + 44|0);
HEAP32[$33>>2] = $32;
$34 = HEAP32[$0>>2]|0;
- $35 = (_glGetUniformLocation(($34|0),(7626|0))|0);
+ $35 = (_glGetUniformLocation(($34|0),(7394|0))|0);
$36 = ((($0)) + 48|0);
HEAP32[$36>>2] = $35;
$37 = HEAP32[$0>>2]|0;
- $38 = (_glGetUniformLocation(($37|0),(7635|0))|0);
+ $38 = (_glGetUniformLocation(($37|0),(7403|0))|0);
$39 = ((($0)) + 52|0);
HEAP32[$39>>2] = $38;
return;
@@ -15721,9 +19945,9 @@ function _IsMouseButtonPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33681 + ($0)|0);
+ $1 = (35997 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33684 + ($0)|0);
+ $3 = (36000 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -15735,9 +19959,9 @@ function _IsMouseButtonReleased($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33681 + ($0)|0);
+ $1 = (35997 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33684 + ($0)|0);
+ $3 = (36000 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(0);
@@ -15758,10 +19982,10 @@ function _CloseWindow() {
$vararg_buffer = sp;
_UnloadDefaultFont();
_rlglClose();
- $0 = HEAP32[7715]|0;
+ $0 = HEAP32[7756]|0;
_glfwDestroyWindow(($0|0));
_glfwTerminate();
- _TraceLog(0,8207,$vararg_buffer);
+ _TraceLog(0,7975,$vararg_buffer);
STACKTOP = sp;return;
}
function _UnloadDefaultFont() {
@@ -15769,9 +19993,9 @@ function _UnloadDefaultFont() {
sp = STACKTOP;
STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
$$byval_copy = sp;
- ;HEAP32[$$byval_copy>>2]=HEAP32[30900>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[30900+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[30900+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[30900+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[30900+16>>2]|0;
+ ;HEAP32[$$byval_copy>>2]=HEAP32[31064>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[31064+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[31064+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[31064+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[31064+16>>2]|0;
_UnloadTexture($$byval_copy);
- $0 = HEAP32[(30928)>>2]|0;
+ $0 = HEAP32[(31092)>>2]|0;
_free($0);
STACKTOP = sp;return;
}
@@ -15782,11 +20006,11 @@ function _rlglClose() {
$vararg_buffer = sp;
_UnloadDefaultShader();
_UnloadDefaultBuffers();
- _glDeleteTextures(1,(31212|0));
- $0 = HEAP32[7803]|0;
+ _glDeleteTextures(1,(31376|0));
+ $0 = HEAP32[7844]|0;
HEAP32[$vararg_buffer>>2] = $0;
- _TraceLog(0,8234,$vararg_buffer);
- $1 = HEAP32[7833]|0;
+ _TraceLog(0,8002,$vararg_buffer);
+ $1 = HEAP32[7874]|0;
_free($1);
STACKTOP = sp;return;
}
@@ -15794,17 +20018,17 @@ function _UnloadDefaultShader() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
_glUseProgram(0);
- $0 = HEAP32[7804]|0;
+ $0 = HEAP32[7845]|0;
_glDeleteProgram(($0|0));
return;
}
function _UnloadDefaultBuffers() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7796]|0;
+ $0 = HEAP32[7837]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[7798]|0;
+ $2 = HEAP32[7839]|0;
FUNCTION_TABLE_vi[$2 & 31](0);
}
_glDisableVertexAttribArray(0);
@@ -15813,39 +20037,39 @@ function _UnloadDefaultBuffers() {
_glDisableVertexAttribArray(3);
_glBindBuffer(34962,0);
_glBindBuffer(34963,0);
- _glDeleteBuffers(1,((32408)|0));
- _glDeleteBuffers(1,((32412)|0));
- _glDeleteBuffers(1,((32456)|0));
- _glDeleteBuffers(1,((32460)|0));
- _glDeleteBuffers(1,((32504)|0));
- _glDeleteBuffers(1,((32508)|0));
- _glDeleteBuffers(1,((32512)|0));
- _glDeleteBuffers(1,((32516)|0));
- $3 = HEAP32[7796]|0;
+ _glDeleteBuffers(1,((32572)|0));
+ _glDeleteBuffers(1,((32576)|0));
+ _glDeleteBuffers(1,((32620)|0));
+ _glDeleteBuffers(1,((32624)|0));
+ _glDeleteBuffers(1,((32668)|0));
+ _glDeleteBuffers(1,((32672)|0));
+ _glDeleteBuffers(1,((32676)|0));
+ _glDeleteBuffers(1,((32680)|0));
+ $3 = HEAP32[7837]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7799]|0;
- FUNCTION_TABLE_vii[$5 & 63](1,(32404));
- $6 = HEAP32[7799]|0;
- FUNCTION_TABLE_vii[$6 & 63](1,(32452));
- $7 = HEAP32[7799]|0;
- FUNCTION_TABLE_vii[$7 & 63](1,(32500));
- }
- $8 = HEAP32[(32388)>>2]|0;
+ $5 = HEAP32[7840]|0;
+ FUNCTION_TABLE_vii[$5 & 63](1,(32568));
+ $6 = HEAP32[7840]|0;
+ FUNCTION_TABLE_vii[$6 & 63](1,(32616));
+ $7 = HEAP32[7840]|0;
+ FUNCTION_TABLE_vii[$7 & 63](1,(32664));
+ }
+ $8 = HEAP32[(32552)>>2]|0;
_free($8);
- $9 = HEAP32[(32396)>>2]|0;
+ $9 = HEAP32[(32560)>>2]|0;
_free($9);
- $10 = HEAP32[(32436)>>2]|0;
+ $10 = HEAP32[(32600)>>2]|0;
_free($10);
- $11 = HEAP32[(32444)>>2]|0;
+ $11 = HEAP32[(32608)>>2]|0;
_free($11);
- $12 = HEAP32[(32484)>>2]|0;
+ $12 = HEAP32[(32648)>>2]|0;
_free($12);
- $13 = HEAP32[(32488)>>2]|0;
+ $13 = HEAP32[(32652)>>2]|0;
_free($13);
- $14 = HEAP32[(32492)>>2]|0;
+ $14 = HEAP32[(32656)>>2]|0;
_free($14);
- $15 = HEAP32[(32496)>>2]|0;
+ $15 = HEAP32[(32660)>>2]|0;
_free($15);
return;
}
@@ -15863,7 +20087,7 @@ function _UnloadTexture($0) {
_rlDeleteTextures($1);
$3 = HEAP32[$0>>2]|0;
HEAP32[$vararg_buffer>>2] = $3;
- _TraceLog(0,8299,$vararg_buffer);
+ _TraceLog(0,8067,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlDeleteTextures($0) {
@@ -15879,41 +20103,22 @@ function _rlDeleteTextures($0) {
}
STACKTOP = sp;return;
}
-function _WindowShouldClose() {
- var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
- sp = STACKTOP;
- $0 = HEAP32[8130]|0;
- $1 = ($0|0)==(0);
- if (!($1)) {
- while(1) {
- _glfwWaitEvents();
- $2 = HEAP32[8130]|0;
- $3 = ($2|0)==(0);
- if ($3) {
- break;
- }
- }
- }
- $4 = HEAP32[7715]|0;
- $5 = (_glfwWindowShouldClose(($4|0))|0);
- return ($5|0);
-}
function _BeginDrawing() {
var $0 = 0.0, $1 = 0.0, $2 = 0.0, $downscaleView$byval_copy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$downscaleView$byval_copy = sp;
$0 = (+_GetTime());
- HEAPF64[1765] = $0;
- $1 = +HEAPF64[1748];
+ HEAPF64[1784] = $0;
+ $1 = +HEAPF64[1767];
$2 = $0 - $1;
- HEAPF64[1766] = $2;
- HEAPF64[1748] = $0;
+ HEAPF64[1785] = $2;
+ HEAPF64[1767] = $0;
_rlClearScreenBuffers();
_rlLoadIdentity();
- dest=$downscaleView$byval_copy; src=30956; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$downscaleView$byval_copy; src=31120; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_MatrixToFloat($downscaleView$byval_copy)|0);
- _rlMultMatrixf(32528);
+ _rlMultMatrixf(32692);
STACKTOP = sp;return;
}
function _MatrixToFloat($0) {
@@ -15922,53 +20127,53 @@ function _MatrixToFloat($0) {
var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- HEAP32[8132] = $1;
+ HEAP32[8173] = $1;
$2 = ((($0)) + 4|0);
$3 = HEAP32[$2>>2]|0;
- HEAP32[(32532)>>2] = $3;
+ HEAP32[(32696)>>2] = $3;
$4 = ((($0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
- HEAP32[(32536)>>2] = $5;
+ HEAP32[(32700)>>2] = $5;
$6 = ((($0)) + 12|0);
$7 = HEAP32[$6>>2]|0;
- HEAP32[(32540)>>2] = $7;
+ HEAP32[(32704)>>2] = $7;
$8 = ((($0)) + 16|0);
$9 = HEAP32[$8>>2]|0;
- HEAP32[(32544)>>2] = $9;
+ HEAP32[(32708)>>2] = $9;
$10 = ((($0)) + 20|0);
$11 = HEAP32[$10>>2]|0;
- HEAP32[(32548)>>2] = $11;
+ HEAP32[(32712)>>2] = $11;
$12 = ((($0)) + 24|0);
$13 = HEAP32[$12>>2]|0;
- HEAP32[(32552)>>2] = $13;
+ HEAP32[(32716)>>2] = $13;
$14 = ((($0)) + 28|0);
$15 = HEAP32[$14>>2]|0;
- HEAP32[(32556)>>2] = $15;
+ HEAP32[(32720)>>2] = $15;
$16 = ((($0)) + 32|0);
$17 = HEAP32[$16>>2]|0;
- HEAP32[(32560)>>2] = $17;
+ HEAP32[(32724)>>2] = $17;
$18 = ((($0)) + 36|0);
$19 = HEAP32[$18>>2]|0;
- HEAP32[(32564)>>2] = $19;
+ HEAP32[(32728)>>2] = $19;
$20 = ((($0)) + 40|0);
$21 = HEAP32[$20>>2]|0;
- HEAP32[(32568)>>2] = $21;
+ HEAP32[(32732)>>2] = $21;
$22 = ((($0)) + 44|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(32572)>>2] = $23;
+ HEAP32[(32736)>>2] = $23;
$24 = ((($0)) + 48|0);
$25 = HEAP32[$24>>2]|0;
- HEAP32[(32576)>>2] = $25;
+ HEAP32[(32740)>>2] = $25;
$26 = ((($0)) + 52|0);
$27 = HEAP32[$26>>2]|0;
- HEAP32[(32580)>>2] = $27;
+ HEAP32[(32744)>>2] = $27;
$28 = ((($0)) + 56|0);
$29 = HEAP32[$28>>2]|0;
- HEAP32[(32584)>>2] = $29;
+ HEAP32[(32748)>>2] = $29;
$30 = ((($0)) + 60|0);
$31 = HEAP32[$30>>2]|0;
- HEAP32[(32588)>>2] = $31;
- return (32528|0);
+ HEAP32[(32752)>>2] = $31;
+ return (32692|0);
}
function _rlMultMatrixf($0) {
$0 = $0|0;
@@ -16043,7 +20248,7 @@ function _rlMultMatrixf($0) {
$47 = ((($0)) + 60|0);
$48 = HEAP32[$47>>2]|0;
HEAP32[$46>>2] = $48;
- $49 = HEAP32[7762]|0;
+ $49 = HEAP32[7803]|0;
dest=$$byval_copy; src=$49; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$$byval_copy,$$byval_copy1);
@@ -16057,15 +20262,15 @@ function _EndDrawing() {
_SwapBuffers();
_PollInputEvents();
$0 = (+_GetTime());
- HEAPF64[1765] = $0;
- $1 = +HEAPF64[1748];
+ HEAPF64[1784] = $0;
+ $1 = +HEAPF64[1767];
$2 = $0 - $1;
- HEAPF64[1767] = $2;
- HEAPF64[1748] = $0;
- $3 = +HEAPF64[1766];
+ HEAPF64[1786] = $2;
+ HEAPF64[1767] = $0;
+ $3 = +HEAPF64[1785];
$4 = $2 + $3;
- HEAPF64[1768] = $4;
- $5 = +HEAPF64[1745];
+ HEAPF64[1787] = $4;
+ $5 = +HEAPF64[1764];
$6 = $4 < $5;
if (!($6)) {
return;
@@ -16075,13 +20280,13 @@ function _EndDrawing() {
$9 = $8;
_Wait($9);
$10 = (+_GetTime());
- HEAPF64[1765] = $10;
- $11 = +HEAPF64[1748];
+ HEAPF64[1784] = $10;
+ $11 = +HEAPF64[1767];
$12 = $10 - $11;
- HEAPF64[1748] = $10;
- $13 = +HEAPF64[1768];
+ HEAPF64[1767] = $10;
+ $13 = +HEAPF64[1787];
$14 = $12 + $13;
- HEAPF64[1768] = $14;
+ HEAPF64[1787] = $14;
return;
}
function _rlglDraw() {
@@ -16094,7 +20299,7 @@ function _rlglDraw() {
function _SwapBuffers() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7715]|0;
+ $0 = HEAP32[7756]|0;
_glfwSwapBuffers(($0|0));
return;
}
@@ -16108,22 +20313,22 @@ function _PollInputEvents() {
$1 = sp + 1432|0;
$2 = sp;
_UpdateGestures();
- HEAP32[740] = -1;
- HEAP32[742] = -1;
- HEAP32[8148] = 0;
- $3 = HEAP32[7715]|0;
+ HEAP32[743] = -1;
+ HEAP32[745] = -1;
+ HEAP32[8189] = 0;
+ $3 = HEAP32[7756]|0;
_glfwGetCursorPos(($3|0),($0|0),($1|0));
$4 = +HEAPF64[$0>>3];
$5 = $4;
- HEAPF32[3488] = $5;
+ HEAPF32[3526] = $5;
$6 = +HEAPF64[$1>>3];
$7 = $6;
- HEAPF32[(13956)>>2] = $7;
- _memcpy((34199|0),(33687|0),512)|0;
- ;HEAP8[33684>>0]=HEAP8[33681>>0]|0;HEAP8[33684+1>>0]=HEAP8[33681+1>>0]|0;HEAP8[33684+2>>0]=HEAP8[33681+2>>0]|0;
- $8 = HEAP32[8131]|0;
- HEAP32[7718] = $8;
- HEAP32[8131] = 0;
+ HEAPF32[(14108)>>2] = $7;
+ _memcpy((36515|0),(36003|0),512)|0;
+ ;HEAP8[36000>>0]=HEAP8[35997>>0]|0;HEAP8[36000+1>>0]=HEAP8[35997+1>>0]|0;HEAP8[36000+2>>0]=HEAP8[35997+2>>0]|0;
+ $8 = HEAP32[8172]|0;
+ HEAP32[7759] = $8;
+ HEAP32[8172] = 0;
$9 = (_emscripten_get_num_gamepads()|0);
$10 = ($9|0)>(0);
if (!($10)) {
@@ -16133,8 +20338,8 @@ function _PollInputEvents() {
$12 = ((($2)) + 8|0);
$$05160 = 0;
while(1) {
- $scevgep = (34711 + ($$05160<<5)|0);
- $scevgep67 = (34839 + ($$05160<<5)|0);
+ $scevgep = (37027 + ($$05160<<5)|0);
+ $scevgep67 = (37155 + ($$05160<<5)|0);
dest=$scevgep; src=$scevgep67; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
$13 = (_emscripten_get_gamepad_status(($$05160|0),($2|0))|0);
$14 = ($13|0)==(0);
@@ -16148,10 +20353,10 @@ function _PollInputEvents() {
$21 = (((($2)) + 1040|0) + ($$04857<<2)|0);
$22 = HEAP32[$21>>2]|0;
$23 = ($22|0)==(1);
- $24 = ((34839 + ($$05160<<5)|0) + ($$04857)|0);
+ $24 = ((37155 + ($$05160<<5)|0) + ($$04857)|0);
if ($23) {
HEAP8[$24>>0] = 1;
- HEAP32[742] = $$04857;
+ HEAP32[745] = $$04857;
} else {
HEAP8[$24>>0] = 0;
}
@@ -16175,7 +20380,7 @@ function _PollInputEvents() {
$29 = (((($2)) + 16|0) + ($$058<<3)|0);
$30 = +HEAPF64[$29>>3];
$31 = $30;
- $32 = ((32596 + ($$05160<<5)|0) + ($$058<<2)|0);
+ $32 = ((32760 + ($$05160<<5)|0) + ($$058<<2)|0);
HEAPF32[$32>>2] = $31;
$33 = (($$058) + 1)|0;
$34 = ($33|0)<($20|0);
@@ -16191,7 +20396,7 @@ function _PollInputEvents() {
} else {
$$lcssa = $18;
}
- HEAP32[8148] = $$lcssa;
+ HEAP32[8189] = $$lcssa;
}
$37 = (($$05160) + 1)|0;
$38 = ($37|0)<($9|0);
@@ -16232,87 +20437,87 @@ function _UpdateDefaultBuffers() {
var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8094]|0;
+ $0 = HEAP32[8135]|0;
$1 = ($0|0)>(0);
if ($1) {
- $2 = HEAP32[7796]|0;
+ $2 = HEAP32[7837]|0;
$3 = ($2|0)==(0);
if (!($3)) {
- $4 = HEAP32[7798]|0;
- $5 = HEAP32[(32404)>>2]|0;
+ $4 = HEAP32[7839]|0;
+ $5 = HEAP32[(32568)>>2]|0;
FUNCTION_TABLE_vi[$4 & 31]($5);
}
- $6 = HEAP32[(32408)>>2]|0;
+ $6 = HEAP32[(32572)>>2]|0;
_glBindBuffer(34962,($6|0));
- $7 = HEAP32[8094]|0;
+ $7 = HEAP32[8135]|0;
$8 = ($7*12)|0;
- $9 = HEAP32[(32388)>>2]|0;
+ $9 = HEAP32[(32552)>>2]|0;
_glBufferSubData(34962,0,($8|0),($9|0));
- $10 = HEAP32[(32412)>>2]|0;
+ $10 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($10|0));
- $11 = HEAP32[(32384)>>2]|0;
+ $11 = HEAP32[(32548)>>2]|0;
$12 = $11 << 2;
- $13 = HEAP32[(32396)>>2]|0;
+ $13 = HEAP32[(32560)>>2]|0;
_glBufferSubData(34962,0,($12|0),($13|0));
}
- $14 = HEAP32[8106]|0;
+ $14 = HEAP32[8147]|0;
$15 = ($14|0)>(0);
if ($15) {
- $16 = HEAP32[7796]|0;
+ $16 = HEAP32[7837]|0;
$17 = ($16|0)==(0);
if (!($17)) {
- $18 = HEAP32[7798]|0;
- $19 = HEAP32[(32452)>>2]|0;
+ $18 = HEAP32[7839]|0;
+ $19 = HEAP32[(32616)>>2]|0;
FUNCTION_TABLE_vi[$18 & 31]($19);
}
- $20 = HEAP32[(32456)>>2]|0;
+ $20 = HEAP32[(32620)>>2]|0;
_glBindBuffer(34962,($20|0));
- $21 = HEAP32[8106]|0;
+ $21 = HEAP32[8147]|0;
$22 = ($21*12)|0;
- $23 = HEAP32[(32436)>>2]|0;
+ $23 = HEAP32[(32600)>>2]|0;
_glBufferSubData(34962,0,($22|0),($23|0));
- $24 = HEAP32[(32460)>>2]|0;
+ $24 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($24|0));
- $25 = HEAP32[(32432)>>2]|0;
+ $25 = HEAP32[(32596)>>2]|0;
$26 = $25 << 2;
- $27 = HEAP32[(32444)>>2]|0;
+ $27 = HEAP32[(32608)>>2]|0;
_glBufferSubData(34962,0,($26|0),($27|0));
}
- $28 = HEAP32[8118]|0;
+ $28 = HEAP32[8159]|0;
$29 = ($28|0)>(0);
if ($29) {
- $30 = HEAP32[7796]|0;
+ $30 = HEAP32[7837]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = HEAP32[7798]|0;
- $33 = HEAP32[(32500)>>2]|0;
+ $32 = HEAP32[7839]|0;
+ $33 = HEAP32[(32664)>>2]|0;
FUNCTION_TABLE_vi[$32 & 31]($33);
}
- $34 = HEAP32[(32504)>>2]|0;
+ $34 = HEAP32[(32668)>>2]|0;
_glBindBuffer(34962,($34|0));
- $35 = HEAP32[8118]|0;
+ $35 = HEAP32[8159]|0;
$36 = ($35*12)|0;
- $37 = HEAP32[(32484)>>2]|0;
+ $37 = HEAP32[(32648)>>2]|0;
_glBufferSubData(34962,0,($36|0),($37|0));
- $38 = HEAP32[(32508)>>2]|0;
+ $38 = HEAP32[(32672)>>2]|0;
_glBindBuffer(34962,($38|0));
- $39 = HEAP32[8118]|0;
+ $39 = HEAP32[8159]|0;
$40 = $39 << 3;
- $41 = HEAP32[(32488)>>2]|0;
+ $41 = HEAP32[(32652)>>2]|0;
_glBufferSubData(34962,0,($40|0),($41|0));
- $42 = HEAP32[(32512)>>2]|0;
+ $42 = HEAP32[(32676)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[8118]|0;
+ $43 = HEAP32[8159]|0;
$44 = $43 << 2;
- $45 = HEAP32[(32492)>>2]|0;
+ $45 = HEAP32[(32656)>>2]|0;
_glBufferSubData(34962,0,($44|0),($45|0));
}
- $46 = HEAP32[7796]|0;
+ $46 = HEAP32[7837]|0;
$47 = ($46|0)==(0);
if ($47) {
return;
}
- $48 = HEAP32[7798]|0;
+ $48 = HEAP32[7839]|0;
FUNCTION_TABLE_vi[$48 & 31](0);
return;
}
@@ -16330,9 +20535,9 @@ function _DrawDefaultBuffers() {
$0 = sp + 128|0;
$1 = sp + 64|0;
$2 = sp;
- dest=$0; src=31052; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$1; src=31116; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $3 = HEAP32[8181]|0;
+ dest=$0; src=31216; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$1; src=31280; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ $3 = HEAP32[8222]|0;
$4 = ($3|0)!=(0);
$$ = $4 ? 2 : 1;
$$02932 = 0;
@@ -16342,134 +20547,134 @@ function _DrawDefaultBuffers() {
dest=$$byval_copy2; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetStereoView($$02932,$modelview$byval_copy,$$byval_copy2);
}
- $8 = HEAP32[8094]|0;
+ $8 = HEAP32[8135]|0;
$9 = ($8|0)>(0);
- $10 = HEAP32[8106]|0;
+ $10 = HEAP32[8147]|0;
$11 = ($10|0)>(0);
$or$cond = $9 | $11;
- $12 = HEAP32[8118]|0;
+ $12 = HEAP32[8159]|0;
$13 = ($12|0)>(0);
$or$cond3 = $or$cond | $13;
if ($or$cond3) {
- $14 = HEAP32[7818]|0;
+ $14 = HEAP32[7859]|0;
_glUseProgram(($14|0));
- dest=$modelview$byval_copy; src=31116; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$$byval_copy2; src=31052; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$modelview$byval_copy; src=31280; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$$byval_copy2; src=31216; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$modelview$byval_copy,$$byval_copy2);
- $15 = HEAP32[(31300)>>2]|0;
+ $15 = HEAP32[(31464)>>2]|0;
dest=$$byval_copy2; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$16 = (_MatrixToFloat($$byval_copy2)|0);
_glUniformMatrix4fv(($15|0),1,0,($16|0));
- $17 = HEAP32[(31304)>>2]|0;
+ $17 = HEAP32[(31468)>>2]|0;
_glUniform4f(($17|0),1.0,1.0,1.0,1.0);
- $18 = HEAP32[(31316)>>2]|0;
+ $18 = HEAP32[(31480)>>2]|0;
_glUniform1i(($18|0),0);
}
- $19 = HEAP32[8094]|0;
+ $19 = HEAP32[8135]|0;
$20 = ($19|0)>(0);
if ($20) {
- $21 = HEAP32[7803]|0;
+ $21 = HEAP32[7844]|0;
_glBindTexture(3553,($21|0));
- $22 = HEAP32[7796]|0;
+ $22 = HEAP32[7837]|0;
$23 = ($22|0)==(0);
if ($23) {
- $26 = HEAP32[(32408)>>2]|0;
+ $26 = HEAP32[(32572)>>2]|0;
_glBindBuffer(34962,($26|0));
- $27 = HEAP32[(31276)>>2]|0;
+ $27 = HEAP32[(31440)>>2]|0;
_glVertexAttribPointer(($27|0),3,5126,0,0,(0|0));
- $28 = HEAP32[(31276)>>2]|0;
+ $28 = HEAP32[(31440)>>2]|0;
_glEnableVertexAttribArray(($28|0));
- $29 = HEAP32[(32412)>>2]|0;
+ $29 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($29|0));
- $30 = HEAP32[(31296)>>2]|0;
+ $30 = HEAP32[(31460)>>2]|0;
_glVertexAttribPointer(($30|0),4,5121,1,0,(0|0));
- $31 = HEAP32[(31296)>>2]|0;
+ $31 = HEAP32[(31460)>>2]|0;
_glEnableVertexAttribArray(($31|0));
} else {
- $24 = HEAP32[7798]|0;
- $25 = HEAP32[(32404)>>2]|0;
+ $24 = HEAP32[7839]|0;
+ $25 = HEAP32[(32568)>>2]|0;
FUNCTION_TABLE_vi[$24 & 31]($25);
}
- $32 = HEAP32[8094]|0;
+ $32 = HEAP32[8135]|0;
_glDrawArrays(1,0,($32|0));
- $33 = HEAP32[7796]|0;
+ $33 = HEAP32[7837]|0;
$34 = ($33|0)==(0);
if ($34) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $35 = HEAP32[8106]|0;
+ $35 = HEAP32[8147]|0;
$36 = ($35|0)>(0);
if ($36) {
- $37 = HEAP32[7803]|0;
+ $37 = HEAP32[7844]|0;
_glBindTexture(3553,($37|0));
- $38 = HEAP32[7796]|0;
+ $38 = HEAP32[7837]|0;
$39 = ($38|0)==(0);
if ($39) {
- $42 = HEAP32[(32456)>>2]|0;
+ $42 = HEAP32[(32620)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[(31276)>>2]|0;
+ $43 = HEAP32[(31440)>>2]|0;
_glVertexAttribPointer(($43|0),3,5126,0,0,(0|0));
- $44 = HEAP32[(31276)>>2]|0;
+ $44 = HEAP32[(31440)>>2]|0;
_glEnableVertexAttribArray(($44|0));
- $45 = HEAP32[(32460)>>2]|0;
+ $45 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($45|0));
- $46 = HEAP32[(31296)>>2]|0;
+ $46 = HEAP32[(31460)>>2]|0;
_glVertexAttribPointer(($46|0),4,5121,1,0,(0|0));
- $47 = HEAP32[(31296)>>2]|0;
+ $47 = HEAP32[(31460)>>2]|0;
_glEnableVertexAttribArray(($47|0));
} else {
- $40 = HEAP32[7798]|0;
- $41 = HEAP32[(32452)>>2]|0;
+ $40 = HEAP32[7839]|0;
+ $41 = HEAP32[(32616)>>2]|0;
FUNCTION_TABLE_vi[$40 & 31]($41);
}
- $48 = HEAP32[8106]|0;
+ $48 = HEAP32[8147]|0;
_glDrawArrays(4,0,($48|0));
- $49 = HEAP32[7796]|0;
+ $49 = HEAP32[7837]|0;
$50 = ($49|0)==(0);
if ($50) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $51 = HEAP32[8118]|0;
+ $51 = HEAP32[8159]|0;
$52 = ($51|0)>(0);
if ($52) {
- $53 = HEAP32[7796]|0;
+ $53 = HEAP32[7837]|0;
$54 = ($53|0)==(0);
if ($54) {
- $57 = HEAP32[(32504)>>2]|0;
+ $57 = HEAP32[(32668)>>2]|0;
_glBindBuffer(34962,($57|0));
- $58 = HEAP32[(31276)>>2]|0;
+ $58 = HEAP32[(31440)>>2]|0;
_glVertexAttribPointer(($58|0),3,5126,0,0,(0|0));
- $59 = HEAP32[(31276)>>2]|0;
+ $59 = HEAP32[(31440)>>2]|0;
_glEnableVertexAttribArray(($59|0));
- $60 = HEAP32[(32508)>>2]|0;
+ $60 = HEAP32[(32672)>>2]|0;
_glBindBuffer(34962,($60|0));
- $61 = HEAP32[(31280)>>2]|0;
+ $61 = HEAP32[(31444)>>2]|0;
_glVertexAttribPointer(($61|0),2,5126,0,0,(0|0));
- $62 = HEAP32[(31280)>>2]|0;
+ $62 = HEAP32[(31444)>>2]|0;
_glEnableVertexAttribArray(($62|0));
- $63 = HEAP32[(32512)>>2]|0;
+ $63 = HEAP32[(32676)>>2]|0;
_glBindBuffer(34962,($63|0));
- $64 = HEAP32[(31296)>>2]|0;
+ $64 = HEAP32[(31460)>>2]|0;
_glVertexAttribPointer(($64|0),4,5121,1,0,(0|0));
- $65 = HEAP32[(31296)>>2]|0;
+ $65 = HEAP32[(31460)>>2]|0;
_glEnableVertexAttribArray(($65|0));
- $66 = HEAP32[(32516)>>2]|0;
+ $66 = HEAP32[(32680)>>2]|0;
_glBindBuffer(34963,($66|0));
} else {
- $55 = HEAP32[7798]|0;
- $56 = HEAP32[(32500)>>2]|0;
+ $55 = HEAP32[7839]|0;
+ $56 = HEAP32[(32664)>>2]|0;
FUNCTION_TABLE_vi[$55 & 31]($56);
}
- $67 = HEAP32[7834]|0;
+ $67 = HEAP32[7875]|0;
$68 = ($67|0)>(0);
if ($68) {
$$02830 = 0;$$031 = 0;
while(1) {
- $71 = HEAP32[7833]|0;
+ $71 = HEAP32[7874]|0;
$72 = (($71) + (($$031*144)|0)|0);
$73 = HEAP32[$72>>2]|0;
$74 = (($73|0) / 4)&-1;
@@ -16480,14 +20685,14 @@ function _DrawDefaultBuffers() {
$78 = $$02830 << 1;
$79 = $78;
_glDrawElements(4,($75|0),5123,($79|0));
- $80 = HEAP32[7833]|0;
+ $80 = HEAP32[7874]|0;
$81 = (($80) + (($$031*144)|0)|0);
$82 = HEAP32[$81>>2]|0;
$83 = (($82|0) / 4)&-1;
$84 = ($83*6)|0;
$85 = (($84) + ($$02830))|0;
$86 = (($$031) + 1)|0;
- $87 = HEAP32[7834]|0;
+ $87 = HEAP32[7875]|0;
$88 = ($86|0)<($87|0);
if ($88) {
$$02830 = $85;$$031 = $86;
@@ -16496,7 +20701,7 @@ function _DrawDefaultBuffers() {
}
}
}
- $69 = HEAP32[7796]|0;
+ $69 = HEAP32[7837]|0;
$70 = ($69|0)==(0);
if ($70) {
_glBindBuffer(34962,0);
@@ -16504,10 +20709,10 @@ function _DrawDefaultBuffers() {
}
_glBindTexture(3553,0);
}
- $89 = HEAP32[7796]|0;
+ $89 = HEAP32[7837]|0;
$90 = ($89|0)==(0);
if (!($90)) {
- $91 = HEAP32[7798]|0;
+ $91 = HEAP32[7839]|0;
FUNCTION_TABLE_vi[$91 & 31](0);
}
_glUseProgram(0);
@@ -16519,22 +20724,22 @@ function _DrawDefaultBuffers() {
break;
}
}
- HEAP32[7834] = 1;
- $5 = HEAP32[7803]|0;
- $6 = HEAP32[7833]|0;
+ HEAP32[7875] = 1;
+ $5 = HEAP32[7844]|0;
+ $6 = HEAP32[7874]|0;
$7 = ((($6)) + 8|0);
HEAP32[$7>>2] = $5;
HEAP32[$6>>2] = 0;
- HEAP32[8094] = 0;
- HEAP32[(32384)>>2] = 0;
- HEAP32[8106] = 0;
- HEAP32[(32432)>>2] = 0;
- HEAP32[8118] = 0;
- HEAP32[(32476)>>2] = 0;
- HEAP32[(32480)>>2] = 0;
- HEAPF32[743] = -1.0;
- dest=31052; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31116; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[8135] = 0;
+ HEAP32[(32548)>>2] = 0;
+ HEAP32[8147] = 0;
+ HEAP32[(32596)>>2] = 0;
+ HEAP32[8159] = 0;
+ HEAP32[(32640)>>2] = 0;
+ HEAP32[(32644)>>2] = 0;
+ HEAPF32[746] = -1.0;
+ dest=31216; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31280; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
}
function _SetStereoView($0,$1,$2) {
@@ -16549,17 +20754,17 @@ function _SetStereoView($0,$1,$2) {
$3 = sp;
$4 = sp + 128|0;
dest=$3; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $5 = HEAP32[8092]|0;
+ $5 = HEAP32[8133]|0;
$6 = Math_imul($5, $0)|0;
$7 = (($6|0) / 2)&-1;
$8 = (($5|0) / 2)&-1;
- $9 = HEAP32[8093]|0;
+ $9 = HEAP32[8134]|0;
_rlViewport($7,0,$8,$9);
- $10 = (32956 + ($0<<6)|0);
+ $10 = (33120 + ($0<<6)|0);
dest=$$byval_copy; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$10; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy3);
- $11 = (32828 + ($0<<6)|0);
+ $11 = (32992 + ($0<<6)|0);
dest=$3; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetMatrixModelview($$byval_copy3);
@@ -16571,14 +20776,14 @@ function _SetMatrixModelview($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31116; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31280; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _SetMatrixProjection($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31052; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31216; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _rlPushMatrix() {
@@ -16586,43 +20791,43 @@ function _rlPushMatrix() {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- $0 = HEAP32[8271]|0;
+ $0 = HEAP32[8312]|0;
$1 = ($0|0)==(15);
if ($1) {
HEAP32[$vararg_buffer>>2] = 16;
- _TraceLog(1,8349,$vararg_buffer);
+ _TraceLog(1,8117,$vararg_buffer);
}
- $2 = HEAP32[8271]|0;
- $3 = (31344 + ($2<<6)|0);
- $4 = HEAP32[7762]|0;
+ $2 = HEAP32[8312]|0;
+ $3 = (31508 + ($2<<6)|0);
+ $4 = HEAP32[7803]|0;
dest=$3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_rlLoadIdentity();
- $5 = HEAP32[8271]|0;
+ $5 = HEAP32[8312]|0;
$6 = (($5) + 1)|0;
- HEAP32[8271] = $6;
- $7 = HEAP32[7795]|0;
+ HEAP32[8312] = $6;
+ $7 = HEAP32[7836]|0;
$8 = ($7|0)==(5888);
if (!($8)) {
STACKTOP = sp;return;
}
- HEAP32[8272] = 1;
+ HEAP32[8313] = 1;
STACKTOP = sp;return;
}
function _rlPopMatrix() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8271]|0;
+ $0 = HEAP32[8312]|0;
$1 = ($0|0)>(0);
if (!($1)) {
return;
}
- $2 = HEAP32[8271]|0;
+ $2 = HEAP32[8312]|0;
$3 = (($2) + -1)|0;
- $4 = (31344 + ($3<<6)|0);
- $5 = HEAP32[7762]|0;
+ $4 = (31508 + ($3<<6)|0);
+ $5 = HEAP32[7803]|0;
_memmove(($5|0),($4|0),64)|0;
$6 = (($2) + -1)|0;
- HEAP32[8271] = $6;
+ HEAP32[8312] = $6;
return;
}
function _GetFPS() {
@@ -16636,7 +20841,7 @@ function _GetFPS() {
function _GetFrameTime() {
var $0 = 0.0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1768];
+ $0 = +HEAPF64[1787];
$1 = $0;
return (+$1);
}
@@ -16662,28 +20867,28 @@ function _SetConfigFlags($0) {
$0 = $0|0;
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP8[33680] = $0;
+ HEAP8[35996] = $0;
$1 = $0 & 1;
$2 = ($1<<24>>24)==(0);
if (!($2)) {
- HEAP32[7720] = 1;
+ HEAP32[7761] = 1;
}
- $3 = HEAP8[33680]|0;
+ $3 = HEAP8[35996]|0;
$4 = $3 & 2;
$5 = ($4<<24>>24)==(0);
if ($5) {
return;
}
- HEAP32[7757] = 1;
+ HEAP32[7798] = 1;
return;
}
function _IsKeyPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33687 + ($0)|0);
+ $1 = (36003 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (34199 + ($0)|0);
+ $3 = (36515 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -16704,7 +20909,7 @@ function _rlTranslatef($0,$1,$2) {
$4 = sp;
_MatrixTranslate($3,$0,$1,$2);
_MatrixTranspose($3);
- $5 = HEAP32[7762]|0;
+ $5 = HEAP32[7803]|0;
dest=$$byval_copy; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$3; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy1);
@@ -16737,7 +20942,7 @@ function _rlRotatef($0,$1,$2,$3) {
_MatrixRotate($6,$$byval_copy2,$10);
dest=$4; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixTranspose($4);
- $11 = HEAP32[7762]|0;
+ $11 = HEAP32[7803]|0;
dest=$$byval_copy1; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy2; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy1,$$byval_copy2);
@@ -16748,7 +20953,7 @@ function _rlBegin($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7835] = $0;
+ HEAP32[7876] = $0;
return;
}
function _rlEnd() {
@@ -16764,21 +20969,21 @@ function _rlEnd() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$$byval_copy = sp;
- $0 = HEAP32[8272]|0;
+ $0 = HEAP32[8313]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[8273]|0;
+ $2 = HEAP32[8314]|0;
$3 = ($2|0)>(0);
if ($3) {
$$03956 = 0;
while(1) {
- $6 = HEAP32[7832]|0;
+ $6 = HEAP32[7873]|0;
$7 = (($6) + (($$03956*12)|0)|0);
- $8 = HEAP32[7762]|0;
+ $8 = HEAP32[7803]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_VectorTransform($7,$$byval_copy);
$9 = (($$03956) + 1)|0;
- $5 = HEAP32[8273]|0;
+ $5 = HEAP32[8314]|0;
$10 = ($9|0)<($5|0);
if ($10) {
$$03956 = $9;
@@ -16786,12 +20991,12 @@ function _rlEnd() {
break;
}
}
- HEAP32[8272] = 0;
+ HEAP32[8313] = 0;
$4 = ($5|0)>(0);
if ($4) {
$$04154 = 0;
while(1) {
- $11 = HEAP32[7832]|0;
+ $11 = HEAP32[7873]|0;
$12 = (($11) + (($$04154*12)|0)|0);
$13 = +HEAPF32[$12>>2];
$14 = (((($11) + (($$04154*12)|0)|0)) + 4|0);
@@ -16800,7 +21005,7 @@ function _rlEnd() {
$17 = +HEAPF32[$16>>2];
_rlVertex3f($13,$15,$17);
$18 = (($$04154) + 1)|0;
- $19 = HEAP32[8273]|0;
+ $19 = HEAP32[8314]|0;
$20 = ($18|0)<($19|0);
if ($20) {
$$04154 = $18;
@@ -16810,20 +21015,20 @@ function _rlEnd() {
}
}
} else {
- HEAP32[8272] = 0;
+ HEAP32[8313] = 0;
}
- HEAP32[8273] = 0;
+ HEAP32[8314] = 0;
}
- $21 = HEAP32[7835]|0;
+ $21 = HEAP32[7876]|0;
switch ($21|0) {
case 1: {
- $22 = HEAP32[8094]|0;
- $23 = HEAP32[(32384)>>2]|0;
+ $22 = HEAP32[8135]|0;
+ $23 = HEAP32[(32548)>>2]|0;
$24 = ($22|0)==($23|0);
if ($24) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$25 = (($22) - ($23))|0;
@@ -16831,22 +21036,22 @@ function _rlEnd() {
if ($26) {
$$04347 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $27 = HEAP32[(32396)>>2]|0;
- $28 = HEAP32[(32384)>>2]|0;
+ $27 = HEAP32[(32560)>>2]|0;
+ $28 = HEAP32[(32548)>>2]|0;
$29 = $28 << 2;
$30 = (($29) + -4)|0;
$31 = (($27) + ($30)|0);
$32 = HEAP8[$31>>0]|0;
$33 = (($27) + ($29)|0);
HEAP8[$33>>0] = $32;
- $34 = HEAP32[(32396)>>2]|0;
- $35 = HEAP32[(32384)>>2]|0;
+ $34 = HEAP32[(32560)>>2]|0;
+ $35 = HEAP32[(32548)>>2]|0;
$36 = $35 << 2;
$37 = (($36) + -3)|0;
$38 = (($34) + ($37)|0);
@@ -16854,8 +21059,8 @@ function _rlEnd() {
$40 = $36 | 1;
$41 = (($34) + ($40)|0);
HEAP8[$41>>0] = $39;
- $42 = HEAP32[(32396)>>2]|0;
- $43 = HEAP32[(32384)>>2]|0;
+ $42 = HEAP32[(32560)>>2]|0;
+ $43 = HEAP32[(32548)>>2]|0;
$44 = $43 << 2;
$45 = (($44) + -2)|0;
$46 = (($42) + ($45)|0);
@@ -16863,8 +21068,8 @@ function _rlEnd() {
$48 = $44 | 2;
$49 = (($42) + ($48)|0);
HEAP8[$49>>0] = $47;
- $50 = HEAP32[(32396)>>2]|0;
- $51 = HEAP32[(32384)>>2]|0;
+ $50 = HEAP32[(32560)>>2]|0;
+ $51 = HEAP32[(32548)>>2]|0;
$52 = $51 << 2;
$53 = (($52) + -1)|0;
$54 = (($50) + ($53)|0);
@@ -16872,9 +21077,9 @@ function _rlEnd() {
$56 = $52 | 3;
$57 = (($50) + ($56)|0);
HEAP8[$57>>0] = $55;
- $58 = HEAP32[(32384)>>2]|0;
+ $58 = HEAP32[(32548)>>2]|0;
$59 = (($58) + 1)|0;
- HEAP32[(32384)>>2] = $59;
+ HEAP32[(32548)>>2] = $59;
$60 = (($$04347) + 1)|0;
$exitcond = ($60|0)==($25|0);
if ($exitcond) {
@@ -16883,20 +21088,20 @@ function _rlEnd() {
$$04347 = $60;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 4: {
- $61 = HEAP32[8106]|0;
- $62 = HEAP32[(32432)>>2]|0;
+ $61 = HEAP32[8147]|0;
+ $62 = HEAP32[(32596)>>2]|0;
$63 = ($61|0)==($62|0);
if ($63) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$64 = (($61) - ($62))|0;
@@ -16904,22 +21109,22 @@ function _rlEnd() {
if ($65) {
$$04248 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $66 = HEAP32[(32444)>>2]|0;
- $67 = HEAP32[(32432)>>2]|0;
+ $66 = HEAP32[(32608)>>2]|0;
+ $67 = HEAP32[(32596)>>2]|0;
$68 = $67 << 2;
$69 = (($68) + -4)|0;
$70 = (($66) + ($69)|0);
$71 = HEAP8[$70>>0]|0;
$72 = (($66) + ($68)|0);
HEAP8[$72>>0] = $71;
- $73 = HEAP32[(32444)>>2]|0;
- $74 = HEAP32[(32432)>>2]|0;
+ $73 = HEAP32[(32608)>>2]|0;
+ $74 = HEAP32[(32596)>>2]|0;
$75 = $74 << 2;
$76 = (($75) + -3)|0;
$77 = (($73) + ($76)|0);
@@ -16927,8 +21132,8 @@ function _rlEnd() {
$79 = $75 | 1;
$80 = (($73) + ($79)|0);
HEAP8[$80>>0] = $78;
- $81 = HEAP32[(32444)>>2]|0;
- $82 = HEAP32[(32432)>>2]|0;
+ $81 = HEAP32[(32608)>>2]|0;
+ $82 = HEAP32[(32596)>>2]|0;
$83 = $82 << 2;
$84 = (($83) + -2)|0;
$85 = (($81) + ($84)|0);
@@ -16936,8 +21141,8 @@ function _rlEnd() {
$87 = $83 | 2;
$88 = (($81) + ($87)|0);
HEAP8[$88>>0] = $86;
- $89 = HEAP32[(32444)>>2]|0;
- $90 = HEAP32[(32432)>>2]|0;
+ $89 = HEAP32[(32608)>>2]|0;
+ $90 = HEAP32[(32596)>>2]|0;
$91 = $90 << 2;
$92 = (($91) + -1)|0;
$93 = (($89) + ($92)|0);
@@ -16945,9 +21150,9 @@ function _rlEnd() {
$95 = $91 | 3;
$96 = (($89) + ($95)|0);
HEAP8[$96>>0] = $94;
- $97 = HEAP32[(32432)>>2]|0;
+ $97 = HEAP32[(32596)>>2]|0;
$98 = (($97) + 1)|0;
- HEAP32[(32432)>>2] = $98;
+ HEAP32[(32596)>>2] = $98;
$99 = (($$04248) + 1)|0;
$exitcond60 = ($99|0)==($64|0);
if ($exitcond60) {
@@ -16956,15 +21161,15 @@ function _rlEnd() {
$$04248 = $99;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 7: {
- $100 = HEAP32[8118]|0;
- $101 = HEAP32[(32480)>>2]|0;
+ $100 = HEAP32[8159]|0;
+ $101 = HEAP32[(32644)>>2]|0;
$102 = ($100|0)==($101|0);
if (!($102)) {
$103 = (($100) - ($101))|0;
@@ -16972,16 +21177,16 @@ function _rlEnd() {
if ($104) {
$$04052 = 0;
while(1) {
- $105 = HEAP32[(32492)>>2]|0;
- $106 = HEAP32[(32480)>>2]|0;
+ $105 = HEAP32[(32656)>>2]|0;
+ $106 = HEAP32[(32644)>>2]|0;
$107 = $106 << 2;
$108 = (($107) + -4)|0;
$109 = (($105) + ($108)|0);
$110 = HEAP8[$109>>0]|0;
$111 = (($105) + ($107)|0);
HEAP8[$111>>0] = $110;
- $112 = HEAP32[(32492)>>2]|0;
- $113 = HEAP32[(32480)>>2]|0;
+ $112 = HEAP32[(32656)>>2]|0;
+ $113 = HEAP32[(32644)>>2]|0;
$114 = $113 << 2;
$115 = (($114) + -3)|0;
$116 = (($112) + ($115)|0);
@@ -16989,8 +21194,8 @@ function _rlEnd() {
$118 = $114 | 1;
$119 = (($112) + ($118)|0);
HEAP8[$119>>0] = $117;
- $120 = HEAP32[(32492)>>2]|0;
- $121 = HEAP32[(32480)>>2]|0;
+ $120 = HEAP32[(32656)>>2]|0;
+ $121 = HEAP32[(32644)>>2]|0;
$122 = $121 << 2;
$123 = (($122) + -2)|0;
$124 = (($120) + ($123)|0);
@@ -16998,8 +21203,8 @@ function _rlEnd() {
$126 = $122 | 2;
$127 = (($120) + ($126)|0);
HEAP8[$127>>0] = $125;
- $128 = HEAP32[(32492)>>2]|0;
- $129 = HEAP32[(32480)>>2]|0;
+ $128 = HEAP32[(32656)>>2]|0;
+ $129 = HEAP32[(32644)>>2]|0;
$130 = $129 << 2;
$131 = (($130) + -1)|0;
$132 = (($128) + ($131)|0);
@@ -17007,9 +21212,9 @@ function _rlEnd() {
$134 = $130 | 3;
$135 = (($128) + ($134)|0);
HEAP8[$135>>0] = $133;
- $136 = HEAP32[(32480)>>2]|0;
+ $136 = HEAP32[(32644)>>2]|0;
$137 = (($136) + 1)|0;
- HEAP32[(32480)>>2] = $137;
+ HEAP32[(32644)>>2] = $137;
$138 = (($$04052) + 1)|0;
$exitcond63 = ($138|0)==($103|0);
if ($exitcond63) {
@@ -17020,17 +21225,17 @@ function _rlEnd() {
}
}
}
- $139 = HEAP32[8118]|0;
- $140 = HEAP32[(32476)>>2]|0;
+ $139 = HEAP32[8159]|0;
+ $140 = HEAP32[(32640)>>2]|0;
$141 = ($139|0)>($140|0);
if (!($141)) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
- $142 = HEAP32[(32488)>>2]|0;
- $$promoted = HEAP32[(32476)>>2]|0;
+ $142 = HEAP32[(32652)>>2]|0;
+ $$promoted = HEAP32[(32640)>>2]|0;
$143 = $$promoted << 1;
$scevgep = (($142) + ($143<<2)|0);
$144 = (($139) - ($140))|0;
@@ -17038,17 +21243,17 @@ function _rlEnd() {
_memset(($scevgep|0),0,($145|0))|0;
$146 = (($139) + ($$promoted))|0;
$147 = (($146) - ($140))|0;
- HEAP32[(32476)>>2] = $147;
- $148 = +HEAPF32[743];
+ HEAP32[(32640)>>2] = $147;
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
default: {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
}
@@ -17065,11 +21270,11 @@ function _rlVertex3f($0,$1,$2) {
$vararg_buffer3 = sp + 16|0;
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
- $3 = HEAP32[8272]|0;
+ $3 = HEAP32[8313]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7832]|0;
- $6 = HEAP32[8273]|0;
+ $5 = HEAP32[7873]|0;
+ $6 = HEAP32[8314]|0;
$7 = (($5) + (($6*12)|0)|0);
HEAPF32[$7>>2] = $0;
$8 = (((($5) + (($6*12)|0)|0)) + 4|0);
@@ -17077,16 +21282,16 @@ function _rlVertex3f($0,$1,$2) {
$9 = (((($5) + (($6*12)|0)|0)) + 8|0);
HEAPF32[$9>>2] = $2;
$10 = (($6) + 1)|0;
- HEAP32[8273] = $10;
+ HEAP32[8314] = $10;
STACKTOP = sp;return;
}
- $11 = HEAP32[7835]|0;
+ $11 = HEAP32[7876]|0;
switch ($11|0) {
case 1: {
- $12 = HEAP32[8094]|0;
+ $12 = HEAP32[8135]|0;
$13 = ($12|0)<(2048);
if ($13) {
- $14 = HEAP32[(32388)>>2]|0;
+ $14 = HEAP32[(32552)>>2]|0;
$15 = ($12*3)|0;
$16 = (($14) + ($15<<2)|0);
HEAPF32[$16>>2] = $0;
@@ -17097,19 +21302,19 @@ function _rlVertex3f($0,$1,$2) {
$20 = (($14) + ($19<<2)|0);
HEAPF32[$20>>2] = $2;
$21 = (($12) + 1)|0;
- HEAP32[8094] = $21;
+ HEAP32[8135] = $21;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8387,$vararg_buffer);
+ _TraceLog(1,8155,$vararg_buffer);
STACKTOP = sp;return;
}
break;
}
case 4: {
- $22 = HEAP32[8106]|0;
+ $22 = HEAP32[8147]|0;
$23 = ($22|0)<(6144);
if ($23) {
- $24 = HEAP32[(32436)>>2]|0;
+ $24 = HEAP32[(32600)>>2]|0;
$25 = ($22*3)|0;
$26 = (($24) + ($25<<2)|0);
HEAPF32[$26>>2] = $0;
@@ -17120,19 +21325,19 @@ function _rlVertex3f($0,$1,$2) {
$30 = (($24) + ($29<<2)|0);
HEAPF32[$30>>2] = $2;
$31 = (($22) + 1)|0;
- HEAP32[8106] = $31;
+ HEAP32[8147] = $31;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8412,$vararg_buffer1);
+ _TraceLog(1,8180,$vararg_buffer1);
STACKTOP = sp;return;
}
break;
}
case 7: {
- $32 = HEAP32[8118]|0;
+ $32 = HEAP32[8159]|0;
$33 = ($32|0)<(4096);
if ($33) {
- $34 = HEAP32[(32484)>>2]|0;
+ $34 = HEAP32[(32648)>>2]|0;
$35 = ($32*3)|0;
$36 = (($34) + ($35<<2)|0);
HEAPF32[$36>>2] = $0;
@@ -17143,9 +21348,9 @@ function _rlVertex3f($0,$1,$2) {
$40 = (($34) + ($39<<2)|0);
HEAPF32[$40>>2] = $2;
$41 = (($32) + 1)|0;
- HEAP32[8118] = $41;
- $42 = HEAP32[7833]|0;
- $43 = HEAP32[7834]|0;
+ HEAP32[8159] = $41;
+ $42 = HEAP32[7874]|0;
+ $43 = HEAP32[7875]|0;
$44 = (($43) + -1)|0;
$45 = (($42) + (($44*144)|0)|0);
$46 = HEAP32[$45>>2]|0;
@@ -17153,7 +21358,7 @@ function _rlVertex3f($0,$1,$2) {
HEAP32[$45>>2] = $47;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8441,$vararg_buffer3);
+ _TraceLog(1,8209,$vararg_buffer3);
STACKTOP = sp;return;
}
break;
@@ -17168,7 +21373,7 @@ function _rlVertex2f($0,$1) {
$1 = +$1;
var $2 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = +HEAPF32[743];
+ $2 = +HEAPF32[746];
_rlVertex3f($0,$1,$2);
return;
}
@@ -17177,13 +21382,13 @@ function _rlTexCoord2f($0,$1) {
$1 = +$1;
var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[7835]|0;
+ $2 = HEAP32[7876]|0;
$3 = ($2|0)==(7);
if (!($3)) {
return;
}
- $4 = HEAP32[(32488)>>2]|0;
- $5 = HEAP32[(32476)>>2]|0;
+ $4 = HEAP32[(32652)>>2]|0;
+ $5 = HEAP32[(32640)>>2]|0;
$6 = $5 << 1;
$7 = (($4) + ($6<<2)|0);
HEAPF32[$7>>2] = $0;
@@ -17191,7 +21396,7 @@ function _rlTexCoord2f($0,$1) {
$9 = (($4) + ($8<<2)|0);
HEAPF32[$9>>2] = $1;
$10 = (($5) + 1)|0;
- HEAP32[(32476)>>2] = $10;
+ HEAP32[(32640)>>2] = $10;
return;
}
function _rlNormal3f($0,$1,$2) {
@@ -17210,18 +21415,18 @@ function _rlColor4ub($0,$1,$2,$3) {
var $$sink37 = 0, $$sink38 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $4 = 0, $5 = 0;
var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $4 = HEAP32[7835]|0;
+ $4 = HEAP32[7876]|0;
switch ($4|0) {
case 1: {
- $$sink37 = (32384);$$sink38 = (32396);
+ $$sink37 = (32548);$$sink38 = (32560);
break;
}
case 4: {
- $$sink37 = (32432);$$sink38 = (32444);
+ $$sink37 = (32596);$$sink38 = (32608);
break;
}
case 7: {
- $$sink37 = (32480);$$sink38 = (32492);
+ $$sink37 = (32644);$$sink38 = (32656);
break;
}
default: {
@@ -17260,8 +21465,8 @@ function _rlEnableTexture($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[7833]|0;
- $2 = HEAP32[7834]|0;
+ $1 = HEAP32[7874]|0;
+ $2 = HEAP32[7875]|0;
$3 = (($2) + -1)|0;
$4 = (((($1) + (($3*144)|0)|0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
@@ -17274,9 +21479,9 @@ function _rlEnableTexture($0) {
$9 = ($8|0)>(0);
if ($9) {
$10 = (($2) + 1)|0;
- HEAP32[7834] = $10;
+ HEAP32[7875] = $10;
}
- $11 = HEAP32[7834]|0;
+ $11 = HEAP32[7875]|0;
$12 = (($11) + -1)|0;
$13 = (((($1) + (($12*144)|0)|0)) + 8|0);
HEAP32[$13>>2] = $0;
@@ -17287,7 +21492,7 @@ function _rlEnableTexture($0) {
function _rlDisableTexture() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8118]|0;
+ $0 = HEAP32[8159]|0;
$1 = ($0|0)>(4095);
if (!($1)) {
return;
@@ -17325,7 +21530,7 @@ function _GetDefaultFont($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- ;HEAP32[$0>>2]=HEAP32[30900>>2]|0;HEAP32[$0+4>>2]=HEAP32[30900+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[30900+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[30900+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[30900+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[30900+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[30900+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[30900+28>>2]|0;
+ ;HEAP32[$0>>2]=HEAP32[31064>>2]|0;HEAP32[$0+4>>2]=HEAP32[31064+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[31064+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[31064+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[31064+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[31064+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[31064+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[31064+28>>2]|0;
return;
}
function _MeasureTextEx($0,$1,$2,$3,$4) {
@@ -17801,8 +22006,8 @@ function _FormatText($0,$varargs) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
HEAP32[$1>>2] = $varargs;
- (_vsprintf(34967,$0,$1)|0);
- STACKTOP = sp;return (34967|0);
+ (_vsprintf(37283,$0,$1)|0);
+ STACKTOP = sp;return (37283|0);
}
function _MeasureText($0,$1) {
$0 = $0|0;
@@ -17841,22 +22046,22 @@ function _DrawFPS($0,$1) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$$byval_copy = sp;
$2 = sp + 4|0;
- $3 = HEAP32[8274]|0;
- $4 = HEAP32[744]|0;
+ $3 = HEAP32[8315]|0;
+ $4 = HEAP32[747]|0;
$5 = ($3|0)<($4|0);
if ($5) {
$6 = (($3) + 1)|0;
$$sink = $6;
} else {
$7 = (_GetFPS()|0);
- HEAP32[8275] = $7;
- HEAP32[744] = $7;
+ HEAP32[8316] = $7;
+ HEAP32[747] = $7;
$$sink = 0;
}
- HEAP32[8274] = $$sink;
- $8 = HEAP32[8275]|0;
+ HEAP32[8315] = $$sink;
+ $8 = HEAP32[8316]|0;
HEAP32[$$byval_copy>>2] = $8;
- (_FormatText(8466,$$byval_copy)|0);
+ (_FormatText(8234,$$byval_copy)|0);
HEAP8[$2>>0] = 0;
$9 = ((($2)) + 1|0);
HEAP8[$9>>0] = -98;
@@ -17865,7 +22070,7 @@ function _DrawFPS($0,$1) {
$11 = ((($2)) + 3|0);
HEAP8[$11>>0] = -1;
;HEAP8[$$byval_copy>>0]=HEAP8[$2>>0]|0;HEAP8[$$byval_copy+1>>0]=HEAP8[$2+1>>0]|0;HEAP8[$$byval_copy+2>>0]=HEAP8[$2+2>>0]|0;HEAP8[$$byval_copy+3>>0]=HEAP8[$2+3>>0]|0;
- _DrawText(34967,$0,$1,20,$$byval_copy);
+ _DrawText(37283,$0,$1,20,$$byval_copy);
STACKTOP = sp;return;
}
function _emscripten_GetProcAddress($0) {
@@ -17914,7 +22119,7 @@ function _emscripten_GetProcAddress($0) {
$10 = HEAP32[$2>>2]|0;
(_strcpy($9,$10)|0);
$11 = HEAP32[$3>>2]|0;
- $12 = (_strstr($11,8474)|0);
+ $12 = (_strstr($11,8242)|0);
HEAP32[$4>>2] = $12;
$13 = HEAP32[$4>>2]|0;
$14 = ($13|0)!=(0|0);
@@ -17923,7 +22128,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$15>>0] = 0;
}
$16 = HEAP32[$3>>2]|0;
- $17 = (_strstr($16,8478)|0);
+ $17 = (_strstr($16,8246)|0);
HEAP32[$4>>2] = $17;
$18 = HEAP32[$4>>2]|0;
$19 = ($18|0)!=(0|0);
@@ -17932,7 +22137,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$20>>0] = 0;
}
$21 = HEAP32[$3>>2]|0;
- $22 = (_strstr($21,8482)|0);
+ $22 = (_strstr($21,8250)|0);
HEAP32[$4>>2] = $22;
$23 = HEAP32[$4>>2]|0;
$24 = ($23|0)!=(0|0);
@@ -17941,7 +22146,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$25>>0] = 0;
}
$26 = HEAP32[$3>>2]|0;
- $27 = (_strstr($26,8486)|0);
+ $27 = (_strstr($26,8254)|0);
HEAP32[$4>>2] = $27;
$28 = HEAP32[$4>>2]|0;
$29 = ($28|0)!=(0|0);
@@ -17950,1210 +22155,1210 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$30>>0] = 0;
}
$31 = HEAP32[$3>>2]|0;
- $32 = (_strcmp($31,8492)|0);
+ $32 = (_strcmp($31,8260)|0);
$33 = ($32|0)!=(0);
do {
if ($33) {
$34 = HEAP32[$3>>2]|0;
- $35 = (_strcmp($34,8530)|0);
+ $35 = (_strcmp($34,8298)|0);
$36 = ($35|0)!=(0);
if (!($36)) {
- HEAP32[$3>>2] = 8549;
+ HEAP32[$3>>2] = 8317;
break;
}
$37 = HEAP32[$3>>2]|0;
- $38 = (_strcmp($37,8562)|0);
+ $38 = (_strcmp($37,8330)|0);
$39 = ($38|0)!=(0);
if (!($39)) {
- HEAP32[$3>>2] = 8583;
+ HEAP32[$3>>2] = 8351;
break;
}
$40 = HEAP32[$3>>2]|0;
- $41 = (_strcmp($40,8598)|0);
+ $41 = (_strcmp($40,8366)|0);
$42 = ($41|0)!=(0);
if (!($42)) {
- HEAP32[$3>>2] = 8613;
+ HEAP32[$3>>2] = 8381;
break;
}
$43 = HEAP32[$3>>2]|0;
- $44 = (_strcmp($43,8628)|0);
+ $44 = (_strcmp($43,8396)|0);
$45 = ($44|0)!=(0);
if (!($45)) {
- HEAP32[$3>>2] = 8643;
+ HEAP32[$3>>2] = 8411;
}
} else {
- HEAP32[$3>>2] = 8514;
+ HEAP32[$3>>2] = 8282;
}
} while(0);
$46 = HEAP32[$3>>2]|0;
- $47 = (_strcmp($46,8658)|0);
+ $47 = (_strcmp($46,8426)|0);
$48 = ($47|0)!=(0);
do {
if ($48) {
$49 = HEAP32[$3>>2]|0;
- $50 = (_strcmp($49,8672)|0);
+ $50 = (_strcmp($49,8440)|0);
$51 = ($50|0)!=(0);
if (!($51)) {
HEAP32[$1>>2] = 3;
break;
}
$52 = HEAP32[$3>>2]|0;
- $53 = (_strcmp($52,8684)|0);
+ $53 = (_strcmp($52,8452)|0);
$54 = ($53|0)!=(0);
if (!($54)) {
HEAP32[$1>>2] = 6;
break;
}
$55 = HEAP32[$3>>2]|0;
- $56 = (_strcmp($55,8698)|0);
+ $56 = (_strcmp($55,8466)|0);
$57 = ($56|0)!=(0);
if (!($57)) {
HEAP32[$1>>2] = 7;
break;
}
$58 = HEAP32[$3>>2]|0;
- $59 = (_strcmp($58,8710)|0);
+ $59 = (_strcmp($58,8478)|0);
$60 = ($59|0)!=(0);
if (!($60)) {
HEAP32[$1>>2] = 8;
break;
}
$61 = HEAP32[$3>>2]|0;
- $62 = (_strcmp($61,8724)|0);
+ $62 = (_strcmp($61,8492)|0);
$63 = ($62|0)!=(0);
if (!($63)) {
HEAP32[$1>>2] = 9;
break;
}
$64 = HEAP32[$3>>2]|0;
- $65 = (_strcmp($64,8738)|0);
+ $65 = (_strcmp($64,8506)|0);
$66 = ($65|0)!=(0);
if (!($66)) {
HEAP32[$1>>2] = 10;
break;
}
$67 = HEAP32[$3>>2]|0;
- $68 = (_strcmp($67,8755)|0);
+ $68 = (_strcmp($67,8523)|0);
$69 = ($68|0)!=(0);
if (!($69)) {
HEAP32[$1>>2] = 1;
break;
}
$70 = HEAP32[$3>>2]|0;
- $71 = (_strcmp($70,8778)|0);
+ $71 = (_strcmp($70,8546)|0);
$72 = ($71|0)!=(0);
if (!($72)) {
HEAP32[$1>>2] = 1;
break;
}
$73 = HEAP32[$3>>2]|0;
- $74 = (_strcmp($73,8804)|0);
+ $74 = (_strcmp($73,8572)|0);
$75 = ($74|0)!=(0);
if (!($75)) {
HEAP32[$1>>2] = 2;
break;
}
$76 = HEAP32[$3>>2]|0;
- $77 = (_strcmp($76,8817)|0);
+ $77 = (_strcmp($76,8585)|0);
$78 = ($77|0)!=(0);
if (!($78)) {
HEAP32[$1>>2] = 3;
break;
}
$79 = HEAP32[$3>>2]|0;
- $80 = (_strcmp($79,8833)|0);
+ $80 = (_strcmp($79,8601)|0);
$81 = ($80|0)!=(0);
if (!($81)) {
HEAP32[$1>>2] = 1;
break;
}
$82 = HEAP32[$3>>2]|0;
- $83 = (_strcmp($82,8846)|0);
+ $83 = (_strcmp($82,8614)|0);
$84 = ($83|0)!=(0);
if (!($84)) {
HEAP32[$1>>2] = 11;
break;
}
$85 = HEAP32[$3>>2]|0;
- $86 = (_strcmp($85,8860)|0);
+ $86 = (_strcmp($85,8628)|0);
$87 = ($86|0)!=(0);
if (!($87)) {
HEAP32[$1>>2] = 2;
break;
}
$88 = HEAP32[$3>>2]|0;
- $89 = (_strcmp($88,8880)|0);
+ $89 = (_strcmp($88,8648)|0);
$90 = ($89|0)!=(0);
if (!($90)) {
HEAP32[$1>>2] = 3;
break;
}
$91 = HEAP32[$3>>2]|0;
- $92 = (_strcmp($91,8900)|0);
+ $92 = (_strcmp($91,8668)|0);
$93 = ($92|0)!=(0);
if (!($93)) {
HEAP32[$1>>2] = 4;
break;
}
$94 = HEAP32[$3>>2]|0;
- $95 = (_strcmp($94,8917)|0);
+ $95 = (_strcmp($94,8685)|0);
$96 = ($95|0)!=(0);
if (!($96)) {
HEAP32[$1>>2] = 5;
break;
}
$97 = HEAP32[$3>>2]|0;
- $98 = (_strcmp($97,8934)|0);
+ $98 = (_strcmp($97,8702)|0);
$99 = ($98|0)!=(0);
if (!($99)) {
HEAP32[$1>>2] = 4;
break;
}
$100 = HEAP32[$3>>2]|0;
- $101 = (_strcmp($100,8946)|0);
+ $101 = (_strcmp($100,8714)|0);
$102 = ($101|0)!=(0);
if (!($102)) {
HEAP32[$1>>2] = 12;
break;
}
$103 = HEAP32[$3>>2]|0;
- $104 = (_strcmp($103,8959)|0);
+ $104 = (_strcmp($103,8727)|0);
$105 = ($104|0)!=(0);
if (!($105)) {
HEAP32[$1>>2] = 13;
break;
}
$106 = HEAP32[$3>>2]|0;
- $107 = (_strcmp($106,8975)|0);
+ $107 = (_strcmp($106,8743)|0);
$108 = ($107|0)!=(0);
if (!($108)) {
HEAP32[$1>>2] = 6;
break;
}
$109 = HEAP32[$3>>2]|0;
- $110 = (_strcmp($109,8998)|0);
+ $110 = (_strcmp($109,8766)|0);
$111 = ($110|0)!=(0);
if (!($111)) {
HEAP32[$1>>2] = 2;
break;
}
$112 = HEAP32[$3>>2]|0;
- $113 = (_strcmp($112,9011)|0);
+ $113 = (_strcmp($112,8779)|0);
$114 = ($113|0)!=(0);
if (!($114)) {
HEAP32[$1>>2] = 3;
break;
}
$115 = HEAP32[$3>>2]|0;
- $116 = (_strcmp($115,9027)|0);
+ $116 = (_strcmp($115,8795)|0);
$117 = ($116|0)!=(0);
if (!($117)) {
HEAP32[$1>>2] = 5;
break;
}
$118 = HEAP32[$3>>2]|0;
- $119 = (_strcmp($118,9038)|0);
+ $119 = (_strcmp($118,8806)|0);
$120 = ($119|0)!=(0);
if (!($120)) {
HEAP32[$1>>2] = 14;
break;
}
$121 = HEAP32[$3>>2]|0;
- $122 = (_strcmp($121,9057)|0);
+ $122 = (_strcmp($121,8825)|0);
$123 = ($122|0)!=(0);
if (!($123)) {
HEAP32[$1>>2] = 15;
break;
}
$124 = HEAP32[$3>>2]|0;
- $125 = (_strcmp($124,9079)|0);
+ $125 = (_strcmp($124,8847)|0);
$126 = ($125|0)!=(0);
if (!($126)) {
HEAP32[$1>>2] = 16;
break;
}
$127 = HEAP32[$3>>2]|0;
- $128 = (_strcmp($127,9098)|0);
+ $128 = (_strcmp($127,8866)|0);
$129 = ($128|0)!=(0);
if (!($129)) {
HEAP32[$1>>2] = 7;
break;
}
$130 = HEAP32[$3>>2]|0;
- $131 = (_strcmp($130,9127)|0);
+ $131 = (_strcmp($130,8895)|0);
$132 = ($131|0)!=(0);
if (!($132)) {
HEAP32[$1>>2] = 6;
break;
}
$133 = HEAP32[$3>>2]|0;
- $134 = (_strcmp($133,9144)|0);
+ $134 = (_strcmp($133,8912)|0);
$135 = ($134|0)!=(0);
if (!($135)) {
HEAP32[$1>>2] = 8;
break;
}
$136 = HEAP32[$3>>2]|0;
- $137 = (_strcmp($136,9159)|0);
+ $137 = (_strcmp($136,8927)|0);
$138 = ($137|0)!=(0);
if (!($138)) {
HEAP32[$1>>2] = 9;
break;
}
$139 = HEAP32[$3>>2]|0;
- $140 = (_strcmp($139,9174)|0);
+ $140 = (_strcmp($139,8942)|0);
$141 = ($140|0)!=(0);
if (!($141)) {
HEAP32[$1>>2] = 1;
break;
}
$142 = HEAP32[$3>>2]|0;
- $143 = (_strcmp($142,9195)|0);
+ $143 = (_strcmp($142,8963)|0);
$144 = ($143|0)!=(0);
if (!($144)) {
HEAP32[$1>>2] = 10;
break;
}
$145 = HEAP32[$3>>2]|0;
- $146 = (_strcmp($145,9215)|0);
+ $146 = (_strcmp($145,8983)|0);
$147 = ($146|0)!=(0);
if (!($147)) {
HEAP32[$1>>2] = 11;
break;
}
$148 = HEAP32[$3>>2]|0;
- $149 = (_strcmp($148,9235)|0);
+ $149 = (_strcmp($148,9003)|0);
$150 = ($149|0)!=(0);
if (!($150)) {
HEAP32[$1>>2] = 12;
break;
}
$151 = HEAP32[$3>>2]|0;
- $152 = (_strcmp($151,9261)|0);
+ $152 = (_strcmp($151,9029)|0);
$153 = ($152|0)!=(0);
if (!($153)) {
HEAP32[$1>>2] = 2;
break;
}
$154 = HEAP32[$3>>2]|0;
- $155 = (_strcmp($154,9280)|0);
+ $155 = (_strcmp($154,9048)|0);
$156 = ($155|0)!=(0);
if (!($156)) {
HEAP32[$1>>2] = 1;
break;
}
$157 = HEAP32[$3>>2]|0;
- $158 = (_strcmp($157,9292)|0);
+ $158 = (_strcmp($157,9060)|0);
$159 = ($158|0)!=(0);
if (!($159)) {
HEAP32[$1>>2] = 3;
break;
}
$160 = HEAP32[$3>>2]|0;
- $161 = (_strcmp($160,9304)|0);
+ $161 = (_strcmp($160,9072)|0);
$162 = ($161|0)!=(0);
if (!($162)) {
HEAP32[$1>>2] = 1;
break;
}
$163 = HEAP32[$3>>2]|0;
- $164 = (_strcmp($163,9316)|0);
+ $164 = (_strcmp($163,9084)|0);
$165 = ($164|0)!=(0);
if (!($165)) {
HEAP32[$1>>2] = 1;
break;
}
$166 = HEAP32[$3>>2]|0;
- $167 = (_strcmp($166,9328)|0);
+ $167 = (_strcmp($166,9096)|0);
$168 = ($167|0)!=(0);
if (!($168)) {
HEAP32[$1>>2] = 17;
break;
}
$169 = HEAP32[$3>>2]|0;
- $170 = (_strcmp($169,9340)|0);
+ $170 = (_strcmp($169,9108)|0);
$171 = ($170|0)!=(0);
if (!($171)) {
HEAP32[$1>>2] = 13;
break;
}
$172 = HEAP32[$3>>2]|0;
- $173 = (_strcmp($172,9352)|0);
+ $173 = (_strcmp($172,9120)|0);
$174 = ($173|0)!=(0);
if (!($174)) {
HEAP32[$1>>2] = 4;
break;
}
$175 = HEAP32[$3>>2]|0;
- $176 = (_strcmp($175,9364)|0);
+ $176 = (_strcmp($175,9132)|0);
$177 = ($176|0)!=(0);
if (!($177)) {
HEAP32[$1>>2] = 2;
break;
}
$178 = HEAP32[$3>>2]|0;
- $179 = (_strcmp($178,9376)|0);
+ $179 = (_strcmp($178,9144)|0);
$180 = ($179|0)!=(0);
if (!($180)) {
HEAP32[$1>>2] = 14;
break;
}
$181 = HEAP32[$3>>2]|0;
- $182 = (_strcmp($181,9389)|0);
+ $182 = (_strcmp($181,9157)|0);
$183 = ($182|0)!=(0);
if (!($183)) {
HEAP32[$1>>2] = 15;
break;
}
$184 = HEAP32[$3>>2]|0;
- $185 = (_strcmp($184,9402)|0);
+ $185 = (_strcmp($184,9170)|0);
$186 = ($185|0)!=(0);
if (!($186)) {
HEAP32[$1>>2] = 16;
break;
}
$187 = HEAP32[$3>>2]|0;
- $188 = (_strcmp($187,9415)|0);
+ $188 = (_strcmp($187,9183)|0);
$189 = ($188|0)!=(0);
if (!($189)) {
HEAP32[$1>>2] = 17;
break;
}
$190 = HEAP32[$3>>2]|0;
- $191 = (_strcmp($190,9428)|0);
+ $191 = (_strcmp($190,9196)|0);
$192 = ($191|0)!=(0);
if (!($192)) {
HEAP32[$1>>2] = 18;
break;
}
$193 = HEAP32[$3>>2]|0;
- $194 = (_strcmp($193,9441)|0);
+ $194 = (_strcmp($193,9209)|0);
$195 = ($194|0)!=(0);
if (!($195)) {
HEAP32[$1>>2] = 19;
break;
}
$196 = HEAP32[$3>>2]|0;
- $197 = (_strcmp($196,9454)|0);
+ $197 = (_strcmp($196,9222)|0);
$198 = ($197|0)!=(0);
if (!($198)) {
HEAP32[$1>>2] = 20;
break;
}
$199 = HEAP32[$3>>2]|0;
- $200 = (_strcmp($199,9467)|0);
+ $200 = (_strcmp($199,9235)|0);
$201 = ($200|0)!=(0);
if (!($201)) {
HEAP32[$1>>2] = 21;
break;
}
$202 = HEAP32[$3>>2]|0;
- $203 = (_strcmp($202,9480)|0);
+ $203 = (_strcmp($202,9248)|0);
$204 = ($203|0)!=(0);
if (!($204)) {
HEAP32[$1>>2] = 5;
break;
}
$205 = HEAP32[$3>>2]|0;
- $206 = (_strcmp($205,9499)|0);
+ $206 = (_strcmp($205,9267)|0);
$207 = ($206|0)!=(0);
if (!($207)) {
HEAP32[$1>>2] = 6;
break;
}
$208 = HEAP32[$3>>2]|0;
- $209 = (_strcmp($208,9518)|0);
+ $209 = (_strcmp($208,9286)|0);
$210 = ($209|0)!=(0);
if (!($210)) {
HEAP32[$1>>2] = 7;
break;
}
$211 = HEAP32[$3>>2]|0;
- $212 = (_strcmp($211,9537)|0);
+ $212 = (_strcmp($211,9305)|0);
$213 = ($212|0)!=(0);
if (!($213)) {
HEAP32[$1>>2] = 18;
break;
}
$214 = HEAP32[$3>>2]|0;
- $215 = (_strcmp($214,9550)|0);
+ $215 = (_strcmp($214,9318)|0);
$216 = ($215|0)!=(0);
if (!($216)) {
HEAP32[$1>>2] = 19;
break;
}
$217 = HEAP32[$3>>2]|0;
- $218 = (_strcmp($217,9568)|0);
+ $218 = (_strcmp($217,9336)|0);
$219 = ($218|0)!=(0);
if (!($219)) {
HEAP32[$1>>2] = 20;
break;
}
$220 = HEAP32[$3>>2]|0;
- $221 = (_strcmp($220,9586)|0);
+ $221 = (_strcmp($220,9354)|0);
$222 = ($221|0)!=(0);
if (!($222)) {
HEAP32[$1>>2] = 21;
break;
}
$223 = HEAP32[$3>>2]|0;
- $224 = (_strcmp($223,9604)|0);
+ $224 = (_strcmp($223,9372)|0);
$225 = ($224|0)!=(0);
if (!($225)) {
HEAP32[$1>>2] = 22;
break;
}
$226 = HEAP32[$3>>2]|0;
- $227 = (_strcmp($226,9622)|0);
+ $227 = (_strcmp($226,9390)|0);
$228 = ($227|0)!=(0);
if (!($228)) {
HEAP32[$1>>2] = 2;
break;
}
$229 = HEAP32[$3>>2]|0;
- $230 = (_strcmp($229,9642)|0);
+ $230 = (_strcmp($229,9410)|0);
$231 = ($230|0)!=(0);
if (!($231)) {
HEAP32[$1>>2] = 3;
break;
}
$232 = HEAP32[$3>>2]|0;
- $233 = (_strcmp($232,8583)|0);
+ $233 = (_strcmp($232,8351)|0);
$234 = ($233|0)!=(0);
if (!($234)) {
HEAP32[$1>>2] = 7;
break;
}
$235 = HEAP32[$3>>2]|0;
- $236 = (_strcmp($235,9660)|0);
+ $236 = (_strcmp($235,9428)|0);
$237 = ($236|0)!=(0);
if (!($237)) {
HEAP32[$1>>2] = 1;
break;
}
$238 = HEAP32[$3>>2]|0;
- $239 = (_strcmp($238,9675)|0);
+ $239 = (_strcmp($238,9443)|0);
$240 = ($239|0)!=(0);
if (!($240)) {
HEAP32[$1>>2] = 8;
break;
}
$241 = HEAP32[$3>>2]|0;
- $242 = (_strcmp($241,9696)|0);
+ $242 = (_strcmp($241,9464)|0);
$243 = ($242|0)!=(0);
if (!($243)) {
HEAP32[$1>>2] = 9;
break;
}
$244 = HEAP32[$3>>2]|0;
- $245 = (_strcmp($244,9711)|0);
+ $245 = (_strcmp($244,9479)|0);
$246 = ($245|0)!=(0);
if (!($246)) {
HEAP32[$1>>2] = 10;
break;
}
$247 = HEAP32[$3>>2]|0;
- $248 = (_strcmp($247,9729)|0);
+ $248 = (_strcmp($247,9497)|0);
$249 = ($248|0)!=(0);
if (!($249)) {
HEAP32[$1>>2] = 2;
break;
}
$250 = HEAP32[$3>>2]|0;
- $251 = (_strcmp($250,9745)|0);
+ $251 = (_strcmp($250,9513)|0);
$252 = ($251|0)!=(0);
if (!($252)) {
HEAP32[$1>>2] = 11;
break;
}
$253 = HEAP32[$3>>2]|0;
- $254 = (_strcmp($253,9764)|0);
+ $254 = (_strcmp($253,9532)|0);
$255 = ($254|0)!=(0);
if (!($255)) {
HEAP32[$1>>2] = 22;
break;
}
$256 = HEAP32[$3>>2]|0;
- $257 = (_strcmp($256,9778)|0);
+ $257 = (_strcmp($256,9546)|0);
$258 = ($257|0)!=(0);
if (!($258)) {
HEAP32[$1>>2] = 23;
break;
}
$259 = HEAP32[$3>>2]|0;
- $260 = (_strcmp($259,9793)|0);
+ $260 = (_strcmp($259,9561)|0);
$261 = ($260|0)!=(0);
if (!($261)) {
HEAP32[$1>>2] = 8;
break;
}
$262 = HEAP32[$3>>2]|0;
- $263 = (_strcmp($262,8514)|0);
+ $263 = (_strcmp($262,8282)|0);
$264 = ($263|0)!=(0);
if (!($264)) {
HEAP32[$1>>2] = 1;
break;
}
$265 = HEAP32[$3>>2]|0;
- $266 = (_strcmp($265,9804)|0);
+ $266 = (_strcmp($265,9572)|0);
$267 = ($266|0)!=(0);
if (!($267)) {
HEAP32[$1>>2] = 3;
break;
}
$268 = HEAP32[$3>>2]|0;
- $269 = (_strcmp($268,8613)|0);
+ $269 = (_strcmp($268,8381)|0);
$270 = ($269|0)!=(0);
if (!($270)) {
HEAP32[$1>>2] = 23;
break;
}
$271 = HEAP32[$3>>2]|0;
- $272 = (_strcmp($271,8643)|0);
+ $272 = (_strcmp($271,8411)|0);
$273 = ($272|0)!=(0);
if (!($273)) {
HEAP32[$1>>2] = 24;
break;
}
$274 = HEAP32[$3>>2]|0;
- $275 = (_strcmp($274,9820)|0);
+ $275 = (_strcmp($274,9588)|0);
$276 = ($275|0)!=(0);
if (!($276)) {
HEAP32[$1>>2] = 12;
break;
}
$277 = HEAP32[$3>>2]|0;
- $278 = (_strcmp($277,9847)|0);
+ $278 = (_strcmp($277,9615)|0);
$279 = ($278|0)!=(0);
if (!($279)) {
HEAP32[$1>>2] = 4;
break;
}
$280 = HEAP32[$3>>2]|0;
- $281 = (_strcmp($280,9861)|0);
+ $281 = (_strcmp($280,9629)|0);
$282 = ($281|0)!=(0);
if (!($282)) {
HEAP32[$1>>2] = 13;
break;
}
$283 = HEAP32[$3>>2]|0;
- $284 = (_strcmp($283,8549)|0);
+ $284 = (_strcmp($283,8317)|0);
$285 = ($284|0)!=(0);
if (!($285)) {
HEAP32[$1>>2] = 5;
break;
}
$286 = HEAP32[$3>>2]|0;
- $287 = (_strcmp($286,9881)|0);
+ $287 = (_strcmp($286,9649)|0);
$288 = ($287|0)!=(0);
if (!($288)) {
HEAP32[$1>>2] = 6;
break;
}
$289 = HEAP32[$3>>2]|0;
- $290 = (_strcmp($289,9899)|0);
+ $290 = (_strcmp($289,9667)|0);
$291 = ($290|0)!=(0);
if (!($291)) {
HEAP32[$1>>2] = 9;
break;
}
$292 = HEAP32[$3>>2]|0;
- $293 = (_strcmp($292,9911)|0);
+ $293 = (_strcmp($292,9679)|0);
$294 = ($293|0)!=(0);
if (!($294)) {
HEAP32[$1>>2] = 24;
break;
}
$295 = HEAP32[$3>>2]|0;
- $296 = (_strcmp($295,9932)|0);
+ $296 = (_strcmp($295,9700)|0);
$297 = ($296|0)!=(0);
if (!($297)) {
HEAP32[$1>>2] = 25;
break;
}
$298 = HEAP32[$3>>2]|0;
- $299 = (_strcmp($298,9950)|0);
+ $299 = (_strcmp($298,9718)|0);
$300 = ($299|0)!=(0);
if (!($300)) {
HEAP32[$1>>2] = 26;
break;
}
$301 = HEAP32[$3>>2]|0;
- $302 = (_strcmp($301,9968)|0);
+ $302 = (_strcmp($301,9736)|0);
$303 = ($302|0)!=(0);
if (!($303)) {
HEAP32[$1>>2] = 27;
break;
}
$304 = HEAP32[$3>>2]|0;
- $305 = (_strcmp($304,9989)|0);
+ $305 = (_strcmp($304,9757)|0);
$306 = ($305|0)!=(0);
if (!($306)) {
HEAP32[$1>>2] = 14;
break;
}
$307 = HEAP32[$3>>2]|0;
- $308 = (_strcmp($307,10015)|0);
+ $308 = (_strcmp($307,9783)|0);
$309 = ($308|0)!=(0);
if (!($309)) {
HEAP32[$1>>2] = 3;
break;
}
$310 = HEAP32[$3>>2]|0;
- $311 = (_strcmp($310,10038)|0);
+ $311 = (_strcmp($310,9806)|0);
$312 = ($311|0)!=(0);
if (!($312)) {
HEAP32[$1>>2] = 15;
break;
}
$313 = HEAP32[$3>>2]|0;
- $314 = (_strcmp($313,10076)|0);
+ $314 = (_strcmp($313,9844)|0);
$315 = ($314|0)!=(0);
if (!($315)) {
HEAP32[$1>>2] = 10;
break;
}
$316 = HEAP32[$3>>2]|0;
- $317 = (_strcmp($316,10092)|0);
+ $317 = (_strcmp($316,9860)|0);
$318 = ($317|0)!=(0);
if (!($318)) {
HEAP32[$1>>2] = 7;
break;
}
$319 = HEAP32[$3>>2]|0;
- $320 = (_strcmp($319,10107)|0);
+ $320 = (_strcmp($319,9875)|0);
$321 = ($320|0)!=(0);
if (!($321)) {
HEAP32[$1>>2] = 25;
break;
}
$322 = HEAP32[$3>>2]|0;
- $323 = (_strcmp($322,10130)|0);
+ $323 = (_strcmp($322,9898)|0);
$324 = ($323|0)!=(0);
if (!($324)) {
HEAP32[$1>>2] = 16;
break;
}
$325 = HEAP32[$3>>2]|0;
- $326 = (_strcmp($325,10143)|0);
+ $326 = (_strcmp($325,9911)|0);
$327 = ($326|0)!=(0);
if (!($327)) {
HEAP32[$1>>2] = 28;
break;
}
$328 = HEAP32[$3>>2]|0;
- $329 = (_strcmp($328,10157)|0);
+ $329 = (_strcmp($328,9925)|0);
$330 = ($329|0)!=(0);
if (!($330)) {
HEAP32[$1>>2] = 29;
break;
}
$331 = HEAP32[$3>>2]|0;
- $332 = (_strcmp($331,10171)|0);
+ $332 = (_strcmp($331,9939)|0);
$333 = ($332|0)!=(0);
if (!($333)) {
HEAP32[$1>>2] = 1;
break;
}
$334 = HEAP32[$3>>2]|0;
- $335 = (_strcmp($334,10191)|0);
+ $335 = (_strcmp($334,9959)|0);
$336 = ($335|0)!=(0);
if (!($336)) {
HEAP32[$1>>2] = 8;
break;
}
$337 = HEAP32[$3>>2]|0;
- $338 = (_strcmp($337,10211)|0);
+ $338 = (_strcmp($337,9979)|0);
$339 = ($338|0)!=(0);
if (!($339)) {
HEAP32[$1>>2] = 17;
break;
}
$340 = HEAP32[$3>>2]|0;
- $341 = (_strcmp($340,10227)|0);
+ $341 = (_strcmp($340,9995)|0);
$342 = ($341|0)!=(0);
if (!($342)) {
HEAP32[$1>>2] = 18;
break;
}
$343 = HEAP32[$3>>2]|0;
- $344 = (_strcmp($343,10245)|0);
+ $344 = (_strcmp($343,10013)|0);
$345 = ($344|0)!=(0);
if (!($345)) {
HEAP32[$1>>2] = 26;
break;
}
$346 = HEAP32[$3>>2]|0;
- $347 = (_strcmp($346,10261)|0);
+ $347 = (_strcmp($346,10029)|0);
$348 = ($347|0)!=(0);
if (!($348)) {
HEAP32[$1>>2] = 19;
break;
}
$349 = HEAP32[$3>>2]|0;
- $350 = (_strcmp($349,10276)|0);
+ $350 = (_strcmp($349,10044)|0);
$351 = ($350|0)!=(0);
if (!($351)) {
HEAP32[$1>>2] = 9;
break;
}
$352 = HEAP32[$3>>2]|0;
- $353 = (_strcmp($352,10298)|0);
+ $353 = (_strcmp($352,10066)|0);
$354 = ($353|0)!=(0);
if (!($354)) {
HEAP32[$1>>2] = 30;
break;
}
$355 = HEAP32[$3>>2]|0;
- $356 = (_strcmp($355,10316)|0);
+ $356 = (_strcmp($355,10084)|0);
$357 = ($356|0)!=(0);
if (!($357)) {
HEAP32[$1>>2] = 31;
break;
}
$358 = HEAP32[$3>>2]|0;
- $359 = (_strcmp($358,10337)|0);
+ $359 = (_strcmp($358,10105)|0);
$360 = ($359|0)!=(0);
if (!($360)) {
HEAP32[$1>>2] = 10;
break;
}
$361 = HEAP32[$3>>2]|0;
- $362 = (_strcmp($361,10355)|0);
+ $362 = (_strcmp($361,10123)|0);
$363 = ($362|0)!=(0);
if (!($363)) {
HEAP32[$1>>2] = 11;
break;
}
$364 = HEAP32[$3>>2]|0;
- $365 = (_strcmp($364,10368)|0);
+ $365 = (_strcmp($364,10136)|0);
$366 = ($365|0)!=(0);
if (!($366)) {
- HEAP32[$1>>2] = 1;
+ HEAP32[$1>>2] = 2;
break;
}
$367 = HEAP32[$3>>2]|0;
- $368 = (_strcmp($367,10383)|0);
+ $368 = (_strcmp($367,10151)|0);
$369 = ($368|0)!=(0);
if (!($369)) {
HEAP32[$1>>2] = 12;
break;
}
$370 = HEAP32[$3>>2]|0;
- $371 = (_strcmp($370,10397)|0);
+ $371 = (_strcmp($370,10165)|0);
$372 = ($371|0)!=(0);
if (!($372)) {
HEAP32[$1>>2] = 1;
break;
}
$373 = HEAP32[$3>>2]|0;
- $374 = (_strcmp($373,10407)|0);
+ $374 = (_strcmp($373,10175)|0);
$375 = ($374|0)!=(0);
if (!($375)) {
HEAP32[$1>>2] = 1;
break;
}
$376 = HEAP32[$3>>2]|0;
- $377 = (_strcmp($376,10417)|0);
+ $377 = (_strcmp($376,10185)|0);
$378 = ($377|0)!=(0);
if (!($378)) {
HEAP32[$1>>2] = 2;
break;
}
$379 = HEAP32[$3>>2]|0;
- $380 = (_strcmp($379,10439)|0);
+ $380 = (_strcmp($379,10207)|0);
$381 = ($380|0)!=(0);
if (!($381)) {
HEAP32[$1>>2] = 13;
break;
}
$382 = HEAP32[$3>>2]|0;
- $383 = (_strcmp($382,10465)|0);
+ $383 = (_strcmp($382,10233)|0);
$384 = ($383|0)!=(0);
if (!($384)) {
HEAP32[$1>>2] = 14;
break;
}
$385 = HEAP32[$3>>2]|0;
- $386 = (_strcmp($385,10492)|0);
+ $386 = (_strcmp($385,10260)|0);
$387 = ($386|0)!=(0);
if (!($387)) {
HEAP32[$1>>2] = 27;
break;
}
$388 = HEAP32[$3>>2]|0;
- $389 = (_strcmp($388,10505)|0);
+ $389 = (_strcmp($388,10273)|0);
$390 = ($389|0)!=(0);
if (!($390)) {
HEAP32[$1>>2] = 20;
break;
}
$391 = HEAP32[$3>>2]|0;
- $392 = (_strcmp($391,10520)|0);
+ $392 = (_strcmp($391,10288)|0);
$393 = ($392|0)!=(0);
if (!($393)) {
HEAP32[$1>>2] = 4;
break;
}
$394 = HEAP32[$3>>2]|0;
- $395 = (_strcmp($394,10535)|0);
+ $395 = (_strcmp($394,10303)|0);
$396 = ($395|0)!=(0);
if (!($396)) {
- HEAP32[$1>>2] = 2;
+ HEAP32[$1>>2] = 3;
break;
}
$397 = HEAP32[$3>>2]|0;
- $398 = (_strcmp($397,10559)|0);
+ $398 = (_strcmp($397,10327)|0);
$399 = ($398|0)!=(0);
if (!($399)) {
HEAP32[$1>>2] = 2;
break;
}
$400 = HEAP32[$3>>2]|0;
- $401 = (_strcmp($400,10570)|0);
+ $401 = (_strcmp($400,10338)|0);
$402 = ($401|0)!=(0);
if (!($402)) {
HEAP32[$1>>2] = 32;
break;
}
$403 = HEAP32[$3>>2]|0;
- $404 = (_strcmp($403,10592)|0);
+ $404 = (_strcmp($403,10360)|0);
$405 = ($404|0)!=(0);
if (!($405)) {
HEAP32[$1>>2] = 21;
break;
}
$406 = HEAP32[$3>>2]|0;
- $407 = (_strcmp($406,10614)|0);
+ $407 = (_strcmp($406,10382)|0);
$408 = ($407|0)!=(0);
if (!($408)) {
HEAP32[$1>>2] = 5;
break;
}
$409 = HEAP32[$3>>2]|0;
- $410 = (_strcmp($409,10638)|0);
+ $410 = (_strcmp($409,10406)|0);
$411 = ($410|0)!=(0);
if (!($411)) {
- HEAP32[$1>>2] = 3;
+ HEAP32[$1>>2] = 4;
break;
}
$412 = HEAP32[$3>>2]|0;
- $413 = (_strcmp($412,10647)|0);
+ $413 = (_strcmp($412,10415)|0);
$414 = ($413|0)!=(0);
if (!($414)) {
- HEAP32[$1>>2] = 4;
+ HEAP32[$1>>2] = 5;
break;
}
$415 = HEAP32[$3>>2]|0;
- $416 = (_strcmp($415,10655)|0);
+ $416 = (_strcmp($415,10423)|0);
$417 = ($416|0)!=(0);
if (!($417)) {
HEAP32[$1>>2] = 1;
break;
}
$418 = HEAP32[$3>>2]|0;
- $419 = (_strcmp($418,10668)|0);
+ $419 = (_strcmp($418,10436)|0);
$420 = ($419|0)!=(0);
if (!($420)) {
HEAP32[$1>>2] = 2;
break;
}
$421 = HEAP32[$3>>2]|0;
- $422 = (_strcmp($421,10682)|0);
+ $422 = (_strcmp($421,10450)|0);
$423 = ($422|0)!=(0);
if (!($423)) {
HEAP32[$1>>2] = 15;
break;
}
$424 = HEAP32[$3>>2]|0;
- $425 = (_strcmp($424,10694)|0);
+ $425 = (_strcmp($424,10462)|0);
$426 = ($425|0)!=(0);
if (!($426)) {
HEAP32[$1>>2] = 16;
break;
}
$427 = HEAP32[$3>>2]|0;
- $428 = (_strcmp($427,10703)|0);
+ $428 = (_strcmp($427,10471)|0);
$429 = ($428|0)!=(0);
if (!($429)) {
HEAP32[$1>>2] = 17;
break;
}
$430 = HEAP32[$3>>2]|0;
- $431 = (_strcmp($430,10713)|0);
+ $431 = (_strcmp($430,10481)|0);
$432 = ($431|0)!=(0);
if (!($432)) {
HEAP32[$1>>2] = 18;
break;
}
$433 = HEAP32[$3>>2]|0;
- $434 = (_strcmp($433,10725)|0);
+ $434 = (_strcmp($433,10493)|0);
$435 = ($434|0)!=(0);
if (!($435)) {
HEAP32[$1>>2] = 19;
break;
}
$436 = HEAP32[$3>>2]|0;
- $437 = (_strcmp($436,10736)|0);
+ $437 = (_strcmp($436,10504)|0);
$438 = ($437|0)!=(0);
if (!($438)) {
HEAP32[$1>>2] = 20;
break;
}
$439 = HEAP32[$3>>2]|0;
- $440 = (_strcmp($439,10744)|0);
+ $440 = (_strcmp($439,10512)|0);
$441 = ($440|0)!=(0);
if (!($441)) {
HEAP32[$1>>2] = 3;
break;
}
$442 = HEAP32[$3>>2]|0;
- $443 = (_strcmp($442,10756)|0);
+ $443 = (_strcmp($442,10524)|0);
$444 = ($443|0)!=(0);
if (!($444)) {
HEAP32[$1>>2] = 21;
break;
}
$445 = HEAP32[$3>>2]|0;
- $446 = (_strcmp($445,10771)|0);
+ $446 = (_strcmp($445,10539)|0);
$447 = ($446|0)!=(0);
if (!($447)) {
HEAP32[$1>>2] = 22;
break;
}
$448 = HEAP32[$3>>2]|0;
- $449 = (_strcmp($448,10783)|0);
+ $449 = (_strcmp($448,10551)|0);
$450 = ($449|0)!=(0);
if (!($450)) {
HEAP32[$1>>2] = 23;
break;
}
$451 = HEAP32[$3>>2]|0;
- $452 = (_strcmp($451,10797)|0);
+ $452 = (_strcmp($451,10565)|0);
$453 = ($452|0)!=(0);
if (!($453)) {
HEAP32[$1>>2] = 11;
break;
}
$454 = HEAP32[$3>>2]|0;
- $455 = (_strcmp($454,10822)|0);
+ $455 = (_strcmp($454,10590)|0);
$456 = ($455|0)!=(0);
if (!($456)) {
HEAP32[$1>>2] = 24;
break;
}
$457 = HEAP32[$3>>2]|0;
- $458 = (_strcmp($457,10839)|0);
+ $458 = (_strcmp($457,10607)|0);
$459 = ($458|0)!=(0);
if (!($459)) {
HEAP32[$1>>2] = 25;
break;
}
$460 = HEAP32[$3>>2]|0;
- $461 = (_strcmp($460,10855)|0);
+ $461 = (_strcmp($460,10623)|0);
$462 = ($461|0)!=(0);
if (!($462)) {
HEAP32[$1>>2] = 26;
break;
}
$463 = HEAP32[$3>>2]|0;
- $464 = (_strcmp($463,10871)|0);
+ $464 = (_strcmp($463,10639)|0);
$465 = ($464|0)!=(0);
if (!($465)) {
HEAP32[$1>>2] = 12;
break;
}
$466 = HEAP32[$3>>2]|0;
- $467 = (_strcmp($466,10883)|0);
+ $467 = (_strcmp($466,10651)|0);
$468 = ($467|0)!=(0);
if (!($468)) {
HEAP32[$1>>2] = 33;
break;
}
$469 = HEAP32[$3>>2]|0;
- $470 = (_strcmp($469,10895)|0);
+ $470 = (_strcmp($469,10663)|0);
$471 = ($470|0)!=(0);
if (!($471)) {
HEAP32[$1>>2] = 34;
break;
}
$472 = HEAP32[$3>>2]|0;
- $473 = (_strcmp($472,10919)|0);
+ $473 = (_strcmp($472,10687)|0);
$474 = ($473|0)!=(0);
if (!($474)) {
HEAP32[$1>>2] = 1;
break;
}
$475 = HEAP32[$3>>2]|0;
- $476 = (_strcmp($475,10932)|0);
+ $476 = (_strcmp($475,10700)|0);
$477 = ($476|0)!=(0);
if (!($477)) {
HEAP32[$1>>2] = 2;
break;
}
$478 = HEAP32[$3>>2]|0;
- $479 = (_strcmp($478,10946)|0);
+ $479 = (_strcmp($478,10714)|0);
$480 = ($479|0)!=(0);
if (!($480)) {
HEAP32[$1>>2] = 35;
break;
}
$481 = HEAP32[$3>>2]|0;
- $482 = (_strcmp($481,10968)|0);
+ $482 = (_strcmp($481,10736)|0);
$483 = ($482|0)!=(0);
if (!($483)) {
HEAP32[$1>>2] = 36;
break;
}
$484 = HEAP32[$3>>2]|0;
- $485 = (_strcmp($484,10975)|0);
+ $485 = (_strcmp($484,10743)|0);
$486 = ($485|0)!=(0);
if (!($486)) {
HEAP32[$1>>2] = 3;
break;
}
$487 = HEAP32[$3>>2]|0;
- $488 = (_strcmp($487,10991)|0);
+ $488 = (_strcmp($487,10759)|0);
$489 = ($488|0)!=(0);
if (!($489)) {
HEAP32[$1>>2] = 2;
break;
}
$490 = HEAP32[$3>>2]|0;
- $491 = (_strcmp($490,11008)|0);
+ $491 = (_strcmp($490,10776)|0);
$492 = ($491|0)!=(0);
if (!($492)) {
HEAP32[$1>>2] = 1;
break;
}
$493 = HEAP32[$3>>2]|0;
- $494 = (_strcmp($493,11025)|0);
+ $494 = (_strcmp($493,10793)|0);
$495 = ($494|0)!=(0);
if (!($495)) {
HEAP32[$1>>2] = 28;
break;
}
$496 = HEAP32[$3>>2]|0;
- $497 = (_strcmp($496,11041)|0);
+ $497 = (_strcmp($496,10809)|0);
$498 = ($497|0)!=(0);
if (!($498)) {
HEAP32[$1>>2] = 1;
break;
}
$499 = HEAP32[$3>>2]|0;
- $500 = (_strcmp($499,11057)|0);
+ $500 = (_strcmp($499,10825)|0);
$501 = ($500|0)!=(0);
if (!($501)) {
HEAP32[$1>>2] = 4;
break;
}
$502 = HEAP32[$3>>2]|0;
- $503 = (_strcmp($502,11074)|0);
+ $503 = (_strcmp($502,10842)|0);
$504 = ($503|0)!=(0);
if (!($504)) {
HEAP32[$1>>2] = 29;
break;
}
$505 = HEAP32[$3>>2]|0;
- $506 = (_strcmp($505,11088)|0);
+ $506 = (_strcmp($505,10856)|0);
$507 = ($506|0)!=(0);
if (!($507)) {
HEAP32[$1>>2] = 30;
break;
}
$508 = HEAP32[$3>>2]|0;
- $509 = (_strcmp($508,11100)|0);
+ $509 = (_strcmp($508,10868)|0);
$510 = ($509|0)!=(0);
if (!($510)) {
HEAP32[$1>>2] = 22;
break;
}
$511 = HEAP32[$3>>2]|0;
- $512 = (_strcmp($511,11111)|0);
+ $512 = (_strcmp($511,10879)|0);
$513 = ($512|0)!=(0);
if (!($513)) {
HEAP32[$1>>2] = 2;
break;
}
$514 = HEAP32[$3>>2]|0;
- $515 = (_strcmp($514,11124)|0);
+ $515 = (_strcmp($514,10892)|0);
$516 = ($515|0)!=(0);
if (!($516)) {
HEAP32[$1>>2] = 23;
break;
}
$517 = HEAP32[$3>>2]|0;
- $518 = (_strcmp($517,11134)|0);
+ $518 = (_strcmp($517,10902)|0);
$519 = ($518|0)!=(0);
if (!($519)) {
HEAP32[$1>>2] = 2;
break;
}
$520 = HEAP32[$3>>2]|0;
- $521 = (_strcmp($520,11151)|0);
+ $521 = (_strcmp($520,10919)|0);
$522 = ($521|0)!=(0);
if (!($522)) {
HEAP32[$1>>2] = 24;
break;
}
$523 = HEAP32[$3>>2]|0;
- $524 = (_strcmp($523,11163)|0);
+ $524 = (_strcmp($523,10931)|0);
$525 = ($524|0)!=(0);
if (!($525)) {
HEAP32[$1>>2] = 25;
break;
}
$526 = HEAP32[$3>>2]|0;
- $527 = (_strcmp($526,11185)|0);
+ $527 = (_strcmp($526,10953)|0);
$528 = ($527|0)!=(0);
if (!($528)) {
HEAP32[$1>>2] = 26;
break;
}
$529 = HEAP32[$3>>2]|0;
- $530 = (_strcmp($529,11205)|0);
+ $530 = (_strcmp($529,10973)|0);
$531 = ($530|0)!=(0);
if (!($531)) {
HEAP32[$1>>2] = 3;
break;
}
$532 = HEAP32[$3>>2]|0;
- $533 = (_strcmp($532,11218)|0);
+ $533 = (_strcmp($532,10986)|0);
$534 = ($533|0)!=(0);
if (!($534)) {
HEAP32[$1>>2] = 27;
break;
}
$535 = HEAP32[$3>>2]|0;
- $536 = (_strcmp($535,11240)|0);
+ $536 = (_strcmp($535,11008)|0);
$537 = ($536|0)!=(0);
if (!($537)) {
HEAP32[$1>>2] = 28;
break;
}
$538 = HEAP32[$3>>2]|0;
- $539 = (_strcmp($538,11260)|0);
+ $539 = (_strcmp($538,11028)|0);
$540 = ($539|0)!=(0);
if (!($540)) {
HEAP32[$1>>2] = 2;
break;
}
$541 = HEAP32[$3>>2]|0;
- $542 = (_strcmp($541,11277)|0);
+ $542 = (_strcmp($541,11045)|0);
$543 = ($542|0)!=(0);
if (!($543)) {
HEAP32[$1>>2] = 2;
break;
}
$544 = HEAP32[$3>>2]|0;
- $545 = (_strcmp($544,11294)|0);
+ $545 = (_strcmp($544,11062)|0);
$546 = ($545|0)!=(0);
if (!($546)) {
HEAP32[$1>>2] = 3;
break;
}
$547 = HEAP32[$3>>2]|0;
- $548 = (_strcmp($547,11314)|0);
+ $548 = (_strcmp($547,11082)|0);
$549 = ($548|0)!=(0);
if ($549) {
$550 = HEAP32[$2>>2]|0;
@@ -19175,7 +23380,15 @@ function _emscripten_GetProcAddress($0) {
function _emscripten_get_global_libc() {
var label = 0, sp = 0;
sp = STACKTOP;
- return (33104|0);
+ return (33268|0);
+}
+function ___emscripten_pthread_data_constructor() {
+ var $0 = 0, $1 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 188|0);
+ HEAP32[$1>>2] = (33308);
+ return;
}
function ___stdio_close($0) {
$0 = $0|0;
@@ -19185,7 +23398,7 @@ function ___stdio_close($0) {
$vararg_buffer = sp;
$1 = ((($0)) + 60|0);
$2 = HEAP32[$1>>2]|0;
- $3 = (_dummy_738($2)|0);
+ $3 = (_dummy_736($2)|0);
HEAP32[$vararg_buffer>>2] = $3;
$4 = (___syscall6(6,($vararg_buffer|0))|0);
$5 = (___syscall_ret($4)|0);
@@ -19365,12 +23578,7 @@ function ___pthread_self_108() {
$0 = (_pthread_self()|0);
return ($0|0);
}
-function _pthread_self() {
- var label = 0, sp = 0;
- sp = STACKTOP;
- return (2980|0);
-}
-function _dummy_738($0) {
+function _dummy_736($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
@@ -19503,7 +23711,7 @@ function _vsnprintf($0,$1,$2,$3) {
STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
$4 = sp + 124|0;
$5 = sp;
- dest=$5; src=3356; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$5; src=3124; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$6 = (($1) + -1)|0;
$7 = ($6>>>0)>(2147483646);
if ($7) {
@@ -19574,7 +23782,7 @@ function _vfprintf($0,$1,$2) {
$$0 = -1;
} else {
$9 = ((($0)) + 76|0);
- $10 = HEAP32[$9>>2]|0;
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
$11 = ($10|0)>(-1);
if ($11) {
$12 = (___lockfile($0)|0);
@@ -19987,7 +24195,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$133 = HEAP8[$128>>0]|0;
$134 = $133 << 24 >> 24;
$135 = (($134) + -65)|0;
- $136 = ((11430 + (($$0252*58)|0)|0) + ($135)|0);
+ $136 = ((11198 + (($$0252*58)|0)|0) + ($135)|0);
$137 = HEAP8[$136>>0]|0;
$138 = $137&255;
$139 = (($138) + -1)|0;
@@ -20165,7 +24373,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$222 = (($220) + 1)|0;
$223 = $218 | $221;
$$0254$$0254$ = $223 ? $$0254 : $222;
- $$0228 = $216;$$1233 = 0;$$1238 = 11894;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
+ $$0228 = $216;$$1233 = 0;$$1238 = 11662;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
label = 67;
break;
}
@@ -20186,7 +24394,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$235 = (($233) + 4)|0;
$236 = $235;
HEAP32[$236>>2] = $232;
- $$0232 = 1;$$0237 = 11894;$242 = $231;$243 = $232;
+ $$0232 = 1;$$0237 = 11662;$242 = $231;$243 = $232;
label = 66;
break L71;
} else {
@@ -20194,8 +24402,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$238 = ($237|0)==(0);
$239 = $$1263$ & 1;
$240 = ($239|0)==(0);
- $$ = $240 ? 11894 : (11896);
- $$$ = $238 ? $$ : (11895);
+ $$ = $240 ? 11662 : (11664);
+ $$$ = $238 ? $$ : (11663);
$241 = $$1263$ & 2049;
$narrow = ($241|0)!=(0);
$$284$ = $narrow&1;
@@ -20212,7 +24420,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$168 = (($165) + 4)|0;
$169 = $168;
$170 = HEAP32[$169>>2]|0;
- $$0232 = 0;$$0237 = 11894;$242 = $167;$243 = $170;
+ $$0232 = 0;$$0237 = 11662;$242 = $167;$243 = $170;
label = 66;
break;
}
@@ -20225,7 +24433,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$264 = HEAP32[$263>>2]|0;
$265 = $261&255;
HEAP8[$13>>0] = $265;
- $$2 = $13;$$2234 = 0;$$2239 = 11894;$$2251 = $11;$$5 = 1;$$6268 = $164;
+ $$2 = $13;$$2234 = 0;$$2239 = 11662;$$2251 = $11;$$5 = 1;$$6268 = $164;
break;
}
case 109: {
@@ -20239,7 +24447,7 @@ function _printf_core($0,$1,$2,$3,$4) {
case 115: {
$269 = HEAP32[$6>>2]|0;
$270 = ($269|0)!=(0|0);
- $271 = $270 ? $269 : 11904;
+ $271 = $270 ? $269 : 11672;
$$1 = $271;
label = 71;
break;
@@ -20262,7 +24470,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$pre349 = HEAP32[$6>>2]|0;
$284 = ($$0254|0)==(0);
if ($284) {
- _pad_674($0,32,$$1260,0,$$1263$);
+ _pad_672($0,32,$$1260,0,$$1263$);
$$0240$lcssa357 = 0;
label = 84;
} else {
@@ -20279,7 +24487,7 @@ function _printf_core($0,$1,$2,$3,$4) {
break;
}
default: {
- $$2 = $21;$$2234 = 0;$$2239 = 11894;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
+ $$2 = $21;$$2234 = 0;$$2239 = 11662;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
}
}
} while(0);
@@ -20301,8 +24509,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$207 = ($206|0)==(0);
$or$cond283 = $207 | $205;
$208 = $$1236 >> 4;
- $209 = (11894 + ($208)|0);
- $$289 = $or$cond283 ? 11894 : $209;
+ $209 = (11662 + ($208)|0);
+ $$289 = $or$cond283 ? 11662 : $209;
$$290 = $or$cond283 ? 0 : 2;
$$0228 = $202;$$1233 = $$290;$$1238 = $$289;$$2256 = $$1255;$$4266 = $$3265;$248 = $197;$250 = $200;
label = 67;
@@ -20323,7 +24531,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$277 = (($$1) + ($$0254)|0);
$$3257 = $273 ? $$0254 : $276;
$$1250 = $273 ? $277 : $272;
- $$2 = $$1;$$2234 = 0;$$2239 = 11894;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
+ $$2 = $$1;$$2234 = 0;$$2239 = 11662;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
}
else if ((label|0) == 75) {
label = 0;
@@ -20359,7 +24567,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$0 = -1;
break L1;
}
- _pad_674($0,32,$$1260,$$0240$lcssa,$$1263$);
+ _pad_672($0,32,$$1260,$$0240$lcssa,$$1263$);
$295 = ($$0240$lcssa|0)==(0);
if ($295) {
$$0240$lcssa357 = 0;
@@ -20420,7 +24628,7 @@ function _printf_core($0,$1,$2,$3,$4) {
else if ((label|0) == 84) {
label = 0;
$303 = $$1263$ ^ 8192;
- _pad_674($0,32,$$1260,$$0240$lcssa357,$303);
+ _pad_672($0,32,$$1260,$$0240$lcssa357,$303);
$304 = ($$1260|0)>($$0240$lcssa357|0);
$305 = $304 ? $$1260 : $$0240$lcssa357;
$$0243 = $305;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
@@ -20434,14 +24642,14 @@ function _printf_core($0,$1,$2,$3,$4) {
$312 = (($$$5) + ($$2234))|0;
$313 = ($$1260|0)<($312|0);
$$2261 = $313 ? $312 : $$1260;
- _pad_674($0,32,$$2261,$312,$$6268);
+ _pad_672($0,32,$$2261,$312,$$6268);
_out($0,$$2239,$$2234);
$314 = $$6268 ^ 65536;
- _pad_674($0,48,$$2261,$312,$314);
- _pad_674($0,48,$$$5,$310,0);
+ _pad_672($0,48,$$2261,$312,$314);
+ _pad_672($0,48,$$$5,$310,0);
_out($0,$$2,$310);
$315 = $$6268 ^ 8192;
- _pad_674($0,32,$$2261,$312,$315);
+ _pad_672($0,32,$$2261,$312,$315);
$$0243 = $$2261;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
}
L114: do {
@@ -20853,7 +25061,7 @@ function _fmt_x($0,$1,$2,$3) {
$$056 = $2;$15 = $1;$8 = $0;
while(1) {
$7 = $8 & 15;
- $9 = (11946 + ($7)|0);
+ $9 = (11714 + ($7)|0);
$10 = HEAP8[$9>>0]|0;
$11 = $10&255;
$12 = $11 | $3;
@@ -21108,7 +25316,7 @@ function _memchr($0,$1,$2) {
$39 = $38 ? $$2 : 0;
return ($39|0);
}
-function _pad_674($0,$1,$2,$3,$4) {
+function _pad_672($0,$1,$2,$3,$4) {
$0 = $0|0;
$1 = $1|0;
$2 = $2|0;
@@ -21206,25 +25414,25 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$10 = sp + 512|0;
HEAP32[$7>>2] = 0;
$11 = ((($10)) + 12|0);
- (___DOUBLE_BITS_675($1)|0);
+ (___DOUBLE_BITS_673($1)|0);
$12 = tempRet0;
$13 = ($12|0)<(0);
if ($13) {
$14 = -$1;
- $$0471 = $14;$$0520 = 1;$$0521 = 11911;
+ $$0471 = $14;$$0520 = 1;$$0521 = 11679;
} else {
$15 = $4 & 2048;
$16 = ($15|0)==(0);
$17 = $4 & 1;
$18 = ($17|0)==(0);
- $$ = $18 ? (11912) : (11917);
- $$$ = $16 ? $$ : (11914);
+ $$ = $18 ? (11680) : (11685);
+ $$$ = $16 ? $$ : (11682);
$19 = $4 & 2049;
$narrow = ($19|0)!=(0);
$$534$ = $narrow&1;
$$0471 = $1;$$0520 = $$534$;$$0521 = $$$;
}
- (___DOUBLE_BITS_675($$0471)|0);
+ (___DOUBLE_BITS_673($$0471)|0);
$20 = tempRet0;
$21 = $20 & 2146435072;
$22 = ($21>>>0)<(2146435072);
@@ -21317,7 +25525,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$0523 = $8;$$2473 = $$1472;
while(1) {
$80 = (~~(($$2473)));
- $81 = (11946 + ($80)|0);
+ $81 = (11714 + ($80)|0);
$82 = HEAP8[$81>>0]|0;
$83 = $82&255;
$84 = $83 | $42;
@@ -21364,16 +25572,16 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$pn = $or$cond537 ? $103 : $99;
$$0525 = (($100) + ($45))|0;
$104 = (($$0525) + ($$pn))|0;
- _pad_674($0,32,$2,$104,$4);
+ _pad_672($0,32,$2,$104,$4);
_out($0,$$0521$,$45);
$105 = $4 ^ 65536;
- _pad_674($0,48,$2,$104,$105);
+ _pad_672($0,48,$2,$104,$105);
_out($0,$8,$99);
$106 = (($$pn) - ($99))|0;
- _pad_674($0,48,$106,0,0);
+ _pad_672($0,48,$106,0,0);
_out($0,$77,$100);
$107 = $4 ^ 8192;
- _pad_674($0,32,$2,$104,$107);
+ _pad_672($0,32,$2,$104,$107);
$$sink562 = $104;
break;
}
@@ -21871,10 +26079,10 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$319 = (($318) + ($$3477))|0;
$$1526 = (($319) + ($291))|0;
$320 = (($$1526) + ($$pn566))|0;
- _pad_674($0,32,$2,$320,$4);
+ _pad_672($0,32,$2,$320,$4);
_out($0,$$0521,$$0520);
$321 = $4 ^ 65536;
- _pad_674($0,48,$2,$320,$321);
+ _pad_672($0,48,$2,$320,$321);
if ($293) {
$322 = ($$9$ph>>>0)>($$556>>>0);
$$0496$$9 = $322 ? $$556 : $$9$ph;
@@ -21928,7 +26136,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
}
$339 = ($289|0)==(0);
if (!($339)) {
- _out($0,11962,1);
+ _out($0,11730,1);
}
$340 = ($337>>>0)<($$7505>>>0);
$341 = ($$3477|0)>(0);
@@ -21976,7 +26184,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$4478$lcssa = $$3477;
}
$357 = (($$4478$lcssa) + 9)|0;
- _pad_674($0,48,$357,9,0);
+ _pad_672($0,48,$357,9,0);
} else {
$358 = ((($$9$ph)) + 4|0);
$$7505$ = $$lcssa673 ? $$7505 : $358;
@@ -22009,7 +26217,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$2 = $372;
break;
}
- _out($0,11962,1);
+ _out($0,11730,1);
$$2 = $372;
} else {
$369 = ($$0>>>0)>($8>>>0);
@@ -22054,29 +26262,29 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$5$lcssa = $$3477;
}
$383 = (($$5$lcssa) + 18)|0;
- _pad_674($0,48,$383,18,0);
+ _pad_672($0,48,$383,18,0);
$384 = $11;
$385 = $$2513;
$386 = (($384) - ($385))|0;
_out($0,$$2513,$386);
}
$387 = $4 ^ 8192;
- _pad_674($0,32,$2,$320,$387);
+ _pad_672($0,32,$2,$320,$387);
$$sink562 = $320;
} else {
$27 = $5 & 32;
$28 = ($27|0)!=(0);
- $29 = $28 ? 11930 : 11934;
+ $29 = $28 ? 11698 : 11702;
$30 = ($$0471 != $$0471) | (0.0 != 0.0);
- $31 = $28 ? 11938 : 11942;
+ $31 = $28 ? 11706 : 11710;
$$0510 = $30 ? $31 : $29;
$32 = (($$0520) + 3)|0;
$33 = $4 & -65537;
- _pad_674($0,32,$2,$32,$33);
+ _pad_672($0,32,$2,$32,$33);
_out($0,$$0521,$$0520);
_out($0,$$0510,3);
$34 = $4 ^ 8192;
- _pad_674($0,32,$2,$32,$34);
+ _pad_672($0,32,$2,$32,$34);
$$sink562 = $32;
}
} while(0);
@@ -22084,7 +26292,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$555 = $388 ? $2 : $$sink562;
STACKTOP = sp;return ($$555|0);
}
-function ___DOUBLE_BITS_675($0) {
+function ___DOUBLE_BITS_673($0) {
$0 = +$0;
var $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
@@ -22165,10 +26373,10 @@ function _wcrtomb($0,$1,$2) {
$$0 = 1;
break;
}
- $6 = (___pthread_self_448()|0);
+ $6 = (___pthread_self_446()|0);
$7 = ((($6)) + 188|0);
$8 = HEAP32[$7>>2]|0;
- $9 = HEAP32[$8>>2]|0;
+ $9 = (Atomics_load(HEAP32,$8>>2)|0);
$not$ = ($9|0)==(0|0);
if ($not$) {
$10 = $1 & -128;
@@ -22258,7 +26466,7 @@ function _wcrtomb($0,$1,$2) {
} while(0);
return ($$0|0);
}
-function ___pthread_self_448() {
+function ___pthread_self_446() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_pthread_self()|0);
@@ -22278,7 +26486,7 @@ function ___strerror_l($0,$1) {
sp = STACKTOP;
$$016 = 0;
while(1) {
- $3 = (11964 + ($$016)|0);
+ $3 = (11732 + ($$016)|0);
$4 = HEAP8[$3>>0]|0;
$5 = $4&255;
$6 = ($5|0)==($0|0);
@@ -22289,7 +26497,7 @@ function ___strerror_l($0,$1) {
$7 = (($$016) + 1)|0;
$8 = ($7|0)==(87);
if ($8) {
- $$01214 = 12052;$$115 = 87;
+ $$01214 = 11820;$$115 = 87;
label = 5;
break;
} else {
@@ -22299,9 +26507,9 @@ function ___strerror_l($0,$1) {
if ((label|0) == 2) {
$2 = ($$016|0)==(0);
if ($2) {
- $$012$lcssa = 12052;
+ $$012$lcssa = 11820;
} else {
- $$01214 = 12052;$$115 = $$016;
+ $$01214 = 11820;$$115 = $$016;
label = 5;
}
}
@@ -22331,7 +26539,7 @@ function ___strerror_l($0,$1) {
}
}
$14 = ((($1)) + 20|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = (___lctrans($$012$lcssa,$15)|0);
return ($16|0);
}
@@ -22938,13 +27146,13 @@ function ___stpcpy($0,$1) {
function ___ofl_lock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___lock((33168|0));
- return (33176|0);
+ ___lock((33332|0));
+ return (33340|0);
}
function ___ofl_unlock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___unlock((33168|0));
+ ___unlock((33332|0));
return;
}
function _fflush($0) {
@@ -22955,12 +27163,12 @@ function _fflush($0) {
$1 = ($0|0)==(0|0);
do {
if ($1) {
- $8 = HEAP32[838]|0;
+ $8 = (Atomics_load(HEAP32,780)|0);
$9 = ($8|0)==(0|0);
if ($9) {
$29 = 0;
} else {
- $10 = HEAP32[838]|0;
+ $10 = (Atomics_load(HEAP32,780)|0);
$11 = (_fflush($10)|0);
$29 = $11;
}
@@ -22973,7 +27181,7 @@ function _fflush($0) {
$$02327 = $$02325;$$02426 = $29;
while(1) {
$14 = ((($$02327)) + 76|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = ($15|0)>(-1);
if ($16) {
$17 = (___lockfile($$02327)|0);
@@ -23012,7 +27220,7 @@ function _fflush($0) {
$$0 = $$024$lcssa;
} else {
$2 = ((($0)) + 76|0);
- $3 = HEAP32[$2>>2]|0;
+ $3 = (Atomics_load(HEAP32,$2>>2)|0);
$4 = ($3|0)>(-1);
if (!($4)) {
$5 = (___fflush_unlocked($0)|0);
@@ -23784,7 +27992,7 @@ function _srand($0) {
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = (($0) + -1)|0;
- $2 = 14152;
+ $2 = 14304;
$3 = $2;
HEAP32[$3>>2] = $1;
$4 = (($2) + 4)|0;
@@ -23795,7 +28003,7 @@ function _srand($0) {
function _rand() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = 14152;
+ $0 = 14304;
$1 = $0;
$2 = HEAP32[$1>>2]|0;
$3 = (($0) + 4)|0;
@@ -23805,7 +28013,7 @@ function _rand() {
$7 = tempRet0;
$8 = (_i64Add(($6|0),($7|0),1,0)|0);
$9 = tempRet0;
- $10 = 14152;
+ $10 = 14304;
$11 = $10;
HEAP32[$11>>2] = $8;
$12 = (($10) + 4)|0;
@@ -23820,7 +28028,7 @@ function _vprintf($0,$1) {
$1 = $1|0;
var $2 = 0, $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[806]|0;
+ $2 = HEAP32[748]|0;
$3 = (_vfprintf($2,$0,$1)|0);
return ($3|0);
}
@@ -23927,7 +28135,7 @@ function _strtok($0,$1) {
sp = STACKTOP;
$2 = ($0|0)==(0|0);
if ($2) {
- $3 = HEAP32[8295]|0;
+ $3 = HEAP32[8336]|0;
$4 = ($3|0)==(0|0);
if ($4) {
$$0 = 0;
@@ -23946,22 +28154,22 @@ function _strtok($0,$1) {
$7 = HEAP8[$6>>0]|0;
$8 = ($7<<24>>24)==(0);
if ($8) {
- HEAP32[8295] = 0;
+ HEAP32[8336] = 0;
$$0 = 0;
break;
}
$9 = (_strcspn($6,$1)|0);
$10 = (($6) + ($9)|0);
- HEAP32[8295] = $10;
+ HEAP32[8336] = $10;
$11 = HEAP8[$10>>0]|0;
$12 = ($11<<24>>24)==(0);
if ($12) {
- HEAP32[8295] = 0;
+ HEAP32[8336] = 0;
$$0 = $6;
break;
} else {
$13 = ((($10)) + 1|0);
- HEAP32[8295] = $13;
+ HEAP32[8336] = $13;
HEAP8[$10>>0] = 0;
$$0 = $6;
break;
@@ -23970,112 +28178,2175 @@ function _strtok($0,$1) {
} while(0);
return ($$0|0);
}
-function _malloc($0) {
+function __emscripten_atomic_fetch_and_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_and_u64($0,$1,$2) {
$0 = $0|0;
- var $$$0192$i = 0, $$$0193$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0 = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i18$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0197 = 0, $$0199 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
- var $$0212$i$i = 0, $$024371$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1196$i = 0, $$1198$i = 0;
- var $$124470$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i201 = 0, $$3350$i = 0, $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0;
- var $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$723948$i = 0, $$749$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i19$i = 0, $$pre$i210 = 0, $$pre$i212 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i20$iZ2D = 0, $$pre$phi$i211Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0;
- var $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i204 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0;
- var $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0;
- var $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0;
- var $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0;
- var $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0;
- var $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0;
- var $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0;
- var $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0;
- var $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0;
- var $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0;
- var $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0;
- var $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0;
- var $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0;
- var $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0;
- var $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0;
- var $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0;
- var $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0;
- var $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0;
- var $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0;
- var $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0;
- var $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0;
- var $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0;
- var $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0;
- var $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0;
- var $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0;
- var $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0;
- var $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0;
- var $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0;
- var $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0;
- var $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0;
- var $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0;
- var $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0;
- var $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0;
- var $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0;
- var $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0;
- var $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0;
- var $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0;
- var $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0;
- var $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0;
- var $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0;
- var $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0;
- var $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0;
- var $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0;
- var $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0;
- var $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0;
- var $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0;
- var $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0;
- var $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0;
- var $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0;
- var $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0;
- var $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0;
- var $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0;
- var $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0;
- var $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0, $cond$i$i = 0, $cond$i208 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i17$i = 0, $not$$i209 = 0, $not$$i216 = 0, $not$1$i = 0, $not$1$i203 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0;
- var $or$cond$i = 0, $or$cond$i214 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond11$not$i = 0, $or$cond12$i = 0, $or$cond2$i = 0, $or$cond2$i215 = 0, $or$cond5$i = 0, $or$cond50$i = 0, $or$cond51$i = 0, $or$cond7$i = 0, label = 0, sp = 0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_async_run_in_main_thread($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$0$in = 0, $$0$in19 = 0, $$0$lcssa = 0, $$020 = 0, $$expand_i1_val = 0, $$lcssa = 0, $$lcssa18 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, $call_queue$init$val = 0, $call_queue$init$val$pre_trunc = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ($0|0)==(0|0);
+ if ($1) {
+ ___assert_fail((13914|0),(13746|0),260,(13919|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ if (!($3)) {
+ __do_call($0);
+ return;
+ }
+ (___pthread_mutex_lock(33864)|0);
+ $call_queue$init$val$pre_trunc = HEAP8[38379]|0;
+ $call_queue$init$val = $call_queue$init$val$pre_trunc&1;
+ if (!($call_queue$init$val)) {
+ $$expand_i1_val = 1;
+ HEAP8[38379] = $$expand_i1_val;
+ }
+ $4 = (Atomics_load(HEAP32, 8473)|0);
+ $5 = (Atomics_load(HEAP32, 8474)|0);
+ $$0$in19 = (($5) + 1)|0;
+ $$020 = (($$0$in19|0) % 128)&-1;
+ $6 = ($$020|0)==($4|0);
+ if ($6) {
+ $7 = $4;
+ while(1) {
+ (___pthread_mutex_unlock(33864)|0);
+ (_emscripten_futex_wait((33892|0),($7|0),inf)|0);
+ (___pthread_mutex_lock(33864)|0);
+ $8 = (Atomics_load(HEAP32, 8473)|0);
+ $9 = (Atomics_load(HEAP32, 8474)|0);
+ $$0$in = (($9) + 1)|0;
+ $$0 = (($$0$in|0) % 128)&-1;
+ $10 = ($$0|0)==($8|0);
+ if ($10) {
+ $7 = $8;
+ } else {
+ $$0$lcssa = $$0;$$lcssa = $9;$$lcssa18 = $8;
+ break;
+ }
+ }
+ } else {
+ $$0$lcssa = $$020;$$lcssa = $5;$$lcssa18 = $4;
+ }
+ $11 = (33900 + ($$lcssa<<2)|0);
+ HEAP32[$11>>2] = $0;
+ $12 = ($$lcssa18|0)==($$lcssa|0);
+ if ($12) {
+ _emscripten_asm_const_v(1);
+ }
+ $13 = (Atomics_store(HEAP32, 8474, $$0$lcssa)|0);
+ (___pthread_mutex_unlock(33864)|0);
+ return;
+}
+function _emscripten_atomic_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_cas_u64($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $5 = $0;
+ $6 = $5 >>> 3;
+ $7 = $6 & 255;
+ $8 = (34420 + ($7<<2)|0);
+ while(1) {
+ while(1) {
+ $9 = (Atomics_load(HEAP32, $8>>2)|0);
+ $10 = (Atomics_compareExchange(HEAP32, $8>>2, $9, 1)|0);
+ $11 = ($9|0)==($10|0);
+ if ($11) {
+ break;
+ }
+ }
+ $12 = ($9|0)==(0);
+ if ($12) {
+ break;
+ }
+ }
+ $13 = $0;
+ $14 = $13;
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (($13) + 4)|0;
+ $17 = $16;
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($15|0)==($1|0);
+ $20 = ($18|0)==($2|0);
+ $21 = $19 & $20;
+ if (!($21)) {
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+ }
+ $22 = $0;
+ $23 = $22;
+ HEAP32[$23>>2] = $3;
+ $24 = (($22) + 4)|0;
+ $25 = $24;
+ HEAP32[$25>>2] = $4;
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+}
+function _emscripten_atomic_exchange_u32($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ while(1) {
+ $2 = (Atomics_load(HEAP32, $0>>2)|0);
+ $3 = (Atomics_compareExchange(HEAP32, $0>>2, $2, $1)|0);
+ $4 = ($2|0)==($3|0);
+ if ($4) {
+ break;
+ }
+ }
+ return ($2|0);
+}
+function _emscripten_atomic_exchange_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
+ var sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $0;
+ $18 = $17;
+ HEAP32[$18>>2] = $1;
+ $19 = (($17) + 4)|0;
+ $20 = $19;
+ HEAP32[$20>>2] = $2;
+ $21 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_atomic_load_f32($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = (Atomics_load(HEAP32, $0>>2)|0);
+ $2 = (HEAP32[tempDoublePtr>>2]=$1,+HEAPF32[tempDoublePtr>>2]);
+ return (+$2);
+}
+function _emscripten_atomic_load_f64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34420 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = +HEAPF64[$0>>3];
+ $10 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ return (+$9);
+}
+function _emscripten_atomic_load_u64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34420 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = $0;
+ $10 = $9;
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (($9) + 4)|0;
+ $13 = $12;
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ tempRet0 = ($14);
+ return ($11|0);
+}
+function _emscripten_atomic_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_store_f32($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $2 = 0, $3 = 0, $4 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = (HEAPF32[tempDoublePtr>>2]=$1,HEAP32[tempDoublePtr>>2]|0);
+ $3 = (Atomics_store(HEAP32, $0>>2, $2)|0);
+ $4 = (+($3>>>0));
+ return (+$4);
+}
+function _emscripten_atomic_store_f64($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = $0;
+ $3 = $2 >>> 3;
+ $4 = $3 & 255;
+ $5 = (34420 + ($4<<2)|0);
+ while(1) {
+ while(1) {
+ $6 = (Atomics_load(HEAP32, $5>>2)|0);
+ $7 = (Atomics_compareExchange(HEAP32, $5>>2, $6, 1)|0);
+ $8 = ($6|0)==($7|0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = ($6|0)==(0);
+ if ($9) {
+ break;
+ }
+ }
+ HEAPF64[$0>>3] = $1;
+ $10 = (Atomics_store(HEAP32, $5>>2, 0)|0);
+ return (+$1);
+}
+function _emscripten_atomic_store_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ HEAP32[$12>>2] = $1;
+ $13 = (($11) + 4)|0;
+ $14 = $13;
+ HEAP32[$14>>2] = $2;
+ $15 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($2);
+ return ($1|0);
+}
+function _emscripten_atomic_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34420 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_main_thread_process_queued_calls() {
+ var $$0910 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_emscripten_is_main_runtime_thread()|0);
+ $1 = ($0|0)==(0);
+ if ($1) {
+ ___assert_fail((13624|0),(13746|0),424,(13810|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ $4 = HEAP32[8465]|0;
+ $5 = ($4|0)!=(0);
+ $or$cond = $3 | $5;
+ if ($or$cond) {
+ return;
+ }
+ HEAP32[8465] = 1;
+ (___pthread_mutex_lock(33864)|0);
+ $6 = (Atomics_load(HEAP32, 8473)|0);
+ $7 = (Atomics_load(HEAP32, 8474)|0);
+ $8 = ($6|0)==($7|0);
+ (___pthread_mutex_unlock(33864)|0);
+ if (!($8)) {
+ $$0910 = $6;
+ while(1) {
+ $9 = (33900 + ($$0910<<2)|0);
+ $10 = HEAP32[$9>>2]|0;
+ __do_call($10);
+ (___pthread_mutex_lock(33864)|0);
+ $11 = (($$0910) + 1)|0;
+ $12 = (($11|0) % 128)&-1;
+ $13 = (Atomics_store(HEAP32, 8473, $12)|0);
+ $14 = (Atomics_load(HEAP32, 8474)|0);
+ $15 = ($12|0)==($14|0);
+ (___pthread_mutex_unlock(33864)|0);
+ if ($15) {
+ break;
+ } else {
+ $$0910 = $12;
+ }
+ }
+ }
+ (_emscripten_futex_wake((33892|0),2147483647)|0);
+ HEAP32[8465] = 0;
+ return;
+}
+function _emscripten_sync_run_in_main_thread($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ _emscripten_async_run_in_main_thread($0);
+ (_emscripten_wait_for_call_v($0,inf)|0);
+ return;
+}
+function _emscripten_sync_run_in_main_thread_0($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $1 = sp;
+ dest=$1; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$1>>2] = $0;
+ $2 = ((($1)) + 80|0);
+ HEAP32[$2>>2] = 0;
+ _emscripten_async_run_in_main_thread($1);
+ (_emscripten_wait_for_call_v($1,inf)|0);
+ $3 = HEAP32[$2>>2]|0;
+ STACKTOP = sp;return ($3|0);
+}
+function _emscripten_sync_run_in_main_thread_1($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $2 = sp;
+ dest=$2; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$2>>2] = $0;
+ $3 = ((($2)) + 16|0);
+ HEAP32[$3>>2] = $1;
+ $4 = ((($2)) + 80|0);
+ HEAP32[$4>>2] = 0;
+ _emscripten_async_run_in_main_thread($2);
+ (_emscripten_wait_for_call_v($2,inf)|0);
+ $5 = HEAP32[$4>>2]|0;
+ STACKTOP = sp;return ($5|0);
+}
+function _emscripten_sync_run_in_main_thread_2($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $3 = sp;
+ dest=$3; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$3>>2] = $0;
+ $4 = ((($3)) + 16|0);
+ HEAP32[$4>>2] = $1;
+ $5 = ((($3)) + 24|0);
+ HEAP32[$5>>2] = $2;
+ $6 = ((($3)) + 80|0);
+ HEAP32[$6>>2] = 0;
+ _emscripten_async_run_in_main_thread($3);
+ (_emscripten_wait_for_call_v($3,inf)|0);
+ $7 = HEAP32[$6>>2]|0;
+ STACKTOP = sp;return ($7|0);
+}
+function _emscripten_sync_run_in_main_thread_3($0,$1,$2,$3) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $4 = sp;
+ dest=$4; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$4>>2] = $0;
+ $5 = ((($4)) + 16|0);
+ HEAP32[$5>>2] = $1;
+ $6 = ((($4)) + 24|0);
+ HEAP32[$6>>2] = $2;
+ $7 = ((($4)) + 32|0);
+ HEAP32[$7>>2] = $3;
+ $8 = ((($4)) + 80|0);
+ HEAP32[$8>>2] = 0;
+ _emscripten_async_run_in_main_thread($4);
+ (_emscripten_wait_for_call_v($4,inf)|0);
+ $9 = HEAP32[$8>>2]|0;
+ STACKTOP = sp;return ($9|0);
+}
+function _emscripten_sync_run_in_main_thread_4($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $5 = sp;
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $6 = ((($5)) + 16|0);
+ HEAP32[$6>>2] = $1;
+ $7 = ((($5)) + 24|0);
+ HEAP32[$7>>2] = $2;
+ $8 = ((($5)) + 32|0);
+ HEAP32[$8>>2] = $3;
+ $9 = ((($5)) + 40|0);
+ HEAP32[$9>>2] = $4;
+ $10 = ((($5)) + 80|0);
+ HEAP32[$10>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $11 = HEAP32[$10>>2]|0;
+ STACKTOP = sp;return ($11|0);
+}
+function _emscripten_sync_run_in_main_thread_5($0,$1,$2,$3,$4,$5) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $6 = sp;
+ dest=$6; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$6>>2] = $0;
+ $7 = ((($6)) + 16|0);
+ HEAP32[$7>>2] = $1;
+ $8 = ((($6)) + 24|0);
+ HEAP32[$8>>2] = $2;
+ $9 = ((($6)) + 32|0);
+ HEAP32[$9>>2] = $3;
+ $10 = ((($6)) + 40|0);
+ HEAP32[$10>>2] = $4;
+ $11 = ((($6)) + 48|0);
+ HEAP32[$11>>2] = $5;
+ $12 = ((($6)) + 80|0);
+ HEAP32[$12>>2] = 0;
+ _emscripten_async_run_in_main_thread($6);
+ (_emscripten_wait_for_call_v($6,inf)|0);
+ $13 = HEAP32[$12>>2]|0;
+ STACKTOP = sp;return ($13|0);
+}
+function _emscripten_sync_run_in_main_thread_6($0,$1,$2,$3,$4,$5,$6) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $7 = sp;
+ dest=$7; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$7>>2] = $0;
+ $8 = ((($7)) + 16|0);
+ HEAP32[$8>>2] = $1;
+ $9 = ((($7)) + 24|0);
+ HEAP32[$9>>2] = $2;
+ $10 = ((($7)) + 32|0);
+ HEAP32[$10>>2] = $3;
+ $11 = ((($7)) + 40|0);
+ HEAP32[$11>>2] = $4;
+ $12 = ((($7)) + 48|0);
+ HEAP32[$12>>2] = $5;
+ $13 = ((($7)) + 56|0);
+ HEAP32[$13>>2] = $6;
+ $14 = ((($7)) + 80|0);
+ HEAP32[$14>>2] = 0;
+ _emscripten_async_run_in_main_thread($7);
+ (_emscripten_wait_for_call_v($7,inf)|0);
+ $15 = HEAP32[$14>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function _emscripten_sync_run_in_main_thread_7($0,$1,$2,$3,$4,$5,$6,$7) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ $7 = $7|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $8 = sp;
+ dest=$8; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$8>>2] = $0;
+ $9 = ((($8)) + 16|0);
+ HEAP32[$9>>2] = $1;
+ $10 = ((($8)) + 24|0);
+ HEAP32[$10>>2] = $2;
+ $11 = ((($8)) + 32|0);
+ HEAP32[$11>>2] = $3;
+ $12 = ((($8)) + 40|0);
+ HEAP32[$12>>2] = $4;
+ $13 = ((($8)) + 48|0);
+ HEAP32[$13>>2] = $5;
+ $14 = ((($8)) + 56|0);
+ HEAP32[$14>>2] = $6;
+ $15 = ((($8)) + 64|0);
+ HEAP32[$15>>2] = $7;
+ $16 = ((($8)) + 80|0);
+ HEAP32[$16>>2] = 0;
+ _emscripten_async_run_in_main_thread($8);
+ (_emscripten_wait_for_call_v($8,inf)|0);
+ $17 = HEAP32[$16>>2]|0;
+ STACKTOP = sp;return ($17|0);
+}
+function _emscripten_sync_run_in_main_thread_xprintf_varargs($0,$1,$2,$varargs) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $varargs = $varargs|0;
+ var $$0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 240|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(240|0);
+ $3 = sp + 96|0;
+ $4 = sp + 112|0;
+ $5 = sp;
+ HEAP32[$3>>2] = $varargs;
+ $6 = (_vsnprintf($4,128,$2,$3)|0);
+ $7 = ($6|0)>(127);
+ $8 = (($6) + 1)|0;
+ if ($7) {
+ $9 = (_malloc($8)|0);
+ HEAP32[$3>>2] = $varargs;
+ (_vsnprintf($9,$8,$2,$3)|0);
+ $$0 = $9;
+ } else {
+ $$0 = $4;
+ }
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $10 = $1;
+ $11 = ((($5)) + 16|0);
+ HEAP32[$11>>2] = $10;
+ $12 = ((($5)) + 24|0);
+ HEAP32[$12>>2] = $$0;
+ $13 = ((($5)) + 80|0);
+ HEAP32[$13>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $14 = ($$0|0)==($4|0);
+ if ($14) {
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+ }
+ _free($$0);
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function ___pthread_tsd_run_dtors() {
+ var $$02427 = 0, $$026 = 0, $$125 = 0, $$2 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, $exitcond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 60|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ $4 = ((($0)) + 116|0);
+ $$02427 = 0;
+ while(1) {
+ $$026 = 0;$$125 = 0;
+ while(1) {
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (($5) + ($$026<<2)|0);
+ $7 = HEAP32[$6>>2]|0;
+ $8 = ($7|0)==(0|0);
+ if ($8) {
+ $$2 = $$125;
+ } else {
+ $9 = (33348 + ($$026<<2)|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = ($10|0)==(0|0);
+ if ($11) {
+ $$2 = $$125;
+ } else {
+ HEAP32[$6>>2] = 0;
+ $12 = (Atomics_load(HEAP32,$9>>2)|0);
+ FUNCTION_TABLE_vi[$12 & 31]($7);
+ $$2 = 1;
+ }
+ }
+ $13 = (($$026) + 1)|0;
+ $exitcond = ($13|0)==(128);
+ if ($exitcond) {
+ break;
+ } else {
+ $$026 = $13;$$125 = $$2;
+ }
+ }
+ $14 = (($$02427) + 1)|0;
+ $15 = ($$2|0)!=(0);
+ $16 = ($14|0)<(4);
+ $17 = $16 & $15;
+ if ($17) {
+ $$02427 = $14;
+ } else {
+ break;
+ }
+ }
+ return;
+}
+function _emscripten_wait_for_call_v($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $$ = 0, $$01921 = 0.0, $$020$lcssa = 0, $$1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = ((($0)) + 8|0);
+ $3 = (Atomics_load(HEAP32, $2>>2)|0);
+ $4 = ($3|0)==(0);
+ if (!($4)) {
+ $$1 = $3;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+ }
+ $5 = (+_emscripten_get_now());
+ $6 = $5 + $1;
+ _emscripten_set_current_thread_status(5);
+ $7 = $5 < $6;
+ if ($7) {
+ $$01921 = $5;
+ while(1) {
+ $8 = $6 - $$01921;
+ (_emscripten_futex_wait(($2|0),0,(+$8))|0);
+ $9 = (Atomics_load(HEAP32, $2>>2)|0);
+ $10 = (+_emscripten_get_now());
+ $11 = ($9|0)==(0);
+ $12 = $10 < $6;
+ $or$cond = $11 & $12;
+ if ($or$cond) {
+ $$01921 = $10;
+ } else {
+ $$020$lcssa = $9;
+ break;
+ }
+ }
+ } else {
+ $$020$lcssa = 0;
+ }
+ _emscripten_set_current_thread_status(1);
+ $$1 = $$020$lcssa;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+}
+function __do_call($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0;
+ var $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ do {
+ switch ($1|0) {
+ case 12: {
+ $2 = ((($0)) + 16|0);
+ $3 = HEAP32[$2>>2]|0;
+ $4 = ((($0)) + 24|0);
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (_utime(($3|0),($5|0))|0);
+ $7 = ((($0)) + 80|0);
+ HEAP32[$7>>2] = $6;
+ break;
+ }
+ case 13: {
+ $8 = ((($0)) + 16|0);
+ $9 = HEAP32[$8>>2]|0;
+ $10 = ((($0)) + 24|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (_utimes(($9|0),($11|0))|0);
+ $13 = ((($0)) + 80|0);
+ HEAP32[$13>>2] = $12;
+ break;
+ }
+ case 37: {
+ $14 = ((($0)) + 16|0);
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (_chroot(($15|0))|0);
+ $17 = ((($0)) + 80|0);
+ HEAP32[$17>>2] = $16;
+ break;
+ }
+ case 46: {
+ $18 = ((($0)) + 16|0);
+ $19 = HEAP32[$18>>2]|0;
+ $20 = ((($0)) + 24|0);
+ $21 = HEAP32[$20>>2]|0;
+ $22 = (_fpathconf(($19|0),($21|0))|0);
+ $23 = ((($0)) + 80|0);
+ HEAP32[$23>>2] = $22;
+ break;
+ }
+ case 68: {
+ $24 = ((($0)) + 16|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = ((($0)) + 24|0);
+ $27 = HEAP32[$26>>2]|0;
+ $28 = ((($0)) + 32|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = (_confstr(($25|0),($27|0),($29|0))|0);
+ $31 = ((($0)) + 80|0);
+ HEAP32[$31>>2] = $30;
+ break;
+ }
+ case 72: {
+ $32 = ((($0)) + 16|0);
+ $33 = HEAP32[$32>>2]|0;
+ $34 = (_sysconf(($33|0))|0);
+ $35 = ((($0)) + 80|0);
+ HEAP32[$35>>2] = $34;
+ break;
+ }
+ case 110: {
+ $36 = ((($0)) + 16|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = (_atexit(($37|0))|0);
+ $39 = ((($0)) + 80|0);
+ HEAP32[$39>>2] = $38;
+ break;
+ }
+ case 111: {
+ $40 = ((($0)) + 16|0);
+ $41 = HEAP32[$40>>2]|0;
+ $42 = (_getenv(($41|0))|0);
+ $43 = ((($0)) + 80|0);
+ HEAP32[$43>>2] = $42;
+ break;
+ }
+ case 112: {
+ $44 = (_clearenv()|0);
+ $45 = ((($0)) + 80|0);
+ HEAP32[$45>>2] = $44;
+ break;
+ }
+ case 113: {
+ $46 = ((($0)) + 16|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ((($0)) + 24|0);
+ $49 = HEAP32[$48>>2]|0;
+ $50 = ((($0)) + 32|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = (_setenv(($47|0),($49|0),($51|0))|0);
+ $53 = ((($0)) + 80|0);
+ HEAP32[$53>>2] = $52;
+ break;
+ }
+ case 114: {
+ $54 = ((($0)) + 16|0);
+ $55 = HEAP32[$54>>2]|0;
+ $56 = (_unsetenv(($55|0))|0);
+ $57 = ((($0)) + 80|0);
+ HEAP32[$57>>2] = $56;
+ break;
+ }
+ case 115: {
+ $58 = ((($0)) + 16|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = (_putenv(($59|0))|0);
+ $61 = ((($0)) + 80|0);
+ HEAP32[$61>>2] = $60;
+ break;
+ }
+ case 119: {
+ _tzset();
+ break;
+ }
+ case 137: {
+ $62 = ((($0)) + 16|0);
+ $63 = HEAP32[$62>>2]|0;
+ $64 = ((($0)) + 24|0);
+ $65 = HEAP32[$64>>2]|0;
+ $66 = ((($0)) + 32|0);
+ $67 = HEAP32[$66>>2]|0;
+ $68 = ((($0)) + 40|0);
+ $69 = HEAP32[$68>>2]|0;
+ $70 = (_pthread_create(($63|0),($65|0),($67|0),($69|0))|0);
+ $71 = ((($0)) + 80|0);
+ HEAP32[$71>>2] = $70;
+ break;
+ }
+ case 138: {
+ $72 = ((($0)) + 16|0);
+ $73 = HEAP32[$72>>2]|0;
+ $74 = ((($0)) + 24|0);
+ $75 = HEAP32[$74>>2]|0;
+ $76 = (_emscripten_syscall(($73|0),($75|0))|0);
+ $77 = ((($0)) + 80|0);
+ HEAP32[$77>>2] = $76;
+ break;
+ }
+ case 1024: {
+ $78 = ((($0)) + 4|0);
+ $79 = HEAP32[$78>>2]|0;
+ FUNCTION_TABLE_v[$79 & 7]();
+ break;
+ }
+ case 1025: {
+ $80 = ((($0)) + 4|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ((($0)) + 16|0);
+ $83 = HEAP32[$82>>2]|0;
+ FUNCTION_TABLE_vi[$81 & 31]($83);
+ break;
+ }
+ case 1026: {
+ $84 = ((($0)) + 4|0);
+ $85 = HEAP32[$84>>2]|0;
+ $86 = ((($0)) + 16|0);
+ $87 = HEAP32[$86>>2]|0;
+ $88 = ((($0)) + 24|0);
+ $89 = HEAP32[$88>>2]|0;
+ FUNCTION_TABLE_vii[$85 & 63]($87,$89);
+ break;
+ }
+ case 1027: {
+ $90 = ((($0)) + 4|0);
+ $91 = HEAP32[$90>>2]|0;
+ $92 = ((($0)) + 16|0);
+ $93 = HEAP32[$92>>2]|0;
+ $94 = ((($0)) + 24|0);
+ $95 = HEAP32[$94>>2]|0;
+ $96 = ((($0)) + 32|0);
+ $97 = HEAP32[$96>>2]|0;
+ FUNCTION_TABLE_viii[$91 & 31]($93,$95,$97);
+ break;
+ }
+ case 2048: {
+ $98 = ((($0)) + 4|0);
+ $99 = HEAP32[$98>>2]|0;
+ $100 = (FUNCTION_TABLE_i[$99 & 3]()|0);
+ $101 = ((($0)) + 80|0);
+ HEAP32[$101>>2] = $100;
+ break;
+ }
+ case 2049: {
+ $102 = ((($0)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ((($0)) + 16|0);
+ $105 = HEAP32[$104>>2]|0;
+ $106 = (FUNCTION_TABLE_ii[$103 & 15]($105)|0);
+ $107 = ((($0)) + 80|0);
+ HEAP32[$107>>2] = $106;
+ break;
+ }
+ case 2050: {
+ $108 = ((($0)) + 4|0);
+ $109 = HEAP32[$108>>2]|0;
+ $110 = ((($0)) + 16|0);
+ $111 = HEAP32[$110>>2]|0;
+ $112 = ((($0)) + 24|0);
+ $113 = HEAP32[$112>>2]|0;
+ $114 = (FUNCTION_TABLE_iii[$109 & 3]($111,$113)|0);
+ $115 = ((($0)) + 80|0);
+ HEAP32[$115>>2] = $114;
+ break;
+ }
+ case 2051: {
+ $116 = ((($0)) + 4|0);
+ $117 = HEAP32[$116>>2]|0;
+ $118 = ((($0)) + 16|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = ((($0)) + 24|0);
+ $121 = HEAP32[$120>>2]|0;
+ $122 = ((($0)) + 32|0);
+ $123 = HEAP32[$122>>2]|0;
+ $124 = (FUNCTION_TABLE_iiii[$117 & 15]($119,$121,$123)|0);
+ $125 = ((($0)) + 80|0);
+ HEAP32[$125>>2] = $124;
+ break;
+ }
+ default: {
+ ___assert_fail((13854|0),(13746|0),211,(13905|0));
+ // unreachable;
+ }
+ }
+ } while(0);
+ $126 = ((($0)) + 88|0);
+ $127 = HEAP32[$126>>2]|0;
+ $128 = ($127|0)==(0);
+ if ($128) {
+ $129 = ((($0)) + 8|0);
+ HEAP32[$129>>2] = 1;
+ (_emscripten_futex_wake(($129|0),2147483647)|0);
+ return;
+ } else {
+ _free($0);
+ return;
+ }
+}
+function ___pthread_mutex_unlock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$045 = 0, $$pre = 0, $$pre$phiZ2D = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
+ var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $5 = 0, $6 = 0;
+ var $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ((($0)) + 8|0);
+ $2 = (Atomics_load(HEAP32,$1>>2)|0);
+ $3 = HEAP32[$0>>2]|0;
+ $4 = $3 & 15;
+ $5 = $3 & 128;
+ $6 = $5 ^ 128;
+ $7 = ($4|0)==(0);
+ if ($7) {
+ $$pre = ((($0)) + 4|0);
+ $$045 = 0;$$pre$phiZ2D = $$pre;
+ } else {
+ $8 = (_pthread_self()|0);
+ $9 = ((($0)) + 4|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = $10 & 2147483647;
+ $12 = ((($8)) + 52|0);
+ $13 = HEAP32[$12>>2]|0;
+ $14 = ($11|0)==($13|0);
+ if (!($14)) {
+ $$0 = 1;
+ return ($$0|0);
+ }
+ $15 = $3 & 3;
+ $16 = ($15|0)==(1);
+ if ($16) {
+ $17 = ((($0)) + 20|0);
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($18|0)==(0);
+ if (!($19)) {
+ $20 = (($18) + -1)|0;
+ HEAP32[$17>>2] = $20;
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $21 = ($6|0)==(0);
+ $22 = ((($0)) + 16|0);
+ if ($21) {
+ $23 = ((($8)) + 176|0);
+ Atomics_store(HEAP32,$23>>2,$22)|0;
+ ___vm_lock();
+ }
+ $24 = ((($0)) + 12|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = HEAP32[$22>>2]|0;
+ Atomics_store(HEAP32,$25>>2,$26)|0;
+ $27 = ((($8)) + 168|0);
+ $28 = ($26|0)==($27|0);
+ if ($28) {
+ $$045 = $8;$$pre$phiZ2D = $9;
+ } else {
+ $29 = ((($26)) + -4|0);
+ Atomics_store(HEAP32,$29>>2,$25)|0;
+ $$045 = $8;$$pre$phiZ2D = $9;
+ }
+ }
+ $30 = $3 & 8;
+ $31 = ($30|0)!=(0);
+ $32 = $31 ? 2147483647 : 0;
+ while(1) {
+ $33 = (Atomics_load(HEAP32, $$pre$phiZ2D>>2)|0);
+ $34 = (Atomics_compareExchange(HEAP32, $$pre$phiZ2D>>2, $33, $32)|0);
+ $35 = ($34|0)==($33|0);
+ if ($35) {
+ break;
+ }
+ }
+ $36 = ($6|0)!=(0);
+ $or$cond = $7 | $36;
+ if (!($or$cond)) {
+ $37 = ((($$045)) + 176|0);
+ Atomics_store(HEAP32,$37>>2,0)|0;
+ ___vm_unlock();
+ }
+ $38 = ($2|0)!=(0);
+ $39 = ($33|0)<(0);
+ $or$cond3 = $38 | $39;
+ if (!($or$cond3)) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ (_emscripten_futex_wake(($$pre$phiZ2D|0),1)|0);
+ $$0 = 0;
+ return ($$0|0);
+}
+function ___vm_lock() {
+ var $0 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8603, 1)|0);
+ return;
+}
+function ___vm_unlock() {
+ var $0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8603, -1)|0);
+ $1 = ($0|0)==(1);
+ if (!($1)) {
+ return;
+ }
+ $2 = (Atomics_load(HEAP32,(34416)>>2)|0);
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ (_emscripten_futex_wake((34412|0),2147483647)|0);
+ return;
+}
+function ___pthread_mutex_lock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = ($5|0)==(0);
+ if ($6) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $7 = (___pthread_mutex_timedlock($0,0)|0);
+ $$0 = $7;
+ return ($$0|0);
+}
+function ___pthread_mutex_timedlock($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$0 = 0, $$2 = 0, $$pre = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
+ var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
+ var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond40 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = HEAP32[$0>>2]|0;
+ $3 = $2 & 15;
+ $4 = ($3|0)==(0);
+ do {
+ if ($4) {
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_compareExchange(HEAP32, $5>>2, 0, 16)|0);
+ $7 = ($6|0)==(0);
+ if ($7) {
+ $$2 = 0;
+ return ($$2|0);
+ } else {
+ $$pre = HEAP32[$0>>2]|0;
+ $9 = $$pre;
+ break;
+ }
+ } else {
+ $9 = $2;
+ }
+ } while(0);
+ $8 = $9 & 128;
+ $10 = $8 ^ 128;
+ $11 = (___pthread_mutex_trylock($0)|0);
+ $12 = ($11|0)==(16);
+ if (!($12)) {
+ $$2 = $11;
+ return ($$2|0);
+ }
+ $13 = ((($0)) + 4|0);
+ $14 = ((($0)) + 8|0);
+ $$0 = 100;
+ while(1) {
+ $15 = (($$0) + -1)|0;
+ $16 = ($$0|0)==(0);
+ if ($16) {
+ break;
+ }
+ $17 = (Atomics_load(HEAP32,$13>>2)|0);
+ $18 = ($17|0)==(0);
+ if ($18) {
+ break;
+ }
+ $19 = (Atomics_load(HEAP32,$14>>2)|0);
+ $20 = ($19|0)==(0);
+ if ($20) {
+ $$0 = $15;
+ } else {
+ break;
+ }
+ }
+ $21 = (___pthread_mutex_trylock($0)|0);
+ $22 = ($21|0)==(16);
+ if (!($22)) {
+ $$2 = $21;
+ return ($$2|0);
+ }
+ L18: while(1) {
+ $23 = (Atomics_load(HEAP32,$13>>2)|0);
+ $24 = ($23|0)==(0);
+ if (!($24)) {
+ $27 = $23 & 1073741824;
+ $28 = ($27|0)==(0);
+ $29 = HEAP32[$0>>2]|0;
+ $30 = $29 & 4;
+ $31 = ($30|0)==(0);
+ $or$cond40 = $28 | $31;
+ if ($or$cond40) {
+ $32 = $29 & 3;
+ $33 = ($32|0)==(2);
+ if ($33) {
+ $34 = $23 & 2147483647;
+ $35 = (_pthread_self()|0);
+ $36 = ((($35)) + 52|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($34|0)==($37|0);
+ if ($38) {
+ $$2 = 35;
+ label = 17;
+ break;
+ }
+ }
+ $39 = (Atomics_add(HEAP32, $14>>2, 1)|0);
+ $40 = $23 | -2147483648;
+ $41 = (Atomics_compareExchange(HEAP32, $13>>2, $23, $40)|0);
+ $42 = (___timedwait($13,$40,0,$1,$10)|0);
+ $43 = (Atomics_sub(HEAP32, $14>>2, 1)|0);
+ switch ($42|0) {
+ case 0: case 4: {
+ break;
+ }
+ default: {
+ $$2 = $42;
+ label = 17;
+ break L18;
+ }
+ }
+ }
+ }
+ $25 = (___pthread_mutex_trylock($0)|0);
+ $26 = ($25|0)==(16);
+ if (!($26)) {
+ $$2 = $25;
+ label = 17;
+ break;
+ }
+ }
+ if ((label|0) == 17) {
+ return ($$2|0);
+ }
+ return (0)|0;
+}
+function ___timedwait($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ (___pthread_setcancelstate(1,($5|0))|0);
+ _emscripten_conditional_set_current_thread_status(1,4);
+ $6 = (___timedwait_cp($0,$1,$2,$3,$4)|0);
+ _emscripten_conditional_set_current_thread_status(4,1);
+ $7 = HEAP32[$5>>2]|0;
+ (___pthread_setcancelstate(($7|0),(0|0))|0);
+ STACKTOP = sp;return ($6|0);
+}
+function ___timedwait_cp($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $$$0$us = 0.0, $$$045 = 0.0, $$$046$us = 0.0, $$0$us = 0.0, $$0$us53 = 0.0, $$138 = 0, $$138$ph = 0, $$138$ph70 = 0, $$138$ph72 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0;
+ var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $40 = 0;
+ var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ $6 = ($3|0)!=(0|0);
+ if ($6) {
+ $7 = ((($3)) + 4|0);
+ $8 = HEAP32[$7>>2]|0;
+ $9 = ($8>>>0)>(999999999);
+ if ($9) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $10 = (___clock_gettime(($2|0),($5|0))|0);
+ $11 = ($10|0)==(0);
+ if (!($11)) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $12 = HEAP32[$3>>2]|0;
+ $13 = HEAP32[$5>>2]|0;
+ $14 = (($12) - ($13))|0;
+ HEAP32[$5>>2] = $14;
+ $15 = HEAP32[$7>>2]|0;
+ $16 = ((($5)) + 4|0);
+ $17 = HEAP32[$16>>2]|0;
+ $18 = (($15) - ($17))|0;
+ HEAP32[$16>>2] = $18;
+ $19 = ($18|0)<(0);
+ if ($19) {
+ $20 = (($14) + -1)|0;
+ HEAP32[$5>>2] = $20;
+ $21 = (($18) + 1000000000)|0;
+ HEAP32[$16>>2] = $21;
+ $23 = $20;
+ } else {
+ $23 = $14;
+ }
+ $22 = ($23|0)<(0);
+ if ($22) {
+ $$138 = 110;
+ STACKTOP = sp;return ($$138|0);
+ }
+ }
+ $24 = (_emscripten_is_main_runtime_thread()|0);
+ $25 = ($24|0)!=(0);
+ $$$045 = $25 ? 1.0 : 100.0;
+ if ($25) {
+ L15: while(1) {
+ $26 = (_pthread_self()|0);
+ $27 = (__pthread_isduecanceled($26)|0);
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $$138$ph = 125;
+ break;
+ }
+ _emscripten_main_thread_process_queued_calls();
+ if ($6) {
+ $29 = (+__pthread_msecs_until($3));
+ $30 = !($29 <= 0.0);
+ $31 = $29 > 100.0;
+ $$0$us = $31 ? 100.0 : $29;
+ $32 = $$0$us > 1.0;
+ $$$0$us = $32 ? 1.0 : $$0$us;
+ if ($30) {
+ $$$046$us = $$$0$us;
+ } else {
+ $$138$ph = 110;
+ break;
+ }
+ } else {
+ $$$046$us = $$$045;
+ }
+ $33 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$046$us))|0);
+ $34 = (0 - ($33))|0;
+ switch ($34|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph = $34;
+ break L15;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L15;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph;
+ STACKTOP = sp;return ($$138|0);
+ }
+ if (!($6)) {
+ L27: while(1) {
+ $43 = (_pthread_self()|0);
+ $44 = (__pthread_isduecanceled($43)|0);
+ $45 = ($44|0)==(0);
+ if (!($45)) {
+ $$138$ph72 = 125;
+ break;
+ }
+ $46 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$045))|0);
+ $47 = (0 - ($46))|0;
+ switch ($47|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph72 = $47;
+ break L27;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L27;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph72;
+ STACKTOP = sp;return ($$138|0);
+ }
+ L34: while(1) {
+ $35 = (_pthread_self()|0);
+ $36 = (__pthread_isduecanceled($35)|0);
+ $37 = ($36|0)==(0);
+ if (!($37)) {
+ $$138$ph70 = 125;
+ break;
+ }
+ $38 = (+__pthread_msecs_until($3));
+ $39 = !($38 <= 0.0);
+ if (!($39)) {
+ $$138$ph70 = 110;
+ break;
+ }
+ $40 = $38 > 100.0;
+ $$0$us53 = $40 ? 100.0 : $38;
+ $41 = (_emscripten_futex_wait(($0|0),($1|0),(+$$0$us53))|0);
+ $42 = (0 - ($41))|0;
+ switch ($42|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph70 = $42;
+ break L34;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L34;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph70;
+ STACKTOP = sp;return ($$138|0);
+}
+function __pthread_isduecanceled($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = ($1|0)==(2);
+ $3 = $2&1;
+ return ($3|0);
+}
+function __pthread_msecs_until($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
- $2 = ($0>>>0)<(245);
+ (_gettimeofday(($1|0),(0|0))|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = (+($2|0));
+ $4 = $3 * 1000.0;
+ $5 = ((($1)) + 4|0);
+ $6 = HEAP32[$5>>2]|0;
+ $7 = (+($6|0));
+ $8 = $7 * 0.001;
+ $9 = $4 + $8;
+ $10 = HEAP32[$0>>2]|0;
+ $11 = (+($10|0));
+ $12 = $11 * 1000.0;
+ $13 = ((($0)) + 4|0);
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (+($14|0));
+ $16 = $15 * 9.9999999999999995E-7;
+ $17 = $12 + $16;
+ $18 = $17 - $9;
+ STACKTOP = sp;return (+$18);
+}
+function ___pthread_mutex_trylock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = $5 & 16;
+ $$0 = $6;
+ return ($$0|0);
+ } else {
+ $7 = (___pthread_mutex_trylock_owner($0)|0);
+ $$0 = $7;
+ return ($$0|0);
+ }
+ return (0)|0;
+}
+function ___pthread_mutex_trylock_owner($0) {
+ $0 = $0|0;
+ var $$ = 0, $$1 = 0, $$154 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0;
+ var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0;
+ var $43 = 0, $44 = 0, $45 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond57 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = (_pthread_self()|0);
+ $3 = ((($2)) + 52|0);
+ $4 = HEAP32[$3>>2]|0;
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_load(HEAP32,$5>>2)|0);
+ $7 = $6 & 2147483647;
+ $8 = ($7|0)==($4|0);
+ $9 = $1 & 3;
+ $10 = ($9|0)==(1);
+ $or$cond = $10 & $8;
+ if ($or$cond) {
+ $11 = ((($0)) + 20|0);
+ $12 = HEAP32[$11>>2]|0;
+ $13 = ($12>>>0)>(2147483646);
+ if ($13) {
+ $$1 = 11;
+ return ($$1|0);
+ }
+ $14 = (($12) + 1)|0;
+ HEAP32[$11>>2] = $14;
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $15 = ($7|0)==(2147483647);
+ if ($15) {
+ $$1 = 131;
+ return ($$1|0);
+ }
+ $16 = HEAP32[$0>>2]|0;
+ $17 = $16 & 128;
+ $18 = ($17|0)==(0);
+ if ($18) {
+ $$154 = $4;
+ } else {
+ $19 = ((($2)) + 172|0);
+ $20 = HEAP32[$19>>2]|0;
+ $21 = ($20|0)==(0);
+ if ($21) {
+ HEAP32[$19>>2] = -12;
+ }
+ $22 = ((($0)) + 8|0);
+ $23 = (Atomics_load(HEAP32,$22>>2)|0);
+ $24 = ($23|0)==(0);
+ $25 = $4 | -2147483648;
+ $$ = $24 ? $4 : $25;
+ $26 = ((($0)) + 16|0);
+ $27 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$27>>2,$26)|0;
+ $$154 = $$;
+ }
+ $28 = ($7|0)!=(0);
+ if ($28) {
+ $29 = $6 & 1073741824;
+ $30 = ($29|0)==(0);
+ $31 = $1 & 4;
+ $32 = ($31|0)==(0);
+ $or$cond57 = $32 | $30;
+ if (!($or$cond57)) {
+ label = 11;
+ }
+ } else {
+ label = 11;
+ }
+ if ((label|0) == 11) {
+ $33 = (Atomics_compareExchange(HEAP32, $5>>2, $6, $$154)|0);
+ $34 = ($33|0)==($6|0);
+ if ($34) {
+ $36 = ((($2)) + 168|0);
+ $37 = (Atomics_load(HEAP32,$36>>2)|0);
+ $38 = ((($0)) + 16|0);
+ HEAP32[$38>>2] = $37;
+ $39 = ((($0)) + 12|0);
+ HEAP32[$39>>2] = $36;
+ $40 = ($37|0)==($36|0);
+ if (!($40)) {
+ $41 = ((($37)) + -4|0);
+ Atomics_store(HEAP32,$41>>2,$38)|0;
+ }
+ Atomics_store(HEAP32,$36>>2,$38)|0;
+ $42 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$42>>2,0)|0;
+ if (!($28)) {
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $43 = ((($0)) + 20|0);
+ HEAP32[$43>>2] = 0;
+ $44 = HEAP32[$0>>2]|0;
+ $45 = $44 | 8;
+ HEAP32[$0>>2] = $45;
+ $$1 = 130;
+ return ($$1|0);
+ }
+ }
+ $35 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$35>>2,0)|0;
+ $$1 = 16;
+ return ($$1|0);
+}
+function _pthread_mutexattr_destroy($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ return 0;
+}
+function _pthread_mutexattr_init($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ HEAP32[$0>>2] = 0;
+ return 0;
+}
+function _pthread_mutex_init($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$sroa$0 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
+ $$sroa$0 = sp;
+ ;HEAP32[$$sroa$0>>2]=0|0;HEAP32[$$sroa$0+4>>2]=0|0;HEAP32[$$sroa$0+8>>2]=0|0;HEAP32[$$sroa$0+12>>2]=0|0;HEAP32[$$sroa$0+16>>2]=0|0;HEAP32[$$sroa$0+20>>2]=0|0;HEAP32[$$sroa$0+24>>2]=0|0;
+ ;HEAP32[$0>>2]=HEAP32[$$sroa$0>>2]|0;HEAP32[$0+4>>2]=HEAP32[$$sroa$0+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[$$sroa$0+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[$$sroa$0+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[$$sroa$0+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[$$sroa$0+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[$$sroa$0+24>>2]|0;
+ $2 = ($1|0)==(0|0);
+ if ($2) {
+ STACKTOP = sp;return 0;
+ }
+ $3 = HEAP32[$1>>2]|0;
+ HEAP32[$0>>2] = $3;
+ STACKTOP = sp;return 0;
+}
+function _malloc($0) {
+ $0 = $0|0;
+ var $$$0192$i = 0, $$$0193$i = 0, $$$4230$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i17$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0198 = 0, $$0200 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
+ var $$0212$i$i = 0, $$024363$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1 = 0, $$1196$i = 0;
+ var $$1198$i = 0, $$124462$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2 = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i202 = 0, $$3229$i = 0, $$3235$i = 0, $$3350$i = 0;
+ var $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0, $$4230$i = 0, $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$7$i = 0, $$7239$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i18$i = 0, $$pre$i211 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i19$iZ2D = 0;
+ var $$pre$phi$i212Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0, $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i205 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0;
+ var $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0;
+ var $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0;
+ var $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0;
+ var $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0;
+ var $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0, $1088 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0;
+ var $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0;
+ var $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0;
+ var $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0;
+ var $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0;
+ var $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0;
+ var $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0;
+ var $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0;
+ var $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0;
+ var $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0;
+ var $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0;
+ var $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0;
+ var $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0;
+ var $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0;
+ var $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0;
+ var $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0;
+ var $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0;
+ var $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0;
+ var $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0;
+ var $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0;
+ var $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0;
+ var $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0;
+ var $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0;
+ var $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0;
+ var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0;
+ var $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0;
+ var $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0;
+ var $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0;
+ var $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0;
+ var $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0;
+ var $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0;
+ var $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0;
+ var $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0;
+ var $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0;
+ var $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0;
+ var $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0;
+ var $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0;
+ var $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0;
+ var $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0;
+ var $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0;
+ var $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0;
+ var $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0;
+ var $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0;
+ var $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0;
+ var $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0;
+ var $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0;
+ var $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0;
+ var $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0;
+ var $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0;
+ var $cond$i$i = 0, $cond$i209 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i21$i = 0, $not$$i210 = 0, $not$1$i = 0, $not$1$i204 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0, $or$cond$i = 0, $or$cond$i213 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond12$i = 0, $or$cond2$i = 0;
+ var $or$cond2$i214 = 0, $or$cond43$i = 0, $or$cond5$i = 0, $or$cond7$i = 0, $or$cond9$i = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $1 = sp + 4|0;
+ $2 = sp;
+ $3 = HEAP32[8861]|0;
+ $4 = ($3|0)==(0);
+ if ($4) {
+ (___pthread_mutex_lock(35468)|0);
+ $5 = HEAP32[8861]|0;
+ $6 = ($5|0)==(0);
+ if ($6) {
+ HEAP32[(35452)>>2] = 4096;
+ HEAP32[(35448)>>2] = 4096;
+ HEAP32[(35456)>>2] = -1;
+ HEAP32[(35460)>>2] = -1;
+ HEAP32[(35464)>>2] = 2;
+ HEAP32[(35940)>>2] = 2;
+ $7 = (_pthread_mutexattr_init($1)|0);
+ $8 = ($7|0)==(0);
+ if ($8) {
+ $9 = (_pthread_mutex_init((35944),$1)|0);
+ $10 = ($9|0)==(0);
+ if ($10) {
+ }
+ }
+ $11 = $2;
+ $12 = $11 & -16;
+ $13 = $12 ^ 1431655768;
+ HEAP32[$2>>2] = $13;
+ Atomics_store(HEAP32,8861,$13)|0;
+ }
+ (___pthread_mutex_unlock(35468)|0);
+ }
+ $14 = HEAP32[(35940)>>2]|0;
+ $15 = $14 & 2;
+ $16 = ($15|0)==(0);
+ if (!($16)) {
+ $17 = (___pthread_mutex_lock((35944))|0);
+ $18 = ($17|0)==(0);
+ if (!($18)) {
+ $$1 = 0;
+ STACKTOP = sp;return ($$1|0);
+ }
+ }
+ $19 = ($0>>>0)<(245);
do {
- if ($2) {
- $3 = ($0>>>0)<(11);
- $4 = (($0) + 11)|0;
- $5 = $4 & -8;
- $6 = $3 ? 16 : $5;
- $7 = $6 >>> 3;
- $8 = HEAP32[8296]|0;
- $9 = $8 >>> $7;
- $10 = $9 & 3;
- $11 = ($10|0)==(0);
- if (!($11)) {
- $12 = $9 & 1;
- $13 = $12 ^ 1;
- $14 = (($13) + ($7))|0;
- $15 = $14 << 1;
- $16 = (33224 + ($15<<2)|0);
- $17 = ((($16)) + 8|0);
- $18 = HEAP32[$17>>2]|0;
- $19 = ((($18)) + 8|0);
- $20 = HEAP32[$19>>2]|0;
- $21 = ($16|0)==($20|0);
+ if ($19) {
+ $20 = ($0>>>0)<(11);
+ $21 = (($0) + 11)|0;
+ $22 = $21 & -8;
+ $23 = $20 ? 16 : $22;
+ $24 = $23 >>> 3;
+ $25 = HEAP32[8874]|0;
+ $26 = $25 >>> $24;
+ $27 = $26 & 3;
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $29 = $26 & 1;
+ $30 = $29 ^ 1;
+ $31 = (($30) + ($24))|0;
+ $32 = $31 << 1;
+ $33 = (35536 + ($32<<2)|0);
+ $34 = ((($33)) + 8|0);
+ $35 = HEAP32[$34>>2]|0;
+ $36 = ((($35)) + 8|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($33|0)==($37|0);
do {
- if ($21) {
- $22 = 1 << $14;
- $23 = $22 ^ -1;
- $24 = $8 & $23;
- HEAP32[8296] = $24;
+ if ($38) {
+ $39 = 1 << $31;
+ $40 = $39 ^ -1;
+ $41 = $25 & $40;
+ HEAP32[8874] = $41;
} else {
- $25 = HEAP32[(33200)>>2]|0;
- $26 = ($20>>>0)<($25>>>0);
- if ($26) {
+ $42 = HEAP32[(35512)>>2]|0;
+ $43 = ($37>>>0)<($42>>>0);
+ if ($43) {
_abort();
// unreachable;
}
- $27 = ((($20)) + 12|0);
- $28 = HEAP32[$27>>2]|0;
- $29 = ($28|0)==($18|0);
- if ($29) {
- HEAP32[$27>>2] = $16;
- HEAP32[$17>>2] = $20;
+ $44 = ((($37)) + 12|0);
+ $45 = HEAP32[$44>>2]|0;
+ $46 = ($45|0)==($35|0);
+ if ($46) {
+ HEAP32[$44>>2] = $33;
+ HEAP32[$34>>2] = $37;
break;
} else {
_abort();
@@ -24083,79 +30354,79 @@ function _malloc($0) {
}
}
} while(0);
- $30 = $14 << 3;
- $31 = $30 | 3;
- $32 = ((($18)) + 4|0);
- HEAP32[$32>>2] = $31;
- $33 = (($18) + ($30)|0);
- $34 = ((($33)) + 4|0);
- $35 = HEAP32[$34>>2]|0;
- $36 = $35 | 1;
- HEAP32[$34>>2] = $36;
- $$0 = $19;
- STACKTOP = sp;return ($$0|0);
+ $47 = $31 << 3;
+ $48 = $47 | 3;
+ $49 = ((($35)) + 4|0);
+ HEAP32[$49>>2] = $48;
+ $50 = (($35) + ($47)|0);
+ $51 = ((($50)) + 4|0);
+ $52 = HEAP32[$51>>2]|0;
+ $53 = $52 | 1;
+ HEAP32[$51>>2] = $53;
+ $$2 = $36;
+ break;
}
- $37 = HEAP32[(33192)>>2]|0;
- $38 = ($6>>>0)>($37>>>0);
- if ($38) {
- $39 = ($9|0)==(0);
- if (!($39)) {
- $40 = $9 << $7;
- $41 = 2 << $7;
- $42 = (0 - ($41))|0;
- $43 = $41 | $42;
- $44 = $40 & $43;
- $45 = (0 - ($44))|0;
- $46 = $44 & $45;
- $47 = (($46) + -1)|0;
- $48 = $47 >>> 12;
- $49 = $48 & 16;
- $50 = $47 >>> $49;
- $51 = $50 >>> 5;
- $52 = $51 & 8;
- $53 = $52 | $49;
- $54 = $50 >>> $52;
- $55 = $54 >>> 2;
- $56 = $55 & 4;
- $57 = $53 | $56;
- $58 = $54 >>> $56;
- $59 = $58 >>> 1;
- $60 = $59 & 2;
- $61 = $57 | $60;
- $62 = $58 >>> $60;
- $63 = $62 >>> 1;
- $64 = $63 & 1;
- $65 = $61 | $64;
- $66 = $62 >>> $64;
- $67 = (($65) + ($66))|0;
- $68 = $67 << 1;
- $69 = (33224 + ($68<<2)|0);
- $70 = ((($69)) + 8|0);
- $71 = HEAP32[$70>>2]|0;
- $72 = ((($71)) + 8|0);
- $73 = HEAP32[$72>>2]|0;
- $74 = ($69|0)==($73|0);
+ $54 = HEAP32[(35504)>>2]|0;
+ $55 = ($23>>>0)>($54>>>0);
+ if ($55) {
+ $56 = ($26|0)==(0);
+ if (!($56)) {
+ $57 = $26 << $24;
+ $58 = 2 << $24;
+ $59 = (0 - ($58))|0;
+ $60 = $58 | $59;
+ $61 = $57 & $60;
+ $62 = (0 - ($61))|0;
+ $63 = $61 & $62;
+ $64 = (($63) + -1)|0;
+ $65 = $64 >>> 12;
+ $66 = $65 & 16;
+ $67 = $64 >>> $66;
+ $68 = $67 >>> 5;
+ $69 = $68 & 8;
+ $70 = $69 | $66;
+ $71 = $67 >>> $69;
+ $72 = $71 >>> 2;
+ $73 = $72 & 4;
+ $74 = $70 | $73;
+ $75 = $71 >>> $73;
+ $76 = $75 >>> 1;
+ $77 = $76 & 2;
+ $78 = $74 | $77;
+ $79 = $75 >>> $77;
+ $80 = $79 >>> 1;
+ $81 = $80 & 1;
+ $82 = $78 | $81;
+ $83 = $79 >>> $81;
+ $84 = (($82) + ($83))|0;
+ $85 = $84 << 1;
+ $86 = (35536 + ($85<<2)|0);
+ $87 = ((($86)) + 8|0);
+ $88 = HEAP32[$87>>2]|0;
+ $89 = ((($88)) + 8|0);
+ $90 = HEAP32[$89>>2]|0;
+ $91 = ($86|0)==($90|0);
do {
- if ($74) {
- $75 = 1 << $67;
- $76 = $75 ^ -1;
- $77 = $8 & $76;
- HEAP32[8296] = $77;
- $98 = $77;
+ if ($91) {
+ $92 = 1 << $84;
+ $93 = $92 ^ -1;
+ $94 = $25 & $93;
+ HEAP32[8874] = $94;
+ $115 = $94;
} else {
- $78 = HEAP32[(33200)>>2]|0;
- $79 = ($73>>>0)<($78>>>0);
- if ($79) {
+ $95 = HEAP32[(35512)>>2]|0;
+ $96 = ($90>>>0)<($95>>>0);
+ if ($96) {
_abort();
// unreachable;
}
- $80 = ((($73)) + 12|0);
- $81 = HEAP32[$80>>2]|0;
- $82 = ($81|0)==($71|0);
- if ($82) {
- HEAP32[$80>>2] = $69;
- HEAP32[$70>>2] = $73;
- $98 = $8;
+ $97 = ((($90)) + 12|0);
+ $98 = HEAP32[$97>>2]|0;
+ $99 = ($98|0)==($88|0);
+ if ($99) {
+ HEAP32[$97>>2] = $86;
+ HEAP32[$87>>2] = $90;
+ $115 = $25;
break;
} else {
_abort();
@@ -24163,178 +30434,179 @@ function _malloc($0) {
}
}
} while(0);
- $83 = $67 << 3;
- $84 = (($83) - ($6))|0;
- $85 = $6 | 3;
- $86 = ((($71)) + 4|0);
- HEAP32[$86>>2] = $85;
- $87 = (($71) + ($6)|0);
- $88 = $84 | 1;
- $89 = ((($87)) + 4|0);
- HEAP32[$89>>2] = $88;
- $90 = (($87) + ($84)|0);
- HEAP32[$90>>2] = $84;
- $91 = ($37|0)==(0);
- if (!($91)) {
- $92 = HEAP32[(33204)>>2]|0;
- $93 = $37 >>> 3;
- $94 = $93 << 1;
- $95 = (33224 + ($94<<2)|0);
- $96 = 1 << $93;
- $97 = $98 & $96;
- $99 = ($97|0)==(0);
- if ($99) {
- $100 = $98 | $96;
- HEAP32[8296] = $100;
- $$pre = ((($95)) + 8|0);
- $$0199 = $95;$$pre$phiZ2D = $$pre;
+ $100 = $84 << 3;
+ $101 = (($100) - ($23))|0;
+ $102 = $23 | 3;
+ $103 = ((($88)) + 4|0);
+ HEAP32[$103>>2] = $102;
+ $104 = (($88) + ($23)|0);
+ $105 = $101 | 1;
+ $106 = ((($104)) + 4|0);
+ HEAP32[$106>>2] = $105;
+ $107 = (($104) + ($101)|0);
+ HEAP32[$107>>2] = $101;
+ $108 = ($54|0)==(0);
+ if (!($108)) {
+ $109 = HEAP32[(35516)>>2]|0;
+ $110 = $54 >>> 3;
+ $111 = $110 << 1;
+ $112 = (35536 + ($111<<2)|0);
+ $113 = 1 << $110;
+ $114 = $115 & $113;
+ $116 = ($114|0)==(0);
+ if ($116) {
+ $117 = $115 | $113;
+ HEAP32[8874] = $117;
+ $$pre = ((($112)) + 8|0);
+ $$0200 = $112;$$pre$phiZ2D = $$pre;
} else {
- $101 = ((($95)) + 8|0);
- $102 = HEAP32[$101>>2]|0;
- $103 = HEAP32[(33200)>>2]|0;
- $104 = ($102>>>0)<($103>>>0);
- if ($104) {
+ $118 = ((($112)) + 8|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = HEAP32[(35512)>>2]|0;
+ $121 = ($119>>>0)<($120>>>0);
+ if ($121) {
_abort();
// unreachable;
} else {
- $$0199 = $102;$$pre$phiZ2D = $101;
+ $$0200 = $119;$$pre$phiZ2D = $118;
}
}
- HEAP32[$$pre$phiZ2D>>2] = $92;
- $105 = ((($$0199)) + 12|0);
- HEAP32[$105>>2] = $92;
- $106 = ((($92)) + 8|0);
- HEAP32[$106>>2] = $$0199;
- $107 = ((($92)) + 12|0);
- HEAP32[$107>>2] = $95;
+ HEAP32[$$pre$phiZ2D>>2] = $109;
+ $122 = ((($$0200)) + 12|0);
+ HEAP32[$122>>2] = $109;
+ $123 = ((($109)) + 8|0);
+ HEAP32[$123>>2] = $$0200;
+ $124 = ((($109)) + 12|0);
+ HEAP32[$124>>2] = $112;
}
- HEAP32[(33192)>>2] = $84;
- HEAP32[(33204)>>2] = $87;
- $$0 = $72;
- STACKTOP = sp;return ($$0|0);
- }
- $108 = HEAP32[(33188)>>2]|0;
- $109 = ($108|0)==(0);
- if ($109) {
- $$0197 = $6;
+ HEAP32[(35504)>>2] = $101;
+ HEAP32[(35516)>>2] = $104;
+ $$2 = $89;
+ break;
+ }
+ $125 = HEAP32[(35500)>>2]|0;
+ $126 = ($125|0)==(0);
+ if ($126) {
+ $$0198 = $23;
+ label = 153;
} else {
- $110 = (0 - ($108))|0;
- $111 = $108 & $110;
- $112 = (($111) + -1)|0;
- $113 = $112 >>> 12;
- $114 = $113 & 16;
- $115 = $112 >>> $114;
- $116 = $115 >>> 5;
- $117 = $116 & 8;
- $118 = $117 | $114;
- $119 = $115 >>> $117;
- $120 = $119 >>> 2;
- $121 = $120 & 4;
- $122 = $118 | $121;
- $123 = $119 >>> $121;
- $124 = $123 >>> 1;
- $125 = $124 & 2;
- $126 = $122 | $125;
- $127 = $123 >>> $125;
- $128 = $127 >>> 1;
- $129 = $128 & 1;
- $130 = $126 | $129;
- $131 = $127 >>> $129;
- $132 = (($130) + ($131))|0;
- $133 = (33488 + ($132<<2)|0);
- $134 = HEAP32[$133>>2]|0;
- $135 = ((($134)) + 4|0);
- $136 = HEAP32[$135>>2]|0;
- $137 = $136 & -8;
- $138 = (($137) - ($6))|0;
- $139 = ((($134)) + 16|0);
- $140 = HEAP32[$139>>2]|0;
- $not$5$i = ($140|0)==(0|0);
+ $127 = (0 - ($125))|0;
+ $128 = $125 & $127;
+ $129 = (($128) + -1)|0;
+ $130 = $129 >>> 12;
+ $131 = $130 & 16;
+ $132 = $129 >>> $131;
+ $133 = $132 >>> 5;
+ $134 = $133 & 8;
+ $135 = $134 | $131;
+ $136 = $132 >>> $134;
+ $137 = $136 >>> 2;
+ $138 = $137 & 4;
+ $139 = $135 | $138;
+ $140 = $136 >>> $138;
+ $141 = $140 >>> 1;
+ $142 = $141 & 2;
+ $143 = $139 | $142;
+ $144 = $140 >>> $142;
+ $145 = $144 >>> 1;
+ $146 = $145 & 1;
+ $147 = $143 | $146;
+ $148 = $144 >>> $146;
+ $149 = (($147) + ($148))|0;
+ $150 = (35800 + ($149<<2)|0);
+ $151 = HEAP32[$150>>2]|0;
+ $152 = ((($151)) + 4|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = $153 & -8;
+ $155 = (($154) - ($23))|0;
+ $156 = ((($151)) + 16|0);
+ $157 = HEAP32[$156>>2]|0;
+ $not$5$i = ($157|0)==(0|0);
$$sink16$i = $not$5$i&1;
- $141 = (((($134)) + 16|0) + ($$sink16$i<<2)|0);
- $142 = HEAP32[$141>>2]|0;
- $143 = ($142|0)==(0|0);
- if ($143) {
- $$0192$lcssa$i = $134;$$0193$lcssa$i = $138;
+ $158 = (((($151)) + 16|0) + ($$sink16$i<<2)|0);
+ $159 = HEAP32[$158>>2]|0;
+ $160 = ($159|0)==(0|0);
+ if ($160) {
+ $$0192$lcssa$i = $151;$$0193$lcssa$i = $155;
} else {
- $$01928$i = $134;$$01937$i = $138;$145 = $142;
+ $$01928$i = $151;$$01937$i = $155;$162 = $159;
while(1) {
- $144 = ((($145)) + 4|0);
- $146 = HEAP32[$144>>2]|0;
- $147 = $146 & -8;
- $148 = (($147) - ($6))|0;
- $149 = ($148>>>0)<($$01937$i>>>0);
- $$$0193$i = $149 ? $148 : $$01937$i;
- $$$0192$i = $149 ? $145 : $$01928$i;
- $150 = ((($145)) + 16|0);
- $151 = HEAP32[$150>>2]|0;
- $not$$i = ($151|0)==(0|0);
+ $161 = ((($162)) + 4|0);
+ $163 = HEAP32[$161>>2]|0;
+ $164 = $163 & -8;
+ $165 = (($164) - ($23))|0;
+ $166 = ($165>>>0)<($$01937$i>>>0);
+ $$$0193$i = $166 ? $165 : $$01937$i;
+ $$$0192$i = $166 ? $162 : $$01928$i;
+ $167 = ((($162)) + 16|0);
+ $168 = HEAP32[$167>>2]|0;
+ $not$$i = ($168|0)==(0|0);
$$sink1$i = $not$$i&1;
- $152 = (((($145)) + 16|0) + ($$sink1$i<<2)|0);
- $153 = HEAP32[$152>>2]|0;
- $154 = ($153|0)==(0|0);
- if ($154) {
+ $169 = (((($162)) + 16|0) + ($$sink1$i<<2)|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==(0|0);
+ if ($171) {
$$0192$lcssa$i = $$$0192$i;$$0193$lcssa$i = $$$0193$i;
break;
} else {
- $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$145 = $153;
+ $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$162 = $170;
}
}
}
- $155 = HEAP32[(33200)>>2]|0;
- $156 = ($$0192$lcssa$i>>>0)<($155>>>0);
- if ($156) {
+ $172 = HEAP32[(35512)>>2]|0;
+ $173 = ($$0192$lcssa$i>>>0)<($172>>>0);
+ if ($173) {
_abort();
// unreachable;
}
- $157 = (($$0192$lcssa$i) + ($6)|0);
- $158 = ($$0192$lcssa$i>>>0)<($157>>>0);
- if (!($158)) {
+ $174 = (($$0192$lcssa$i) + ($23)|0);
+ $175 = ($$0192$lcssa$i>>>0)<($174>>>0);
+ if (!($175)) {
_abort();
// unreachable;
}
- $159 = ((($$0192$lcssa$i)) + 24|0);
- $160 = HEAP32[$159>>2]|0;
- $161 = ((($$0192$lcssa$i)) + 12|0);
- $162 = HEAP32[$161>>2]|0;
- $163 = ($162|0)==($$0192$lcssa$i|0);
+ $176 = ((($$0192$lcssa$i)) + 24|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ((($$0192$lcssa$i)) + 12|0);
+ $179 = HEAP32[$178>>2]|0;
+ $180 = ($179|0)==($$0192$lcssa$i|0);
do {
- if ($163) {
- $173 = ((($$0192$lcssa$i)) + 20|0);
- $174 = HEAP32[$173>>2]|0;
- $175 = ($174|0)==(0|0);
- if ($175) {
- $176 = ((($$0192$lcssa$i)) + 16|0);
- $177 = HEAP32[$176>>2]|0;
- $178 = ($177|0)==(0|0);
- if ($178) {
+ if ($180) {
+ $190 = ((($$0192$lcssa$i)) + 20|0);
+ $191 = HEAP32[$190>>2]|0;
+ $192 = ($191|0)==(0|0);
+ if ($192) {
+ $193 = ((($$0192$lcssa$i)) + 16|0);
+ $194 = HEAP32[$193>>2]|0;
+ $195 = ($194|0)==(0|0);
+ if ($195) {
$$3$i = 0;
break;
} else {
- $$1196$i = $177;$$1198$i = $176;
+ $$1196$i = $194;$$1198$i = $193;
}
} else {
- $$1196$i = $174;$$1198$i = $173;
+ $$1196$i = $191;$$1198$i = $190;
}
while(1) {
- $179 = ((($$1196$i)) + 20|0);
- $180 = HEAP32[$179>>2]|0;
- $181 = ($180|0)==(0|0);
- if (!($181)) {
- $$1196$i = $180;$$1198$i = $179;
+ $196 = ((($$1196$i)) + 20|0);
+ $197 = HEAP32[$196>>2]|0;
+ $198 = ($197|0)==(0|0);
+ if (!($198)) {
+ $$1196$i = $197;$$1198$i = $196;
continue;
}
- $182 = ((($$1196$i)) + 16|0);
- $183 = HEAP32[$182>>2]|0;
- $184 = ($183|0)==(0|0);
- if ($184) {
+ $199 = ((($$1196$i)) + 16|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($200|0)==(0|0);
+ if ($201) {
break;
} else {
- $$1196$i = $183;$$1198$i = $182;
+ $$1196$i = $200;$$1198$i = $199;
}
}
- $185 = ($$1198$i>>>0)<($155>>>0);
- if ($185) {
+ $202 = ($$1198$i>>>0)<($172>>>0);
+ if ($202) {
_abort();
// unreachable;
} else {
@@ -24343,27 +30615,27 @@ function _malloc($0) {
break;
}
} else {
- $164 = ((($$0192$lcssa$i)) + 8|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165>>>0)<($155>>>0);
- if ($166) {
+ $181 = ((($$0192$lcssa$i)) + 8|0);
+ $182 = HEAP32[$181>>2]|0;
+ $183 = ($182>>>0)<($172>>>0);
+ if ($183) {
_abort();
// unreachable;
}
- $167 = ((($165)) + 12|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = ($168|0)==($$0192$lcssa$i|0);
- if (!($169)) {
+ $184 = ((($182)) + 12|0);
+ $185 = HEAP32[$184>>2]|0;
+ $186 = ($185|0)==($$0192$lcssa$i|0);
+ if (!($186)) {
_abort();
// unreachable;
}
- $170 = ((($162)) + 8|0);
- $171 = HEAP32[$170>>2]|0;
- $172 = ($171|0)==($$0192$lcssa$i|0);
- if ($172) {
- HEAP32[$167>>2] = $162;
- HEAP32[$170>>2] = $165;
- $$3$i = $162;
+ $187 = ((($179)) + 8|0);
+ $188 = HEAP32[$187>>2]|0;
+ $189 = ($188|0)==($$0192$lcssa$i|0);
+ if ($189) {
+ HEAP32[$184>>2] = $179;
+ HEAP32[$187>>2] = $182;
+ $$3$i = $179;
break;
} else {
_abort();
@@ -24371,397 +30643,401 @@ function _malloc($0) {
}
}
} while(0);
- $186 = ($160|0)==(0|0);
- L73: do {
- if (!($186)) {
- $187 = ((($$0192$lcssa$i)) + 28|0);
- $188 = HEAP32[$187>>2]|0;
- $189 = (33488 + ($188<<2)|0);
- $190 = HEAP32[$189>>2]|0;
- $191 = ($$0192$lcssa$i|0)==($190|0);
+ $203 = ($177|0)==(0|0);
+ L85: do {
+ if (!($203)) {
+ $204 = ((($$0192$lcssa$i)) + 28|0);
+ $205 = HEAP32[$204>>2]|0;
+ $206 = (35800 + ($205<<2)|0);
+ $207 = HEAP32[$206>>2]|0;
+ $208 = ($$0192$lcssa$i|0)==($207|0);
do {
- if ($191) {
- HEAP32[$189>>2] = $$3$i;
+ if ($208) {
+ HEAP32[$206>>2] = $$3$i;
$cond$i = ($$3$i|0)==(0|0);
if ($cond$i) {
- $192 = 1 << $188;
- $193 = $192 ^ -1;
- $194 = $108 & $193;
- HEAP32[(33188)>>2] = $194;
- break L73;
+ $209 = 1 << $205;
+ $210 = $209 ^ -1;
+ $211 = $125 & $210;
+ HEAP32[(35500)>>2] = $211;
+ break L85;
}
} else {
- $195 = HEAP32[(33200)>>2]|0;
- $196 = ($160>>>0)<($195>>>0);
- if ($196) {
+ $212 = HEAP32[(35512)>>2]|0;
+ $213 = ($177>>>0)<($212>>>0);
+ if ($213) {
_abort();
// unreachable;
} else {
- $197 = ((($160)) + 16|0);
- $198 = HEAP32[$197>>2]|0;
- $not$1$i = ($198|0)!=($$0192$lcssa$i|0);
+ $214 = ((($177)) + 16|0);
+ $215 = HEAP32[$214>>2]|0;
+ $not$1$i = ($215|0)!=($$0192$lcssa$i|0);
$$sink2$i = $not$1$i&1;
- $199 = (((($160)) + 16|0) + ($$sink2$i<<2)|0);
- HEAP32[$199>>2] = $$3$i;
- $200 = ($$3$i|0)==(0|0);
- if ($200) {
- break L73;
+ $216 = (((($177)) + 16|0) + ($$sink2$i<<2)|0);
+ HEAP32[$216>>2] = $$3$i;
+ $217 = ($$3$i|0)==(0|0);
+ if ($217) {
+ break L85;
} else {
break;
}
}
}
} while(0);
- $201 = HEAP32[(33200)>>2]|0;
- $202 = ($$3$i>>>0)<($201>>>0);
- if ($202) {
+ $218 = HEAP32[(35512)>>2]|0;
+ $219 = ($$3$i>>>0)<($218>>>0);
+ if ($219) {
_abort();
// unreachable;
}
- $203 = ((($$3$i)) + 24|0);
- HEAP32[$203>>2] = $160;
- $204 = ((($$0192$lcssa$i)) + 16|0);
- $205 = HEAP32[$204>>2]|0;
- $206 = ($205|0)==(0|0);
+ $220 = ((($$3$i)) + 24|0);
+ HEAP32[$220>>2] = $177;
+ $221 = ((($$0192$lcssa$i)) + 16|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
do {
- if (!($206)) {
- $207 = ($205>>>0)<($201>>>0);
- if ($207) {
+ if (!($223)) {
+ $224 = ($222>>>0)<($218>>>0);
+ if ($224) {
_abort();
// unreachable;
} else {
- $208 = ((($$3$i)) + 16|0);
- HEAP32[$208>>2] = $205;
- $209 = ((($205)) + 24|0);
- HEAP32[$209>>2] = $$3$i;
+ $225 = ((($$3$i)) + 16|0);
+ HEAP32[$225>>2] = $222;
+ $226 = ((($222)) + 24|0);
+ HEAP32[$226>>2] = $$3$i;
break;
}
}
} while(0);
- $210 = ((($$0192$lcssa$i)) + 20|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
- if (!($212)) {
- $213 = HEAP32[(33200)>>2]|0;
- $214 = ($211>>>0)<($213>>>0);
- if ($214) {
+ $227 = ((($$0192$lcssa$i)) + 20|0);
+ $228 = HEAP32[$227>>2]|0;
+ $229 = ($228|0)==(0|0);
+ if (!($229)) {
+ $230 = HEAP32[(35512)>>2]|0;
+ $231 = ($228>>>0)<($230>>>0);
+ if ($231) {
_abort();
// unreachable;
} else {
- $215 = ((($$3$i)) + 20|0);
- HEAP32[$215>>2] = $211;
- $216 = ((($211)) + 24|0);
- HEAP32[$216>>2] = $$3$i;
+ $232 = ((($$3$i)) + 20|0);
+ HEAP32[$232>>2] = $228;
+ $233 = ((($228)) + 24|0);
+ HEAP32[$233>>2] = $$3$i;
break;
}
}
}
} while(0);
- $217 = ($$0193$lcssa$i>>>0)<(16);
- if ($217) {
- $218 = (($$0193$lcssa$i) + ($6))|0;
- $219 = $218 | 3;
- $220 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$220>>2] = $219;
- $221 = (($$0192$lcssa$i) + ($218)|0);
- $222 = ((($221)) + 4|0);
- $223 = HEAP32[$222>>2]|0;
- $224 = $223 | 1;
- HEAP32[$222>>2] = $224;
+ $234 = ($$0193$lcssa$i>>>0)<(16);
+ if ($234) {
+ $235 = (($$0193$lcssa$i) + ($23))|0;
+ $236 = $235 | 3;
+ $237 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$237>>2] = $236;
+ $238 = (($$0192$lcssa$i) + ($235)|0);
+ $239 = ((($238)) + 4|0);
+ $240 = HEAP32[$239>>2]|0;
+ $241 = $240 | 1;
+ HEAP32[$239>>2] = $241;
} else {
- $225 = $6 | 3;
- $226 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$226>>2] = $225;
- $227 = $$0193$lcssa$i | 1;
- $228 = ((($157)) + 4|0);
- HEAP32[$228>>2] = $227;
- $229 = (($157) + ($$0193$lcssa$i)|0);
- HEAP32[$229>>2] = $$0193$lcssa$i;
- $230 = ($37|0)==(0);
- if (!($230)) {
- $231 = HEAP32[(33204)>>2]|0;
- $232 = $37 >>> 3;
- $233 = $232 << 1;
- $234 = (33224 + ($233<<2)|0);
- $235 = 1 << $232;
- $236 = $8 & $235;
- $237 = ($236|0)==(0);
- if ($237) {
- $238 = $8 | $235;
- HEAP32[8296] = $238;
- $$pre$i = ((($234)) + 8|0);
- $$0189$i = $234;$$pre$phi$iZ2D = $$pre$i;
+ $242 = $23 | 3;
+ $243 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$243>>2] = $242;
+ $244 = $$0193$lcssa$i | 1;
+ $245 = ((($174)) + 4|0);
+ HEAP32[$245>>2] = $244;
+ $246 = (($174) + ($$0193$lcssa$i)|0);
+ HEAP32[$246>>2] = $$0193$lcssa$i;
+ $247 = ($54|0)==(0);
+ if (!($247)) {
+ $248 = HEAP32[(35516)>>2]|0;
+ $249 = $54 >>> 3;
+ $250 = $249 << 1;
+ $251 = (35536 + ($250<<2)|0);
+ $252 = 1 << $249;
+ $253 = $25 & $252;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $255 = $25 | $252;
+ HEAP32[8874] = $255;
+ $$pre$i = ((($251)) + 8|0);
+ $$0189$i = $251;$$pre$phi$iZ2D = $$pre$i;
} else {
- $239 = ((($234)) + 8|0);
- $240 = HEAP32[$239>>2]|0;
- $241 = HEAP32[(33200)>>2]|0;
- $242 = ($240>>>0)<($241>>>0);
- if ($242) {
+ $256 = ((($251)) + 8|0);
+ $257 = HEAP32[$256>>2]|0;
+ $258 = HEAP32[(35512)>>2]|0;
+ $259 = ($257>>>0)<($258>>>0);
+ if ($259) {
_abort();
// unreachable;
} else {
- $$0189$i = $240;$$pre$phi$iZ2D = $239;
+ $$0189$i = $257;$$pre$phi$iZ2D = $256;
}
}
- HEAP32[$$pre$phi$iZ2D>>2] = $231;
- $243 = ((($$0189$i)) + 12|0);
- HEAP32[$243>>2] = $231;
- $244 = ((($231)) + 8|0);
- HEAP32[$244>>2] = $$0189$i;
- $245 = ((($231)) + 12|0);
- HEAP32[$245>>2] = $234;
- }
- HEAP32[(33192)>>2] = $$0193$lcssa$i;
- HEAP32[(33204)>>2] = $157;
+ HEAP32[$$pre$phi$iZ2D>>2] = $248;
+ $260 = ((($$0189$i)) + 12|0);
+ HEAP32[$260>>2] = $248;
+ $261 = ((($248)) + 8|0);
+ HEAP32[$261>>2] = $$0189$i;
+ $262 = ((($248)) + 12|0);
+ HEAP32[$262>>2] = $251;
+ }
+ HEAP32[(35504)>>2] = $$0193$lcssa$i;
+ HEAP32[(35516)>>2] = $174;
}
- $246 = ((($$0192$lcssa$i)) + 8|0);
- $$0 = $246;
- STACKTOP = sp;return ($$0|0);
+ $263 = ((($$0192$lcssa$i)) + 8|0);
+ $$2 = $263;
}
} else {
- $$0197 = $6;
+ $$0198 = $23;
+ label = 153;
}
} else {
- $247 = ($0>>>0)>(4294967231);
- if ($247) {
- $$0197 = -1;
+ $264 = ($0>>>0)>(4294967231);
+ if ($264) {
+ $$0198 = -1;
+ label = 153;
} else {
- $248 = (($0) + 11)|0;
- $249 = $248 & -8;
- $250 = HEAP32[(33188)>>2]|0;
- $251 = ($250|0)==(0);
- if ($251) {
- $$0197 = $249;
+ $265 = (($0) + 11)|0;
+ $266 = $265 & -8;
+ $267 = HEAP32[(35500)>>2]|0;
+ $268 = ($267|0)==(0);
+ if ($268) {
+ $$0198 = $266;
+ label = 153;
} else {
- $252 = (0 - ($249))|0;
- $253 = $248 >>> 8;
- $254 = ($253|0)==(0);
- if ($254) {
+ $269 = (0 - ($266))|0;
+ $270 = $265 >>> 8;
+ $271 = ($270|0)==(0);
+ if ($271) {
$$0358$i = 0;
} else {
- $255 = ($249>>>0)>(16777215);
- if ($255) {
+ $272 = ($266>>>0)>(16777215);
+ if ($272) {
$$0358$i = 31;
} else {
- $256 = (($253) + 1048320)|0;
- $257 = $256 >>> 16;
- $258 = $257 & 8;
- $259 = $253 << $258;
- $260 = (($259) + 520192)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 4;
- $263 = $262 | $258;
- $264 = $259 << $262;
- $265 = (($264) + 245760)|0;
- $266 = $265 >>> 16;
- $267 = $266 & 2;
- $268 = $263 | $267;
- $269 = (14 - ($268))|0;
- $270 = $264 << $267;
- $271 = $270 >>> 15;
- $272 = (($269) + ($271))|0;
- $273 = $272 << 1;
- $274 = (($272) + 7)|0;
- $275 = $249 >>> $274;
- $276 = $275 & 1;
- $277 = $276 | $273;
- $$0358$i = $277;
+ $273 = (($270) + 1048320)|0;
+ $274 = $273 >>> 16;
+ $275 = $274 & 8;
+ $276 = $270 << $275;
+ $277 = (($276) + 520192)|0;
+ $278 = $277 >>> 16;
+ $279 = $278 & 4;
+ $280 = $279 | $275;
+ $281 = $276 << $279;
+ $282 = (($281) + 245760)|0;
+ $283 = $282 >>> 16;
+ $284 = $283 & 2;
+ $285 = $280 | $284;
+ $286 = (14 - ($285))|0;
+ $287 = $281 << $284;
+ $288 = $287 >>> 15;
+ $289 = (($286) + ($288))|0;
+ $290 = $289 << 1;
+ $291 = (($289) + 7)|0;
+ $292 = $266 >>> $291;
+ $293 = $292 & 1;
+ $294 = $293 | $290;
+ $$0358$i = $294;
}
}
- $278 = (33488 + ($$0358$i<<2)|0);
- $279 = HEAP32[$278>>2]|0;
- $280 = ($279|0)==(0|0);
- L117: do {
- if ($280) {
- $$2355$i = 0;$$3$i201 = 0;$$3350$i = $252;
- label = 81;
+ $295 = (35800 + ($$0358$i<<2)|0);
+ $296 = HEAP32[$295>>2]|0;
+ $297 = ($296|0)==(0|0);
+ L128: do {
+ if ($297) {
+ $$2355$i = 0;$$3$i202 = 0;$$3350$i = $269;
+ label = 90;
} else {
- $281 = ($$0358$i|0)==(31);
- $282 = $$0358$i >>> 1;
- $283 = (25 - ($282))|0;
- $284 = $281 ? 0 : $283;
- $285 = $249 << $284;
- $$0342$i = 0;$$0347$i = $252;$$0353$i = $279;$$0359$i = $285;$$0362$i = 0;
+ $298 = ($$0358$i|0)==(31);
+ $299 = $$0358$i >>> 1;
+ $300 = (25 - ($299))|0;
+ $301 = $298 ? 0 : $300;
+ $302 = $266 << $301;
+ $$0342$i = 0;$$0347$i = $269;$$0353$i = $296;$$0359$i = $302;$$0362$i = 0;
while(1) {
- $286 = ((($$0353$i)) + 4|0);
- $287 = HEAP32[$286>>2]|0;
- $288 = $287 & -8;
- $289 = (($288) - ($249))|0;
- $290 = ($289>>>0)<($$0347$i>>>0);
- if ($290) {
- $291 = ($289|0)==(0);
- if ($291) {
+ $303 = ((($$0353$i)) + 4|0);
+ $304 = HEAP32[$303>>2]|0;
+ $305 = $304 & -8;
+ $306 = (($305) - ($266))|0;
+ $307 = ($306>>>0)<($$0347$i>>>0);
+ if ($307) {
+ $308 = ($306|0)==(0);
+ if ($308) {
$$415$i = $$0353$i;$$435114$i = 0;$$435713$i = $$0353$i;
- label = 85;
- break L117;
+ label = 94;
+ break L128;
} else {
- $$1343$i = $$0353$i;$$1348$i = $289;
+ $$1343$i = $$0353$i;$$1348$i = $306;
}
} else {
$$1343$i = $$0342$i;$$1348$i = $$0347$i;
}
- $292 = ((($$0353$i)) + 20|0);
- $293 = HEAP32[$292>>2]|0;
- $294 = $$0359$i >>> 31;
- $295 = (((($$0353$i)) + 16|0) + ($294<<2)|0);
- $296 = HEAP32[$295>>2]|0;
- $297 = ($293|0)==(0|0);
- $298 = ($293|0)==($296|0);
- $or$cond2$i = $297 | $298;
- $$1363$i = $or$cond2$i ? $$0362$i : $293;
- $299 = ($296|0)==(0|0);
- $not$8$i = $299 ^ 1;
- $300 = $not$8$i&1;
- $$0359$$i = $$0359$i << $300;
- if ($299) {
- $$2355$i = $$1363$i;$$3$i201 = $$1343$i;$$3350$i = $$1348$i;
- label = 81;
+ $309 = ((($$0353$i)) + 20|0);
+ $310 = HEAP32[$309>>2]|0;
+ $311 = $$0359$i >>> 31;
+ $312 = (((($$0353$i)) + 16|0) + ($311<<2)|0);
+ $313 = HEAP32[$312>>2]|0;
+ $314 = ($310|0)==(0|0);
+ $315 = ($310|0)==($313|0);
+ $or$cond2$i = $314 | $315;
+ $$1363$i = $or$cond2$i ? $$0362$i : $310;
+ $316 = ($313|0)==(0|0);
+ $not$8$i = $316 ^ 1;
+ $317 = $not$8$i&1;
+ $$0359$$i = $$0359$i << $317;
+ if ($316) {
+ $$2355$i = $$1363$i;$$3$i202 = $$1343$i;$$3350$i = $$1348$i;
+ label = 90;
break;
} else {
- $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $296;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
+ $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $313;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
}
}
}
} while(0);
- if ((label|0) == 81) {
- $301 = ($$2355$i|0)==(0|0);
- $302 = ($$3$i201|0)==(0|0);
- $or$cond$i = $301 & $302;
+ if ((label|0) == 90) {
+ $318 = ($$2355$i|0)==(0|0);
+ $319 = ($$3$i202|0)==(0|0);
+ $or$cond$i = $318 & $319;
if ($or$cond$i) {
- $303 = 2 << $$0358$i;
- $304 = (0 - ($303))|0;
- $305 = $303 | $304;
- $306 = $250 & $305;
- $307 = ($306|0)==(0);
- if ($307) {
- $$0197 = $249;
+ $320 = 2 << $$0358$i;
+ $321 = (0 - ($320))|0;
+ $322 = $320 | $321;
+ $323 = $267 & $322;
+ $324 = ($323|0)==(0);
+ if ($324) {
+ $$0198 = $266;
+ label = 153;
break;
}
- $308 = (0 - ($306))|0;
- $309 = $306 & $308;
- $310 = (($309) + -1)|0;
- $311 = $310 >>> 12;
- $312 = $311 & 16;
- $313 = $310 >>> $312;
- $314 = $313 >>> 5;
- $315 = $314 & 8;
- $316 = $315 | $312;
- $317 = $313 >>> $315;
- $318 = $317 >>> 2;
- $319 = $318 & 4;
- $320 = $316 | $319;
- $321 = $317 >>> $319;
- $322 = $321 >>> 1;
- $323 = $322 & 2;
- $324 = $320 | $323;
- $325 = $321 >>> $323;
- $326 = $325 >>> 1;
- $327 = $326 & 1;
- $328 = $324 | $327;
- $329 = $325 >>> $327;
- $330 = (($328) + ($329))|0;
- $331 = (33488 + ($330<<2)|0);
- $332 = HEAP32[$331>>2]|0;
- $$4$ph$i = 0;$$4357$ph$i = $332;
+ $325 = (0 - ($323))|0;
+ $326 = $323 & $325;
+ $327 = (($326) + -1)|0;
+ $328 = $327 >>> 12;
+ $329 = $328 & 16;
+ $330 = $327 >>> $329;
+ $331 = $330 >>> 5;
+ $332 = $331 & 8;
+ $333 = $332 | $329;
+ $334 = $330 >>> $332;
+ $335 = $334 >>> 2;
+ $336 = $335 & 4;
+ $337 = $333 | $336;
+ $338 = $334 >>> $336;
+ $339 = $338 >>> 1;
+ $340 = $339 & 2;
+ $341 = $337 | $340;
+ $342 = $338 >>> $340;
+ $343 = $342 >>> 1;
+ $344 = $343 & 1;
+ $345 = $341 | $344;
+ $346 = $342 >>> $344;
+ $347 = (($345) + ($346))|0;
+ $348 = (35800 + ($347<<2)|0);
+ $349 = HEAP32[$348>>2]|0;
+ $$4$ph$i = 0;$$4357$ph$i = $349;
} else {
- $$4$ph$i = $$3$i201;$$4357$ph$i = $$2355$i;
+ $$4$ph$i = $$3$i202;$$4357$ph$i = $$2355$i;
}
- $333 = ($$4357$ph$i|0)==(0|0);
- if ($333) {
+ $350 = ($$4357$ph$i|0)==(0|0);
+ if ($350) {
$$4$lcssa$i = $$4$ph$i;$$4351$lcssa$i = $$3350$i;
} else {
$$415$i = $$4$ph$i;$$435114$i = $$3350$i;$$435713$i = $$4357$ph$i;
- label = 85;
+ label = 94;
}
}
- if ((label|0) == 85) {
+ if ((label|0) == 94) {
while(1) {
label = 0;
- $334 = ((($$435713$i)) + 4|0);
- $335 = HEAP32[$334>>2]|0;
- $336 = $335 & -8;
- $337 = (($336) - ($249))|0;
- $338 = ($337>>>0)<($$435114$i>>>0);
- $$$4351$i = $338 ? $337 : $$435114$i;
- $$4357$$4$i = $338 ? $$435713$i : $$415$i;
- $339 = ((($$435713$i)) + 16|0);
- $340 = HEAP32[$339>>2]|0;
- $not$1$i203 = ($340|0)==(0|0);
- $$sink2$i204 = $not$1$i203&1;
- $341 = (((($$435713$i)) + 16|0) + ($$sink2$i204<<2)|0);
- $342 = HEAP32[$341>>2]|0;
- $343 = ($342|0)==(0|0);
- if ($343) {
+ $351 = ((($$435713$i)) + 4|0);
+ $352 = HEAP32[$351>>2]|0;
+ $353 = $352 & -8;
+ $354 = (($353) - ($266))|0;
+ $355 = ($354>>>0)<($$435114$i>>>0);
+ $$$4351$i = $355 ? $354 : $$435114$i;
+ $$4357$$4$i = $355 ? $$435713$i : $$415$i;
+ $356 = ((($$435713$i)) + 16|0);
+ $357 = HEAP32[$356>>2]|0;
+ $not$1$i204 = ($357|0)==(0|0);
+ $$sink2$i205 = $not$1$i204&1;
+ $358 = (((($$435713$i)) + 16|0) + ($$sink2$i205<<2)|0);
+ $359 = HEAP32[$358>>2]|0;
+ $360 = ($359|0)==(0|0);
+ if ($360) {
$$4$lcssa$i = $$4357$$4$i;$$4351$lcssa$i = $$$4351$i;
break;
} else {
- $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $342;
- label = 85;
+ $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $359;
+ label = 94;
}
}
}
- $344 = ($$4$lcssa$i|0)==(0|0);
- if ($344) {
- $$0197 = $249;
+ $361 = ($$4$lcssa$i|0)==(0|0);
+ if ($361) {
+ $$0198 = $266;
+ label = 153;
} else {
- $345 = HEAP32[(33192)>>2]|0;
- $346 = (($345) - ($249))|0;
- $347 = ($$4351$lcssa$i>>>0)<($346>>>0);
- if ($347) {
- $348 = HEAP32[(33200)>>2]|0;
- $349 = ($$4$lcssa$i>>>0)<($348>>>0);
- if ($349) {
+ $362 = HEAP32[(35504)>>2]|0;
+ $363 = (($362) - ($266))|0;
+ $364 = ($$4351$lcssa$i>>>0)<($363>>>0);
+ if ($364) {
+ $365 = HEAP32[(35512)>>2]|0;
+ $366 = ($$4$lcssa$i>>>0)<($365>>>0);
+ if ($366) {
_abort();
// unreachable;
}
- $350 = (($$4$lcssa$i) + ($249)|0);
- $351 = ($$4$lcssa$i>>>0)<($350>>>0);
- if (!($351)) {
+ $367 = (($$4$lcssa$i) + ($266)|0);
+ $368 = ($$4$lcssa$i>>>0)<($367>>>0);
+ if (!($368)) {
_abort();
// unreachable;
}
- $352 = ((($$4$lcssa$i)) + 24|0);
- $353 = HEAP32[$352>>2]|0;
- $354 = ((($$4$lcssa$i)) + 12|0);
- $355 = HEAP32[$354>>2]|0;
- $356 = ($355|0)==($$4$lcssa$i|0);
+ $369 = ((($$4$lcssa$i)) + 24|0);
+ $370 = HEAP32[$369>>2]|0;
+ $371 = ((($$4$lcssa$i)) + 12|0);
+ $372 = HEAP32[$371>>2]|0;
+ $373 = ($372|0)==($$4$lcssa$i|0);
do {
- if ($356) {
- $366 = ((($$4$lcssa$i)) + 20|0);
- $367 = HEAP32[$366>>2]|0;
- $368 = ($367|0)==(0|0);
- if ($368) {
- $369 = ((($$4$lcssa$i)) + 16|0);
- $370 = HEAP32[$369>>2]|0;
- $371 = ($370|0)==(0|0);
- if ($371) {
+ if ($373) {
+ $383 = ((($$4$lcssa$i)) + 20|0);
+ $384 = HEAP32[$383>>2]|0;
+ $385 = ($384|0)==(0|0);
+ if ($385) {
+ $386 = ((($$4$lcssa$i)) + 16|0);
+ $387 = HEAP32[$386>>2]|0;
+ $388 = ($387|0)==(0|0);
+ if ($388) {
$$3372$i = 0;
break;
} else {
- $$1370$i = $370;$$1374$i = $369;
+ $$1370$i = $387;$$1374$i = $386;
}
} else {
- $$1370$i = $367;$$1374$i = $366;
+ $$1370$i = $384;$$1374$i = $383;
}
while(1) {
- $372 = ((($$1370$i)) + 20|0);
- $373 = HEAP32[$372>>2]|0;
- $374 = ($373|0)==(0|0);
- if (!($374)) {
- $$1370$i = $373;$$1374$i = $372;
+ $389 = ((($$1370$i)) + 20|0);
+ $390 = HEAP32[$389>>2]|0;
+ $391 = ($390|0)==(0|0);
+ if (!($391)) {
+ $$1370$i = $390;$$1374$i = $389;
continue;
}
- $375 = ((($$1370$i)) + 16|0);
- $376 = HEAP32[$375>>2]|0;
- $377 = ($376|0)==(0|0);
- if ($377) {
+ $392 = ((($$1370$i)) + 16|0);
+ $393 = HEAP32[$392>>2]|0;
+ $394 = ($393|0)==(0|0);
+ if ($394) {
break;
} else {
- $$1370$i = $376;$$1374$i = $375;
+ $$1370$i = $393;$$1374$i = $392;
}
}
- $378 = ($$1374$i>>>0)<($348>>>0);
- if ($378) {
+ $395 = ($$1374$i>>>0)<($365>>>0);
+ if ($395) {
_abort();
// unreachable;
} else {
@@ -24770,27 +31046,27 @@ function _malloc($0) {
break;
}
} else {
- $357 = ((($$4$lcssa$i)) + 8|0);
- $358 = HEAP32[$357>>2]|0;
- $359 = ($358>>>0)<($348>>>0);
- if ($359) {
+ $374 = ((($$4$lcssa$i)) + 8|0);
+ $375 = HEAP32[$374>>2]|0;
+ $376 = ($375>>>0)<($365>>>0);
+ if ($376) {
_abort();
// unreachable;
}
- $360 = ((($358)) + 12|0);
- $361 = HEAP32[$360>>2]|0;
- $362 = ($361|0)==($$4$lcssa$i|0);
- if (!($362)) {
+ $377 = ((($375)) + 12|0);
+ $378 = HEAP32[$377>>2]|0;
+ $379 = ($378|0)==($$4$lcssa$i|0);
+ if (!($379)) {
_abort();
// unreachable;
}
- $363 = ((($355)) + 8|0);
- $364 = HEAP32[$363>>2]|0;
- $365 = ($364|0)==($$4$lcssa$i|0);
- if ($365) {
- HEAP32[$360>>2] = $355;
- HEAP32[$363>>2] = $358;
- $$3372$i = $355;
+ $380 = ((($372)) + 8|0);
+ $381 = HEAP32[$380>>2]|0;
+ $382 = ($381|0)==($$4$lcssa$i|0);
+ if ($382) {
+ HEAP32[$377>>2] = $372;
+ HEAP32[$380>>2] = $375;
+ $$3372$i = $372;
break;
} else {
_abort();
@@ -24798,273 +31074,275 @@ function _malloc($0) {
}
}
} while(0);
- $379 = ($353|0)==(0|0);
- L164: do {
- if ($379) {
- $470 = $250;
+ $396 = ($370|0)==(0|0);
+ L175: do {
+ if ($396) {
+ $487 = $267;
} else {
- $380 = ((($$4$lcssa$i)) + 28|0);
- $381 = HEAP32[$380>>2]|0;
- $382 = (33488 + ($381<<2)|0);
- $383 = HEAP32[$382>>2]|0;
- $384 = ($$4$lcssa$i|0)==($383|0);
+ $397 = ((($$4$lcssa$i)) + 28|0);
+ $398 = HEAP32[$397>>2]|0;
+ $399 = (35800 + ($398<<2)|0);
+ $400 = HEAP32[$399>>2]|0;
+ $401 = ($$4$lcssa$i|0)==($400|0);
do {
- if ($384) {
- HEAP32[$382>>2] = $$3372$i;
- $cond$i208 = ($$3372$i|0)==(0|0);
- if ($cond$i208) {
- $385 = 1 << $381;
- $386 = $385 ^ -1;
- $387 = $250 & $386;
- HEAP32[(33188)>>2] = $387;
- $470 = $387;
- break L164;
+ if ($401) {
+ HEAP32[$399>>2] = $$3372$i;
+ $cond$i209 = ($$3372$i|0)==(0|0);
+ if ($cond$i209) {
+ $402 = 1 << $398;
+ $403 = $402 ^ -1;
+ $404 = $267 & $403;
+ HEAP32[(35500)>>2] = $404;
+ $487 = $404;
+ break L175;
}
} else {
- $388 = HEAP32[(33200)>>2]|0;
- $389 = ($353>>>0)<($388>>>0);
- if ($389) {
+ $405 = HEAP32[(35512)>>2]|0;
+ $406 = ($370>>>0)<($405>>>0);
+ if ($406) {
_abort();
// unreachable;
} else {
- $390 = ((($353)) + 16|0);
- $391 = HEAP32[$390>>2]|0;
- $not$$i209 = ($391|0)!=($$4$lcssa$i|0);
- $$sink3$i = $not$$i209&1;
- $392 = (((($353)) + 16|0) + ($$sink3$i<<2)|0);
- HEAP32[$392>>2] = $$3372$i;
- $393 = ($$3372$i|0)==(0|0);
- if ($393) {
- $470 = $250;
- break L164;
+ $407 = ((($370)) + 16|0);
+ $408 = HEAP32[$407>>2]|0;
+ $not$$i210 = ($408|0)!=($$4$lcssa$i|0);
+ $$sink3$i = $not$$i210&1;
+ $409 = (((($370)) + 16|0) + ($$sink3$i<<2)|0);
+ HEAP32[$409>>2] = $$3372$i;
+ $410 = ($$3372$i|0)==(0|0);
+ if ($410) {
+ $487 = $267;
+ break L175;
} else {
break;
}
}
}
} while(0);
- $394 = HEAP32[(33200)>>2]|0;
- $395 = ($$3372$i>>>0)<($394>>>0);
- if ($395) {
+ $411 = HEAP32[(35512)>>2]|0;
+ $412 = ($$3372$i>>>0)<($411>>>0);
+ if ($412) {
_abort();
// unreachable;
}
- $396 = ((($$3372$i)) + 24|0);
- HEAP32[$396>>2] = $353;
- $397 = ((($$4$lcssa$i)) + 16|0);
- $398 = HEAP32[$397>>2]|0;
- $399 = ($398|0)==(0|0);
+ $413 = ((($$3372$i)) + 24|0);
+ HEAP32[$413>>2] = $370;
+ $414 = ((($$4$lcssa$i)) + 16|0);
+ $415 = HEAP32[$414>>2]|0;
+ $416 = ($415|0)==(0|0);
do {
- if (!($399)) {
- $400 = ($398>>>0)<($394>>>0);
- if ($400) {
+ if (!($416)) {
+ $417 = ($415>>>0)<($411>>>0);
+ if ($417) {
_abort();
// unreachable;
} else {
- $401 = ((($$3372$i)) + 16|0);
- HEAP32[$401>>2] = $398;
- $402 = ((($398)) + 24|0);
- HEAP32[$402>>2] = $$3372$i;
+ $418 = ((($$3372$i)) + 16|0);
+ HEAP32[$418>>2] = $415;
+ $419 = ((($415)) + 24|0);
+ HEAP32[$419>>2] = $$3372$i;
break;
}
}
} while(0);
- $403 = ((($$4$lcssa$i)) + 20|0);
- $404 = HEAP32[$403>>2]|0;
- $405 = ($404|0)==(0|0);
- if ($405) {
- $470 = $250;
+ $420 = ((($$4$lcssa$i)) + 20|0);
+ $421 = HEAP32[$420>>2]|0;
+ $422 = ($421|0)==(0|0);
+ if ($422) {
+ $487 = $267;
} else {
- $406 = HEAP32[(33200)>>2]|0;
- $407 = ($404>>>0)<($406>>>0);
- if ($407) {
+ $423 = HEAP32[(35512)>>2]|0;
+ $424 = ($421>>>0)<($423>>>0);
+ if ($424) {
_abort();
// unreachable;
} else {
- $408 = ((($$3372$i)) + 20|0);
- HEAP32[$408>>2] = $404;
- $409 = ((($404)) + 24|0);
- HEAP32[$409>>2] = $$3372$i;
- $470 = $250;
+ $425 = ((($$3372$i)) + 20|0);
+ HEAP32[$425>>2] = $421;
+ $426 = ((($421)) + 24|0);
+ HEAP32[$426>>2] = $$3372$i;
+ $487 = $267;
break;
}
}
}
} while(0);
- $410 = ($$4351$lcssa$i>>>0)<(16);
+ $427 = ($$4351$lcssa$i>>>0)<(16);
do {
- if ($410) {
- $411 = (($$4351$lcssa$i) + ($249))|0;
- $412 = $411 | 3;
- $413 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$413>>2] = $412;
- $414 = (($$4$lcssa$i) + ($411)|0);
- $415 = ((($414)) + 4|0);
- $416 = HEAP32[$415>>2]|0;
- $417 = $416 | 1;
- HEAP32[$415>>2] = $417;
+ if ($427) {
+ $428 = (($$4351$lcssa$i) + ($266))|0;
+ $429 = $428 | 3;
+ $430 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$430>>2] = $429;
+ $431 = (($$4$lcssa$i) + ($428)|0);
+ $432 = ((($431)) + 4|0);
+ $433 = HEAP32[$432>>2]|0;
+ $434 = $433 | 1;
+ HEAP32[$432>>2] = $434;
} else {
- $418 = $249 | 3;
- $419 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$419>>2] = $418;
- $420 = $$4351$lcssa$i | 1;
- $421 = ((($350)) + 4|0);
- HEAP32[$421>>2] = $420;
- $422 = (($350) + ($$4351$lcssa$i)|0);
- HEAP32[$422>>2] = $$4351$lcssa$i;
- $423 = $$4351$lcssa$i >>> 3;
- $424 = ($$4351$lcssa$i>>>0)<(256);
- if ($424) {
- $425 = $423 << 1;
- $426 = (33224 + ($425<<2)|0);
- $427 = HEAP32[8296]|0;
- $428 = 1 << $423;
- $429 = $427 & $428;
- $430 = ($429|0)==(0);
- if ($430) {
- $431 = $427 | $428;
- HEAP32[8296] = $431;
- $$pre$i210 = ((($426)) + 8|0);
- $$0368$i = $426;$$pre$phi$i211Z2D = $$pre$i210;
- } else {
- $432 = ((($426)) + 8|0);
- $433 = HEAP32[$432>>2]|0;
- $434 = HEAP32[(33200)>>2]|0;
- $435 = ($433>>>0)<($434>>>0);
- if ($435) {
+ $435 = $266 | 3;
+ $436 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$436>>2] = $435;
+ $437 = $$4351$lcssa$i | 1;
+ $438 = ((($367)) + 4|0);
+ HEAP32[$438>>2] = $437;
+ $439 = (($367) + ($$4351$lcssa$i)|0);
+ HEAP32[$439>>2] = $$4351$lcssa$i;
+ $440 = $$4351$lcssa$i >>> 3;
+ $441 = ($$4351$lcssa$i>>>0)<(256);
+ if ($441) {
+ $442 = $440 << 1;
+ $443 = (35536 + ($442<<2)|0);
+ $444 = HEAP32[8874]|0;
+ $445 = 1 << $440;
+ $446 = $444 & $445;
+ $447 = ($446|0)==(0);
+ do {
+ if ($447) {
+ $448 = $444 | $445;
+ HEAP32[8874] = $448;
+ $$pre$i211 = ((($443)) + 8|0);
+ $$0368$i = $443;$$pre$phi$i212Z2D = $$pre$i211;
+ } else {
+ $449 = ((($443)) + 8|0);
+ $450 = HEAP32[$449>>2]|0;
+ $451 = HEAP32[(35512)>>2]|0;
+ $452 = ($450>>>0)<($451>>>0);
+ if (!($452)) {
+ $$0368$i = $450;$$pre$phi$i212Z2D = $449;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $$0368$i = $433;$$pre$phi$i211Z2D = $432;
}
- }
- HEAP32[$$pre$phi$i211Z2D>>2] = $350;
- $436 = ((($$0368$i)) + 12|0);
- HEAP32[$436>>2] = $350;
- $437 = ((($350)) + 8|0);
- HEAP32[$437>>2] = $$0368$i;
- $438 = ((($350)) + 12|0);
- HEAP32[$438>>2] = $426;
+ } while(0);
+ HEAP32[$$pre$phi$i212Z2D>>2] = $367;
+ $453 = ((($$0368$i)) + 12|0);
+ HEAP32[$453>>2] = $367;
+ $454 = ((($367)) + 8|0);
+ HEAP32[$454>>2] = $$0368$i;
+ $455 = ((($367)) + 12|0);
+ HEAP32[$455>>2] = $443;
break;
}
- $439 = $$4351$lcssa$i >>> 8;
- $440 = ($439|0)==(0);
- if ($440) {
+ $456 = $$4351$lcssa$i >>> 8;
+ $457 = ($456|0)==(0);
+ if ($457) {
$$0361$i = 0;
} else {
- $441 = ($$4351$lcssa$i>>>0)>(16777215);
- if ($441) {
+ $458 = ($$4351$lcssa$i>>>0)>(16777215);
+ if ($458) {
$$0361$i = 31;
} else {
- $442 = (($439) + 1048320)|0;
- $443 = $442 >>> 16;
- $444 = $443 & 8;
- $445 = $439 << $444;
- $446 = (($445) + 520192)|0;
- $447 = $446 >>> 16;
- $448 = $447 & 4;
- $449 = $448 | $444;
- $450 = $445 << $448;
- $451 = (($450) + 245760)|0;
- $452 = $451 >>> 16;
- $453 = $452 & 2;
- $454 = $449 | $453;
- $455 = (14 - ($454))|0;
- $456 = $450 << $453;
- $457 = $456 >>> 15;
- $458 = (($455) + ($457))|0;
- $459 = $458 << 1;
- $460 = (($458) + 7)|0;
- $461 = $$4351$lcssa$i >>> $460;
- $462 = $461 & 1;
- $463 = $462 | $459;
- $$0361$i = $463;
+ $459 = (($456) + 1048320)|0;
+ $460 = $459 >>> 16;
+ $461 = $460 & 8;
+ $462 = $456 << $461;
+ $463 = (($462) + 520192)|0;
+ $464 = $463 >>> 16;
+ $465 = $464 & 4;
+ $466 = $465 | $461;
+ $467 = $462 << $465;
+ $468 = (($467) + 245760)|0;
+ $469 = $468 >>> 16;
+ $470 = $469 & 2;
+ $471 = $466 | $470;
+ $472 = (14 - ($471))|0;
+ $473 = $467 << $470;
+ $474 = $473 >>> 15;
+ $475 = (($472) + ($474))|0;
+ $476 = $475 << 1;
+ $477 = (($475) + 7)|0;
+ $478 = $$4351$lcssa$i >>> $477;
+ $479 = $478 & 1;
+ $480 = $479 | $476;
+ $$0361$i = $480;
}
}
- $464 = (33488 + ($$0361$i<<2)|0);
- $465 = ((($350)) + 28|0);
- HEAP32[$465>>2] = $$0361$i;
- $466 = ((($350)) + 16|0);
- $467 = ((($466)) + 4|0);
- HEAP32[$467>>2] = 0;
- HEAP32[$466>>2] = 0;
- $468 = 1 << $$0361$i;
- $469 = $470 & $468;
- $471 = ($469|0)==(0);
- if ($471) {
- $472 = $470 | $468;
- HEAP32[(33188)>>2] = $472;
- HEAP32[$464>>2] = $350;
- $473 = ((($350)) + 24|0);
- HEAP32[$473>>2] = $464;
- $474 = ((($350)) + 12|0);
- HEAP32[$474>>2] = $350;
- $475 = ((($350)) + 8|0);
- HEAP32[$475>>2] = $350;
+ $481 = (35800 + ($$0361$i<<2)|0);
+ $482 = ((($367)) + 28|0);
+ HEAP32[$482>>2] = $$0361$i;
+ $483 = ((($367)) + 16|0);
+ $484 = ((($483)) + 4|0);
+ HEAP32[$484>>2] = 0;
+ HEAP32[$483>>2] = 0;
+ $485 = 1 << $$0361$i;
+ $486 = $487 & $485;
+ $488 = ($486|0)==(0);
+ if ($488) {
+ $489 = $487 | $485;
+ HEAP32[(35500)>>2] = $489;
+ HEAP32[$481>>2] = $367;
+ $490 = ((($367)) + 24|0);
+ HEAP32[$490>>2] = $481;
+ $491 = ((($367)) + 12|0);
+ HEAP32[$491>>2] = $367;
+ $492 = ((($367)) + 8|0);
+ HEAP32[$492>>2] = $367;
break;
}
- $476 = HEAP32[$464>>2]|0;
- $477 = ($$0361$i|0)==(31);
- $478 = $$0361$i >>> 1;
- $479 = (25 - ($478))|0;
- $480 = $477 ? 0 : $479;
- $481 = $$4351$lcssa$i << $480;
- $$0344$i = $481;$$0345$i = $476;
+ $493 = HEAP32[$481>>2]|0;
+ $494 = ($$0361$i|0)==(31);
+ $495 = $$0361$i >>> 1;
+ $496 = (25 - ($495))|0;
+ $497 = $494 ? 0 : $496;
+ $498 = $$4351$lcssa$i << $497;
+ $$0344$i = $498;$$0345$i = $493;
while(1) {
- $482 = ((($$0345$i)) + 4|0);
- $483 = HEAP32[$482>>2]|0;
- $484 = $483 & -8;
- $485 = ($484|0)==($$4351$lcssa$i|0);
- if ($485) {
- label = 139;
+ $499 = ((($$0345$i)) + 4|0);
+ $500 = HEAP32[$499>>2]|0;
+ $501 = $500 & -8;
+ $502 = ($501|0)==($$4351$lcssa$i|0);
+ if ($502) {
+ label = 148;
break;
}
- $486 = $$0344$i >>> 31;
- $487 = (((($$0345$i)) + 16|0) + ($486<<2)|0);
- $488 = $$0344$i << 1;
- $489 = HEAP32[$487>>2]|0;
- $490 = ($489|0)==(0|0);
- if ($490) {
- label = 136;
+ $503 = $$0344$i >>> 31;
+ $504 = (((($$0345$i)) + 16|0) + ($503<<2)|0);
+ $505 = $$0344$i << 1;
+ $506 = HEAP32[$504>>2]|0;
+ $507 = ($506|0)==(0|0);
+ if ($507) {
+ label = 145;
break;
} else {
- $$0344$i = $488;$$0345$i = $489;
+ $$0344$i = $505;$$0345$i = $506;
}
}
- if ((label|0) == 136) {
- $491 = HEAP32[(33200)>>2]|0;
- $492 = ($487>>>0)<($491>>>0);
- if ($492) {
+ if ((label|0) == 145) {
+ $508 = HEAP32[(35512)>>2]|0;
+ $509 = ($504>>>0)<($508>>>0);
+ if ($509) {
_abort();
// unreachable;
} else {
- HEAP32[$487>>2] = $350;
- $493 = ((($350)) + 24|0);
- HEAP32[$493>>2] = $$0345$i;
- $494 = ((($350)) + 12|0);
- HEAP32[$494>>2] = $350;
- $495 = ((($350)) + 8|0);
- HEAP32[$495>>2] = $350;
+ HEAP32[$504>>2] = $367;
+ $510 = ((($367)) + 24|0);
+ HEAP32[$510>>2] = $$0345$i;
+ $511 = ((($367)) + 12|0);
+ HEAP32[$511>>2] = $367;
+ $512 = ((($367)) + 8|0);
+ HEAP32[$512>>2] = $367;
break;
}
}
- else if ((label|0) == 139) {
- $496 = ((($$0345$i)) + 8|0);
- $497 = HEAP32[$496>>2]|0;
- $498 = HEAP32[(33200)>>2]|0;
- $499 = ($497>>>0)>=($498>>>0);
- $not$9$i = ($$0345$i>>>0)>=($498>>>0);
- $500 = $499 & $not$9$i;
- if ($500) {
- $501 = ((($497)) + 12|0);
- HEAP32[$501>>2] = $350;
- HEAP32[$496>>2] = $350;
- $502 = ((($350)) + 8|0);
- HEAP32[$502>>2] = $497;
- $503 = ((($350)) + 12|0);
- HEAP32[$503>>2] = $$0345$i;
- $504 = ((($350)) + 24|0);
- HEAP32[$504>>2] = 0;
+ else if ((label|0) == 148) {
+ $513 = ((($$0345$i)) + 8|0);
+ $514 = HEAP32[$513>>2]|0;
+ $515 = HEAP32[(35512)>>2]|0;
+ $516 = ($514>>>0)>=($515>>>0);
+ $not$9$i = ($$0345$i>>>0)>=($515>>>0);
+ $517 = $516 & $not$9$i;
+ if ($517) {
+ $518 = ((($514)) + 12|0);
+ HEAP32[$518>>2] = $367;
+ HEAP32[$513>>2] = $367;
+ $519 = ((($367)) + 8|0);
+ HEAP32[$519>>2] = $514;
+ $520 = ((($367)) + 12|0);
+ HEAP32[$520>>2] = $$0345$i;
+ $521 = ((($367)) + 24|0);
+ HEAP32[$521>>2] = 0;
break;
} else {
_abort();
@@ -25073,1200 +31351,1238 @@ function _malloc($0) {
}
}
} while(0);
- $505 = ((($$4$lcssa$i)) + 8|0);
- $$0 = $505;
- STACKTOP = sp;return ($$0|0);
+ $522 = ((($$4$lcssa$i)) + 8|0);
+ $$2 = $522;
} else {
- $$0197 = $249;
+ $$0198 = $266;
+ label = 153;
}
}
}
}
}
} while(0);
- $506 = HEAP32[(33192)>>2]|0;
- $507 = ($506>>>0)<($$0197>>>0);
- if (!($507)) {
- $508 = (($506) - ($$0197))|0;
- $509 = HEAP32[(33204)>>2]|0;
- $510 = ($508>>>0)>(15);
- if ($510) {
- $511 = (($509) + ($$0197)|0);
- HEAP32[(33204)>>2] = $511;
- HEAP32[(33192)>>2] = $508;
- $512 = $508 | 1;
- $513 = ((($511)) + 4|0);
- HEAP32[$513>>2] = $512;
- $514 = (($511) + ($508)|0);
- HEAP32[$514>>2] = $508;
- $515 = $$0197 | 3;
- $516 = ((($509)) + 4|0);
- HEAP32[$516>>2] = $515;
- } else {
- HEAP32[(33192)>>2] = 0;
- HEAP32[(33204)>>2] = 0;
- $517 = $506 | 3;
- $518 = ((($509)) + 4|0);
- HEAP32[$518>>2] = $517;
- $519 = (($509) + ($506)|0);
- $520 = ((($519)) + 4|0);
- $521 = HEAP32[$520>>2]|0;
- $522 = $521 | 1;
- HEAP32[$520>>2] = $522;
- }
- $523 = ((($509)) + 8|0);
- $$0 = $523;
- STACKTOP = sp;return ($$0|0);
- }
- $524 = HEAP32[(33196)>>2]|0;
- $525 = ($524>>>0)>($$0197>>>0);
- if ($525) {
- $526 = (($524) - ($$0197))|0;
- HEAP32[(33196)>>2] = $526;
- $527 = HEAP32[(33208)>>2]|0;
- $528 = (($527) + ($$0197)|0);
- HEAP32[(33208)>>2] = $528;
- $529 = $526 | 1;
- $530 = ((($528)) + 4|0);
- HEAP32[$530>>2] = $529;
- $531 = $$0197 | 3;
- $532 = ((($527)) + 4|0);
- HEAP32[$532>>2] = $531;
- $533 = ((($527)) + 8|0);
- $$0 = $533;
- STACKTOP = sp;return ($$0|0);
- }
- $534 = HEAP32[8414]|0;
- $535 = ($534|0)==(0);
- if ($535) {
- HEAP32[(33664)>>2] = 4096;
- HEAP32[(33660)>>2] = 4096;
- HEAP32[(33668)>>2] = -1;
- HEAP32[(33672)>>2] = -1;
- HEAP32[(33676)>>2] = 0;
- HEAP32[(33628)>>2] = 0;
- $536 = $1;
- $537 = $536 & -16;
- $538 = $537 ^ 1431655768;
- HEAP32[$1>>2] = $538;
- HEAP32[8414] = $538;
- $542 = 4096;
- } else {
- $$pre$i212 = HEAP32[(33664)>>2]|0;
- $542 = $$pre$i212;
- }
- $539 = (($$0197) + 48)|0;
- $540 = (($$0197) + 47)|0;
- $541 = (($542) + ($540))|0;
- $543 = (0 - ($542))|0;
- $544 = $541 & $543;
- $545 = ($544>>>0)>($$0197>>>0);
- if (!($545)) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- $546 = HEAP32[(33624)>>2]|0;
- $547 = ($546|0)==(0);
- if (!($547)) {
- $548 = HEAP32[(33616)>>2]|0;
- $549 = (($548) + ($544))|0;
- $550 = ($549>>>0)<=($548>>>0);
- $551 = ($549>>>0)>($546>>>0);
- $or$cond1$i = $550 | $551;
- if ($or$cond1$i) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $552 = HEAP32[(33628)>>2]|0;
- $553 = $552 & 4;
- $554 = ($553|0)==(0);
- L244: do {
- if ($554) {
- $555 = HEAP32[(33208)>>2]|0;
- $556 = ($555|0)==(0|0);
- L246: do {
- if ($556) {
- label = 163;
+ L230: do {
+ if ((label|0) == 153) {
+ $523 = HEAP32[(35504)>>2]|0;
+ $524 = ($523>>>0)<($$0198>>>0);
+ if (!($524)) {
+ $525 = (($523) - ($$0198))|0;
+ $526 = HEAP32[(35516)>>2]|0;
+ $527 = ($525>>>0)>(15);
+ if ($527) {
+ $528 = (($526) + ($$0198)|0);
+ HEAP32[(35516)>>2] = $528;
+ HEAP32[(35504)>>2] = $525;
+ $529 = $525 | 1;
+ $530 = ((($528)) + 4|0);
+ HEAP32[$530>>2] = $529;
+ $531 = (($528) + ($525)|0);
+ HEAP32[$531>>2] = $525;
+ $532 = $$0198 | 3;
+ $533 = ((($526)) + 4|0);
+ HEAP32[$533>>2] = $532;
} else {
- $$0$i$i = (33632);
- while(1) {
- $557 = HEAP32[$$0$i$i>>2]|0;
- $558 = ($557>>>0)>($555>>>0);
- if (!($558)) {
- $559 = ((($$0$i$i)) + 4|0);
- $560 = HEAP32[$559>>2]|0;
- $561 = (($557) + ($560)|0);
- $562 = ($561>>>0)>($555>>>0);
- if ($562) {
- break;
- }
+ HEAP32[(35504)>>2] = 0;
+ HEAP32[(35516)>>2] = 0;
+ $534 = $523 | 3;
+ $535 = ((($526)) + 4|0);
+ HEAP32[$535>>2] = $534;
+ $536 = (($526) + ($523)|0);
+ $537 = ((($536)) + 4|0);
+ $538 = HEAP32[$537>>2]|0;
+ $539 = $538 | 1;
+ HEAP32[$537>>2] = $539;
+ }
+ $540 = ((($526)) + 8|0);
+ $$2 = $540;
+ break;
+ }
+ $541 = HEAP32[(35508)>>2]|0;
+ $542 = ($541>>>0)>($$0198>>>0);
+ if ($542) {
+ $543 = (($541) - ($$0198))|0;
+ HEAP32[(35508)>>2] = $543;
+ $544 = HEAP32[(35520)>>2]|0;
+ $545 = (($544) + ($$0198)|0);
+ HEAP32[(35520)>>2] = $545;
+ $546 = $543 | 1;
+ $547 = ((($545)) + 4|0);
+ HEAP32[$547>>2] = $546;
+ $548 = $$0198 | 3;
+ $549 = ((($544)) + 4|0);
+ HEAP32[$549>>2] = $548;
+ $550 = ((($544)) + 8|0);
+ $$2 = $550;
+ break;
+ }
+ $551 = HEAP32[8861]|0;
+ $552 = ($551|0)==(0);
+ if ($552) {
+ (___pthread_mutex_lock(35468)|0);
+ $553 = HEAP32[8861]|0;
+ $554 = ($553|0)==(0);
+ if ($554) {
+ HEAP32[(35452)>>2] = 4096;
+ HEAP32[(35448)>>2] = 4096;
+ HEAP32[(35456)>>2] = -1;
+ HEAP32[(35460)>>2] = -1;
+ HEAP32[(35464)>>2] = 2;
+ HEAP32[(35940)>>2] = 2;
+ $555 = (_pthread_mutexattr_init($1)|0);
+ $556 = ($555|0)==(0);
+ if ($556) {
+ $557 = (_pthread_mutex_init((35944),$1)|0);
+ $558 = ($557|0)==(0);
+ if ($558) {
}
- $563 = ((($$0$i$i)) + 8|0);
- $564 = HEAP32[$563>>2]|0;
- $565 = ($564|0)==(0|0);
- if ($565) {
- label = 163;
- break L246;
+ }
+ $559 = $2;
+ $560 = $559 & -16;
+ $561 = $560 ^ 1431655768;
+ HEAP32[$2>>2] = $561;
+ Atomics_store(HEAP32,8861,$561)|0;
+ }
+ (___pthread_mutex_unlock(35468)|0);
+ }
+ $562 = (($$0198) + 48)|0;
+ $563 = HEAP32[(35452)>>2]|0;
+ $564 = (($$0198) + 47)|0;
+ $565 = (($563) + ($564))|0;
+ $566 = (0 - ($563))|0;
+ $567 = $565 & $566;
+ $568 = ($567>>>0)>($$0198>>>0);
+ if ($568) {
+ $569 = HEAP32[(35936)>>2]|0;
+ $570 = ($569|0)==(0);
+ if (!($570)) {
+ $571 = HEAP32[(35928)>>2]|0;
+ $572 = (($571) + ($567))|0;
+ $573 = ($572>>>0)<=($571>>>0);
+ $574 = ($572>>>0)>($569>>>0);
+ $or$cond1$i = $573 | $574;
+ if ($or$cond1$i) {
+ $$2 = 0;
+ break;
+ }
+ }
+ $575 = HEAP32[(35940)>>2]|0;
+ $576 = $575 & 4;
+ $577 = ($576|0)==(0);
+ if ($577) {
+ $578 = HEAP32[(35520)>>2]|0;
+ $579 = ($578|0)==(0|0);
+ L258: do {
+ if ($579) {
+ label = 176;
} else {
- $$0$i$i = $564;
+ $$0$i$i = (35972);
+ while(1) {
+ $580 = HEAP32[$$0$i$i>>2]|0;
+ $581 = ($580>>>0)>($578>>>0);
+ if (!($581)) {
+ $582 = ((($$0$i$i)) + 4|0);
+ $583 = HEAP32[$582>>2]|0;
+ $584 = (($580) + ($583)|0);
+ $585 = ($584>>>0)>($578>>>0);
+ if ($585) {
+ break;
+ }
+ }
+ $586 = ((($$0$i$i)) + 8|0);
+ $587 = HEAP32[$586>>2]|0;
+ $588 = ($587|0)==(0|0);
+ if ($588) {
+ label = 176;
+ break L258;
+ } else {
+ $$0$i$i = $587;
+ }
+ }
+ (___pthread_mutex_lock(35468)|0);
+ $611 = HEAP32[(35508)>>2]|0;
+ $612 = HEAP32[(35452)>>2]|0;
+ $613 = (($564) - ($611))|0;
+ $614 = (($613) + ($612))|0;
+ $615 = (0 - ($612))|0;
+ $616 = $614 & $615;
+ $617 = ($616>>>0)<(2147483647);
+ if ($617) {
+ $618 = (_sbrk(($616|0))|0);
+ $619 = HEAP32[$$0$i$i>>2]|0;
+ $620 = HEAP32[$582>>2]|0;
+ $621 = (($619) + ($620)|0);
+ $622 = ($618|0)==($621|0);
+ if ($622) {
+ $623 = ($618|0)==((-1)|0);
+ if ($623) {
+ $$2234253237$i = $616;
+ label = 190;
+ } else {
+ $$3229$i = $618;$$3235$i = $616;
+ }
+ } else {
+ $$2247$ph$i = $618;$$2253$ph$i = $616;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- }
- $588 = (($541) - ($524))|0;
- $589 = $588 & $543;
- $590 = ($589>>>0)<(2147483647);
- if ($590) {
- $591 = (_sbrk(($589|0))|0);
- $592 = HEAP32[$$0$i$i>>2]|0;
- $593 = HEAP32[$559>>2]|0;
- $594 = (($592) + ($593)|0);
- $595 = ($591|0)==($594|0);
- if ($595) {
- $596 = ($591|0)==((-1)|0);
- if ($596) {
- $$2234253237$i = $589;
+ } while(0);
+ do {
+ if ((label|0) == 176) {
+ (___pthread_mutex_lock(35468)|0);
+ $589 = (_sbrk(0)|0);
+ $590 = ($589|0)==((-1)|0);
+ if ($590) {
+ $$2234253237$i = 0;
+ label = 190;
} else {
- $$723948$i = $589;$$749$i = $591;
- label = 180;
- break L244;
+ $591 = $589;
+ $592 = HEAP32[(35448)>>2]|0;
+ $593 = (($592) + -1)|0;
+ $594 = $593 & $591;
+ $595 = ($594|0)==(0);
+ $596 = (($593) + ($591))|0;
+ $597 = (0 - ($592))|0;
+ $598 = $596 & $597;
+ $599 = (($598) - ($591))|0;
+ $600 = $595 ? 0 : $599;
+ $$$i = (($600) + ($567))|0;
+ $601 = HEAP32[(35928)>>2]|0;
+ $602 = (($$$i) + ($601))|0;
+ $603 = ($$$i>>>0)>($$0198>>>0);
+ $604 = ($$$i>>>0)<(2147483647);
+ $or$cond$i213 = $603 & $604;
+ if ($or$cond$i213) {
+ $605 = HEAP32[(35936)>>2]|0;
+ $606 = ($605|0)==(0);
+ if (!($606)) {
+ $607 = ($602>>>0)<=($601>>>0);
+ $608 = ($602>>>0)>($605>>>0);
+ $or$cond2$i214 = $607 | $608;
+ if ($or$cond2$i214) {
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ }
+ }
+ $609 = (_sbrk(($$$i|0))|0);
+ $610 = ($609|0)==($589|0);
+ if ($610) {
+ $$3229$i = $589;$$3235$i = $$$i;
+ } else {
+ $$2247$ph$i = $609;$$2253$ph$i = $$$i;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- } else {
- $$2247$ph$i = $591;$$2253$ph$i = $589;
- label = 171;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- } while(0);
- do {
- if ((label|0) == 163) {
- $566 = (_sbrk(0)|0);
- $567 = ($566|0)==((-1)|0);
- if ($567) {
- $$2234253237$i = 0;
- } else {
- $568 = $566;
- $569 = HEAP32[(33660)>>2]|0;
- $570 = (($569) + -1)|0;
- $571 = $570 & $568;
- $572 = ($571|0)==(0);
- $573 = (($570) + ($568))|0;
- $574 = (0 - ($569))|0;
- $575 = $573 & $574;
- $576 = (($575) - ($568))|0;
- $577 = $572 ? 0 : $576;
- $$$i = (($577) + ($544))|0;
- $578 = HEAP32[(33616)>>2]|0;
- $579 = (($$$i) + ($578))|0;
- $580 = ($$$i>>>0)>($$0197>>>0);
- $581 = ($$$i>>>0)<(2147483647);
- $or$cond$i214 = $580 & $581;
- if ($or$cond$i214) {
- $582 = HEAP32[(33624)>>2]|0;
- $583 = ($582|0)==(0);
- if (!($583)) {
- $584 = ($579>>>0)<=($578>>>0);
- $585 = ($579>>>0)>($582>>>0);
- $or$cond2$i215 = $584 | $585;
- if ($or$cond2$i215) {
+ } while(0);
+ do {
+ if ((label|0) == 184) {
+ $624 = (0 - ($$2253$ph$i))|0;
+ $625 = ($$2247$ph$i|0)!=((-1)|0);
+ $626 = ($$2253$ph$i>>>0)<(2147483647);
+ $or$cond7$i = $626 & $625;
+ $627 = ($562>>>0)>($$2253$ph$i>>>0);
+ $or$cond10$i = $627 & $or$cond7$i;
+ if (!($or$cond10$i)) {
+ $637 = ($$2247$ph$i|0)==((-1)|0);
+ if ($637) {
$$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
break;
}
}
- $586 = (_sbrk(($$$i|0))|0);
- $587 = ($586|0)==($566|0);
- if ($587) {
- $$723948$i = $$$i;$$749$i = $566;
- label = 180;
- break L244;
+ $628 = HEAP32[(35452)>>2]|0;
+ $629 = (($564) - ($$2253$ph$i))|0;
+ $630 = (($629) + ($628))|0;
+ $631 = (0 - ($628))|0;
+ $632 = $630 & $631;
+ $633 = ($632>>>0)<(2147483647);
+ if ($633) {
+ $634 = (_sbrk(($632|0))|0);
+ $635 = ($634|0)==((-1)|0);
+ if ($635) {
+ (_sbrk(($624|0))|0);
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $636 = (($632) + ($$2253$ph$i))|0;
+ $$3229$i = $$2247$ph$i;$$3235$i = $636;
+ break;
+ }
} else {
- $$2247$ph$i = $586;$$2253$ph$i = $$$i;
- label = 171;
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- }
- } while(0);
- do {
- if ((label|0) == 171) {
- $597 = (0 - ($$2253$ph$i))|0;
- $598 = ($$2247$ph$i|0)!=((-1)|0);
- $599 = ($$2253$ph$i>>>0)<(2147483647);
- $or$cond7$i = $599 & $598;
- $600 = ($539>>>0)>($$2253$ph$i>>>0);
- $or$cond10$i = $600 & $or$cond7$i;
- if (!($or$cond10$i)) {
- $610 = ($$2247$ph$i|0)==((-1)|0);
- if ($610) {
- $$2234253237$i = 0;
- break;
- } else {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- $601 = HEAP32[(33664)>>2]|0;
- $602 = (($540) - ($$2253$ph$i))|0;
- $603 = (($602) + ($601))|0;
- $604 = (0 - ($601))|0;
- $605 = $603 & $604;
- $606 = ($605>>>0)<(2147483647);
- if (!($606)) {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- $607 = (_sbrk(($605|0))|0);
- $608 = ($607|0)==((-1)|0);
- if ($608) {
- (_sbrk(($597|0))|0);
- $$2234253237$i = 0;
- break;
- } else {
- $609 = (($605) + ($$2253$ph$i))|0;
- $$723948$i = $609;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- } while(0);
- $611 = HEAP32[(33628)>>2]|0;
- $612 = $611 | 4;
- HEAP32[(33628)>>2] = $612;
- $$4236$i = $$2234253237$i;
- label = 178;
- } else {
- $$4236$i = 0;
- label = 178;
- }
- } while(0);
- if ((label|0) == 178) {
- $613 = ($544>>>0)<(2147483647);
- if ($613) {
- $614 = (_sbrk(($544|0))|0);
- $615 = (_sbrk(0)|0);
- $616 = ($614|0)!=((-1)|0);
- $617 = ($615|0)!=((-1)|0);
- $or$cond5$i = $616 & $617;
- $618 = ($614>>>0)<($615>>>0);
- $or$cond11$i = $618 & $or$cond5$i;
- $619 = $615;
- $620 = $614;
- $621 = (($619) - ($620))|0;
- $622 = (($$0197) + 40)|0;
- $623 = ($621>>>0)>($622>>>0);
- $$$4236$i = $623 ? $621 : $$4236$i;
- $or$cond11$not$i = $or$cond11$i ^ 1;
- $624 = ($614|0)==((-1)|0);
- $not$$i216 = $623 ^ 1;
- $625 = $624 | $not$$i216;
- $or$cond50$i = $625 | $or$cond11$not$i;
- if (!($or$cond50$i)) {
- $$723948$i = $$$4236$i;$$749$i = $614;
- label = 180;
- }
- }
- }
- if ((label|0) == 180) {
- $626 = HEAP32[(33616)>>2]|0;
- $627 = (($626) + ($$723948$i))|0;
- HEAP32[(33616)>>2] = $627;
- $628 = HEAP32[(33620)>>2]|0;
- $629 = ($627>>>0)>($628>>>0);
- if ($629) {
- HEAP32[(33620)>>2] = $627;
- }
- $630 = HEAP32[(33208)>>2]|0;
- $631 = ($630|0)==(0|0);
- do {
- if ($631) {
- $632 = HEAP32[(33200)>>2]|0;
- $633 = ($632|0)==(0|0);
- $634 = ($$749$i>>>0)<($632>>>0);
- $or$cond12$i = $633 | $634;
- if ($or$cond12$i) {
- HEAP32[(33200)>>2] = $$749$i;
- }
- HEAP32[(33632)>>2] = $$749$i;
- HEAP32[(33636)>>2] = $$723948$i;
- HEAP32[(33644)>>2] = 0;
- $635 = HEAP32[8414]|0;
- HEAP32[(33220)>>2] = $635;
- HEAP32[(33216)>>2] = -1;
- $$01$i$i = 0;
- while(1) {
- $636 = $$01$i$i << 1;
- $637 = (33224 + ($636<<2)|0);
- $638 = ((($637)) + 12|0);
- HEAP32[$638>>2] = $637;
- $639 = ((($637)) + 8|0);
- HEAP32[$639>>2] = $637;
- $640 = (($$01$i$i) + 1)|0;
- $exitcond$i$i = ($640|0)==(32);
- if ($exitcond$i$i) {
- break;
- } else {
- $$01$i$i = $640;
- }
- }
- $641 = (($$723948$i) + -40)|0;
- $642 = ((($$749$i)) + 8|0);
- $643 = $642;
- $644 = $643 & 7;
- $645 = ($644|0)==(0);
- $646 = (0 - ($643))|0;
- $647 = $646 & 7;
- $648 = $645 ? 0 : $647;
- $649 = (($$749$i) + ($648)|0);
- $650 = (($641) - ($648))|0;
- HEAP32[(33208)>>2] = $649;
- HEAP32[(33196)>>2] = $650;
- $651 = $650 | 1;
- $652 = ((($649)) + 4|0);
- HEAP32[$652>>2] = $651;
- $653 = (($649) + ($650)|0);
- $654 = ((($653)) + 4|0);
- HEAP32[$654>>2] = 40;
- $655 = HEAP32[(33672)>>2]|0;
- HEAP32[(33212)>>2] = $655;
- } else {
- $$024371$i = (33632);
- while(1) {
- $656 = HEAP32[$$024371$i>>2]|0;
- $657 = ((($$024371$i)) + 4|0);
- $658 = HEAP32[$657>>2]|0;
- $659 = (($656) + ($658)|0);
- $660 = ($$749$i|0)==($659|0);
- if ($660) {
- label = 190;
- break;
- }
- $661 = ((($$024371$i)) + 8|0);
- $662 = HEAP32[$661>>2]|0;
- $663 = ($662|0)==(0|0);
- if ($663) {
- break;
- } else {
- $$024371$i = $662;
- }
- }
- if ((label|0) == 190) {
- $664 = ((($$024371$i)) + 12|0);
- $665 = HEAP32[$664>>2]|0;
- $666 = $665 & 8;
- $667 = ($666|0)==(0);
- if ($667) {
- $668 = ($630>>>0)>=($656>>>0);
- $669 = ($630>>>0)<($$749$i>>>0);
- $or$cond51$i = $669 & $668;
- if ($or$cond51$i) {
- $670 = (($658) + ($$723948$i))|0;
- HEAP32[$657>>2] = $670;
- $671 = HEAP32[(33196)>>2]|0;
- $672 = ((($630)) + 8|0);
- $673 = $672;
- $674 = $673 & 7;
- $675 = ($674|0)==(0);
- $676 = (0 - ($673))|0;
- $677 = $676 & 7;
- $678 = $675 ? 0 : $677;
- $679 = (($630) + ($678)|0);
- $680 = (($$723948$i) - ($678))|0;
- $681 = (($671) + ($680))|0;
- HEAP32[(33208)>>2] = $679;
- HEAP32[(33196)>>2] = $681;
- $682 = $681 | 1;
- $683 = ((($679)) + 4|0);
- HEAP32[$683>>2] = $682;
- $684 = (($679) + ($681)|0);
- $685 = ((($684)) + 4|0);
- HEAP32[$685>>2] = 40;
- $686 = HEAP32[(33672)>>2]|0;
- HEAP32[(33212)>>2] = $686;
- break;
}
+ } while(0);
+ if ((label|0) == 190) {
+ $638 = HEAP32[(35940)>>2]|0;
+ $639 = $638 | 4;
+ HEAP32[(35940)>>2] = $639;
+ $$3229$i = (-1);$$3235$i = $$2234253237$i;
}
- }
- $687 = HEAP32[(33200)>>2]|0;
- $688 = ($$749$i>>>0)<($687>>>0);
- if ($688) {
- HEAP32[(33200)>>2] = $$749$i;
- $752 = $$749$i;
+ (___pthread_mutex_unlock(35468)|0);
+ $$4230$i = $$3229$i;$$4236$i = $$3235$i;
} else {
- $752 = $687;
- }
- $689 = (($$749$i) + ($$723948$i)|0);
- $$124470$i = (33632);
- while(1) {
- $690 = HEAP32[$$124470$i>>2]|0;
- $691 = ($690|0)==($689|0);
- if ($691) {
- label = 198;
- break;
- }
- $692 = ((($$124470$i)) + 8|0);
- $693 = HEAP32[$692>>2]|0;
- $694 = ($693|0)==(0|0);
- if ($694) {
- break;
- } else {
- $$124470$i = $693;
+ $$4230$i = (-1);$$4236$i = 0;
+ }
+ $640 = ($$4230$i|0)==((-1)|0);
+ $641 = ($567>>>0)<(2147483647);
+ $or$cond9$i = $641 & $640;
+ if ($or$cond9$i) {
+ (___pthread_mutex_lock(35468)|0);
+ $642 = (_sbrk(($567|0))|0);
+ $643 = (_sbrk(0)|0);
+ (___pthread_mutex_unlock(35468)|0);
+ $644 = ($642|0)!=((-1)|0);
+ $645 = ($643|0)!=((-1)|0);
+ $or$cond5$i = $644 & $645;
+ $646 = ($642>>>0)<($643>>>0);
+ $or$cond11$i = $646 & $or$cond5$i;
+ $647 = $643;
+ $648 = $642;
+ $649 = (($647) - ($648))|0;
+ $650 = (($$0198) + 40)|0;
+ $651 = ($649>>>0)>($650>>>0);
+ $$$4236$i = $651 ? $649 : $$4236$i;
+ $$$4230$i = $651 ? $642 : (-1);
+ if ($or$cond11$i) {
+ $$7$i = $$$4230$i;$$7239$i = $$$4236$i;
+ label = 194;
}
- }
- if ((label|0) == 198) {
- $695 = ((($$124470$i)) + 12|0);
- $696 = HEAP32[$695>>2]|0;
- $697 = $696 & 8;
- $698 = ($697|0)==(0);
- if ($698) {
- HEAP32[$$124470$i>>2] = $$749$i;
- $699 = ((($$124470$i)) + 4|0);
- $700 = HEAP32[$699>>2]|0;
- $701 = (($700) + ($$723948$i))|0;
- HEAP32[$699>>2] = $701;
- $702 = ((($$749$i)) + 8|0);
- $703 = $702;
- $704 = $703 & 7;
- $705 = ($704|0)==(0);
- $706 = (0 - ($703))|0;
- $707 = $706 & 7;
- $708 = $705 ? 0 : $707;
- $709 = (($$749$i) + ($708)|0);
- $710 = ((($689)) + 8|0);
- $711 = $710;
- $712 = $711 & 7;
- $713 = ($712|0)==(0);
- $714 = (0 - ($711))|0;
- $715 = $714 & 7;
- $716 = $713 ? 0 : $715;
- $717 = (($689) + ($716)|0);
- $718 = $717;
- $719 = $709;
- $720 = (($718) - ($719))|0;
- $721 = (($709) + ($$0197)|0);
- $722 = (($720) - ($$0197))|0;
- $723 = $$0197 | 3;
- $724 = ((($709)) + 4|0);
- HEAP32[$724>>2] = $723;
- $725 = ($717|0)==($630|0);
+ } else {
+ $$7$i = $$4230$i;$$7239$i = $$4236$i;
+ label = 194;
+ }
+ if ((label|0) == 194) {
+ $652 = ($$7$i|0)==((-1)|0);
+ if (!($652)) {
+ $653 = HEAP32[(35928)>>2]|0;
+ $654 = (($653) + ($$7239$i))|0;
+ HEAP32[(35928)>>2] = $654;
+ $655 = HEAP32[(35932)>>2]|0;
+ $656 = ($654>>>0)>($655>>>0);
+ if ($656) {
+ HEAP32[(35932)>>2] = $654;
+ }
+ $657 = HEAP32[(35520)>>2]|0;
+ $658 = ($657|0)==(0|0);
do {
- if ($725) {
- $726 = HEAP32[(33196)>>2]|0;
- $727 = (($726) + ($722))|0;
- HEAP32[(33196)>>2] = $727;
- HEAP32[(33208)>>2] = $721;
- $728 = $727 | 1;
- $729 = ((($721)) + 4|0);
- HEAP32[$729>>2] = $728;
+ if ($658) {
+ $659 = HEAP32[(35512)>>2]|0;
+ $660 = ($659|0)==(0|0);
+ $661 = ($$7$i>>>0)<($659>>>0);
+ $or$cond12$i = $660 | $661;
+ if ($or$cond12$i) {
+ HEAP32[(35512)>>2] = $$7$i;
+ }
+ HEAP32[(35972)>>2] = $$7$i;
+ HEAP32[(35976)>>2] = $$7239$i;
+ HEAP32[(35984)>>2] = 0;
+ $662 = HEAP32[8861]|0;
+ HEAP32[(35532)>>2] = $662;
+ HEAP32[(35528)>>2] = -1;
+ $$01$i$i = 0;
+ while(1) {
+ $663 = $$01$i$i << 1;
+ $664 = (35536 + ($663<<2)|0);
+ $665 = ((($664)) + 12|0);
+ HEAP32[$665>>2] = $664;
+ $666 = ((($664)) + 8|0);
+ HEAP32[$666>>2] = $664;
+ $667 = (($$01$i$i) + 1)|0;
+ $exitcond$i$i = ($667|0)==(32);
+ if ($exitcond$i$i) {
+ break;
+ } else {
+ $$01$i$i = $667;
+ }
+ }
+ $668 = (($$7239$i) + -40)|0;
+ $669 = ((($$7$i)) + 8|0);
+ $670 = $669;
+ $671 = $670 & 7;
+ $672 = ($671|0)==(0);
+ $673 = (0 - ($670))|0;
+ $674 = $673 & 7;
+ $675 = $672 ? 0 : $674;
+ $676 = (($$7$i) + ($675)|0);
+ $677 = (($668) - ($675))|0;
+ HEAP32[(35520)>>2] = $676;
+ HEAP32[(35508)>>2] = $677;
+ $678 = $677 | 1;
+ $679 = ((($676)) + 4|0);
+ HEAP32[$679>>2] = $678;
+ $680 = (($676) + ($677)|0);
+ $681 = ((($680)) + 4|0);
+ HEAP32[$681>>2] = 40;
+ $682 = HEAP32[(35460)>>2]|0;
+ HEAP32[(35524)>>2] = $682;
} else {
- $730 = HEAP32[(33204)>>2]|0;
- $731 = ($717|0)==($730|0);
- if ($731) {
- $732 = HEAP32[(33192)>>2]|0;
- $733 = (($732) + ($722))|0;
- HEAP32[(33192)>>2] = $733;
- HEAP32[(33204)>>2] = $721;
- $734 = $733 | 1;
- $735 = ((($721)) + 4|0);
- HEAP32[$735>>2] = $734;
- $736 = (($721) + ($733)|0);
- HEAP32[$736>>2] = $733;
- break;
+ $$024363$i = (35972);
+ while(1) {
+ $683 = HEAP32[$$024363$i>>2]|0;
+ $684 = ((($$024363$i)) + 4|0);
+ $685 = HEAP32[$684>>2]|0;
+ $686 = (($683) + ($685)|0);
+ $687 = ($$7$i|0)==($686|0);
+ if ($687) {
+ label = 205;
+ break;
+ }
+ $688 = ((($$024363$i)) + 8|0);
+ $689 = HEAP32[$688>>2]|0;
+ $690 = ($689|0)==(0|0);
+ if ($690) {
+ break;
+ } else {
+ $$024363$i = $689;
+ }
}
- $737 = ((($717)) + 4|0);
- $738 = HEAP32[$737>>2]|0;
- $739 = $738 & 3;
- $740 = ($739|0)==(1);
- if ($740) {
- $741 = $738 & -8;
- $742 = $738 >>> 3;
- $743 = ($738>>>0)<(256);
- L314: do {
- if ($743) {
- $744 = ((($717)) + 8|0);
- $745 = HEAP32[$744>>2]|0;
- $746 = ((($717)) + 12|0);
- $747 = HEAP32[$746>>2]|0;
- $748 = $742 << 1;
- $749 = (33224 + ($748<<2)|0);
- $750 = ($745|0)==($749|0);
- do {
- if (!($750)) {
- $751 = ($745>>>0)<($752>>>0);
- if ($751) {
- _abort();
- // unreachable;
- }
- $753 = ((($745)) + 12|0);
- $754 = HEAP32[$753>>2]|0;
- $755 = ($754|0)==($717|0);
- if ($755) {
- break;
- }
- _abort();
- // unreachable;
+ if ((label|0) == 205) {
+ $691 = ((($$024363$i)) + 12|0);
+ $692 = HEAP32[$691>>2]|0;
+ $693 = $692 & 8;
+ $694 = ($693|0)==(0);
+ if ($694) {
+ $695 = ($657>>>0)>=($683>>>0);
+ $696 = ($657>>>0)<($$7$i>>>0);
+ $or$cond43$i = $696 & $695;
+ if ($or$cond43$i) {
+ $697 = (($685) + ($$7239$i))|0;
+ HEAP32[$684>>2] = $697;
+ $698 = HEAP32[(35508)>>2]|0;
+ $699 = ((($657)) + 8|0);
+ $700 = $699;
+ $701 = $700 & 7;
+ $702 = ($701|0)==(0);
+ $703 = (0 - ($700))|0;
+ $704 = $703 & 7;
+ $705 = $702 ? 0 : $704;
+ $706 = (($657) + ($705)|0);
+ $707 = (($$7239$i) - ($705))|0;
+ $708 = (($698) + ($707))|0;
+ HEAP32[(35520)>>2] = $706;
+ HEAP32[(35508)>>2] = $708;
+ $709 = $708 | 1;
+ $710 = ((($706)) + 4|0);
+ HEAP32[$710>>2] = $709;
+ $711 = (($706) + ($708)|0);
+ $712 = ((($711)) + 4|0);
+ HEAP32[$712>>2] = 40;
+ $713 = HEAP32[(35460)>>2]|0;
+ HEAP32[(35524)>>2] = $713;
+ break;
+ }
+ }
+ }
+ $714 = HEAP32[(35512)>>2]|0;
+ $715 = ($$7$i>>>0)<($714>>>0);
+ if ($715) {
+ HEAP32[(35512)>>2] = $$7$i;
+ $779 = $$7$i;
+ } else {
+ $779 = $714;
+ }
+ $716 = (($$7$i) + ($$7239$i)|0);
+ $$124462$i = (35972);
+ while(1) {
+ $717 = HEAP32[$$124462$i>>2]|0;
+ $718 = ($717|0)==($716|0);
+ if ($718) {
+ label = 213;
+ break;
+ }
+ $719 = ((($$124462$i)) + 8|0);
+ $720 = HEAP32[$719>>2]|0;
+ $721 = ($720|0)==(0|0);
+ if ($721) {
+ break;
+ } else {
+ $$124462$i = $720;
+ }
+ }
+ if ((label|0) == 213) {
+ $722 = ((($$124462$i)) + 12|0);
+ $723 = HEAP32[$722>>2]|0;
+ $724 = $723 & 8;
+ $725 = ($724|0)==(0);
+ if ($725) {
+ HEAP32[$$124462$i>>2] = $$7$i;
+ $726 = ((($$124462$i)) + 4|0);
+ $727 = HEAP32[$726>>2]|0;
+ $728 = (($727) + ($$7239$i))|0;
+ HEAP32[$726>>2] = $728;
+ $729 = ((($$7$i)) + 8|0);
+ $730 = $729;
+ $731 = $730 & 7;
+ $732 = ($731|0)==(0);
+ $733 = (0 - ($730))|0;
+ $734 = $733 & 7;
+ $735 = $732 ? 0 : $734;
+ $736 = (($$7$i) + ($735)|0);
+ $737 = ((($716)) + 8|0);
+ $738 = $737;
+ $739 = $738 & 7;
+ $740 = ($739|0)==(0);
+ $741 = (0 - ($738))|0;
+ $742 = $741 & 7;
+ $743 = $740 ? 0 : $742;
+ $744 = (($716) + ($743)|0);
+ $745 = $744;
+ $746 = $736;
+ $747 = (($745) - ($746))|0;
+ $748 = (($736) + ($$0198)|0);
+ $749 = (($747) - ($$0198))|0;
+ $750 = $$0198 | 3;
+ $751 = ((($736)) + 4|0);
+ HEAP32[$751>>2] = $750;
+ $752 = ($744|0)==($657|0);
+ do {
+ if ($752) {
+ $753 = HEAP32[(35508)>>2]|0;
+ $754 = (($753) + ($749))|0;
+ HEAP32[(35508)>>2] = $754;
+ HEAP32[(35520)>>2] = $748;
+ $755 = $754 | 1;
+ $756 = ((($748)) + 4|0);
+ HEAP32[$756>>2] = $755;
+ } else {
+ $757 = HEAP32[(35516)>>2]|0;
+ $758 = ($744|0)==($757|0);
+ if ($758) {
+ $759 = HEAP32[(35504)>>2]|0;
+ $760 = (($759) + ($749))|0;
+ HEAP32[(35504)>>2] = $760;
+ HEAP32[(35516)>>2] = $748;
+ $761 = $760 | 1;
+ $762 = ((($748)) + 4|0);
+ HEAP32[$762>>2] = $761;
+ $763 = (($748) + ($760)|0);
+ HEAP32[$763>>2] = $760;
+ break;
}
- } while(0);
- $756 = ($747|0)==($745|0);
- if ($756) {
- $757 = 1 << $742;
- $758 = $757 ^ -1;
- $759 = HEAP32[8296]|0;
- $760 = $759 & $758;
- HEAP32[8296] = $760;
- break;
- }
- $761 = ($747|0)==($749|0);
- do {
- if ($761) {
- $$pre10$i$i = ((($747)) + 8|0);
- $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ $764 = ((($744)) + 4|0);
+ $765 = HEAP32[$764>>2]|0;
+ $766 = $765 & 3;
+ $767 = ($766|0)==(1);
+ if ($767) {
+ $768 = $765 & -8;
+ $769 = $765 >>> 3;
+ $770 = ($765>>>0)<(256);
+ L329: do {
+ if ($770) {
+ $771 = ((($744)) + 8|0);
+ $772 = HEAP32[$771>>2]|0;
+ $773 = ((($744)) + 12|0);
+ $774 = HEAP32[$773>>2]|0;
+ $775 = $769 << 1;
+ $776 = (35536 + ($775<<2)|0);
+ $777 = ($772|0)==($776|0);
+ do {
+ if (!($777)) {
+ $778 = ($772>>>0)<($779>>>0);
+ if ($778) {
+ _abort();
+ // unreachable;
+ }
+ $780 = ((($772)) + 12|0);
+ $781 = HEAP32[$780>>2]|0;
+ $782 = ($781|0)==($744|0);
+ if ($782) {
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $783 = ($774|0)==($772|0);
+ if ($783) {
+ $784 = 1 << $769;
+ $785 = $784 ^ -1;
+ $786 = HEAP32[8874]|0;
+ $787 = $786 & $785;
+ HEAP32[8874] = $787;
+ break;
+ }
+ $788 = ($774|0)==($776|0);
+ do {
+ if ($788) {
+ $$pre10$i$i = ((($774)) + 8|0);
+ $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ } else {
+ $789 = ($774>>>0)<($779>>>0);
+ if ($789) {
+ _abort();
+ // unreachable;
+ }
+ $790 = ((($774)) + 8|0);
+ $791 = HEAP32[$790>>2]|0;
+ $792 = ($791|0)==($744|0);
+ if ($792) {
+ $$pre$phi11$i$iZ2D = $790;
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $793 = ((($772)) + 12|0);
+ HEAP32[$793>>2] = $774;
+ HEAP32[$$pre$phi11$i$iZ2D>>2] = $772;
+ } else {
+ $794 = ((($744)) + 24|0);
+ $795 = HEAP32[$794>>2]|0;
+ $796 = ((($744)) + 12|0);
+ $797 = HEAP32[$796>>2]|0;
+ $798 = ($797|0)==($744|0);
+ do {
+ if ($798) {
+ $808 = ((($744)) + 16|0);
+ $809 = ((($808)) + 4|0);
+ $810 = HEAP32[$809>>2]|0;
+ $811 = ($810|0)==(0|0);
+ if ($811) {
+ $812 = HEAP32[$808>>2]|0;
+ $813 = ($812|0)==(0|0);
+ if ($813) {
+ $$3$i$i = 0;
+ break;
+ } else {
+ $$1291$i$i = $812;$$1293$i$i = $808;
+ }
+ } else {
+ $$1291$i$i = $810;$$1293$i$i = $809;
+ }
+ while(1) {
+ $814 = ((($$1291$i$i)) + 20|0);
+ $815 = HEAP32[$814>>2]|0;
+ $816 = ($815|0)==(0|0);
+ if (!($816)) {
+ $$1291$i$i = $815;$$1293$i$i = $814;
+ continue;
+ }
+ $817 = ((($$1291$i$i)) + 16|0);
+ $818 = HEAP32[$817>>2]|0;
+ $819 = ($818|0)==(0|0);
+ if ($819) {
+ break;
+ } else {
+ $$1291$i$i = $818;$$1293$i$i = $817;
+ }
+ }
+ $820 = ($$1293$i$i>>>0)<($779>>>0);
+ if ($820) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1293$i$i>>2] = 0;
+ $$3$i$i = $$1291$i$i;
+ break;
+ }
+ } else {
+ $799 = ((($744)) + 8|0);
+ $800 = HEAP32[$799>>2]|0;
+ $801 = ($800>>>0)<($779>>>0);
+ if ($801) {
+ _abort();
+ // unreachable;
+ }
+ $802 = ((($800)) + 12|0);
+ $803 = HEAP32[$802>>2]|0;
+ $804 = ($803|0)==($744|0);
+ if (!($804)) {
+ _abort();
+ // unreachable;
+ }
+ $805 = ((($797)) + 8|0);
+ $806 = HEAP32[$805>>2]|0;
+ $807 = ($806|0)==($744|0);
+ if ($807) {
+ HEAP32[$802>>2] = $797;
+ HEAP32[$805>>2] = $800;
+ $$3$i$i = $797;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $821 = ($795|0)==(0|0);
+ if ($821) {
+ break;
+ }
+ $822 = ((($744)) + 28|0);
+ $823 = HEAP32[$822>>2]|0;
+ $824 = (35800 + ($823<<2)|0);
+ $825 = HEAP32[$824>>2]|0;
+ $826 = ($744|0)==($825|0);
+ do {
+ if ($826) {
+ HEAP32[$824>>2] = $$3$i$i;
+ $cond$i$i = ($$3$i$i|0)==(0|0);
+ if (!($cond$i$i)) {
+ break;
+ }
+ $827 = 1 << $823;
+ $828 = $827 ^ -1;
+ $829 = HEAP32[(35500)>>2]|0;
+ $830 = $829 & $828;
+ HEAP32[(35500)>>2] = $830;
+ break L329;
+ } else {
+ $831 = HEAP32[(35512)>>2]|0;
+ $832 = ($795>>>0)<($831>>>0);
+ if ($832) {
+ _abort();
+ // unreachable;
+ } else {
+ $833 = ((($795)) + 16|0);
+ $834 = HEAP32[$833>>2]|0;
+ $not$$i$i = ($834|0)!=($744|0);
+ $$sink1$i$i = $not$$i$i&1;
+ $835 = (((($795)) + 16|0) + ($$sink1$i$i<<2)|0);
+ HEAP32[$835>>2] = $$3$i$i;
+ $836 = ($$3$i$i|0)==(0|0);
+ if ($836) {
+ break L329;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $837 = HEAP32[(35512)>>2]|0;
+ $838 = ($$3$i$i>>>0)<($837>>>0);
+ if ($838) {
+ _abort();
+ // unreachable;
+ }
+ $839 = ((($$3$i$i)) + 24|0);
+ HEAP32[$839>>2] = $795;
+ $840 = ((($744)) + 16|0);
+ $841 = HEAP32[$840>>2]|0;
+ $842 = ($841|0)==(0|0);
+ do {
+ if (!($842)) {
+ $843 = ($841>>>0)<($837>>>0);
+ if ($843) {
+ _abort();
+ // unreachable;
+ } else {
+ $844 = ((($$3$i$i)) + 16|0);
+ HEAP32[$844>>2] = $841;
+ $845 = ((($841)) + 24|0);
+ HEAP32[$845>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $846 = ((($840)) + 4|0);
+ $847 = HEAP32[$846>>2]|0;
+ $848 = ($847|0)==(0|0);
+ if ($848) {
+ break;
+ }
+ $849 = HEAP32[(35512)>>2]|0;
+ $850 = ($847>>>0)<($849>>>0);
+ if ($850) {
+ _abort();
+ // unreachable;
+ } else {
+ $851 = ((($$3$i$i)) + 20|0);
+ HEAP32[$851>>2] = $847;
+ $852 = ((($847)) + 24|0);
+ HEAP32[$852>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $853 = (($744) + ($768)|0);
+ $854 = (($768) + ($749))|0;
+ $$0$i17$i = $853;$$0287$i$i = $854;
} else {
- $762 = ($747>>>0)<($752>>>0);
- if ($762) {
- _abort();
- // unreachable;
- }
- $763 = ((($747)) + 8|0);
- $764 = HEAP32[$763>>2]|0;
- $765 = ($764|0)==($717|0);
- if ($765) {
- $$pre$phi11$i$iZ2D = $763;
- break;
- }
- _abort();
- // unreachable;
+ $$0$i17$i = $744;$$0287$i$i = $749;
}
- } while(0);
- $766 = ((($745)) + 12|0);
- HEAP32[$766>>2] = $747;
- HEAP32[$$pre$phi11$i$iZ2D>>2] = $745;
- } else {
- $767 = ((($717)) + 24|0);
- $768 = HEAP32[$767>>2]|0;
- $769 = ((($717)) + 12|0);
- $770 = HEAP32[$769>>2]|0;
- $771 = ($770|0)==($717|0);
- do {
- if ($771) {
- $781 = ((($717)) + 16|0);
- $782 = ((($781)) + 4|0);
- $783 = HEAP32[$782>>2]|0;
- $784 = ($783|0)==(0|0);
- if ($784) {
- $785 = HEAP32[$781>>2]|0;
- $786 = ($785|0)==(0|0);
- if ($786) {
- $$3$i$i = 0;
- break;
+ $855 = ((($$0$i17$i)) + 4|0);
+ $856 = HEAP32[$855>>2]|0;
+ $857 = $856 & -2;
+ HEAP32[$855>>2] = $857;
+ $858 = $$0287$i$i | 1;
+ $859 = ((($748)) + 4|0);
+ HEAP32[$859>>2] = $858;
+ $860 = (($748) + ($$0287$i$i)|0);
+ HEAP32[$860>>2] = $$0287$i$i;
+ $861 = $$0287$i$i >>> 3;
+ $862 = ($$0287$i$i>>>0)<(256);
+ if ($862) {
+ $863 = $861 << 1;
+ $864 = (35536 + ($863<<2)|0);
+ $865 = HEAP32[8874]|0;
+ $866 = 1 << $861;
+ $867 = $865 & $866;
+ $868 = ($867|0)==(0);
+ do {
+ if ($868) {
+ $869 = $865 | $866;
+ HEAP32[8874] = $869;
+ $$pre$i$i = ((($864)) + 8|0);
+ $$0295$i$i = $864;$$pre$phi$i$iZ2D = $$pre$i$i;
} else {
- $$1291$i$i = $785;$$1293$i$i = $781;
+ $870 = ((($864)) + 8|0);
+ $871 = HEAP32[$870>>2]|0;
+ $872 = HEAP32[(35512)>>2]|0;
+ $873 = ($871>>>0)<($872>>>0);
+ if (!($873)) {
+ $$0295$i$i = $871;$$pre$phi$i$iZ2D = $870;
+ break;
+ }
+ _abort();
+ // unreachable;
}
+ } while(0);
+ HEAP32[$$pre$phi$i$iZ2D>>2] = $748;
+ $874 = ((($$0295$i$i)) + 12|0);
+ HEAP32[$874>>2] = $748;
+ $875 = ((($748)) + 8|0);
+ HEAP32[$875>>2] = $$0295$i$i;
+ $876 = ((($748)) + 12|0);
+ HEAP32[$876>>2] = $864;
+ break;
+ }
+ $877 = $$0287$i$i >>> 8;
+ $878 = ($877|0)==(0);
+ do {
+ if ($878) {
+ $$0296$i$i = 0;
} else {
- $$1291$i$i = $783;$$1293$i$i = $782;
- }
- while(1) {
- $787 = ((($$1291$i$i)) + 20|0);
- $788 = HEAP32[$787>>2]|0;
- $789 = ($788|0)==(0|0);
- if (!($789)) {
- $$1291$i$i = $788;$$1293$i$i = $787;
- continue;
- }
- $790 = ((($$1291$i$i)) + 16|0);
- $791 = HEAP32[$790>>2]|0;
- $792 = ($791|0)==(0|0);
- if ($792) {
+ $879 = ($$0287$i$i>>>0)>(16777215);
+ if ($879) {
+ $$0296$i$i = 31;
break;
- } else {
- $$1291$i$i = $791;$$1293$i$i = $790;
}
+ $880 = (($877) + 1048320)|0;
+ $881 = $880 >>> 16;
+ $882 = $881 & 8;
+ $883 = $877 << $882;
+ $884 = (($883) + 520192)|0;
+ $885 = $884 >>> 16;
+ $886 = $885 & 4;
+ $887 = $886 | $882;
+ $888 = $883 << $886;
+ $889 = (($888) + 245760)|0;
+ $890 = $889 >>> 16;
+ $891 = $890 & 2;
+ $892 = $887 | $891;
+ $893 = (14 - ($892))|0;
+ $894 = $888 << $891;
+ $895 = $894 >>> 15;
+ $896 = (($893) + ($895))|0;
+ $897 = $896 << 1;
+ $898 = (($896) + 7)|0;
+ $899 = $$0287$i$i >>> $898;
+ $900 = $899 & 1;
+ $901 = $900 | $897;
+ $$0296$i$i = $901;
}
- $793 = ($$1293$i$i>>>0)<($752>>>0);
- if ($793) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1293$i$i>>2] = 0;
- $$3$i$i = $$1291$i$i;
+ } while(0);
+ $902 = (35800 + ($$0296$i$i<<2)|0);
+ $903 = ((($748)) + 28|0);
+ HEAP32[$903>>2] = $$0296$i$i;
+ $904 = ((($748)) + 16|0);
+ $905 = ((($904)) + 4|0);
+ HEAP32[$905>>2] = 0;
+ HEAP32[$904>>2] = 0;
+ $906 = HEAP32[(35500)>>2]|0;
+ $907 = 1 << $$0296$i$i;
+ $908 = $906 & $907;
+ $909 = ($908|0)==(0);
+ if ($909) {
+ $910 = $906 | $907;
+ HEAP32[(35500)>>2] = $910;
+ HEAP32[$902>>2] = $748;
+ $911 = ((($748)) + 24|0);
+ HEAP32[$911>>2] = $902;
+ $912 = ((($748)) + 12|0);
+ HEAP32[$912>>2] = $748;
+ $913 = ((($748)) + 8|0);
+ HEAP32[$913>>2] = $748;
+ break;
+ }
+ $914 = HEAP32[$902>>2]|0;
+ $915 = ($$0296$i$i|0)==(31);
+ $916 = $$0296$i$i >>> 1;
+ $917 = (25 - ($916))|0;
+ $918 = $915 ? 0 : $917;
+ $919 = $$0287$i$i << $918;
+ $$0288$i$i = $919;$$0289$i$i = $914;
+ while(1) {
+ $920 = ((($$0289$i$i)) + 4|0);
+ $921 = HEAP32[$920>>2]|0;
+ $922 = $921 & -8;
+ $923 = ($922|0)==($$0287$i$i|0);
+ if ($923) {
+ label = 280;
break;
}
- } else {
- $772 = ((($717)) + 8|0);
- $773 = HEAP32[$772>>2]|0;
- $774 = ($773>>>0)<($752>>>0);
- if ($774) {
- _abort();
- // unreachable;
- }
- $775 = ((($773)) + 12|0);
- $776 = HEAP32[$775>>2]|0;
- $777 = ($776|0)==($717|0);
- if (!($777)) {
- _abort();
- // unreachable;
- }
- $778 = ((($770)) + 8|0);
- $779 = HEAP32[$778>>2]|0;
- $780 = ($779|0)==($717|0);
- if ($780) {
- HEAP32[$775>>2] = $770;
- HEAP32[$778>>2] = $773;
- $$3$i$i = $770;
+ $924 = $$0288$i$i >>> 31;
+ $925 = (((($$0289$i$i)) + 16|0) + ($924<<2)|0);
+ $926 = $$0288$i$i << 1;
+ $927 = HEAP32[$925>>2]|0;
+ $928 = ($927|0)==(0|0);
+ if ($928) {
+ label = 277;
break;
} else {
- _abort();
- // unreachable;
+ $$0288$i$i = $926;$$0289$i$i = $927;
}
}
- } while(0);
- $794 = ($768|0)==(0|0);
- if ($794) {
- break;
- }
- $795 = ((($717)) + 28|0);
- $796 = HEAP32[$795>>2]|0;
- $797 = (33488 + ($796<<2)|0);
- $798 = HEAP32[$797>>2]|0;
- $799 = ($717|0)==($798|0);
- do {
- if ($799) {
- HEAP32[$797>>2] = $$3$i$i;
- $cond$i$i = ($$3$i$i|0)==(0|0);
- if (!($cond$i$i)) {
- break;
- }
- $800 = 1 << $796;
- $801 = $800 ^ -1;
- $802 = HEAP32[(33188)>>2]|0;
- $803 = $802 & $801;
- HEAP32[(33188)>>2] = $803;
- break L314;
- } else {
- $804 = HEAP32[(33200)>>2]|0;
- $805 = ($768>>>0)<($804>>>0);
- if ($805) {
+ if ((label|0) == 277) {
+ $929 = HEAP32[(35512)>>2]|0;
+ $930 = ($925>>>0)<($929>>>0);
+ if ($930) {
_abort();
// unreachable;
} else {
- $806 = ((($768)) + 16|0);
- $807 = HEAP32[$806>>2]|0;
- $not$$i17$i = ($807|0)!=($717|0);
- $$sink1$i$i = $not$$i17$i&1;
- $808 = (((($768)) + 16|0) + ($$sink1$i$i<<2)|0);
- HEAP32[$808>>2] = $$3$i$i;
- $809 = ($$3$i$i|0)==(0|0);
- if ($809) {
- break L314;
- } else {
- break;
- }
+ HEAP32[$925>>2] = $748;
+ $931 = ((($748)) + 24|0);
+ HEAP32[$931>>2] = $$0289$i$i;
+ $932 = ((($748)) + 12|0);
+ HEAP32[$932>>2] = $748;
+ $933 = ((($748)) + 8|0);
+ HEAP32[$933>>2] = $748;
+ break;
}
}
- } while(0);
- $810 = HEAP32[(33200)>>2]|0;
- $811 = ($$3$i$i>>>0)<($810>>>0);
- if ($811) {
- _abort();
- // unreachable;
- }
- $812 = ((($$3$i$i)) + 24|0);
- HEAP32[$812>>2] = $768;
- $813 = ((($717)) + 16|0);
- $814 = HEAP32[$813>>2]|0;
- $815 = ($814|0)==(0|0);
- do {
- if (!($815)) {
- $816 = ($814>>>0)<($810>>>0);
- if ($816) {
+ else if ((label|0) == 280) {
+ $934 = ((($$0289$i$i)) + 8|0);
+ $935 = HEAP32[$934>>2]|0;
+ $936 = HEAP32[(35512)>>2]|0;
+ $937 = ($935>>>0)>=($936>>>0);
+ $not$7$i$i = ($$0289$i$i>>>0)>=($936>>>0);
+ $938 = $937 & $not$7$i$i;
+ if ($938) {
+ $939 = ((($935)) + 12|0);
+ HEAP32[$939>>2] = $748;
+ HEAP32[$934>>2] = $748;
+ $940 = ((($748)) + 8|0);
+ HEAP32[$940>>2] = $935;
+ $941 = ((($748)) + 12|0);
+ HEAP32[$941>>2] = $$0289$i$i;
+ $942 = ((($748)) + 24|0);
+ HEAP32[$942>>2] = 0;
+ break;
+ } else {
_abort();
// unreachable;
- } else {
- $817 = ((($$3$i$i)) + 16|0);
- HEAP32[$817>>2] = $814;
- $818 = ((($814)) + 24|0);
- HEAP32[$818>>2] = $$3$i$i;
- break;
}
}
- } while(0);
- $819 = ((($813)) + 4|0);
- $820 = HEAP32[$819>>2]|0;
- $821 = ($820|0)==(0|0);
- if ($821) {
- break;
}
- $822 = HEAP32[(33200)>>2]|0;
- $823 = ($820>>>0)<($822>>>0);
- if ($823) {
+ } while(0);
+ $1074 = ((($736)) + 8|0);
+ $$2 = $1074;
+ break L230;
+ }
+ }
+ $$0$i$i$i = (35972);
+ while(1) {
+ $943 = HEAP32[$$0$i$i$i>>2]|0;
+ $944 = ($943>>>0)>($657>>>0);
+ if (!($944)) {
+ $945 = ((($$0$i$i$i)) + 4|0);
+ $946 = HEAP32[$945>>2]|0;
+ $947 = (($943) + ($946)|0);
+ $948 = ($947>>>0)>($657>>>0);
+ if ($948) {
+ break;
+ }
+ }
+ $949 = ((($$0$i$i$i)) + 8|0);
+ $950 = HEAP32[$949>>2]|0;
+ $$0$i$i$i = $950;
+ }
+ $951 = ((($947)) + -47|0);
+ $952 = ((($951)) + 8|0);
+ $953 = $952;
+ $954 = $953 & 7;
+ $955 = ($954|0)==(0);
+ $956 = (0 - ($953))|0;
+ $957 = $956 & 7;
+ $958 = $955 ? 0 : $957;
+ $959 = (($951) + ($958)|0);
+ $960 = ((($657)) + 16|0);
+ $961 = ($959>>>0)<($960>>>0);
+ $962 = $961 ? $657 : $959;
+ $963 = ((($962)) + 8|0);
+ $964 = ((($962)) + 24|0);
+ $965 = (($$7239$i) + -40)|0;
+ $966 = ((($$7$i)) + 8|0);
+ $967 = $966;
+ $968 = $967 & 7;
+ $969 = ($968|0)==(0);
+ $970 = (0 - ($967))|0;
+ $971 = $970 & 7;
+ $972 = $969 ? 0 : $971;
+ $973 = (($$7$i) + ($972)|0);
+ $974 = (($965) - ($972))|0;
+ HEAP32[(35520)>>2] = $973;
+ HEAP32[(35508)>>2] = $974;
+ $975 = $974 | 1;
+ $976 = ((($973)) + 4|0);
+ HEAP32[$976>>2] = $975;
+ $977 = (($973) + ($974)|0);
+ $978 = ((($977)) + 4|0);
+ HEAP32[$978>>2] = 40;
+ $979 = HEAP32[(35460)>>2]|0;
+ HEAP32[(35524)>>2] = $979;
+ $980 = ((($962)) + 4|0);
+ HEAP32[$980>>2] = 27;
+ ;HEAP32[$963>>2]=HEAP32[(35972)>>2]|0;HEAP32[$963+4>>2]=HEAP32[(35972)+4>>2]|0;HEAP32[$963+8>>2]=HEAP32[(35972)+8>>2]|0;HEAP32[$963+12>>2]=HEAP32[(35972)+12>>2]|0;
+ HEAP32[(35972)>>2] = $$7$i;
+ HEAP32[(35976)>>2] = $$7239$i;
+ HEAP32[(35984)>>2] = 0;
+ HEAP32[(35980)>>2] = $963;
+ $982 = $964;
+ while(1) {
+ $981 = ((($982)) + 4|0);
+ HEAP32[$981>>2] = 7;
+ $983 = ((($982)) + 8|0);
+ $984 = ($983>>>0)<($947>>>0);
+ if ($984) {
+ $982 = $981;
+ } else {
+ break;
+ }
+ }
+ $985 = ($962|0)==($657|0);
+ if (!($985)) {
+ $986 = $962;
+ $987 = $657;
+ $988 = (($986) - ($987))|0;
+ $989 = HEAP32[$980>>2]|0;
+ $990 = $989 & -2;
+ HEAP32[$980>>2] = $990;
+ $991 = $988 | 1;
+ $992 = ((($657)) + 4|0);
+ HEAP32[$992>>2] = $991;
+ HEAP32[$962>>2] = $988;
+ $993 = $988 >>> 3;
+ $994 = ($988>>>0)<(256);
+ if ($994) {
+ $995 = $993 << 1;
+ $996 = (35536 + ($995<<2)|0);
+ $997 = HEAP32[8874]|0;
+ $998 = 1 << $993;
+ $999 = $997 & $998;
+ $1000 = ($999|0)==(0);
+ do {
+ if ($1000) {
+ $1001 = $997 | $998;
+ HEAP32[8874] = $1001;
+ $$pre$i18$i = ((($996)) + 8|0);
+ $$0211$i$i = $996;$$pre$phi$i19$iZ2D = $$pre$i18$i;
+ } else {
+ $1002 = ((($996)) + 8|0);
+ $1003 = HEAP32[$1002>>2]|0;
+ $1004 = HEAP32[(35512)>>2]|0;
+ $1005 = ($1003>>>0)<($1004>>>0);
+ if (!($1005)) {
+ $$0211$i$i = $1003;$$pre$phi$i19$iZ2D = $1002;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $824 = ((($$3$i$i)) + 20|0);
- HEAP32[$824>>2] = $820;
- $825 = ((($820)) + 24|0);
- HEAP32[$825>>2] = $$3$i$i;
- break;
}
- }
- } while(0);
- $826 = (($717) + ($741)|0);
- $827 = (($741) + ($722))|0;
- $$0$i18$i = $826;$$0287$i$i = $827;
- } else {
- $$0$i18$i = $717;$$0287$i$i = $722;
- }
- $828 = ((($$0$i18$i)) + 4|0);
- $829 = HEAP32[$828>>2]|0;
- $830 = $829 & -2;
- HEAP32[$828>>2] = $830;
- $831 = $$0287$i$i | 1;
- $832 = ((($721)) + 4|0);
- HEAP32[$832>>2] = $831;
- $833 = (($721) + ($$0287$i$i)|0);
- HEAP32[$833>>2] = $$0287$i$i;
- $834 = $$0287$i$i >>> 3;
- $835 = ($$0287$i$i>>>0)<(256);
- if ($835) {
- $836 = $834 << 1;
- $837 = (33224 + ($836<<2)|0);
- $838 = HEAP32[8296]|0;
- $839 = 1 << $834;
- $840 = $838 & $839;
- $841 = ($840|0)==(0);
+ } while(0);
+ HEAP32[$$pre$phi$i19$iZ2D>>2] = $657;
+ $1006 = ((($$0211$i$i)) + 12|0);
+ HEAP32[$1006>>2] = $657;
+ $1007 = ((($657)) + 8|0);
+ HEAP32[$1007>>2] = $$0211$i$i;
+ $1008 = ((($657)) + 12|0);
+ HEAP32[$1008>>2] = $996;
+ break;
+ }
+ $1009 = $988 >>> 8;
+ $1010 = ($1009|0)==(0);
do {
- if ($841) {
- $842 = $838 | $839;
- HEAP32[8296] = $842;
- $$pre$i19$i = ((($837)) + 8|0);
- $$0295$i$i = $837;$$pre$phi$i20$iZ2D = $$pre$i19$i;
+ if ($1010) {
+ $$0212$i$i = 0;
} else {
- $843 = ((($837)) + 8|0);
- $844 = HEAP32[$843>>2]|0;
- $845 = HEAP32[(33200)>>2]|0;
- $846 = ($844>>>0)<($845>>>0);
- if (!($846)) {
- $$0295$i$i = $844;$$pre$phi$i20$iZ2D = $843;
+ $1011 = ($988>>>0)>(16777215);
+ if ($1011) {
+ $$0212$i$i = 31;
break;
}
- _abort();
- // unreachable;
+ $1012 = (($1009) + 1048320)|0;
+ $1013 = $1012 >>> 16;
+ $1014 = $1013 & 8;
+ $1015 = $1009 << $1014;
+ $1016 = (($1015) + 520192)|0;
+ $1017 = $1016 >>> 16;
+ $1018 = $1017 & 4;
+ $1019 = $1018 | $1014;
+ $1020 = $1015 << $1018;
+ $1021 = (($1020) + 245760)|0;
+ $1022 = $1021 >>> 16;
+ $1023 = $1022 & 2;
+ $1024 = $1019 | $1023;
+ $1025 = (14 - ($1024))|0;
+ $1026 = $1020 << $1023;
+ $1027 = $1026 >>> 15;
+ $1028 = (($1025) + ($1027))|0;
+ $1029 = $1028 << 1;
+ $1030 = (($1028) + 7)|0;
+ $1031 = $988 >>> $1030;
+ $1032 = $1031 & 1;
+ $1033 = $1032 | $1029;
+ $$0212$i$i = $1033;
}
} while(0);
- HEAP32[$$pre$phi$i20$iZ2D>>2] = $721;
- $847 = ((($$0295$i$i)) + 12|0);
- HEAP32[$847>>2] = $721;
- $848 = ((($721)) + 8|0);
- HEAP32[$848>>2] = $$0295$i$i;
- $849 = ((($721)) + 12|0);
- HEAP32[$849>>2] = $837;
- break;
- }
- $850 = $$0287$i$i >>> 8;
- $851 = ($850|0)==(0);
- do {
- if ($851) {
- $$0296$i$i = 0;
- } else {
- $852 = ($$0287$i$i>>>0)>(16777215);
- if ($852) {
- $$0296$i$i = 31;
- break;
- }
- $853 = (($850) + 1048320)|0;
- $854 = $853 >>> 16;
- $855 = $854 & 8;
- $856 = $850 << $855;
- $857 = (($856) + 520192)|0;
- $858 = $857 >>> 16;
- $859 = $858 & 4;
- $860 = $859 | $855;
- $861 = $856 << $859;
- $862 = (($861) + 245760)|0;
- $863 = $862 >>> 16;
- $864 = $863 & 2;
- $865 = $860 | $864;
- $866 = (14 - ($865))|0;
- $867 = $861 << $864;
- $868 = $867 >>> 15;
- $869 = (($866) + ($868))|0;
- $870 = $869 << 1;
- $871 = (($869) + 7)|0;
- $872 = $$0287$i$i >>> $871;
- $873 = $872 & 1;
- $874 = $873 | $870;
- $$0296$i$i = $874;
- }
- } while(0);
- $875 = (33488 + ($$0296$i$i<<2)|0);
- $876 = ((($721)) + 28|0);
- HEAP32[$876>>2] = $$0296$i$i;
- $877 = ((($721)) + 16|0);
- $878 = ((($877)) + 4|0);
- HEAP32[$878>>2] = 0;
- HEAP32[$877>>2] = 0;
- $879 = HEAP32[(33188)>>2]|0;
- $880 = 1 << $$0296$i$i;
- $881 = $879 & $880;
- $882 = ($881|0)==(0);
- if ($882) {
- $883 = $879 | $880;
- HEAP32[(33188)>>2] = $883;
- HEAP32[$875>>2] = $721;
- $884 = ((($721)) + 24|0);
- HEAP32[$884>>2] = $875;
- $885 = ((($721)) + 12|0);
- HEAP32[$885>>2] = $721;
- $886 = ((($721)) + 8|0);
- HEAP32[$886>>2] = $721;
- break;
- }
- $887 = HEAP32[$875>>2]|0;
- $888 = ($$0296$i$i|0)==(31);
- $889 = $$0296$i$i >>> 1;
- $890 = (25 - ($889))|0;
- $891 = $888 ? 0 : $890;
- $892 = $$0287$i$i << $891;
- $$0288$i$i = $892;$$0289$i$i = $887;
- while(1) {
- $893 = ((($$0289$i$i)) + 4|0);
- $894 = HEAP32[$893>>2]|0;
- $895 = $894 & -8;
- $896 = ($895|0)==($$0287$i$i|0);
- if ($896) {
- label = 265;
+ $1034 = (35800 + ($$0212$i$i<<2)|0);
+ $1035 = ((($657)) + 28|0);
+ HEAP32[$1035>>2] = $$0212$i$i;
+ $1036 = ((($657)) + 20|0);
+ HEAP32[$1036>>2] = 0;
+ HEAP32[$960>>2] = 0;
+ $1037 = HEAP32[(35500)>>2]|0;
+ $1038 = 1 << $$0212$i$i;
+ $1039 = $1037 & $1038;
+ $1040 = ($1039|0)==(0);
+ if ($1040) {
+ $1041 = $1037 | $1038;
+ HEAP32[(35500)>>2] = $1041;
+ HEAP32[$1034>>2] = $657;
+ $1042 = ((($657)) + 24|0);
+ HEAP32[$1042>>2] = $1034;
+ $1043 = ((($657)) + 12|0);
+ HEAP32[$1043>>2] = $657;
+ $1044 = ((($657)) + 8|0);
+ HEAP32[$1044>>2] = $657;
break;
}
- $897 = $$0288$i$i >>> 31;
- $898 = (((($$0289$i$i)) + 16|0) + ($897<<2)|0);
- $899 = $$0288$i$i << 1;
- $900 = HEAP32[$898>>2]|0;
- $901 = ($900|0)==(0|0);
- if ($901) {
- label = 262;
- break;
- } else {
- $$0288$i$i = $899;$$0289$i$i = $900;
+ $1045 = HEAP32[$1034>>2]|0;
+ $1046 = ($$0212$i$i|0)==(31);
+ $1047 = $$0212$i$i >>> 1;
+ $1048 = (25 - ($1047))|0;
+ $1049 = $1046 ? 0 : $1048;
+ $1050 = $988 << $1049;
+ $$0206$i$i = $1050;$$0207$i$i = $1045;
+ while(1) {
+ $1051 = ((($$0207$i$i)) + 4|0);
+ $1052 = HEAP32[$1051>>2]|0;
+ $1053 = $1052 & -8;
+ $1054 = ($1053|0)==($988|0);
+ if ($1054) {
+ label = 307;
+ break;
+ }
+ $1055 = $$0206$i$i >>> 31;
+ $1056 = (((($$0207$i$i)) + 16|0) + ($1055<<2)|0);
+ $1057 = $$0206$i$i << 1;
+ $1058 = HEAP32[$1056>>2]|0;
+ $1059 = ($1058|0)==(0|0);
+ if ($1059) {
+ label = 304;
+ break;
+ } else {
+ $$0206$i$i = $1057;$$0207$i$i = $1058;
+ }
}
- }
- if ((label|0) == 262) {
- $902 = HEAP32[(33200)>>2]|0;
- $903 = ($898>>>0)<($902>>>0);
- if ($903) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$898>>2] = $721;
- $904 = ((($721)) + 24|0);
- HEAP32[$904>>2] = $$0289$i$i;
- $905 = ((($721)) + 12|0);
- HEAP32[$905>>2] = $721;
- $906 = ((($721)) + 8|0);
- HEAP32[$906>>2] = $721;
- break;
+ if ((label|0) == 304) {
+ $1060 = HEAP32[(35512)>>2]|0;
+ $1061 = ($1056>>>0)<($1060>>>0);
+ if ($1061) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$1056>>2] = $657;
+ $1062 = ((($657)) + 24|0);
+ HEAP32[$1062>>2] = $$0207$i$i;
+ $1063 = ((($657)) + 12|0);
+ HEAP32[$1063>>2] = $657;
+ $1064 = ((($657)) + 8|0);
+ HEAP32[$1064>>2] = $657;
+ break;
+ }
}
- }
- else if ((label|0) == 265) {
- $907 = ((($$0289$i$i)) + 8|0);
- $908 = HEAP32[$907>>2]|0;
- $909 = HEAP32[(33200)>>2]|0;
- $910 = ($908>>>0)>=($909>>>0);
- $not$7$i$i = ($$0289$i$i>>>0)>=($909>>>0);
- $911 = $910 & $not$7$i$i;
- if ($911) {
- $912 = ((($908)) + 12|0);
- HEAP32[$912>>2] = $721;
- HEAP32[$907>>2] = $721;
- $913 = ((($721)) + 8|0);
- HEAP32[$913>>2] = $908;
- $914 = ((($721)) + 12|0);
- HEAP32[$914>>2] = $$0289$i$i;
- $915 = ((($721)) + 24|0);
- HEAP32[$915>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
+ else if ((label|0) == 307) {
+ $1065 = ((($$0207$i$i)) + 8|0);
+ $1066 = HEAP32[$1065>>2]|0;
+ $1067 = HEAP32[(35512)>>2]|0;
+ $1068 = ($1066>>>0)>=($1067>>>0);
+ $not$$i21$i = ($$0207$i$i>>>0)>=($1067>>>0);
+ $1069 = $1068 & $not$$i21$i;
+ if ($1069) {
+ $1070 = ((($1066)) + 12|0);
+ HEAP32[$1070>>2] = $657;
+ HEAP32[$1065>>2] = $657;
+ $1071 = ((($657)) + 8|0);
+ HEAP32[$1071>>2] = $1066;
+ $1072 = ((($657)) + 12|0);
+ HEAP32[$1072>>2] = $$0207$i$i;
+ $1073 = ((($657)) + 24|0);
+ HEAP32[$1073>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
}
}
}
} while(0);
- $1047 = ((($709)) + 8|0);
- $$0 = $1047;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $$0$i$i$i = (33632);
- while(1) {
- $916 = HEAP32[$$0$i$i$i>>2]|0;
- $917 = ($916>>>0)>($630>>>0);
- if (!($917)) {
- $918 = ((($$0$i$i$i)) + 4|0);
- $919 = HEAP32[$918>>2]|0;
- $920 = (($916) + ($919)|0);
- $921 = ($920>>>0)>($630>>>0);
- if ($921) {
+ $1075 = HEAP32[(35508)>>2]|0;
+ $1076 = ($1075>>>0)>($$0198>>>0);
+ if ($1076) {
+ $1077 = (($1075) - ($$0198))|0;
+ HEAP32[(35508)>>2] = $1077;
+ $1078 = HEAP32[(35520)>>2]|0;
+ $1079 = (($1078) + ($$0198)|0);
+ HEAP32[(35520)>>2] = $1079;
+ $1080 = $1077 | 1;
+ $1081 = ((($1079)) + 4|0);
+ HEAP32[$1081>>2] = $1080;
+ $1082 = $$0198 | 3;
+ $1083 = ((($1078)) + 4|0);
+ HEAP32[$1083>>2] = $1082;
+ $1084 = ((($1078)) + 8|0);
+ $$2 = $1084;
break;
}
}
- $922 = ((($$0$i$i$i)) + 8|0);
- $923 = HEAP32[$922>>2]|0;
- $$0$i$i$i = $923;
- }
- $924 = ((($920)) + -47|0);
- $925 = ((($924)) + 8|0);
- $926 = $925;
- $927 = $926 & 7;
- $928 = ($927|0)==(0);
- $929 = (0 - ($926))|0;
- $930 = $929 & 7;
- $931 = $928 ? 0 : $930;
- $932 = (($924) + ($931)|0);
- $933 = ((($630)) + 16|0);
- $934 = ($932>>>0)<($933>>>0);
- $935 = $934 ? $630 : $932;
- $936 = ((($935)) + 8|0);
- $937 = ((($935)) + 24|0);
- $938 = (($$723948$i) + -40)|0;
- $939 = ((($$749$i)) + 8|0);
- $940 = $939;
- $941 = $940 & 7;
- $942 = ($941|0)==(0);
- $943 = (0 - ($940))|0;
- $944 = $943 & 7;
- $945 = $942 ? 0 : $944;
- $946 = (($$749$i) + ($945)|0);
- $947 = (($938) - ($945))|0;
- HEAP32[(33208)>>2] = $946;
- HEAP32[(33196)>>2] = $947;
- $948 = $947 | 1;
- $949 = ((($946)) + 4|0);
- HEAP32[$949>>2] = $948;
- $950 = (($946) + ($947)|0);
- $951 = ((($950)) + 4|0);
- HEAP32[$951>>2] = 40;
- $952 = HEAP32[(33672)>>2]|0;
- HEAP32[(33212)>>2] = $952;
- $953 = ((($935)) + 4|0);
- HEAP32[$953>>2] = 27;
- ;HEAP32[$936>>2]=HEAP32[(33632)>>2]|0;HEAP32[$936+4>>2]=HEAP32[(33632)+4>>2]|0;HEAP32[$936+8>>2]=HEAP32[(33632)+8>>2]|0;HEAP32[$936+12>>2]=HEAP32[(33632)+12>>2]|0;
- HEAP32[(33632)>>2] = $$749$i;
- HEAP32[(33636)>>2] = $$723948$i;
- HEAP32[(33644)>>2] = 0;
- HEAP32[(33640)>>2] = $936;
- $955 = $937;
- while(1) {
- $954 = ((($955)) + 4|0);
- HEAP32[$954>>2] = 7;
- $956 = ((($955)) + 8|0);
- $957 = ($956>>>0)<($920>>>0);
- if ($957) {
- $955 = $954;
- } else {
- break;
- }
- }
- $958 = ($935|0)==($630|0);
- if (!($958)) {
- $959 = $935;
- $960 = $630;
- $961 = (($959) - ($960))|0;
- $962 = HEAP32[$953>>2]|0;
- $963 = $962 & -2;
- HEAP32[$953>>2] = $963;
- $964 = $961 | 1;
- $965 = ((($630)) + 4|0);
- HEAP32[$965>>2] = $964;
- HEAP32[$935>>2] = $961;
- $966 = $961 >>> 3;
- $967 = ($961>>>0)<(256);
- if ($967) {
- $968 = $966 << 1;
- $969 = (33224 + ($968<<2)|0);
- $970 = HEAP32[8296]|0;
- $971 = 1 << $966;
- $972 = $970 & $971;
- $973 = ($972|0)==(0);
- if ($973) {
- $974 = $970 | $971;
- HEAP32[8296] = $974;
- $$pre$i$i = ((($969)) + 8|0);
- $$0211$i$i = $969;$$pre$phi$i$iZ2D = $$pre$i$i;
- } else {
- $975 = ((($969)) + 8|0);
- $976 = HEAP32[$975>>2]|0;
- $977 = HEAP32[(33200)>>2]|0;
- $978 = ($976>>>0)<($977>>>0);
- if ($978) {
- _abort();
- // unreachable;
- } else {
- $$0211$i$i = $976;$$pre$phi$i$iZ2D = $975;
- }
- }
- HEAP32[$$pre$phi$i$iZ2D>>2] = $630;
- $979 = ((($$0211$i$i)) + 12|0);
- HEAP32[$979>>2] = $630;
- $980 = ((($630)) + 8|0);
- HEAP32[$980>>2] = $$0211$i$i;
- $981 = ((($630)) + 12|0);
- HEAP32[$981>>2] = $969;
- break;
- }
- $982 = $961 >>> 8;
- $983 = ($982|0)==(0);
- if ($983) {
- $$0212$i$i = 0;
- } else {
- $984 = ($961>>>0)>(16777215);
- if ($984) {
- $$0212$i$i = 31;
- } else {
- $985 = (($982) + 1048320)|0;
- $986 = $985 >>> 16;
- $987 = $986 & 8;
- $988 = $982 << $987;
- $989 = (($988) + 520192)|0;
- $990 = $989 >>> 16;
- $991 = $990 & 4;
- $992 = $991 | $987;
- $993 = $988 << $991;
- $994 = (($993) + 245760)|0;
- $995 = $994 >>> 16;
- $996 = $995 & 2;
- $997 = $992 | $996;
- $998 = (14 - ($997))|0;
- $999 = $993 << $996;
- $1000 = $999 >>> 15;
- $1001 = (($998) + ($1000))|0;
- $1002 = $1001 << 1;
- $1003 = (($1001) + 7)|0;
- $1004 = $961 >>> $1003;
- $1005 = $1004 & 1;
- $1006 = $1005 | $1002;
- $$0212$i$i = $1006;
- }
- }
- $1007 = (33488 + ($$0212$i$i<<2)|0);
- $1008 = ((($630)) + 28|0);
- HEAP32[$1008>>2] = $$0212$i$i;
- $1009 = ((($630)) + 20|0);
- HEAP32[$1009>>2] = 0;
- HEAP32[$933>>2] = 0;
- $1010 = HEAP32[(33188)>>2]|0;
- $1011 = 1 << $$0212$i$i;
- $1012 = $1010 & $1011;
- $1013 = ($1012|0)==(0);
- if ($1013) {
- $1014 = $1010 | $1011;
- HEAP32[(33188)>>2] = $1014;
- HEAP32[$1007>>2] = $630;
- $1015 = ((($630)) + 24|0);
- HEAP32[$1015>>2] = $1007;
- $1016 = ((($630)) + 12|0);
- HEAP32[$1016>>2] = $630;
- $1017 = ((($630)) + 8|0);
- HEAP32[$1017>>2] = $630;
- break;
- }
- $1018 = HEAP32[$1007>>2]|0;
- $1019 = ($$0212$i$i|0)==(31);
- $1020 = $$0212$i$i >>> 1;
- $1021 = (25 - ($1020))|0;
- $1022 = $1019 ? 0 : $1021;
- $1023 = $961 << $1022;
- $$0206$i$i = $1023;$$0207$i$i = $1018;
- while(1) {
- $1024 = ((($$0207$i$i)) + 4|0);
- $1025 = HEAP32[$1024>>2]|0;
- $1026 = $1025 & -8;
- $1027 = ($1026|0)==($961|0);
- if ($1027) {
- label = 292;
- break;
- }
- $1028 = $$0206$i$i >>> 31;
- $1029 = (((($$0207$i$i)) + 16|0) + ($1028<<2)|0);
- $1030 = $$0206$i$i << 1;
- $1031 = HEAP32[$1029>>2]|0;
- $1032 = ($1031|0)==(0|0);
- if ($1032) {
- label = 289;
- break;
- } else {
- $$0206$i$i = $1030;$$0207$i$i = $1031;
- }
- }
- if ((label|0) == 289) {
- $1033 = HEAP32[(33200)>>2]|0;
- $1034 = ($1029>>>0)<($1033>>>0);
- if ($1034) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$1029>>2] = $630;
- $1035 = ((($630)) + 24|0);
- HEAP32[$1035>>2] = $$0207$i$i;
- $1036 = ((($630)) + 12|0);
- HEAP32[$1036>>2] = $630;
- $1037 = ((($630)) + 8|0);
- HEAP32[$1037>>2] = $630;
- break;
- }
- }
- else if ((label|0) == 292) {
- $1038 = ((($$0207$i$i)) + 8|0);
- $1039 = HEAP32[$1038>>2]|0;
- $1040 = HEAP32[(33200)>>2]|0;
- $1041 = ($1039>>>0)>=($1040>>>0);
- $not$$i$i = ($$0207$i$i>>>0)>=($1040>>>0);
- $1042 = $1041 & $not$$i$i;
- if ($1042) {
- $1043 = ((($1039)) + 12|0);
- HEAP32[$1043>>2] = $630;
- HEAP32[$1038>>2] = $630;
- $1044 = ((($630)) + 8|0);
- HEAP32[$1044>>2] = $1039;
- $1045 = ((($630)) + 12|0);
- HEAP32[$1045>>2] = $$0207$i$i;
- $1046 = ((($630)) + 24|0);
- HEAP32[$1046>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
}
+ $1085 = (___errno_location()|0);
+ HEAP32[$1085>>2] = 12;
+ $$2 = 0;
+ } else {
+ $$2 = 0;
}
- } while(0);
- $1048 = HEAP32[(33196)>>2]|0;
- $1049 = ($1048>>>0)>($$0197>>>0);
- if ($1049) {
- $1050 = (($1048) - ($$0197))|0;
- HEAP32[(33196)>>2] = $1050;
- $1051 = HEAP32[(33208)>>2]|0;
- $1052 = (($1051) + ($$0197)|0);
- HEAP32[(33208)>>2] = $1052;
- $1053 = $1050 | 1;
- $1054 = ((($1052)) + 4|0);
- HEAP32[$1054>>2] = $1053;
- $1055 = $$0197 | 3;
- $1056 = ((($1051)) + 4|0);
- HEAP32[$1056>>2] = $1055;
- $1057 = ((($1051)) + 8|0);
- $$0 = $1057;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $1058 = (___errno_location()|0);
- HEAP32[$1058>>2] = 12;
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
+ }
+ } while(0);
+ $1086 = HEAP32[(35940)>>2]|0;
+ $1087 = $1086 & 2;
+ $1088 = ($1087|0)==(0);
+ if ($1088) {
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
+ }
+ (___pthread_mutex_unlock((35944))|0);
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
}
function _free($0) {
$0 = $0|0;
@@ -26283,488 +32599,213 @@ function _free($0) {
var $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0;
var $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0;
var $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0;
- var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
- var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0;
- var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0;
- var $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0;
- var $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
+ var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = ($0|0)==(0|0);
if ($1) {
return;
}
$2 = ((($0)) + -8|0);
- $3 = HEAP32[(33200)>>2]|0;
- $4 = ($2>>>0)<($3>>>0);
- if ($4) {
+ $3 = HEAP32[(35940)>>2]|0;
+ $4 = $3 & 2;
+ $5 = ($4|0)==(0);
+ if (!($5)) {
+ $6 = (___pthread_mutex_lock((35944))|0);
+ $7 = ($6|0)==(0);
+ if (!($7)) {
+ return;
+ }
+ }
+ $8 = HEAP32[(35512)>>2]|0;
+ $9 = ($2>>>0)<($8>>>0);
+ if ($9) {
_abort();
// unreachable;
}
- $5 = ((($0)) + -4|0);
- $6 = HEAP32[$5>>2]|0;
- $7 = $6 & 3;
- $8 = ($7|0)==(1);
- if ($8) {
+ $10 = ((($0)) + -4|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = $11 & 3;
+ $13 = ($12|0)==(1);
+ if ($13) {
_abort();
// unreachable;
}
- $9 = $6 & -8;
- $10 = (($2) + ($9)|0);
- $11 = $6 & 1;
- $12 = ($11|0)==(0);
- L10: do {
- if ($12) {
- $13 = HEAP32[$2>>2]|0;
- $14 = ($7|0)==(0);
- if ($14) {
- return;
- }
- $15 = (0 - ($13))|0;
- $16 = (($2) + ($15)|0);
- $17 = (($13) + ($9))|0;
- $18 = ($16>>>0)<($3>>>0);
- if ($18) {
- _abort();
- // unreachable;
- }
- $19 = HEAP32[(33204)>>2]|0;
- $20 = ($16|0)==($19|0);
- if ($20) {
- $104 = ((($10)) + 4|0);
- $105 = HEAP32[$104>>2]|0;
- $106 = $105 & 3;
- $107 = ($106|0)==(3);
- if (!($107)) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
+ $14 = $11 & -8;
+ $15 = (($2) + ($14)|0);
+ $16 = $11 & 1;
+ $17 = ($16|0)==(0);
+ L14: do {
+ if ($17) {
+ $18 = HEAP32[$2>>2]|0;
+ $19 = ($12|0)==(0);
+ if (!($19)) {
+ $20 = (0 - ($18))|0;
+ $21 = (($2) + ($20)|0);
+ $22 = (($18) + ($14))|0;
+ $23 = ($21>>>0)<($8>>>0);
+ if ($23) {
+ _abort();
+ // unreachable;
}
- $108 = (($16) + ($17)|0);
- $109 = ((($16)) + 4|0);
- $110 = $17 | 1;
- $111 = $105 & -2;
- HEAP32[(33192)>>2] = $17;
- HEAP32[$104>>2] = $111;
- HEAP32[$109>>2] = $110;
- HEAP32[$108>>2] = $17;
- return;
- }
- $21 = $13 >>> 3;
- $22 = ($13>>>0)<(256);
- if ($22) {
- $23 = ((($16)) + 8|0);
- $24 = HEAP32[$23>>2]|0;
- $25 = ((($16)) + 12|0);
- $26 = HEAP32[$25>>2]|0;
- $27 = $21 << 1;
- $28 = (33224 + ($27<<2)|0);
- $29 = ($24|0)==($28|0);
- if (!($29)) {
- $30 = ($24>>>0)<($3>>>0);
- if ($30) {
- _abort();
- // unreachable;
- }
- $31 = ((($24)) + 12|0);
- $32 = HEAP32[$31>>2]|0;
- $33 = ($32|0)==($16|0);
- if (!($33)) {
- _abort();
- // unreachable;
+ $24 = HEAP32[(35516)>>2]|0;
+ $25 = ($21|0)==($24|0);
+ if ($25) {
+ $109 = ((($15)) + 4|0);
+ $110 = HEAP32[$109>>2]|0;
+ $111 = $110 & 3;
+ $112 = ($111|0)==(3);
+ if (!($112)) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break;
}
- }
- $34 = ($26|0)==($24|0);
- if ($34) {
- $35 = 1 << $21;
- $36 = $35 ^ -1;
- $37 = HEAP32[8296]|0;
- $38 = $37 & $36;
- HEAP32[8296] = $38;
- $$1 = $16;$$1382 = $17;$113 = $16;
+ $113 = (($21) + ($22)|0);
+ $114 = ((($21)) + 4|0);
+ $115 = $22 | 1;
+ $116 = $110 & -2;
+ HEAP32[(35504)>>2] = $22;
+ HEAP32[$109>>2] = $116;
+ HEAP32[$114>>2] = $115;
+ HEAP32[$113>>2] = $22;
break;
}
- $39 = ($26|0)==($28|0);
- if ($39) {
- $$pre444 = ((($26)) + 8|0);
- $$pre$phi445Z2D = $$pre444;
- } else {
- $40 = ($26>>>0)<($3>>>0);
- if ($40) {
- _abort();
- // unreachable;
- }
- $41 = ((($26)) + 8|0);
- $42 = HEAP32[$41>>2]|0;
- $43 = ($42|0)==($16|0);
- if ($43) {
- $$pre$phi445Z2D = $41;
- } else {
- _abort();
- // unreachable;
- }
- }
- $44 = ((($24)) + 12|0);
- HEAP32[$44>>2] = $26;
- HEAP32[$$pre$phi445Z2D>>2] = $24;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- $45 = ((($16)) + 24|0);
- $46 = HEAP32[$45>>2]|0;
- $47 = ((($16)) + 12|0);
- $48 = HEAP32[$47>>2]|0;
- $49 = ($48|0)==($16|0);
- do {
- if ($49) {
- $59 = ((($16)) + 16|0);
- $60 = ((($59)) + 4|0);
- $61 = HEAP32[$60>>2]|0;
- $62 = ($61|0)==(0|0);
- if ($62) {
- $63 = HEAP32[$59>>2]|0;
- $64 = ($63|0)==(0|0);
- if ($64) {
- $$3 = 0;
- break;
- } else {
- $$1387 = $63;$$1390 = $59;
- }
- } else {
- $$1387 = $61;$$1390 = $60;
- }
- while(1) {
- $65 = ((($$1387)) + 20|0);
- $66 = HEAP32[$65>>2]|0;
- $67 = ($66|0)==(0|0);
- if (!($67)) {
- $$1387 = $66;$$1390 = $65;
- continue;
+ $26 = $18 >>> 3;
+ $27 = ($18>>>0)<(256);
+ if ($27) {
+ $28 = ((($21)) + 8|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = ((($21)) + 12|0);
+ $31 = HEAP32[$30>>2]|0;
+ $32 = $26 << 1;
+ $33 = (35536 + ($32<<2)|0);
+ $34 = ($29|0)==($33|0);
+ if (!($34)) {
+ $35 = ($29>>>0)<($8>>>0);
+ if ($35) {
+ _abort();
+ // unreachable;
}
- $68 = ((($$1387)) + 16|0);
- $69 = HEAP32[$68>>2]|0;
- $70 = ($69|0)==(0|0);
- if ($70) {
- break;
- } else {
- $$1387 = $69;$$1390 = $68;
+ $36 = ((($29)) + 12|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($37|0)==($21|0);
+ if (!($38)) {
+ _abort();
+ // unreachable;
}
}
- $71 = ($$1390>>>0)<($3>>>0);
- if ($71) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1390>>2] = 0;
- $$3 = $$1387;
+ $39 = ($31|0)==($29|0);
+ if ($39) {
+ $40 = 1 << $26;
+ $41 = $40 ^ -1;
+ $42 = HEAP32[8874]|0;
+ $43 = $42 & $41;
+ HEAP32[8874] = $43;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- } else {
- $50 = ((($16)) + 8|0);
- $51 = HEAP32[$50>>2]|0;
- $52 = ($51>>>0)<($3>>>0);
- if ($52) {
- _abort();
- // unreachable;
- }
- $53 = ((($51)) + 12|0);
- $54 = HEAP32[$53>>2]|0;
- $55 = ($54|0)==($16|0);
- if (!($55)) {
- _abort();
- // unreachable;
- }
- $56 = ((($48)) + 8|0);
- $57 = HEAP32[$56>>2]|0;
- $58 = ($57|0)==($16|0);
- if ($58) {
- HEAP32[$53>>2] = $48;
- HEAP32[$56>>2] = $51;
- $$3 = $48;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
- } while(0);
- $72 = ($46|0)==(0|0);
- if ($72) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $73 = ((($16)) + 28|0);
- $74 = HEAP32[$73>>2]|0;
- $75 = (33488 + ($74<<2)|0);
- $76 = HEAP32[$75>>2]|0;
- $77 = ($16|0)==($76|0);
- do {
- if ($77) {
- HEAP32[$75>>2] = $$3;
- $cond421 = ($$3|0)==(0|0);
- if ($cond421) {
- $78 = 1 << $74;
- $79 = $78 ^ -1;
- $80 = HEAP32[(33188)>>2]|0;
- $81 = $80 & $79;
- HEAP32[(33188)>>2] = $81;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- }
+ $44 = ($31|0)==($33|0);
+ if ($44) {
+ $$pre444 = ((($31)) + 8|0);
+ $$pre$phi445Z2D = $$pre444;
} else {
- $82 = HEAP32[(33200)>>2]|0;
- $83 = ($46>>>0)<($82>>>0);
- if ($83) {
+ $45 = ($31>>>0)<($8>>>0);
+ if ($45) {
_abort();
// unreachable;
- } else {
- $84 = ((($46)) + 16|0);
- $85 = HEAP32[$84>>2]|0;
- $not$405 = ($85|0)!=($16|0);
- $$sink3 = $not$405&1;
- $86 = (((($46)) + 16|0) + ($$sink3<<2)|0);
- HEAP32[$86>>2] = $$3;
- $87 = ($$3|0)==(0|0);
- if ($87) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- } else {
- break;
- }
}
- }
- } while(0);
- $88 = HEAP32[(33200)>>2]|0;
- $89 = ($$3>>>0)<($88>>>0);
- if ($89) {
- _abort();
- // unreachable;
- }
- $90 = ((($$3)) + 24|0);
- HEAP32[$90>>2] = $46;
- $91 = ((($16)) + 16|0);
- $92 = HEAP32[$91>>2]|0;
- $93 = ($92|0)==(0|0);
- do {
- if (!($93)) {
- $94 = ($92>>>0)<($88>>>0);
- if ($94) {
+ $46 = ((($31)) + 8|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ($47|0)==($21|0);
+ if ($48) {
+ $$pre$phi445Z2D = $46;
+ } else {
_abort();
// unreachable;
- } else {
- $95 = ((($$3)) + 16|0);
- HEAP32[$95>>2] = $92;
- $96 = ((($92)) + 24|0);
- HEAP32[$96>>2] = $$3;
- break;
}
}
- } while(0);
- $97 = ((($91)) + 4|0);
- $98 = HEAP32[$97>>2]|0;
- $99 = ($98|0)==(0|0);
- if ($99) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $100 = HEAP32[(33200)>>2]|0;
- $101 = ($98>>>0)<($100>>>0);
- if ($101) {
- _abort();
- // unreachable;
- } else {
- $102 = ((($$3)) + 20|0);
- HEAP32[$102>>2] = $98;
- $103 = ((($98)) + 24|0);
- HEAP32[$103>>2] = $$3;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- }
- }
- } else {
- $$1 = $2;$$1382 = $9;$113 = $2;
- }
- } while(0);
- $112 = ($113>>>0)<($10>>>0);
- if (!($112)) {
- _abort();
- // unreachable;
- }
- $114 = ((($10)) + 4|0);
- $115 = HEAP32[$114>>2]|0;
- $116 = $115 & 1;
- $117 = ($116|0)==(0);
- if ($117) {
- _abort();
- // unreachable;
- }
- $118 = $115 & 2;
- $119 = ($118|0)==(0);
- if ($119) {
- $120 = HEAP32[(33208)>>2]|0;
- $121 = ($10|0)==($120|0);
- $122 = HEAP32[(33204)>>2]|0;
- if ($121) {
- $123 = HEAP32[(33196)>>2]|0;
- $124 = (($123) + ($$1382))|0;
- HEAP32[(33196)>>2] = $124;
- HEAP32[(33208)>>2] = $$1;
- $125 = $124 | 1;
- $126 = ((($$1)) + 4|0);
- HEAP32[$126>>2] = $125;
- $127 = ($$1|0)==($122|0);
- if (!($127)) {
- return;
- }
- HEAP32[(33204)>>2] = 0;
- HEAP32[(33192)>>2] = 0;
- return;
- }
- $128 = ($10|0)==($122|0);
- if ($128) {
- $129 = HEAP32[(33192)>>2]|0;
- $130 = (($129) + ($$1382))|0;
- HEAP32[(33192)>>2] = $130;
- HEAP32[(33204)>>2] = $113;
- $131 = $130 | 1;
- $132 = ((($$1)) + 4|0);
- HEAP32[$132>>2] = $131;
- $133 = (($113) + ($130)|0);
- HEAP32[$133>>2] = $130;
- return;
- }
- $134 = $115 & -8;
- $135 = (($134) + ($$1382))|0;
- $136 = $115 >>> 3;
- $137 = ($115>>>0)<(256);
- L108: do {
- if ($137) {
- $138 = ((($10)) + 8|0);
- $139 = HEAP32[$138>>2]|0;
- $140 = ((($10)) + 12|0);
- $141 = HEAP32[$140>>2]|0;
- $142 = $136 << 1;
- $143 = (33224 + ($142<<2)|0);
- $144 = ($139|0)==($143|0);
- if (!($144)) {
- $145 = HEAP32[(33200)>>2]|0;
- $146 = ($139>>>0)<($145>>>0);
- if ($146) {
- _abort();
- // unreachable;
- }
- $147 = ((($139)) + 12|0);
- $148 = HEAP32[$147>>2]|0;
- $149 = ($148|0)==($10|0);
- if (!($149)) {
- _abort();
- // unreachable;
- }
- }
- $150 = ($141|0)==($139|0);
- if ($150) {
- $151 = 1 << $136;
- $152 = $151 ^ -1;
- $153 = HEAP32[8296]|0;
- $154 = $153 & $152;
- HEAP32[8296] = $154;
+ $49 = ((($29)) + 12|0);
+ HEAP32[$49>>2] = $31;
+ HEAP32[$$pre$phi445Z2D>>2] = $29;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- $155 = ($141|0)==($143|0);
- if ($155) {
- $$pre442 = ((($141)) + 8|0);
- $$pre$phi443Z2D = $$pre442;
- } else {
- $156 = HEAP32[(33200)>>2]|0;
- $157 = ($141>>>0)<($156>>>0);
- if ($157) {
- _abort();
- // unreachable;
- }
- $158 = ((($141)) + 8|0);
- $159 = HEAP32[$158>>2]|0;
- $160 = ($159|0)==($10|0);
- if ($160) {
- $$pre$phi443Z2D = $158;
- } else {
- _abort();
- // unreachable;
- }
- }
- $161 = ((($139)) + 12|0);
- HEAP32[$161>>2] = $141;
- HEAP32[$$pre$phi443Z2D>>2] = $139;
- } else {
- $162 = ((($10)) + 24|0);
- $163 = HEAP32[$162>>2]|0;
- $164 = ((($10)) + 12|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165|0)==($10|0);
+ $50 = ((($21)) + 24|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = ((($21)) + 12|0);
+ $53 = HEAP32[$52>>2]|0;
+ $54 = ($53|0)==($21|0);
do {
- if ($166) {
- $177 = ((($10)) + 16|0);
- $178 = ((($177)) + 4|0);
- $179 = HEAP32[$178>>2]|0;
- $180 = ($179|0)==(0|0);
- if ($180) {
- $181 = HEAP32[$177>>2]|0;
- $182 = ($181|0)==(0|0);
- if ($182) {
- $$3400 = 0;
+ if ($54) {
+ $64 = ((($21)) + 16|0);
+ $65 = ((($64)) + 4|0);
+ $66 = HEAP32[$65>>2]|0;
+ $67 = ($66|0)==(0|0);
+ if ($67) {
+ $68 = HEAP32[$64>>2]|0;
+ $69 = ($68|0)==(0|0);
+ if ($69) {
+ $$3 = 0;
break;
} else {
- $$1398 = $181;$$1402 = $177;
+ $$1387 = $68;$$1390 = $64;
}
} else {
- $$1398 = $179;$$1402 = $178;
+ $$1387 = $66;$$1390 = $65;
}
while(1) {
- $183 = ((($$1398)) + 20|0);
- $184 = HEAP32[$183>>2]|0;
- $185 = ($184|0)==(0|0);
- if (!($185)) {
- $$1398 = $184;$$1402 = $183;
+ $70 = ((($$1387)) + 20|0);
+ $71 = HEAP32[$70>>2]|0;
+ $72 = ($71|0)==(0|0);
+ if (!($72)) {
+ $$1387 = $71;$$1390 = $70;
continue;
}
- $186 = ((($$1398)) + 16|0);
- $187 = HEAP32[$186>>2]|0;
- $188 = ($187|0)==(0|0);
- if ($188) {
+ $73 = ((($$1387)) + 16|0);
+ $74 = HEAP32[$73>>2]|0;
+ $75 = ($74|0)==(0|0);
+ if ($75) {
break;
} else {
- $$1398 = $187;$$1402 = $186;
+ $$1387 = $74;$$1390 = $73;
}
}
- $189 = HEAP32[(33200)>>2]|0;
- $190 = ($$1402>>>0)<($189>>>0);
- if ($190) {
+ $76 = ($$1390>>>0)<($8>>>0);
+ if ($76) {
_abort();
// unreachable;
} else {
- HEAP32[$$1402>>2] = 0;
- $$3400 = $$1398;
+ HEAP32[$$1390>>2] = 0;
+ $$3 = $$1387;
break;
}
} else {
- $167 = ((($10)) + 8|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = HEAP32[(33200)>>2]|0;
- $170 = ($168>>>0)<($169>>>0);
- if ($170) {
+ $55 = ((($21)) + 8|0);
+ $56 = HEAP32[$55>>2]|0;
+ $57 = ($56>>>0)<($8>>>0);
+ if ($57) {
_abort();
// unreachable;
}
- $171 = ((($168)) + 12|0);
- $172 = HEAP32[$171>>2]|0;
- $173 = ($172|0)==($10|0);
- if (!($173)) {
+ $58 = ((($56)) + 12|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = ($59|0)==($21|0);
+ if (!($60)) {
_abort();
// unreachable;
}
- $174 = ((($165)) + 8|0);
- $175 = HEAP32[$174>>2]|0;
- $176 = ($175|0)==($10|0);
- if ($176) {
- HEAP32[$171>>2] = $165;
- HEAP32[$174>>2] = $168;
- $$3400 = $165;
+ $61 = ((($53)) + 8|0);
+ $62 = HEAP32[$61>>2]|0;
+ $63 = ($62|0)==($21|0);
+ if ($63) {
+ HEAP32[$58>>2] = $53;
+ HEAP32[$61>>2] = $56;
+ $$3 = $53;
break;
} else {
_abort();
@@ -26772,298 +32813,600 @@ function _free($0) {
}
}
} while(0);
- $191 = ($163|0)==(0|0);
- if (!($191)) {
- $192 = ((($10)) + 28|0);
- $193 = HEAP32[$192>>2]|0;
- $194 = (33488 + ($193<<2)|0);
- $195 = HEAP32[$194>>2]|0;
- $196 = ($10|0)==($195|0);
+ $77 = ($51|0)==(0|0);
+ if ($77) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $78 = ((($21)) + 28|0);
+ $79 = HEAP32[$78>>2]|0;
+ $80 = (35800 + ($79<<2)|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ($21|0)==($81|0);
do {
- if ($196) {
- HEAP32[$194>>2] = $$3400;
- $cond422 = ($$3400|0)==(0|0);
- if ($cond422) {
- $197 = 1 << $193;
- $198 = $197 ^ -1;
- $199 = HEAP32[(33188)>>2]|0;
- $200 = $199 & $198;
- HEAP32[(33188)>>2] = $200;
- break L108;
+ if ($82) {
+ HEAP32[$80>>2] = $$3;
+ $cond421 = ($$3|0)==(0|0);
+ if ($cond421) {
+ $83 = 1 << $79;
+ $84 = $83 ^ -1;
+ $85 = HEAP32[(35500)>>2]|0;
+ $86 = $85 & $84;
+ HEAP32[(35500)>>2] = $86;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
}
} else {
- $201 = HEAP32[(33200)>>2]|0;
- $202 = ($163>>>0)<($201>>>0);
- if ($202) {
+ $87 = HEAP32[(35512)>>2]|0;
+ $88 = ($51>>>0)<($87>>>0);
+ if ($88) {
_abort();
// unreachable;
} else {
- $203 = ((($163)) + 16|0);
- $204 = HEAP32[$203>>2]|0;
- $not$ = ($204|0)!=($10|0);
- $$sink5 = $not$&1;
- $205 = (((($163)) + 16|0) + ($$sink5<<2)|0);
- HEAP32[$205>>2] = $$3400;
- $206 = ($$3400|0)==(0|0);
- if ($206) {
- break L108;
+ $89 = ((($51)) + 16|0);
+ $90 = HEAP32[$89>>2]|0;
+ $not$405 = ($90|0)!=($21|0);
+ $$sink3 = $not$405&1;
+ $91 = (((($51)) + 16|0) + ($$sink3<<2)|0);
+ HEAP32[$91>>2] = $$3;
+ $92 = ($$3|0)==(0|0);
+ if ($92) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
} else {
break;
}
}
}
} while(0);
- $207 = HEAP32[(33200)>>2]|0;
- $208 = ($$3400>>>0)<($207>>>0);
- if ($208) {
+ $93 = HEAP32[(35512)>>2]|0;
+ $94 = ($$3>>>0)<($93>>>0);
+ if ($94) {
_abort();
// unreachable;
}
- $209 = ((($$3400)) + 24|0);
- HEAP32[$209>>2] = $163;
- $210 = ((($10)) + 16|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
+ $95 = ((($$3)) + 24|0);
+ HEAP32[$95>>2] = $51;
+ $96 = ((($21)) + 16|0);
+ $97 = HEAP32[$96>>2]|0;
+ $98 = ($97|0)==(0|0);
do {
- if (!($212)) {
- $213 = ($211>>>0)<($207>>>0);
- if ($213) {
+ if (!($98)) {
+ $99 = ($97>>>0)<($93>>>0);
+ if ($99) {
_abort();
// unreachable;
} else {
- $214 = ((($$3400)) + 16|0);
- HEAP32[$214>>2] = $211;
- $215 = ((($211)) + 24|0);
- HEAP32[$215>>2] = $$3400;
+ $100 = ((($$3)) + 16|0);
+ HEAP32[$100>>2] = $97;
+ $101 = ((($97)) + 24|0);
+ HEAP32[$101>>2] = $$3;
break;
}
}
} while(0);
- $216 = ((($210)) + 4|0);
- $217 = HEAP32[$216>>2]|0;
- $218 = ($217|0)==(0|0);
- if (!($218)) {
- $219 = HEAP32[(33200)>>2]|0;
- $220 = ($217>>>0)<($219>>>0);
- if ($220) {
+ $102 = ((($96)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ($103|0)==(0|0);
+ if ($104) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $105 = HEAP32[(35512)>>2]|0;
+ $106 = ($103>>>0)<($105>>>0);
+ if ($106) {
_abort();
// unreachable;
} else {
- $221 = ((($$3400)) + 20|0);
- HEAP32[$221>>2] = $217;
- $222 = ((($217)) + 24|0);
- HEAP32[$222>>2] = $$3400;
+ $107 = ((($$3)) + 20|0);
+ HEAP32[$107>>2] = $103;
+ $108 = ((($103)) + 24|0);
+ HEAP32[$108>>2] = $$3;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
}
}
}
- } while(0);
- $223 = $135 | 1;
- $224 = ((($$1)) + 4|0);
- HEAP32[$224>>2] = $223;
- $225 = (($113) + ($135)|0);
- HEAP32[$225>>2] = $135;
- $226 = HEAP32[(33204)>>2]|0;
- $227 = ($$1|0)==($226|0);
- if ($227) {
- HEAP32[(33192)>>2] = $135;
- return;
} else {
- $$2 = $135;
+ $$1 = $2;$$1382 = $14;$118 = $2;
+ label = 55;
}
- } else {
- $228 = $115 & -2;
- HEAP32[$114>>2] = $228;
- $229 = $$1382 | 1;
- $230 = ((($$1)) + 4|0);
- HEAP32[$230>>2] = $229;
- $231 = (($113) + ($$1382)|0);
- HEAP32[$231>>2] = $$1382;
- $$2 = $$1382;
- }
- $232 = $$2 >>> 3;
- $233 = ($$2>>>0)<(256);
- if ($233) {
- $234 = $232 << 1;
- $235 = (33224 + ($234<<2)|0);
- $236 = HEAP32[8296]|0;
- $237 = 1 << $232;
- $238 = $236 & $237;
- $239 = ($238|0)==(0);
- if ($239) {
- $240 = $236 | $237;
- HEAP32[8296] = $240;
- $$pre = ((($235)) + 8|0);
- $$0403 = $235;$$pre$phiZ2D = $$pre;
- } else {
- $241 = ((($235)) + 8|0);
- $242 = HEAP32[$241>>2]|0;
- $243 = HEAP32[(33200)>>2]|0;
- $244 = ($242>>>0)<($243>>>0);
- if ($244) {
+ } while(0);
+ do {
+ if ((label|0) == 55) {
+ $117 = ($118>>>0)<($15>>>0);
+ if (!($117)) {
_abort();
// unreachable;
- } else {
- $$0403 = $242;$$pre$phiZ2D = $241;
}
- }
- HEAP32[$$pre$phiZ2D>>2] = $$1;
- $245 = ((($$0403)) + 12|0);
- HEAP32[$245>>2] = $$1;
- $246 = ((($$1)) + 8|0);
- HEAP32[$246>>2] = $$0403;
- $247 = ((($$1)) + 12|0);
- HEAP32[$247>>2] = $235;
- return;
- }
- $248 = $$2 >>> 8;
- $249 = ($248|0)==(0);
- if ($249) {
- $$0396 = 0;
- } else {
- $250 = ($$2>>>0)>(16777215);
- if ($250) {
- $$0396 = 31;
- } else {
- $251 = (($248) + 1048320)|0;
- $252 = $251 >>> 16;
- $253 = $252 & 8;
- $254 = $248 << $253;
- $255 = (($254) + 520192)|0;
- $256 = $255 >>> 16;
- $257 = $256 & 4;
- $258 = $257 | $253;
- $259 = $254 << $257;
- $260 = (($259) + 245760)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 2;
- $263 = $258 | $262;
- $264 = (14 - ($263))|0;
- $265 = $259 << $262;
- $266 = $265 >>> 15;
- $267 = (($264) + ($266))|0;
- $268 = $267 << 1;
- $269 = (($267) + 7)|0;
- $270 = $$2 >>> $269;
- $271 = $270 & 1;
- $272 = $271 | $268;
- $$0396 = $272;
- }
- }
- $273 = (33488 + ($$0396<<2)|0);
- $274 = ((($$1)) + 28|0);
- HEAP32[$274>>2] = $$0396;
- $275 = ((($$1)) + 16|0);
- $276 = ((($$1)) + 20|0);
- HEAP32[$276>>2] = 0;
- HEAP32[$275>>2] = 0;
- $277 = HEAP32[(33188)>>2]|0;
- $278 = 1 << $$0396;
- $279 = $277 & $278;
- $280 = ($279|0)==(0);
- do {
- if ($280) {
- $281 = $277 | $278;
- HEAP32[(33188)>>2] = $281;
- HEAP32[$273>>2] = $$1;
- $282 = ((($$1)) + 24|0);
- HEAP32[$282>>2] = $273;
- $283 = ((($$1)) + 12|0);
- HEAP32[$283>>2] = $$1;
- $284 = ((($$1)) + 8|0);
- HEAP32[$284>>2] = $$1;
- } else {
- $285 = HEAP32[$273>>2]|0;
- $286 = ($$0396|0)==(31);
- $287 = $$0396 >>> 1;
- $288 = (25 - ($287))|0;
- $289 = $286 ? 0 : $288;
- $290 = $$2 << $289;
- $$0383 = $290;$$0384 = $285;
- while(1) {
- $291 = ((($$0384)) + 4|0);
- $292 = HEAP32[$291>>2]|0;
- $293 = $292 & -8;
- $294 = ($293|0)==($$2|0);
- if ($294) {
- label = 124;
+ $119 = ((($15)) + 4|0);
+ $120 = HEAP32[$119>>2]|0;
+ $121 = $120 & 1;
+ $122 = ($121|0)==(0);
+ if ($122) {
+ _abort();
+ // unreachable;
+ }
+ $123 = $120 & 2;
+ $124 = ($123|0)==(0);
+ if ($124) {
+ $125 = HEAP32[(35520)>>2]|0;
+ $126 = ($15|0)==($125|0);
+ $127 = HEAP32[(35516)>>2]|0;
+ if ($126) {
+ $128 = HEAP32[(35508)>>2]|0;
+ $129 = (($128) + ($$1382))|0;
+ HEAP32[(35508)>>2] = $129;
+ HEAP32[(35520)>>2] = $$1;
+ $130 = $129 | 1;
+ $131 = ((($$1)) + 4|0);
+ HEAP32[$131>>2] = $130;
+ $132 = ($$1|0)==($127|0);
+ if (!($132)) {
+ break;
+ }
+ HEAP32[(35516)>>2] = 0;
+ HEAP32[(35504)>>2] = 0;
break;
}
- $295 = $$0383 >>> 31;
- $296 = (((($$0384)) + 16|0) + ($295<<2)|0);
- $297 = $$0383 << 1;
- $298 = HEAP32[$296>>2]|0;
- $299 = ($298|0)==(0|0);
- if ($299) {
- label = 121;
+ $133 = ($15|0)==($127|0);
+ if ($133) {
+ $134 = HEAP32[(35504)>>2]|0;
+ $135 = (($134) + ($$1382))|0;
+ HEAP32[(35504)>>2] = $135;
+ HEAP32[(35516)>>2] = $118;
+ $136 = $135 | 1;
+ $137 = ((($$1)) + 4|0);
+ HEAP32[$137>>2] = $136;
+ $138 = (($118) + ($135)|0);
+ HEAP32[$138>>2] = $135;
+ break;
+ }
+ $139 = $120 & -8;
+ $140 = (($139) + ($$1382))|0;
+ $141 = $120 >>> 3;
+ $142 = ($120>>>0)<(256);
+ L106: do {
+ if ($142) {
+ $143 = ((($15)) + 8|0);
+ $144 = HEAP32[$143>>2]|0;
+ $145 = ((($15)) + 12|0);
+ $146 = HEAP32[$145>>2]|0;
+ $147 = $141 << 1;
+ $148 = (35536 + ($147<<2)|0);
+ $149 = ($144|0)==($148|0);
+ if (!($149)) {
+ $150 = HEAP32[(35512)>>2]|0;
+ $151 = ($144>>>0)<($150>>>0);
+ if ($151) {
+ _abort();
+ // unreachable;
+ }
+ $152 = ((($144)) + 12|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = ($153|0)==($15|0);
+ if (!($154)) {
+ _abort();
+ // unreachable;
+ }
+ }
+ $155 = ($146|0)==($144|0);
+ if ($155) {
+ $156 = 1 << $141;
+ $157 = $156 ^ -1;
+ $158 = HEAP32[8874]|0;
+ $159 = $158 & $157;
+ HEAP32[8874] = $159;
+ break;
+ }
+ $160 = ($146|0)==($148|0);
+ if ($160) {
+ $$pre442 = ((($146)) + 8|0);
+ $$pre$phi443Z2D = $$pre442;
+ } else {
+ $161 = HEAP32[(35512)>>2]|0;
+ $162 = ($146>>>0)<($161>>>0);
+ if ($162) {
+ _abort();
+ // unreachable;
+ }
+ $163 = ((($146)) + 8|0);
+ $164 = HEAP32[$163>>2]|0;
+ $165 = ($164|0)==($15|0);
+ if ($165) {
+ $$pre$phi443Z2D = $163;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ $166 = ((($144)) + 12|0);
+ HEAP32[$166>>2] = $146;
+ HEAP32[$$pre$phi443Z2D>>2] = $144;
+ } else {
+ $167 = ((($15)) + 24|0);
+ $168 = HEAP32[$167>>2]|0;
+ $169 = ((($15)) + 12|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==($15|0);
+ do {
+ if ($171) {
+ $182 = ((($15)) + 16|0);
+ $183 = ((($182)) + 4|0);
+ $184 = HEAP32[$183>>2]|0;
+ $185 = ($184|0)==(0|0);
+ if ($185) {
+ $186 = HEAP32[$182>>2]|0;
+ $187 = ($186|0)==(0|0);
+ if ($187) {
+ $$3400 = 0;
+ break;
+ } else {
+ $$1398 = $186;$$1402 = $182;
+ }
+ } else {
+ $$1398 = $184;$$1402 = $183;
+ }
+ while(1) {
+ $188 = ((($$1398)) + 20|0);
+ $189 = HEAP32[$188>>2]|0;
+ $190 = ($189|0)==(0|0);
+ if (!($190)) {
+ $$1398 = $189;$$1402 = $188;
+ continue;
+ }
+ $191 = ((($$1398)) + 16|0);
+ $192 = HEAP32[$191>>2]|0;
+ $193 = ($192|0)==(0|0);
+ if ($193) {
+ break;
+ } else {
+ $$1398 = $192;$$1402 = $191;
+ }
+ }
+ $194 = HEAP32[(35512)>>2]|0;
+ $195 = ($$1402>>>0)<($194>>>0);
+ if ($195) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1402>>2] = 0;
+ $$3400 = $$1398;
+ break;
+ }
+ } else {
+ $172 = ((($15)) + 8|0);
+ $173 = HEAP32[$172>>2]|0;
+ $174 = HEAP32[(35512)>>2]|0;
+ $175 = ($173>>>0)<($174>>>0);
+ if ($175) {
+ _abort();
+ // unreachable;
+ }
+ $176 = ((($173)) + 12|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ($177|0)==($15|0);
+ if (!($178)) {
+ _abort();
+ // unreachable;
+ }
+ $179 = ((($170)) + 8|0);
+ $180 = HEAP32[$179>>2]|0;
+ $181 = ($180|0)==($15|0);
+ if ($181) {
+ HEAP32[$176>>2] = $170;
+ HEAP32[$179>>2] = $173;
+ $$3400 = $170;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $196 = ($168|0)==(0|0);
+ if (!($196)) {
+ $197 = ((($15)) + 28|0);
+ $198 = HEAP32[$197>>2]|0;
+ $199 = (35800 + ($198<<2)|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($15|0)==($200|0);
+ do {
+ if ($201) {
+ HEAP32[$199>>2] = $$3400;
+ $cond422 = ($$3400|0)==(0|0);
+ if ($cond422) {
+ $202 = 1 << $198;
+ $203 = $202 ^ -1;
+ $204 = HEAP32[(35500)>>2]|0;
+ $205 = $204 & $203;
+ HEAP32[(35500)>>2] = $205;
+ break L106;
+ }
+ } else {
+ $206 = HEAP32[(35512)>>2]|0;
+ $207 = ($168>>>0)<($206>>>0);
+ if ($207) {
+ _abort();
+ // unreachable;
+ } else {
+ $208 = ((($168)) + 16|0);
+ $209 = HEAP32[$208>>2]|0;
+ $not$ = ($209|0)!=($15|0);
+ $$sink5 = $not$&1;
+ $210 = (((($168)) + 16|0) + ($$sink5<<2)|0);
+ HEAP32[$210>>2] = $$3400;
+ $211 = ($$3400|0)==(0|0);
+ if ($211) {
+ break L106;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $212 = HEAP32[(35512)>>2]|0;
+ $213 = ($$3400>>>0)<($212>>>0);
+ if ($213) {
+ _abort();
+ // unreachable;
+ }
+ $214 = ((($$3400)) + 24|0);
+ HEAP32[$214>>2] = $168;
+ $215 = ((($15)) + 16|0);
+ $216 = HEAP32[$215>>2]|0;
+ $217 = ($216|0)==(0|0);
+ do {
+ if (!($217)) {
+ $218 = ($216>>>0)<($212>>>0);
+ if ($218) {
+ _abort();
+ // unreachable;
+ } else {
+ $219 = ((($$3400)) + 16|0);
+ HEAP32[$219>>2] = $216;
+ $220 = ((($216)) + 24|0);
+ HEAP32[$220>>2] = $$3400;
+ break;
+ }
+ }
+ } while(0);
+ $221 = ((($215)) + 4|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
+ if (!($223)) {
+ $224 = HEAP32[(35512)>>2]|0;
+ $225 = ($222>>>0)<($224>>>0);
+ if ($225) {
+ _abort();
+ // unreachable;
+ } else {
+ $226 = ((($$3400)) + 20|0);
+ HEAP32[$226>>2] = $222;
+ $227 = ((($222)) + 24|0);
+ HEAP32[$227>>2] = $$3400;
+ break;
+ }
+ }
+ }
+ }
+ } while(0);
+ $228 = $140 | 1;
+ $229 = ((($$1)) + 4|0);
+ HEAP32[$229>>2] = $228;
+ $230 = (($118) + ($140)|0);
+ HEAP32[$230>>2] = $140;
+ $231 = HEAP32[(35516)>>2]|0;
+ $232 = ($$1|0)==($231|0);
+ if ($232) {
+ HEAP32[(35504)>>2] = $140;
break;
} else {
- $$0383 = $297;$$0384 = $298;
+ $$2 = $140;
}
- }
- if ((label|0) == 121) {
- $300 = HEAP32[(33200)>>2]|0;
- $301 = ($296>>>0)<($300>>>0);
- if ($301) {
- _abort();
- // unreachable;
+ } else {
+ $233 = $120 & -2;
+ HEAP32[$119>>2] = $233;
+ $234 = $$1382 | 1;
+ $235 = ((($$1)) + 4|0);
+ HEAP32[$235>>2] = $234;
+ $236 = (($118) + ($$1382)|0);
+ HEAP32[$236>>2] = $$1382;
+ $$2 = $$1382;
+ }
+ $237 = $$2 >>> 3;
+ $238 = ($$2>>>0)<(256);
+ if ($238) {
+ $239 = $237 << 1;
+ $240 = (35536 + ($239<<2)|0);
+ $241 = HEAP32[8874]|0;
+ $242 = 1 << $237;
+ $243 = $241 & $242;
+ $244 = ($243|0)==(0);
+ if ($244) {
+ $245 = $241 | $242;
+ HEAP32[8874] = $245;
+ $$pre = ((($240)) + 8|0);
+ $$0403 = $240;$$pre$phiZ2D = $$pre;
} else {
- HEAP32[$296>>2] = $$1;
- $302 = ((($$1)) + 24|0);
- HEAP32[$302>>2] = $$0384;
- $303 = ((($$1)) + 12|0);
- HEAP32[$303>>2] = $$1;
- $304 = ((($$1)) + 8|0);
- HEAP32[$304>>2] = $$1;
- break;
+ $246 = ((($240)) + 8|0);
+ $247 = HEAP32[$246>>2]|0;
+ $248 = HEAP32[(35512)>>2]|0;
+ $249 = ($247>>>0)<($248>>>0);
+ if ($249) {
+ _abort();
+ // unreachable;
+ } else {
+ $$0403 = $247;$$pre$phiZ2D = $246;
+ }
}
+ HEAP32[$$pre$phiZ2D>>2] = $$1;
+ $250 = ((($$0403)) + 12|0);
+ HEAP32[$250>>2] = $$1;
+ $251 = ((($$1)) + 8|0);
+ HEAP32[$251>>2] = $$0403;
+ $252 = ((($$1)) + 12|0);
+ HEAP32[$252>>2] = $240;
+ break;
}
- else if ((label|0) == 124) {
- $305 = ((($$0384)) + 8|0);
- $306 = HEAP32[$305>>2]|0;
- $307 = HEAP32[(33200)>>2]|0;
- $308 = ($306>>>0)>=($307>>>0);
- $not$437 = ($$0384>>>0)>=($307>>>0);
- $309 = $308 & $not$437;
- if ($309) {
- $310 = ((($306)) + 12|0);
- HEAP32[$310>>2] = $$1;
- HEAP32[$305>>2] = $$1;
- $311 = ((($$1)) + 8|0);
- HEAP32[$311>>2] = $306;
- $312 = ((($$1)) + 12|0);
- HEAP32[$312>>2] = $$0384;
- $313 = ((($$1)) + 24|0);
- HEAP32[$313>>2] = 0;
- break;
+ $253 = $$2 >>> 8;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $$0396 = 0;
+ } else {
+ $255 = ($$2>>>0)>(16777215);
+ if ($255) {
+ $$0396 = 31;
} else {
- _abort();
- // unreachable;
+ $256 = (($253) + 1048320)|0;
+ $257 = $256 >>> 16;
+ $258 = $257 & 8;
+ $259 = $253 << $258;
+ $260 = (($259) + 520192)|0;
+ $261 = $260 >>> 16;
+ $262 = $261 & 4;
+ $263 = $262 | $258;
+ $264 = $259 << $262;
+ $265 = (($264) + 245760)|0;
+ $266 = $265 >>> 16;
+ $267 = $266 & 2;
+ $268 = $263 | $267;
+ $269 = (14 - ($268))|0;
+ $270 = $264 << $267;
+ $271 = $270 >>> 15;
+ $272 = (($269) + ($271))|0;
+ $273 = $272 << 1;
+ $274 = (($272) + 7)|0;
+ $275 = $$2 >>> $274;
+ $276 = $275 & 1;
+ $277 = $276 | $273;
+ $$0396 = $277;
+ }
+ }
+ $278 = (35800 + ($$0396<<2)|0);
+ $279 = ((($$1)) + 28|0);
+ HEAP32[$279>>2] = $$0396;
+ $280 = ((($$1)) + 16|0);
+ $281 = ((($$1)) + 20|0);
+ HEAP32[$281>>2] = 0;
+ HEAP32[$280>>2] = 0;
+ $282 = HEAP32[(35500)>>2]|0;
+ $283 = 1 << $$0396;
+ $284 = $282 & $283;
+ $285 = ($284|0)==(0);
+ do {
+ if ($285) {
+ $286 = $282 | $283;
+ HEAP32[(35500)>>2] = $286;
+ HEAP32[$278>>2] = $$1;
+ $287 = ((($$1)) + 24|0);
+ HEAP32[$287>>2] = $278;
+ $288 = ((($$1)) + 12|0);
+ HEAP32[$288>>2] = $$1;
+ $289 = ((($$1)) + 8|0);
+ HEAP32[$289>>2] = $$1;
+ } else {
+ $290 = HEAP32[$278>>2]|0;
+ $291 = ($$0396|0)==(31);
+ $292 = $$0396 >>> 1;
+ $293 = (25 - ($292))|0;
+ $294 = $291 ? 0 : $293;
+ $295 = $$2 << $294;
+ $$0383 = $295;$$0384 = $290;
+ while(1) {
+ $296 = ((($$0384)) + 4|0);
+ $297 = HEAP32[$296>>2]|0;
+ $298 = $297 & -8;
+ $299 = ($298|0)==($$2|0);
+ if ($299) {
+ label = 126;
+ break;
+ }
+ $300 = $$0383 >>> 31;
+ $301 = (((($$0384)) + 16|0) + ($300<<2)|0);
+ $302 = $$0383 << 1;
+ $303 = HEAP32[$301>>2]|0;
+ $304 = ($303|0)==(0|0);
+ if ($304) {
+ label = 123;
+ break;
+ } else {
+ $$0383 = $302;$$0384 = $303;
+ }
+ }
+ if ((label|0) == 123) {
+ $305 = HEAP32[(35512)>>2]|0;
+ $306 = ($301>>>0)<($305>>>0);
+ if ($306) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$301>>2] = $$1;
+ $307 = ((($$1)) + 24|0);
+ HEAP32[$307>>2] = $$0384;
+ $308 = ((($$1)) + 12|0);
+ HEAP32[$308>>2] = $$1;
+ $309 = ((($$1)) + 8|0);
+ HEAP32[$309>>2] = $$1;
+ break;
+ }
+ }
+ else if ((label|0) == 126) {
+ $310 = ((($$0384)) + 8|0);
+ $311 = HEAP32[$310>>2]|0;
+ $312 = HEAP32[(35512)>>2]|0;
+ $313 = ($311>>>0)>=($312>>>0);
+ $not$437 = ($$0384>>>0)>=($312>>>0);
+ $314 = $313 & $not$437;
+ if ($314) {
+ $315 = ((($311)) + 12|0);
+ HEAP32[$315>>2] = $$1;
+ HEAP32[$310>>2] = $$1;
+ $316 = ((($$1)) + 8|0);
+ HEAP32[$316>>2] = $311;
+ $317 = ((($$1)) + 12|0);
+ HEAP32[$317>>2] = $$0384;
+ $318 = ((($$1)) + 24|0);
+ HEAP32[$318>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ }
+ } while(0);
+ $319 = HEAP32[(35528)>>2]|0;
+ $320 = (($319) + -1)|0;
+ HEAP32[(35528)>>2] = $320;
+ $321 = ($320|0)==(0);
+ if ($321) {
+ $$0212$in$i = (35980);
+ while(1) {
+ $$0212$i = HEAP32[$$0212$in$i>>2]|0;
+ $322 = ($$0212$i|0)==(0|0);
+ $323 = ((($$0212$i)) + 8|0);
+ if ($322) {
+ break;
+ } else {
+ $$0212$in$i = $323;
+ }
}
+ HEAP32[(35528)>>2] = -1;
}
}
} while(0);
- $314 = HEAP32[(33216)>>2]|0;
- $315 = (($314) + -1)|0;
- HEAP32[(33216)>>2] = $315;
- $316 = ($315|0)==(0);
- if ($316) {
- $$0212$in$i = (33640);
- } else {
+ $324 = HEAP32[(35940)>>2]|0;
+ $325 = $324 & 2;
+ $326 = ($325|0)==(0);
+ if ($326) {
return;
}
- while(1) {
- $$0212$i = HEAP32[$$0212$in$i>>2]|0;
- $317 = ($$0212$i|0)==(0|0);
- $318 = ((($$0212$i)) + 8|0);
- if ($317) {
- break;
- } else {
- $$0212$in$i = $318;
- }
- }
- HEAP32[(33216)>>2] = -1;
+ (___pthread_mutex_unlock((35944))|0);
return;
}
function runPostSets() {
@@ -27497,6 +33840,9 @@ function _roundf(f) {
f = +f;
return f >= +0 ? +Math_floor(f + +0.5) : +Math_ceil(f - +0.5); // TODO: use fround?
}
+function _emscripten_set_current_thread_status(newStatus) {
+ newStatus = newStatus|0;
+}
function _bitshift64Lshr(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
@@ -27508,6 +33854,10 @@ function _bitshift64Lshr(low, high, bits) {
tempRet0 = 0;
return (high >>> (bits - 32))|0;
}
+function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) {
+ expectedStatus = expectedStatus|0;
+ newStatus = newStatus|0;
+}
function _sbrk(increment) {
increment = increment|0;
var oldDynamicTop = 0;
@@ -27515,25 +33865,24 @@ function _sbrk(increment) {
var newDynamicTop = 0;
var totalMemory = 0;
increment = ((increment + 15) & -16)|0;
- oldDynamicTop = HEAP32[DYNAMICTOP_PTR>>2]|0;
- newDynamicTop = oldDynamicTop + increment | 0;
-
- if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
- | (newDynamicTop|0) < 0) { // Also underflow, sbrk() should be able to be used to subtract.
- abortOnCannotGrowMemory()|0;
- ___setErrNo(12);
- return -1;
- }
-
- HEAP32[DYNAMICTOP_PTR>>2] = newDynamicTop;
totalMemory = getTotalMemory()|0;
- if ((newDynamicTop|0) > (totalMemory|0)) {
- if ((enlargeMemory()|0) == 0) {
- ___setErrNo(12);
- HEAP32[DYNAMICTOP_PTR>>2] = oldDynamicTop;
- return -1;
+
+ // Perform a compare-and-swap loop to update the new dynamic top value. This is because
+ // this function can becalled simultaneously in multiple threads.
+ do {
+ oldDynamicTop = Atomics_load(HEAP32, DYNAMICTOP_PTR>>2)|0;
+ newDynamicTop = oldDynamicTop + increment | 0;
+ // Asking to increase dynamic top to a too high value? In pthreads builds we cannot
+ // enlarge memory, so this needs to fail.
+ if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
+ | (newDynamicTop|0) < 0 // Also underflow, sbrk() should be able to be used to subtract.
+ | (newDynamicTop|0) > (totalMemory|0)) {
+ abortOnCannotGrowMemory()|0;
}
- }
+ // Attempt to update the dynamic top to new value. Another thread may have beat this thread to the update,
+ // in which case we will need to start over by iterating the loop body again.
+ oldDynamicTopOnChange = Atomics_compareExchange(HEAP32, DYNAMICTOP_PTR>>2, oldDynamicTop|0, newDynamicTop|0)|0;
+ } while((oldDynamicTopOnChange|0) != (oldDynamicTop|0));
return oldDynamicTop|0;
}
function _bitshift64Shl(low, high, bits) {
@@ -28321,25 +34670,43 @@ var FUNCTION_TABLE_i = [b17,_emscripten_glCreateProgram__wrapper,_emscripten_glG
var FUNCTION_TABLE_vdddddd = [b18,_emscripten_glFrustum__wrapper];
var FUNCTION_TABLE_vdddd = [b19,_emscripten_glRotatef__wrapper,_emscripten_glClearColor__wrapper,_emscripten_glBlendColor__wrapper];
var FUNCTION_TABLE_vdd = [b20,_emscripten_glDepthRange__wrapper,_emscripten_glDepthRangef__wrapper,_emscripten_glPolygonOffset__wrapper];
-var FUNCTION_TABLE_v = [b21,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21,b21];
+var FUNCTION_TABLE_v = [b21,_UpdateDrawFrame,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21];
var FUNCTION_TABLE_viid = [b22,_emscripten_glTexParameterf__wrapper];
var FUNCTION_TABLE_viiii = [b23,_MouseButtonCallback,_emscripten_glBufferData__wrapper,_emscripten_glBufferSubData__wrapper,_emscripten_glUniform3i__wrapper,_emscripten_glUniformMatrix2fv__wrapper,_emscripten_glUniformMatrix3fv__wrapper,_emscripten_glUniformMatrix4fv__wrapper,_emscripten_glGetAttachedShaders__wrapper,_emscripten_glShaderSource__wrapper,_emscripten_glGetShaderSource__wrapper,_emscripten_glGetShaderInfoLog__wrapper,_emscripten_glGetShaderPrecisionFormat__wrapper,_emscripten_glGetProgramInfoLog__wrapper,_emscripten_glFramebufferRenderbuffer__wrapper,_emscripten_glGetFramebufferAttachmentParameteriv__wrapper,_emscripten_glGetInfoLogARB__wrapper,_emscripten_glVertexPointer__wrapper,_emscripten_glTexCoordPointer__wrapper,_emscripten_glColorPointer__wrapper,_emscripten_glDrawElements__wrapper,_emscripten_glDrawArraysInstanced__wrapper,_emscripten_glViewport__wrapper,_emscripten_glScissor__wrapper,_emscripten_glColorMask__wrapper,_emscripten_glRenderbufferStorage__wrapper,_emscripten_glBlendFuncSeparate__wrapper,_emscripten_glStencilFuncSeparate__wrapper,_emscripten_glStencilOpSeparate__wrapper,b23,b23,b23];
- return { _roundf: _roundf, _main: _main, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _fflush: _fflush, _memset: _memset, _sbrk: _sbrk, _memcpy: _memcpy, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, ___uremdi3: ___uremdi3, _i64Subtract: _i64Subtract, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_get_global_libc: _emscripten_get_global_libc, _emscripten_GetProcAddress: _emscripten_GetProcAddress, ___udivdi3: ___udivdi3, ___errno_location: ___errno_location, ___muldsi3: ___muldsi3, _free: _free, _memmove: _memmove, _strstr: _strstr, _malloc: _malloc, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
+ return { _emscripten_sync_run_in_main_thread_3: _emscripten_sync_run_in_main_thread_3, _roundf: _roundf, _bitshift64Shl: _bitshift64Shl, _emscripten_atomic_load_f32: _emscripten_atomic_load_f32, ___uremdi3: ___uremdi3, ___udivdi3: ___udivdi3, _emscripten_atomic_xor_u64: _emscripten_atomic_xor_u64, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _emscripten_atomic_and_u64: _emscripten_atomic_and_u64, _emscripten_sync_run_in_main_thread: _emscripten_sync_run_in_main_thread, _emscripten_sync_run_in_main_thread_4: _emscripten_sync_run_in_main_thread_4, _emscripten_sync_run_in_main_thread_5: _emscripten_sync_run_in_main_thread_5, _emscripten_sync_run_in_main_thread_6: _emscripten_sync_run_in_main_thread_6, _emscripten_sync_run_in_main_thread_7: _emscripten_sync_run_in_main_thread_7, _emscripten_sync_run_in_main_thread_0: _emscripten_sync_run_in_main_thread_0, _emscripten_sync_run_in_main_thread_1: _emscripten_sync_run_in_main_thread_1, _emscripten_sync_run_in_main_thread_2: _emscripten_sync_run_in_main_thread_2, __emscripten_atomic_fetch_and_sub_u64: __emscripten_atomic_fetch_and_sub_u64, _emscripten_atomic_exchange_u32: _emscripten_atomic_exchange_u32, _fflush: _fflush, _emscripten_set_current_thread_status: _emscripten_set_current_thread_status, _emscripten_atomic_cas_u64: _emscripten_atomic_cas_u64, _memset: _memset, _emscripten_atomic_sub_u64: _emscripten_atomic_sub_u64, _emscripten_sync_run_in_main_thread_xprintf_varargs: _emscripten_sync_run_in_main_thread_xprintf_varargs, _i64Subtract: _i64Subtract, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, __emscripten_atomic_fetch_and_and_u64: __emscripten_atomic_fetch_and_and_u64, _emscripten_atomic_add_u64: _emscripten_atomic_add_u64, _emscripten_atomic_store_f64: _emscripten_atomic_store_f64, ___muldsi3: ___muldsi3, __emscripten_atomic_fetch_and_xor_u64: __emscripten_atomic_fetch_and_xor_u64, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_atomic_store_u64: _emscripten_atomic_store_u64, _emscripten_atomic_load_f64: _emscripten_atomic_load_f64, _emscripten_get_global_libc: _emscripten_get_global_libc, __emscripten_atomic_fetch_and_add_u64: __emscripten_atomic_fetch_and_add_u64, __emscripten_atomic_fetch_and_or_u64: __emscripten_atomic_fetch_and_or_u64, _emscripten_GetProcAddress: _emscripten_GetProcAddress, _emscripten_async_run_in_main_thread: _emscripten_async_run_in_main_thread, ___errno_location: ___errno_location, _main: _main, _emscripten_main_thread_process_queued_calls: _emscripten_main_thread_process_queued_calls, _emscripten_atomic_load_u64: _emscripten_atomic_load_u64, _free: _free, _emscripten_atomic_store_f32: _emscripten_atomic_store_f32, _emscripten_atomic_exchange_u64: _emscripten_atomic_exchange_u64, _memmove: _memmove, ___pthread_tsd_run_dtors: ___pthread_tsd_run_dtors, _malloc: _malloc, _memcpy: _memcpy, _emscripten_conditional_set_current_thread_status: _emscripten_conditional_set_current_thread_status, _sbrk: _sbrk, _emscripten_atomic_or_u64: _emscripten_atomic_or_u64, _strstr: _strstr, ___emscripten_pthread_data_constructor: ___emscripten_pthread_data_constructor, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
+var real___emscripten_atomic_fetch_and_xor_u64 = asm["__emscripten_atomic_fetch_and_xor_u64"]; asm["__emscripten_atomic_fetch_and_xor_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_xor_u64.apply(null, arguments);
+};
+
var real__roundf = asm["_roundf"]; asm["_roundf"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__roundf.apply(null, arguments);
};
-var real__main = asm["_main"]; asm["_main"] = function() {
+var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__main.apply(null, arguments);
+return real__bitshift64Shl.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f32 = asm["_emscripten_atomic_load_f32"]; asm["_emscripten_atomic_load_f32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f32.apply(null, arguments);
+};
+
+var real____emscripten_pthread_data_constructor = asm["___emscripten_pthread_data_constructor"]; asm["___emscripten_pthread_data_constructor"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____emscripten_pthread_data_constructor.apply(null, arguments);
};
var real_stackSave = asm["stackSave"]; asm["stackSave"] = function() {
@@ -28348,16 +34715,22 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackSave.apply(null, arguments);
};
-var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
+var real__emscripten_atomic_xor_u64 = asm["_emscripten_atomic_xor_u64"]; asm["_emscripten_atomic_xor_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_getTempRet0.apply(null, arguments);
+return real__emscripten_atomic_xor_u64.apply(null, arguments);
};
-var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
+var real__emscripten_atomic_load_u64 = asm["_emscripten_atomic_load_u64"]; asm["_emscripten_atomic_load_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_setThrew.apply(null, arguments);
+return real__emscripten_atomic_load_u64.apply(null, arguments);
+};
+
+var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivdi3.apply(null, arguments);
};
var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() {
@@ -28366,10 +34739,76 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__bitshift64Lshr.apply(null, arguments);
};
-var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
+var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__bitshift64Shl.apply(null, arguments);
+return real_getTempRet0.apply(null, arguments);
+};
+
+var real__emscripten_atomic_and_u64 = asm["_emscripten_atomic_and_u64"]; asm["_emscripten_atomic_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread = asm["_emscripten_sync_run_in_main_thread"]; asm["_emscripten_sync_run_in_main_thread"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_4 = asm["_emscripten_sync_run_in_main_thread_4"]; asm["_emscripten_sync_run_in_main_thread_4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_4.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_5 = asm["_emscripten_sync_run_in_main_thread_5"]; asm["_emscripten_sync_run_in_main_thread_5"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_5.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_6 = asm["_emscripten_sync_run_in_main_thread_6"]; asm["_emscripten_sync_run_in_main_thread_6"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_6.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_7 = asm["_emscripten_sync_run_in_main_thread_7"]; asm["_emscripten_sync_run_in_main_thread_7"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_7.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_0 = asm["_emscripten_sync_run_in_main_thread_0"]; asm["_emscripten_sync_run_in_main_thread_0"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_0.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_1 = asm["_emscripten_sync_run_in_main_thread_1"]; asm["_emscripten_sync_run_in_main_thread_1"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_1.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_2 = asm["_emscripten_sync_run_in_main_thread_2"]; asm["_emscripten_sync_run_in_main_thread_2"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_2.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_sub_u64 = asm["__emscripten_atomic_fetch_and_sub_u64"]; asm["__emscripten_atomic_fetch_and_sub_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_sub_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_exchange_u32 = asm["_emscripten_atomic_exchange_u32"]; asm["_emscripten_atomic_exchange_u32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_exchange_u32.apply(null, arguments);
};
var real__fflush = asm["_fflush"]; asm["_fflush"] = function() {
@@ -28378,22 +34817,46 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__fflush.apply(null, arguments);
};
+var real__emscripten_set_current_thread_status = asm["_emscripten_set_current_thread_status"]; asm["_emscripten_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_set_current_thread_status.apply(null, arguments);
+};
+
+var real__emscripten_atomic_cas_u64 = asm["_emscripten_atomic_cas_u64"]; asm["_emscripten_atomic_cas_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_cas_u64.apply(null, arguments);
+};
+
var real__llvm_cttz_i32 = asm["_llvm_cttz_i32"]; asm["_llvm_cttz_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__llvm_cttz_i32.apply(null, arguments);
};
-var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+var real__emscripten_atomic_sub_u64 = asm["_emscripten_atomic_sub_u64"]; asm["_emscripten_atomic_sub_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__sbrk.apply(null, arguments);
+return real__emscripten_atomic_sub_u64.apply(null, arguments);
};
-var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
+var real__main = asm["_main"]; asm["_main"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__llvm_bswap_i32.apply(null, arguments);
+return real__main.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_xprintf_varargs = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"]; asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_xprintf_varargs.apply(null, arguments);
+};
+
+var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____errno_location.apply(null, arguments);
};
var real____muldi3 = asm["___muldi3"]; asm["___muldi3"] = function() {
@@ -28402,6 +34865,18 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldi3.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_and_u64 = asm["__emscripten_atomic_fetch_and_and_u64"]; asm["__emscripten_atomic_fetch_and_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_3 = asm["_emscripten_sync_run_in_main_thread_3"]; asm["_emscripten_sync_run_in_main_thread_3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_3.apply(null, arguments);
+};
+
var real____uremdi3 = asm["___uremdi3"]; asm["___uremdi3"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28420,12 +34895,6 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Subtract.apply(null, arguments);
};
-var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
-assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
-assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivmoddi4.apply(null, arguments);
-};
-
var real_setTempRet0 = asm["setTempRet0"]; asm["setTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28438,28 +34907,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Add.apply(null, arguments);
};
+var real__emscripten_atomic_store_u64 = asm["_emscripten_atomic_store_u64"]; asm["_emscripten_atomic_store_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f64 = asm["_emscripten_atomic_load_f64"]; asm["_emscripten_atomic_load_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f64.apply(null, arguments);
+};
+
var real__emscripten_get_global_libc = asm["_emscripten_get_global_libc"]; asm["_emscripten_get_global_libc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_get_global_libc.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_add_u64 = asm["__emscripten_atomic_fetch_and_add_u64"]; asm["__emscripten_atomic_fetch_and_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_add_u64.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_or_u64 = asm["__emscripten_atomic_fetch_and_or_u64"]; asm["__emscripten_atomic_fetch_and_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_or_u64.apply(null, arguments);
+};
+
var real__emscripten_GetProcAddress = asm["_emscripten_GetProcAddress"]; asm["_emscripten_GetProcAddress"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_GetProcAddress.apply(null, arguments);
};
-var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+var real__emscripten_async_run_in_main_thread = asm["_emscripten_async_run_in_main_thread"]; asm["_emscripten_async_run_in_main_thread"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivdi3.apply(null, arguments);
+return real__emscripten_async_run_in_main_thread.apply(null, arguments);
};
-var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____errno_location.apply(null, arguments);
+return real__llvm_bswap_i32.apply(null, arguments);
};
var real____muldsi3 = asm["___muldsi3"]; asm["___muldsi3"] = function() {
@@ -28468,28 +34961,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldsi3.apply(null, arguments);
};
+var real__emscripten_main_thread_process_queued_calls = asm["_emscripten_main_thread_process_queued_calls"]; asm["_emscripten_main_thread_process_queued_calls"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_main_thread_process_queued_calls.apply(null, arguments);
+};
+
+var real__emscripten_atomic_add_u64 = asm["_emscripten_atomic_add_u64"]; asm["_emscripten_atomic_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_add_u64.apply(null, arguments);
+};
+
var real__free = asm["_free"]; asm["_free"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__free.apply(null, arguments);
};
-var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+var real__emscripten_atomic_store_f32 = asm["_emscripten_atomic_store_f32"]; asm["_emscripten_atomic_store_f32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_establishStackSpace.apply(null, arguments);
+return real__emscripten_atomic_store_f32.apply(null, arguments);
};
-var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__memmove.apply(null, arguments);
+return real_setThrew.apply(null, arguments);
};
-var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+var real__emscripten_atomic_exchange_u64 = asm["_emscripten_atomic_exchange_u64"]; asm["_emscripten_atomic_exchange_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__strstr.apply(null, arguments);
+return real__emscripten_atomic_exchange_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_store_f64 = asm["_emscripten_atomic_store_f64"]; asm["_emscripten_atomic_store_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_f64.apply(null, arguments);
+};
+
+var real____pthread_tsd_run_dtors = asm["___pthread_tsd_run_dtors"]; asm["___pthread_tsd_run_dtors"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____pthread_tsd_run_dtors.apply(null, arguments);
};
var real_stackRestore = asm["stackRestore"]; asm["stackRestore"] = function() {
@@ -28498,43 +35015,120 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackRestore.apply(null, arguments);
};
+var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivmoddi4.apply(null, arguments);
+};
+
var real__malloc = asm["_malloc"]; asm["_malloc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__malloc.apply(null, arguments);
};
+
+var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real_establishStackSpace.apply(null, arguments);
+};
+
+var real__emscripten_conditional_set_current_thread_status = asm["_emscripten_conditional_set_current_thread_status"]; asm["_emscripten_conditional_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_conditional_set_current_thread_status.apply(null, arguments);
+};
+
+var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__sbrk.apply(null, arguments);
+};
+
+var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__memmove.apply(null, arguments);
+};
+
+var real__emscripten_atomic_or_u64 = asm["_emscripten_atomic_or_u64"]; asm["_emscripten_atomic_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_or_u64.apply(null, arguments);
+};
+
+var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__strstr.apply(null, arguments);
+};
+var __emscripten_atomic_fetch_and_xor_u64 = Module["__emscripten_atomic_fetch_and_xor_u64"] = asm["__emscripten_atomic_fetch_and_xor_u64"];
var _roundf = Module["_roundf"] = asm["_roundf"];
-var _main = Module["_main"] = asm["_main"];
+var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var _emscripten_atomic_load_f32 = Module["_emscripten_atomic_load_f32"] = asm["_emscripten_atomic_load_f32"];
+var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = asm["___emscripten_pthread_data_constructor"];
var stackSave = Module["stackSave"] = asm["stackSave"];
-var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
-var _memset = Module["_memset"] = asm["_memset"];
-var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_xor_u64 = Module["_emscripten_atomic_xor_u64"] = asm["_emscripten_atomic_xor_u64"];
+var _emscripten_atomic_load_u64 = Module["_emscripten_atomic_load_u64"] = asm["_emscripten_atomic_load_u64"];
+var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
-var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
+var _emscripten_atomic_and_u64 = Module["_emscripten_atomic_and_u64"] = asm["_emscripten_atomic_and_u64"];
+var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = asm["_emscripten_sync_run_in_main_thread"];
+var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = asm["_emscripten_sync_run_in_main_thread_4"];
+var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = asm["_emscripten_sync_run_in_main_thread_5"];
+var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = asm["_emscripten_sync_run_in_main_thread_6"];
+var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = asm["_emscripten_sync_run_in_main_thread_7"];
+var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = asm["_emscripten_sync_run_in_main_thread_0"];
+var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = asm["_emscripten_sync_run_in_main_thread_1"];
+var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = asm["_emscripten_sync_run_in_main_thread_2"];
+var __emscripten_atomic_fetch_and_sub_u64 = Module["__emscripten_atomic_fetch_and_sub_u64"] = asm["__emscripten_atomic_fetch_and_sub_u64"];
+var _emscripten_atomic_exchange_u32 = Module["_emscripten_atomic_exchange_u32"] = asm["_emscripten_atomic_exchange_u32"];
var _fflush = Module["_fflush"] = asm["_fflush"];
+var _emscripten_set_current_thread_status = Module["_emscripten_set_current_thread_status"] = asm["_emscripten_set_current_thread_status"];
+var _emscripten_atomic_cas_u64 = Module["_emscripten_atomic_cas_u64"] = asm["_emscripten_atomic_cas_u64"];
var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"];
-var _sbrk = Module["_sbrk"] = asm["_sbrk"];
+var _emscripten_atomic_sub_u64 = Module["_emscripten_atomic_sub_u64"] = asm["_emscripten_atomic_sub_u64"];
+var _main = Module["_main"] = asm["_main"];
+var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
-var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
var ___muldi3 = Module["___muldi3"] = asm["___muldi3"];
+var __emscripten_atomic_fetch_and_and_u64 = Module["__emscripten_atomic_fetch_and_and_u64"] = asm["__emscripten_atomic_fetch_and_and_u64"];
+var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = asm["_emscripten_sync_run_in_main_thread_3"];
var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"];
var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
-var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _memset = Module["_memset"] = asm["_memset"];
var setTempRet0 = Module["setTempRet0"] = asm["setTempRet0"];
var _i64Add = Module["_i64Add"] = asm["_i64Add"];
+var _emscripten_atomic_store_u64 = Module["_emscripten_atomic_store_u64"] = asm["_emscripten_atomic_store_u64"];
+var _emscripten_atomic_load_f64 = Module["_emscripten_atomic_load_f64"] = asm["_emscripten_atomic_load_f64"];
var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = asm["_emscripten_get_global_libc"];
+var __emscripten_atomic_fetch_and_add_u64 = Module["__emscripten_atomic_fetch_and_add_u64"] = asm["__emscripten_atomic_fetch_and_add_u64"];
+var __emscripten_atomic_fetch_and_or_u64 = Module["__emscripten_atomic_fetch_and_or_u64"] = asm["__emscripten_atomic_fetch_and_or_u64"];
var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = asm["_emscripten_GetProcAddress"];
-var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
-var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
+var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = asm["_emscripten_async_run_in_main_thread"];
+var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var ___muldsi3 = Module["___muldsi3"] = asm["___muldsi3"];
+var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = asm["_emscripten_main_thread_process_queued_calls"];
+var _emscripten_atomic_add_u64 = Module["_emscripten_atomic_add_u64"] = asm["_emscripten_atomic_add_u64"];
var _free = Module["_free"] = asm["_free"];
-var runPostSets = Module["runPostSets"] = asm["runPostSets"];
+var _emscripten_atomic_store_f32 = Module["_emscripten_atomic_store_f32"] = asm["_emscripten_atomic_store_f32"];
+var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_exchange_u64 = Module["_emscripten_atomic_exchange_u64"] = asm["_emscripten_atomic_exchange_u64"];
+var _emscripten_atomic_store_f64 = Module["_emscripten_atomic_store_f64"] = asm["_emscripten_atomic_store_f64"];
+var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = asm["___pthread_tsd_run_dtors"];
+var stackRestore = Module["stackRestore"] = asm["stackRestore"];
+var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _malloc = Module["_malloc"] = asm["_malloc"];
var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"];
+var _emscripten_conditional_set_current_thread_status = Module["_emscripten_conditional_set_current_thread_status"] = asm["_emscripten_conditional_set_current_thread_status"];
+var _sbrk = Module["_sbrk"] = asm["_sbrk"];
var _memmove = Module["_memmove"] = asm["_memmove"];
+var _emscripten_atomic_or_u64 = Module["_emscripten_atomic_or_u64"] = asm["_emscripten_atomic_or_u64"];
var _strstr = Module["_strstr"] = asm["_strstr"];
-var stackRestore = Module["stackRestore"] = asm["stackRestore"];
-var _malloc = Module["_malloc"] = asm["_malloc"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_vd = Module["dynCall_vd"] = asm["dynCall_vd"];
var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"];
@@ -28716,6 +35310,7 @@ function exit(status, implicit) {
if (Module['noExitRuntime']) {
Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');
} else {
+ PThread.terminateAllThreads();
ABORT = true;
EXITSTATUS = status;
@@ -28736,6 +35331,7 @@ Module['exit'] = Module.exit = exit;
var abortDecorators = [];
function abort(what) {
+ if (ENVIRONMENT_IS_PTHREAD) console.error('Pthread aborting at ' + new Error().stack);
if (what !== undefined) {
Module.print(what);
Module.printErr(what);
@@ -28775,7 +35371,7 @@ if (Module['noInitialRun']) {
}
-run();
+if (!ENVIRONMENT_IS_PTHREAD) run();
// {{POST_RUN_ADDITIONS}}
diff --git a/docs/examples/web/physac/physics_friction.c b/docs/examples/web/physac/physics_friction.c
index db1b5f4c..d0156306 100644
--- a/docs/examples/web/physac/physics_friction.c
+++ b/docs/examples/web/physac/physics_friction.c
@@ -2,9 +2,11 @@
*
* Physac - Physics friction
*
-* NOTE: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 1: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 2: Physac requires static C library linkage to avoid dependency on MinGW DLL (-static -lpthread)
+*
+* Use the following line to compile:
*
-* Use the following code to compile (-static -lpthread):
* gcc -o $(NAME_PART).exe $(FILE_NAME) -s $(RAYLIB_DIR)\raylib\raylib_icon -static -lraylib -lpthread
* -lglfw3 -lopengl32 -lgdi32 -lopenal32 -lwinmm -std=c99 -Wl,--subsystem,windows -Wl,-allow-multiple-definition
*
@@ -15,29 +17,50 @@
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
-#include "../src/physac.h"
+#include "physac.h"
+
+#if defined(PLATFORM_WEB)
+ #include <emscripten/emscripten.h>
+#endif
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+int screenWidth = 800;
+int screenHeight = 450;
+
+// Physac logo drawing position
+int logoX = 0;
+int logoY = 15;
+
+PhysicsBody bodyA;
+PhysicsBody bodyB;
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void); // Update and Draw one frame
+
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 450;
-
SetConfigFlags(FLAG_MSAA_4X_HINT);
InitWindow(screenWidth, screenHeight, "Physac [raylib] - Physics friction");
- SetTargetFPS(60);
// Physac logo drawing position
- int logoX = screenWidth - MeasureText("Physac", 30) - 10;
- int logoY = 15;
+ logoX = screenWidth - MeasureText("Physac", 30) - 10;
// Initialize physics and default physics bodies
InitPhysics();
// Create floor rectangle physics body
- PhysicsBody floor = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, screenWidth, 100, 10);
- floor->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
+ PhysicsBody ground = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, screenWidth, 100, 10);
+ ground->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
+
PhysicsBody wall = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight*0.8f }, 10, 80, 10);
wall->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
@@ -52,88 +75,104 @@ int main()
SetPhysicsBodyRotation(rectRight, 330*DEG2RAD);
// Create dynamic physics bodies
- PhysicsBody bodyA = CreatePhysicsBodyRectangle((Vector2){ 35, screenHeight*0.6f }, 40, 40, 10);
+ bodyA = CreatePhysicsBodyRectangle((Vector2){ 35, screenHeight*0.6f }, 40, 40, 10);
bodyA->staticFriction = 0.1f;
bodyA->dynamicFriction = 0.1f;
SetPhysicsBodyRotation(bodyA, 30*DEG2RAD);
- PhysicsBody bodyB = CreatePhysicsBodyRectangle((Vector2){ screenWidth - 35, screenHeight*0.6f }, 40, 40, 10);
+ bodyB = CreatePhysicsBodyRectangle((Vector2){ screenWidth - 35, screenHeight*0.6f }, 40, 40, 10);
bodyB->staticFriction = 1;
bodyB->dynamicFriction = 1;
SetPhysicsBodyRotation(bodyB, 330*DEG2RAD);
- //--------------------------------------------------------------------------------------
+#if defined(PLATFORM_WEB)
+ emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
- // Update
- //----------------------------------------------------------------------------------
- if (IsKeyPressed('R')) // Reset physics input
- {
- // Reset dynamic physics bodies position, velocity and rotation
- bodyA->position = (Vector2){ 35, screenHeight*0.6f };
- bodyA->velocity = (Vector2){ 0, 0 };
- bodyA->angularVelocity = 0;
- SetPhysicsBodyRotation(bodyA, 30*DEG2RAD);
-
- bodyB->position = (Vector2){ screenWidth - 35, screenHeight*0.6f };
- bodyB->velocity = (Vector2){ 0, 0 };
- bodyB->angularVelocity = 0;
- SetPhysicsBodyRotation(bodyB, 330*DEG2RAD);
- }
- //----------------------------------------------------------------------------------
+ UpdateDrawFrame();
+ }
+#endif
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ ClosePhysics(); // Uninitialize physics
- ClearBackground(BLACK);
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
- DrawFPS(screenWidth - 90, screenHeight - 30);
+ return 0;
+}
- // Draw created physics bodies
- int bodiesCount = GetPhysicsBodiesCount();
- for (int i = 0; i < bodiesCount; i++)
- {
- PhysicsBody body = GetPhysicsBody(i);
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+ // Update
+ //----------------------------------------------------------------------------------
+ if (IsKeyPressed('R')) // Reset physics input
+ {
+ // Reset dynamic physics bodies position, velocity and rotation
+ bodyA->position = (Vector2){ 35, screenHeight*0.6f };
+ bodyA->velocity = (Vector2){ 0, 0 };
+ bodyA->angularVelocity = 0;
+ SetPhysicsBodyRotation(bodyA, 30*DEG2RAD);
+
+ bodyB->position = (Vector2){ screenWidth - 35, screenHeight*0.6f };
+ bodyB->velocity = (Vector2){ 0, 0 };
+ bodyB->angularVelocity = 0;
+ SetPhysicsBodyRotation(bodyB, 330*DEG2RAD);
+ }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(BLACK);
+
+ DrawFPS(screenWidth - 90, screenHeight - 30);
- if (body != NULL)
+ // Draw created physics bodies
+ int bodiesCount = GetPhysicsBodiesCount();
+ for (int i = 0; i < bodiesCount; i++)
+ {
+ PhysicsBody body = GetPhysicsBody(i);
+
+ if (body != NULL)
+ {
+ int vertexCount = GetPhysicsShapeVerticesCount(i);
+ for (int j = 0; j < vertexCount; j++)
{
- int vertexCount = GetPhysicsShapeVerticesCount(i);
- for (int j = 0; j < vertexCount; j++)
- {
- // Get physics bodies shape vertices to draw lines
- // Note: GetPhysicsShapeVertex() already calculates rotation transformations
- Vector2 vertexA = GetPhysicsShapeVertex(body, j);
-
- int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
- Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
-
- DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
- }
- }
- }
+ // Get physics bodies shape vertices to draw lines
+ // Note: GetPhysicsShapeVertex() already calculates rotation transformations
+ Vector2 vertexA = GetPhysicsShapeVertex(body, j);
- DrawRectangle(0, screenHeight - 49, screenWidth, 49, BLACK);
+ int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
+ Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
- DrawText("Friction amount", (screenWidth - MeasureText("Friction amount", 30))/2, 75, 30, WHITE);
- DrawText("0.1", bodyA->position.x - MeasureText("0.1", 20)/2, bodyA->position.y - 7, 20, WHITE);
- DrawText("1", bodyB->position.x - MeasureText("1", 20)/2, bodyB->position.y - 7, 20, WHITE);
+ DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
+ }
+ }
+ }
- DrawText("Press 'R' to reset example", 10, 10, 10, WHITE);
+ DrawRectangle(0, screenHeight - 49, screenWidth, 49, BLACK);
- DrawText("Physac", logoX, logoY, 30, WHITE);
- DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
+ DrawText("Friction amount", (screenWidth - MeasureText("Friction amount", 30))/2, 75, 30, WHITE);
+ DrawText("0.1", bodyA->position.x - MeasureText("0.1", 20)/2, bodyA->position.y - 7, 20, WHITE);
+ DrawText("1", bodyB->position.x - MeasureText("1", 20)/2, bodyB->position.y - 7, 20, WHITE);
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
+ DrawText("Press 'R' to reset example", 10, 10, 10, WHITE);
- // De-Initialization
- //--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
+ DrawText("Physac", logoX, logoY, 30, WHITE);
+ DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
- return 0;
+ EndDrawing();
+ //----------------------------------------------------------------------------------
}
+
diff --git a/docs/examples/web/physac/physics_friction.js b/docs/examples/web/physac/physics_friction.js
index 47c62b2c..3e6235f9 100644
--- a/docs/examples/web/physac/physics_friction.js
+++ b/docs/examples/web/physac/physics_friction.js
@@ -59,6 +59,11 @@ if (Module['ENVIRONMENT']) {
ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
}
+var ENVIRONMENT_IS_PTHREAD;
+if (!ENVIRONMENT_IS_PTHREAD) ENVIRONMENT_IS_PTHREAD = false; // ENVIRONMENT_IS_PTHREAD=true will have been preset in pthread-main.js. Make it false in the main runtime thread.
+var PthreadWorkerInit; // Collects together variables that are needed at initialization time for the web workers that host pthreads.
+if (!ENVIRONMENT_IS_PTHREAD) PthreadWorkerInit = {};
+var currentScriptUrl = ENVIRONMENT_IS_WORKER ? undefined : document.currentScript.src;
if (ENVIRONMENT_IS_NODE) {
// Expose functionality in the same simple way that the shells work
@@ -1178,9 +1183,14 @@ var STATIC_BASE, STATICTOP, staticSealed; // static area
var STACK_BASE, STACKTOP, STACK_MAX; // stack area
var DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk
+if (!ENVIRONMENT_IS_PTHREAD) { // Pthreads have already initialized these variables in src/pthread-main.js, where they were passed to the thread worker at startup time
STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;
staticSealed = false;
+}
+if (ENVIRONMENT_IS_PTHREAD) {
+ staticSealed = true; // The static memory area has been initialized already in the main thread, pthreads skip this.
+}
// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode.
function writeStackCookie() {
@@ -1207,7 +1217,7 @@ function abortOnCannotGrowMemory() {
function enlargeMemory() {
- abortOnCannotGrowMemory();
+ abort('Cannot enlarge memory arrays, since compiling with pthreads support enabled (-s USE_PTHREADS=1).');
}
@@ -1221,27 +1231,69 @@ assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined'
'JS engine does not provide full typed array support');
-
-// Use a provided buffer, if there is one, or else allocate a new one
-if (Module['buffer']) {
- buffer = Module['buffer'];
- assert(buffer.byteLength === TOTAL_MEMORY, 'provided buffer should be ' + TOTAL_MEMORY + ' bytes, but it is ' + buffer.byteLength);
+if (typeof SharedArrayBuffer !== 'undefined') {
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new SharedArrayBuffer(TOTAL_MEMORY);
+ // Currently SharedArrayBuffer does not have a slice() operation, so polyfill it in.
+ // Adapted from https://github.com/ttaubert/node-arraybuffer-slice, (c) 2014 Tim Taubert <[email protected]>
+ // arraybuffer-slice may be freely distributed under the MIT license.
+ (function (undefined) {
+ "use strict";
+ function clamp(val, length) {
+ val = (val|0) || 0;
+ if (val < 0) return Math.max(val + length, 0);
+ return Math.min(val, length);
+ }
+ if (typeof SharedArrayBuffer !== 'undefined' && !SharedArrayBuffer.prototype.slice) {
+ SharedArrayBuffer.prototype.slice = function (from, to) {
+ var length = this.byteLength;
+ var begin = clamp(from, length);
+ var end = length;
+ if (to !== undefined) end = clamp(to, length);
+ if (begin > end) return new ArrayBuffer(0);
+ var num = end - begin;
+ var target = new ArrayBuffer(num);
+ var targetArray = new Uint8Array(target);
+ var sourceArray = new Uint8Array(this, begin, num);
+ targetArray.set(sourceArray);
+ return target;
+ };
+ }
+ })();
} else {
- // Use a WebAssembly memory where available
- {
- buffer = new ArrayBuffer(TOTAL_MEMORY);
- }
- assert(buffer.byteLength === TOTAL_MEMORY);
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new ArrayBuffer(TOTAL_MEMORY);
}
updateGlobalBufferViews();
+if (typeof Atomics === 'undefined') {
+ // Polyfill singlethreaded atomics ops from http://lars-t-hansen.github.io/ecmascript_sharedmem/shmem.html#Atomics.add
+ // No thread-safety needed since we don't have multithreading support.
+ Atomics = {};
+ Atomics['add'] = function(t, i, v) { var w = t[i]; t[i] += v; return w; }
+ Atomics['and'] = function(t, i, v) { var w = t[i]; t[i] &= v; return w; }
+ Atomics['compareExchange'] = function(t, i, e, r) { var w = t[i]; if (w == e) t[i] = r; return w; }
+ Atomics['exchange'] = function(t, i, v) { var w = t[i]; t[i] = v; return w; }
+ Atomics['wait'] = function(t, i, v, o) { if (t[i] != v) return 'not-equal'; else return 'timed-out'; }
+ Atomics['wake'] = function(t, i, c) { return 0; }
+ Atomics['wakeOrRequeue'] = function(t, i1, c, i2, v) { return 0; }
+ Atomics['isLockFree'] = function(s) { return true; }
+ Atomics['load'] = function(t, i) { return t[i]; }
+ Atomics['or'] = function(t, i, v) { var w = t[i]; t[i] |= v; return w; }
+ Atomics['store'] = function(t, i, v) { t[i] = v; return v; }
+ Atomics['sub'] = function(t, i, v) { var w = t[i]; t[i] -= v; return w; }
+ Atomics['xor'] = function(t, i, v) { var w = t[i]; t[i] ^= v; return w; }
+}
+
function getTotalMemory() {
return TOTAL_MEMORY;
}
// Endianness check (note: assumes compiler arch was little-endian)
+if (!ENVIRONMENT_IS_PTHREAD) {
HEAP32[0] = 0x63736d65; /* 'emsc' */
+} else {
+ if (HEAP32[0] !== 0x63736d65) throw 'Runtime error: The application has corrupted its heap memory area (address zero)!';
+}
HEAP16[1] = 0x6373;
if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!';
@@ -1285,8 +1337,10 @@ var __ATPOSTRUN__ = []; // functions called after the runtime has exited
var runtimeInitialized = false;
var runtimeExited = false;
+if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true; // The runtime is hosted in the main thread, and bits shared to pthreads via SharedArrayBuffer. No need to init again in pthread.
function preRun() {
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['preRun'] at this time
if (Module['preRun']) {
if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
@@ -1299,6 +1353,7 @@ function preRun() {
function ensureInitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
@@ -1306,17 +1361,20 @@ function ensureInitRuntime() {
function preMain() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATEXIT__);
runtimeExited = true;
}
function postRun() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['postRun'] at this time
if (Module['postRun']) {
if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
@@ -1435,6 +1493,18 @@ function reSign(value, bits, ignore) {
return value;
}
+// Atomics.exchange is not yet implemented in the spec, so polyfill that in via compareExchange in the meanwhile.
+// TODO: Keep an eye out for the opportunity to remove this once Atomics.exchange is available.
+if (typeof Atomics !== 'undefined' && !Atomics['exchange']) {
+ Atomics['exchange'] = function(heap, index, val) {
+ var oldVal, oldVal2;
+ do {
+ oldVal = Atomics['load'](heap, index);
+ oldVal2 = Atomics['compareExchange'](heap, index, oldVal, val);
+ } while(oldVal != oldVal2);
+ return oldVal;
+ }
+}
// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
@@ -1504,6 +1574,9 @@ function getUniqueRunDependency(id) {
}
function addRunDependency(id) {
+ // We should never get here in pthreads (could no-op this out if called in pthreads, but that might indicate a bug in caller side,
+ // so good to be very explicit)
+ assert(!ENVIRONMENT_IS_PTHREAD);
runDependencies++;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
@@ -1572,52 +1645,43 @@ var memoryInitializer = null;
-var /* show errors on likely calls to FS when it was not included */ FS = {
- error: function() {
- abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1');
- },
- init: function() { FS.error() },
- createDataFile: function() { FS.error() },
- createPreloadedFile: function() { FS.error() },
- createLazyFile: function() { FS.error() },
- open: function() { FS.error() },
- mkdev: function() { FS.error() },
- registerDevice: function() { FS.error() },
- analyzePath: function() { FS.error() },
- loadFilesFromDB: function() { FS.error() },
-
- ErrnoError: function ErrnoError() { FS.error() },
-};
-Module['FS_createDataFile'] = FS.createDataFile;
-Module['FS_createPreloadedFile'] = FS.createPreloadedFile;
// === Body ===
-var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } }];
+var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } },
+ function() { postMessage({ cmd: 'processQueuedMainThreadWork' }) }];
function _emscripten_asm_const_iii(code, a0, a1) {
return ASM_CONSTS[code](a0, a1);
}
+function _emscripten_asm_const_v(code) {
+ return ASM_CONSTS[code]();
+}
+
STATIC_BASE = 8;
-STATICTOP = STATIC_BASE + 36016;
- /* global initializers */ __ATINIT__.push();
+STATICTOP = STATIC_BASE + 38336;
+ /* global initializers */ if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({ func: function() { ___emscripten_pthread_data_constructor() } });
-/* memory initializer */ allocate([32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,12,0,0,5,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,1,0,0,0,2,0,0,0,175,136,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,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,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,102,114,105,99,116,105,111,110,0,80,104,121,115,97,99,0,70,114,105,99,116,105,111,110,32,97,109,111,117,110,116,0,48,46,49,0,49,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
-/* memory initializer */ allocate([103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+if (!ENVIRONMENT_IS_PTHREAD) {
+/* memory initializer */ allocate([32,3,0,0,194,1,0,0,15,0,0,0,32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,180,11,0,0,5,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,1,0,0,0,2,0,0,0,187,145,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,102,114,105,99,116,105,111,110,0,80,104,121,115,97,99,0,70,114,105,99,116,105,111,110,32,97,109,111,117,110,116,0,48,46,49,0,49,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
+/* memory initializer */ allocate([110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,101,109,115,99,114,105,112,116,101,110,95,105,115,95,109,97,105,110,95,114,117,110,116,105,109,101,95,116,104,114,101,97,100,40,41,32,38,38,32,34,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,32,109,117,115,116,32,98,101,32,99,97,108,108,101,100,32,102,114,111,109,32,116,104,101,32,109,97,105,110,32,116,104,114,101,97,100,33,34,0,67,58,92,101,109,115,100,107,92,101,109,115,99,114,105,112,116,101,110,92,49,46,51,55,46,57,92,115,121,115,116,101,109,92,108,105,98,92,112,116,104,114,101,97,100,92,108,105,98,114,97,114,121,95,112,116,104,114,101,97,100,46,99,0,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,0,48,32,38,38,32,34,73,110,118,97,108,105,100,32,69,109,115,99,114,105,112,116,101,110,32,112,116,104,114,101,97,100,32,95,100,111,95,99,97,108,108,32,111,112,99,111,100,101,33,34,0,95,100,111,95,99,97,108,108,0,99,97,108,108,0,101,109,115,99,114,105,112,116,101,110,95,97,115,121,110,99,95,114,117,110,95,105,110,95,109,97,105,110,95,116,104,114,101,97,100,0,112,111,115,116,77,101,115,115,97,103,101,40,123,32,99,109,100,58,32,39,112,114,111,99,101,115,115,81,117,101,117,101,100,77,97,105,110,84,104,114,101,97,100,87,111,114,107,39,32,125,41,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+}
/* no memory initializer */
-var tempDoublePtr = STATICTOP; STATICTOP += 16;
+var tempDoublePtr;
+
+if (!ENVIRONMENT_IS_PTHREAD) tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
@@ -1880,6 +1944,8 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilMaskSeparate(x0, x1) { GLctx['stencilMaskSeparate'](x0, x1) }
+ function ___pthread_setcancelstate() { return 0 }
+
function _emscripten_get_now() { abort() }
@@ -3360,13 +3426,3061 @@ function copyTempDouble(ptr) {
}
- var SYSCALLS={varargs:0,get:function (varargs) {
+
+
+ var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
+
+ var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
+
+ function ___setErrNo(value) {
+ if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
+ else Module.printErr('failed to set errno from JS');
+ return value;
+ }
+
+ var PATH={splitPath:function (filename) {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1);
+ },normalizeArray:function (parts, allowAboveRoot) {
+ // if the path tries to go above the root, `up` ends up > 0
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === '.') {
+ parts.splice(i, 1);
+ } else if (last === '..') {
+ parts.splice(i, 1);
+ up++;
+ } else if (up) {
+ parts.splice(i, 1);
+ up--;
+ }
+ }
+ // if the path is allowed to go above the root, restore leading ..s
+ if (allowAboveRoot) {
+ for (; up--; up) {
+ parts.unshift('..');
+ }
+ }
+ return parts;
+ },normalize:function (path) {
+ var isAbsolute = path.charAt(0) === '/',
+ trailingSlash = path.substr(-1) === '/';
+ // Normalize the path
+ path = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), !isAbsolute).join('/');
+ if (!path && !isAbsolute) {
+ path = '.';
+ }
+ if (path && trailingSlash) {
+ path += '/';
+ }
+ return (isAbsolute ? '/' : '') + path;
+ },dirname:function (path) {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ // No dirname whatsoever
+ return '.';
+ }
+ if (dir) {
+ // It has a dirname, strip trailing slash
+ dir = dir.substr(0, dir.length - 1);
+ }
+ return root + dir;
+ },basename:function (path) {
+ // EMSCRIPTEN return '/'' for '/', not an empty string
+ if (path === '/') return '/';
+ var lastSlash = path.lastIndexOf('/');
+ if (lastSlash === -1) return path;
+ return path.substr(lastSlash+1);
+ },extname:function (path) {
+ return PATH.splitPath(path)[3];
+ },join:function () {
+ var paths = Array.prototype.slice.call(arguments, 0);
+ return PATH.normalize(paths.join('/'));
+ },join2:function (l, r) {
+ return PATH.normalize(l + '/' + r);
+ },resolve:function () {
+ var resolvedPath = '',
+ resolvedAbsolute = false;
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = (i >= 0) ? arguments[i] : FS.cwd();
+ // Skip empty and invalid entries
+ if (typeof path !== 'string') {
+ throw new TypeError('Arguments to path.resolve must be strings');
+ } else if (!path) {
+ return ''; // an invalid portion invalidates the whole thing
+ }
+ resolvedPath = path + '/' + resolvedPath;
+ resolvedAbsolute = path.charAt(0) === '/';
+ }
+ // At this point the path should be resolved to a full absolute path, but
+ // handle relative paths to be safe (might happen when process.cwd() fails)
+ resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
+ return !!p;
+ }), !resolvedAbsolute).join('/');
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+ },relative:function (from, to) {
+ from = PATH.resolve(from).substr(1);
+ to = PATH.resolve(to).substr(1);
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== '') break;
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== '') break;
+ }
+ if (start > end) return [];
+ return arr.slice(start, end - start + 1);
+ }
+ var fromParts = trim(from.split('/'));
+ var toParts = trim(to.split('/'));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break;
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push('..');
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join('/');
+ }};
+
+ var TTY={ttys:[],init:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // currently, FS.init does not distinguish if process.stdin is a file or TTY
+ // // device, it always assumes it's a TTY device. because of this, we're forcing
+ // // process.stdin to UTF8 encoding to at least make stdin reading compatible
+ // // with text files until FS.init can be refactored.
+ // process['stdin']['setEncoding']('utf8');
+ // }
+ },shutdown:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
+ // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
+ // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
+ // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
+ // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
+ // process['stdin']['pause']();
+ // }
+ },register:function (dev, ops) {
+ TTY.ttys[dev] = { input: [], output: [], ops: ops };
+ FS.registerDevice(dev, TTY.stream_ops);
+ },stream_ops:{open:function (stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ stream.tty = tty;
+ stream.seekable = false;
+ },close:function (stream) {
+ // flush any pending line data
+ stream.tty.ops.flush(stream.tty);
+ },flush:function (stream) {
+ stream.tty.ops.flush(stream.tty);
+ },read:function (stream, buffer, offset, length, pos /* ignored */) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ for (var i = 0; i < length; i++) {
+ try {
+ stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }},default_tty_ops:{get_char:function (tty) {
+ if (!tty.input.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ // we will read data by chunks of BUFSIZE
+ var BUFSIZE = 256;
+ var buf = new Buffer(BUFSIZE);
+ var bytesRead = 0;
+
+ var isPosixPlatform = (process.platform != 'win32'); // Node doesn't offer a direct check, so test by exclusion
+
+ var fd = process.stdin.fd;
+ if (isPosixPlatform) {
+ // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync)
+ var usingDevice = false;
+ try {
+ fd = fs.openSync('/dev/stdin', 'r');
+ usingDevice = true;
+ } catch (e) {}
+ }
+
+ try {
+ bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
+ } catch(e) {
+ // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes,
+ // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0.
+ if (e.toString().indexOf('EOF') != -1) bytesRead = 0;
+ else throw e;
+ }
+
+ if (usingDevice) { fs.closeSync(fd); }
+ if (bytesRead > 0) {
+ result = buf.slice(0, bytesRead).toString('utf-8');
+ } else {
+ result = null;
+ }
+
+ } else if (typeof window != 'undefined' &&
+ typeof window.prompt == 'function') {
+ // Browser.
+ result = window.prompt('Input: '); // returns null on cancel
+ if (result !== null) {
+ result += '\n';
+ }
+ } else if (typeof readline == 'function') {
+ // Command line.
+ result = readline();
+ if (result !== null) {
+ result += '\n';
+ }
+ }
+ if (!result) {
+ return null;
+ }
+ tty.input = intArrayFromString(result, true);
+ }
+ return tty.input.shift();
+ },put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle.
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }},default_tty1_ops:{put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val);
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }}};
+
+ var MEMFS={ops_table:null,mount:function (mount) {
+ return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ // no supported
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (!MEMFS.ops_table) {
+ MEMFS.ops_table = {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap,
+ msync: MEMFS.stream_ops.msync
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ }
+ };
+ }
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {};
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity.
+ // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
+ // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
+ // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
+ node.contents = null;
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream;
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream;
+ }
+ node.timestamp = Date.now();
+ // add the new node to the parent
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },getFileDataAsRegularArray:function (node) {
+ if (node.contents && node.contents.subarray) {
+ var arr = [];
+ for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
+ return arr; // Returns a copy of the original data.
+ }
+ return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
+ },getFileDataAsTypedArray:function (node) {
+ if (!node.contents) return new Uint8Array;
+ if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
+ return new Uint8Array(node.contents);
+ },expandFileStorage:function (node, newCapacity) {
+ // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
+ // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
+ // increase the size.
+ if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
+ node.contents = MEMFS.getFileDataAsRegularArray(node);
+ node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
+ }
+
+ if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well.
+ var prevCapacity = node.contents ? node.contents.length : 0;
+ if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
+ // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
+ // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
+ // avoid overshooting the allocation cap by a very large margin.
+ var CAPACITY_DOUBLING_MAX = 1024 * 1024;
+ newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);
+ if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newCapacity); // Allocate new storage.
+ if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
+ return;
+ }
+ // Not using a typed array to back the file storage. Use a standard JS array instead.
+ if (!node.contents && newCapacity > 0) node.contents = [];
+ while (node.contents.length < newCapacity) node.contents.push(0);
+ },resizeFileStorage:function (node, newSize) {
+ if (node.usedBytes == newSize) return;
+ if (newSize == 0) {
+ node.contents = null; // Fully decommit when requesting a resize to zero.
+ node.usedBytes = 0;
+ return;
+ }
+ if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
+ if (oldContents) {
+ node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.
+ }
+ node.usedBytes = newSize;
+ return;
+ }
+ // Backing with a JS array.
+ if (!node.contents) node.contents = [];
+ if (node.contents.length > newSize) node.contents.length = newSize;
+ else while (node.contents.length < newSize) node.contents.push(0);
+ node.usedBytes = newSize;
+ },node_ops:{getattr:function (node) {
+ var attr = {};
+ // device numbers reuse inode numbers.
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096;
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.usedBytes;
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length;
+ } else {
+ attr.size = 0;
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
+ // but this is not required by the standard.
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr;
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ if (attr.size !== undefined) {
+ MEMFS.resizeFileStorage(node, attr.size);
+ }
+ },lookup:function (parent, name) {
+ throw FS.genericErrors[ERRNO_CODES.ENOENT];
+ },mknod:function (parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev);
+ },rename:function (old_node, new_dir, new_name) {
+ // if we're overwriting a directory at new_name, make sure it's empty.
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ }
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ }
+ }
+ // do the internal rewiring
+ delete old_node.parent.contents[old_node.name];
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ old_node.parent = new_dir;
+ },unlink:function (parent, name) {
+ delete parent.contents[name];
+ },rmdir:function (parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ delete parent.contents[name];
+ },readdir:function (node) {
+ var entries = ['.', '..']
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
+ node.link = oldpath;
+ return node;
+ },readlink:function (node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return node.link;
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= stream.node.usedBytes) return 0;
+ var size = Math.min(stream.node.usedBytes - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) { // non-trivial, and typed array
+ buffer.set(contents.subarray(position, position + size), offset);
+ } else {
+ for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
+ }
+ return size;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (!length) return 0;
+ var node = stream.node;
+ node.timestamp = Date.now();
+
+ if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array?
+ if (canOwn) {
+ assert(position === 0, 'canOwn must imply no weird position inside the file');
+ node.contents = buffer.subarray(offset, offset + length);
+ node.usedBytes = length;
+ return length;
+ } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
+ node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
+ node.usedBytes = length;
+ return length;
+ } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ return length;
+ }
+ }
+
+ // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
+ MEMFS.expandFileStorage(node, position+length);
+ if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.
+ else {
+ for (var i = 0; i < length; i++) {
+ node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
+ }
+ }
+ node.usedBytes = Math.max(node.usedBytes, position+length);
+ return length;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.usedBytes;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ },allocate:function (stream, offset, length) {
+ MEMFS.expandFileStorage(stream.node, offset + length);
+ stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ // Only make a new copy when MAP_PRIVATE is specified.
+ if ( !(flags & 2) &&
+ (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
+ // We can't emulate MAP_SHARED when the file is not backed by the buffer
+ // we're mapping to (e.g. the HEAP buffer).
+ allocated = false;
+ ptr = contents.byteOffset;
+ } else {
+ // Try to avoid unnecessary slices.
+ if (position > 0 || position + length < stream.node.usedBytes) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length);
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length);
+ }
+ }
+ allocated = true;
+ ptr = _malloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
+ }
+ buffer.set(contents, ptr);
+ }
+ return { ptr: ptr, allocated: allocated };
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (mmapFlags & 2) {
+ // MAP_PRIVATE calls need not to be synced back to underlying fs
+ return 0;
+ }
+
+ var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
+ // should we check if bytesWritten and length are the same?
+ return 0;
+ }}};
+
+ var IDBFS={dbs:{},indexedDB:function () {
+ if (typeof indexedDB !== 'undefined') return indexedDB;
+ var ret = null;
+ if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ assert(ret, 'IDBFS used, but indexedDB not supported');
+ return ret;
+ },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
+ // reuse all of the core MEMFS functionality
+ return MEMFS.mount.apply(null, arguments);
+ },syncfs:function (mount, populate, callback) {
+ IDBFS.getLocalSet(mount, function(err, local) {
+ if (err) return callback(err);
+
+ IDBFS.getRemoteSet(mount, function(err, remote) {
+ if (err) return callback(err);
+
+ var src = populate ? remote : local;
+ var dst = populate ? local : remote;
+
+ IDBFS.reconcile(src, dst, callback);
+ });
+ });
+ },getDB:function (name, callback) {
+ // check the cache first
+ var db = IDBFS.dbs[name];
+ if (db) {
+ return callback(null, db);
+ }
+
+ var req;
+ try {
+ req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
+ } catch (e) {
+ return callback(e);
+ }
+ if (!req) {
+ return callback("Unable to connect to IndexedDB");
+ }
+ req.onupgradeneeded = function(e) {
+ var db = e.target.result;
+ var transaction = e.target.transaction;
+
+ var fileStore;
+
+ if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
+ fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ } else {
+ fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
+ }
+
+ if (!fileStore.indexNames.contains('timestamp')) {
+ fileStore.createIndex('timestamp', 'timestamp', { unique: false });
+ }
+ };
+ req.onsuccess = function() {
+ db = req.result;
+
+ // add to the cache
+ IDBFS.dbs[name] = db;
+ callback(null, db);
+ };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },getLocalSet:function (mount, callback) {
+ var entries = {};
+
+ function isRealDir(p) {
+ return p !== '.' && p !== '..';
+ };
+ function toAbsolute(root) {
+ return function(p) {
+ return PATH.join2(root, p);
+ }
+ };
+
+ var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
+
+ while (check.length) {
+ var path = check.pop();
+ var stat;
+
+ try {
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
+ }
+
+ entries[path] = { timestamp: stat.mtime };
+ }
+
+ return callback(null, { type: 'local', entries: entries });
+ },getRemoteSet:function (mount, callback) {
+ var entries = {};
+
+ IDBFS.getDB(mount.mountpoint, function(err, db) {
+ if (err) return callback(err);
+
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
+ transaction.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ var index = store.index('timestamp');
+
+ index.openKeyCursor().onsuccess = function(event) {
+ var cursor = event.target.result;
+
+ if (!cursor) {
+ return callback(null, { type: 'remote', db: db, entries: entries });
+ }
+
+ entries[cursor.primaryKey] = { timestamp: cursor.key };
+
+ cursor.continue();
+ };
+ });
+ },loadLocalEntry:function (path, callback) {
+ var stat, node;
+
+ try {
+ var lookup = FS.lookupPath(path);
+ node = lookup.node;
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode });
+ } else if (FS.isFile(stat.mode)) {
+ // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
+ // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
+ node.contents = MEMFS.getFileDataAsTypedArray(node);
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+ },storeLocalEntry:function (path, entry, callback) {
+ try {
+ if (FS.isDir(entry.mode)) {
+ FS.mkdir(path, entry.mode);
+ } else if (FS.isFile(entry.mode)) {
+ FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+
+ FS.chmod(path, entry.mode);
+ FS.utime(path, entry.timestamp, entry.timestamp);
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },removeLocalEntry:function (path, callback) {
+ try {
+ var lookup = FS.lookupPath(path);
+ var stat = FS.stat(path);
+
+ if (FS.isDir(stat.mode)) {
+ FS.rmdir(path);
+ } else if (FS.isFile(stat.mode)) {
+ FS.unlink(path);
+ }
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },loadRemoteEntry:function (store, path, callback) {
+ var req = store.get(path);
+ req.onsuccess = function(event) { callback(null, event.target.result); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },storeRemoteEntry:function (store, path, entry, callback) {
+ var req = store.put(entry, path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },removeRemoteEntry:function (store, path, callback) {
+ var req = store.delete(path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },reconcile:function (src, dst, callback) {
+ var total = 0;
+
+ var create = [];
+ Object.keys(src.entries).forEach(function (key) {
+ var e = src.entries[key];
+ var e2 = dst.entries[key];
+ if (!e2 || e.timestamp > e2.timestamp) {
+ create.push(key);
+ total++;
+ }
+ });
+
+ var remove = [];
+ Object.keys(dst.entries).forEach(function (key) {
+ var e = dst.entries[key];
+ var e2 = src.entries[key];
+ if (!e2) {
+ remove.push(key);
+ total++;
+ }
+ });
+
+ if (!total) {
+ return callback(null);
+ }
+
+ var errored = false;
+ var completed = 0;
+ var db = src.type === 'remote' ? src.db : dst.db;
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return callback(err);
+ }
+ return;
+ }
+ if (++completed >= total) {
+ return callback(null);
+ }
+ };
+
+ transaction.onerror = function(e) {
+ done(this.error);
+ e.preventDefault();
+ };
+
+ // sort paths in ascending order so directory entries are created
+ // before the files inside them
+ create.sort().forEach(function (path) {
+ if (dst.type === 'local') {
+ IDBFS.loadRemoteEntry(store, path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeLocalEntry(path, entry, done);
+ });
+ } else {
+ IDBFS.loadLocalEntry(path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeRemoteEntry(store, path, entry, done);
+ });
+ }
+ });
+
+ // sort paths in descending order so files are deleted before their
+ // parent directories
+ remove.sort().reverse().forEach(function(path) {
+ if (dst.type === 'local') {
+ IDBFS.removeLocalEntry(path, done);
+ } else {
+ IDBFS.removeRemoteEntry(store, path, done);
+ }
+ });
+ }};
+
+ var NODEFS={isWindows:false,staticInit:function () {
+ NODEFS.isWindows = !!process.platform.match(/^win/);
+ },mount:function (mount) {
+ assert(ENVIRONMENT_IS_NODE);
+ return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node = FS.createNode(parent, name, mode);
+ node.node_ops = NODEFS.node_ops;
+ node.stream_ops = NODEFS.stream_ops;
+ return node;
+ },getMode:function (path) {
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ if (NODEFS.isWindows) {
+ // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
+ // propagate write bits to execute bits.
+ stat.mode = stat.mode | ((stat.mode & 146) >> 1);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return stat.mode;
+ },realPath:function (node) {
+ var parts = [];
+ while (node.parent !== node) {
+ parts.push(node.name);
+ node = node.parent;
+ }
+ parts.push(node.mount.opts.root);
+ parts.reverse();
+ return PATH.join.apply(null, parts);
+ },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
+ flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process.
+ if (flags in NODEFS.flagsToPermissionStringMap) {
+ return NODEFS.flagsToPermissionStringMap[flags];
+ } else {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ },node_ops:{getattr:function (node) {
+ var path = NODEFS.realPath(node);
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
+ // See http://support.microsoft.com/kb/140365
+ if (NODEFS.isWindows && !stat.blksize) {
+ stat.blksize = 4096;
+ }
+ if (NODEFS.isWindows && !stat.blocks) {
+ stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
+ }
+ return {
+ dev: stat.dev,
+ ino: stat.ino,
+ mode: stat.mode,
+ nlink: stat.nlink,
+ uid: stat.uid,
+ gid: stat.gid,
+ rdev: stat.rdev,
+ size: stat.size,
+ atime: stat.atime,
+ mtime: stat.mtime,
+ ctime: stat.ctime,
+ blksize: stat.blksize,
+ blocks: stat.blocks
+ };
+ },setattr:function (node, attr) {
+ var path = NODEFS.realPath(node);
+ try {
+ if (attr.mode !== undefined) {
+ fs.chmodSync(path, attr.mode);
+ // update the common node structure mode as well
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ var date = new Date(attr.timestamp);
+ fs.utimesSync(path, date, date);
+ }
+ if (attr.size !== undefined) {
+ fs.truncateSync(path, attr.size);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },lookup:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ var mode = NODEFS.getMode(path);
+ return NODEFS.createNode(parent, name, mode);
+ },mknod:function (parent, name, mode, dev) {
+ var node = NODEFS.createNode(parent, name, mode, dev);
+ // create the backing node for this in the fs root as well
+ var path = NODEFS.realPath(node);
+ try {
+ if (FS.isDir(node.mode)) {
+ fs.mkdirSync(path, node.mode);
+ } else {
+ fs.writeFileSync(path, '', { mode: node.mode });
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return node;
+ },rename:function (oldNode, newDir, newName) {
+ var oldPath = NODEFS.realPath(oldNode);
+ var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
+ try {
+ fs.renameSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },unlink:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.unlinkSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },rmdir:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.rmdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readdir:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },symlink:function (parent, newName, oldPath) {
+ var newPath = PATH.join2(NODEFS.realPath(parent), newName);
+ try {
+ fs.symlinkSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readlink:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ path = fs.readlinkSync(path);
+ path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
+ return path;
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }},stream_ops:{open:function (stream) {
+ var path = NODEFS.realPath(stream.node);
+ try {
+ if (FS.isFile(stream.node.mode)) {
+ stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },close:function (stream) {
+ try {
+ if (FS.isFile(stream.node.mode) && stream.nfd) {
+ fs.closeSync(stream.nfd);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },read:function (stream, buffer, offset, length, position) {
+ if (length === 0) return 0; // node errors on 0 length reads
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(length);
+ var res;
+ try {
+ res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ if (res > 0) {
+ for (var i = 0; i < res; i++) {
+ buffer[offset + i] = nbuffer[i];
+ }
+ }
+ return res;
+ },write:function (stream, buffer, offset, length, position) {
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
+ var res;
+ try {
+ res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return res;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ try {
+ var stat = fs.fstatSync(stream.nfd);
+ position += stat.size;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }
+ }
+
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ return position;
+ }}};
+
+ var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) {
+ assert(ENVIRONMENT_IS_WORKER);
+ if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();
+ var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0);
+ var createdParents = {};
+ function ensureParent(path) {
+ // return the parent node, creating subdirs as necessary
+ var parts = path.split('/');
+ var parent = root;
+ for (var i = 0; i < parts.length-1; i++) {
+ var curr = parts.slice(0, i+1).join('/');
+ // Issue 4254: Using curr as a node name will prevent the node
+ // from being found in FS.nameTable when FS.open is called on
+ // a path which holds a child of this node,
+ // given that all FS functions assume node names
+ // are just their corresponding parts within their given path,
+ // rather than incremental aggregates which include their parent's
+ // directories.
+ if (!createdParents[curr]) {
+ createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0);
+ }
+ parent = createdParents[curr];
+ }
+ return parent;
+ }
+ function base(path) {
+ var parts = path.split('/');
+ return parts[parts.length-1];
+ }
+ // We also accept FileList here, by using Array.prototype
+ Array.prototype.forEach.call(mount.opts["files"] || [], function(file) {
+ WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
+ });
+ (mount.opts["blobs"] || []).forEach(function(obj) {
+ WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
+ });
+ (mount.opts["packages"] || []).forEach(function(pack) {
+ pack['metadata'].files.forEach(function(file) {
+ var name = file.filename.substr(1); // remove initial slash
+ WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end));
+ });
+ });
+ return root;
+ },createNode:function (parent, name, mode, dev, contents, mtime) {
+ var node = FS.createNode(parent, name, mode);
+ node.mode = mode;
+ node.node_ops = WORKERFS.node_ops;
+ node.stream_ops = WORKERFS.stream_ops;
+ node.timestamp = (mtime || new Date).getTime();
+ assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
+ if (mode === WORKERFS.FILE_MODE) {
+ node.size = contents.size;
+ node.contents = contents;
+ } else {
+ node.size = 4096;
+ node.contents = {};
+ }
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },node_ops:{getattr:function (node) {
+ return {
+ dev: 1,
+ ino: undefined,
+ mode: node.mode,
+ nlink: 1,
+ uid: 0,
+ gid: 0,
+ rdev: undefined,
+ size: node.size,
+ atime: new Date(node.timestamp),
+ mtime: new Date(node.timestamp),
+ ctime: new Date(node.timestamp),
+ blksize: 4096,
+ blocks: Math.ceil(node.size / 4096),
+ };
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ },lookup:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ },mknod:function (parent, name, mode, dev) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rename:function (oldNode, newDir, newName) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },unlink:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rmdir:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readdir:function (node) {
+ var entries = ['.', '..'];
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newName, oldPath) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readlink:function (node) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ if (position >= stream.node.size) return 0;
+ var chunk = stream.node.contents.slice(position, position + length);
+ var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
+ buffer.set(new Uint8Array(ab), offset);
+ return chunk.size;
+ },write:function (stream, buffer, offset, length, position) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.size;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ }}};
+
+ var _stdin; if (ENVIRONMENT_IS_PTHREAD) _stdin = PthreadWorkerInit._stdin; else PthreadWorkerInit._stdin = _stdin = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stdout; if (ENVIRONMENT_IS_PTHREAD) _stdout = PthreadWorkerInit._stdout; else PthreadWorkerInit._stdout = _stdout = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stderr; if (ENVIRONMENT_IS_PTHREAD) _stderr = PthreadWorkerInit._stderr; else PthreadWorkerInit._stderr = _stderr = allocate(1, "i32*", ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function (e) {
+ if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
+ return ___setErrNo(e.errno);
+ },lookupPath:function (path, opts) {
+ path = PATH.resolve(FS.cwd(), path);
+ opts = opts || {};
+
+ if (!path) return { path: '', node: null };
+
+ var defaults = {
+ follow_mount: true,
+ recurse_count: 0
+ };
+ for (var key in defaults) {
+ if (opts[key] === undefined) {
+ opts[key] = defaults[key];
+ }
+ }
+
+ if (opts.recurse_count > 8) { // max recursive lookup of 8
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+
+ // split the path
+ var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), false);
+
+ // start at the root
+ var current = FS.root;
+ var current_path = '/';
+
+ for (var i = 0; i < parts.length; i++) {
+ var islast = (i === parts.length-1);
+ if (islast && opts.parent) {
+ // stop resolving
+ break;
+ }
+
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+
+ // jump to the mount's root node if this is a mountpoint
+ if (FS.isMountpoint(current)) {
+ if (!islast || (islast && opts.follow_mount)) {
+ current = current.mounted.root;
+ }
+ }
+
+ // by default, lookupPath will not follow a symlink if it is the final path component.
+ // setting opts.follow = true will override this behavior.
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH.resolve(PATH.dirname(current_path), link);
+
+ var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
+ current = lookup.node;
+
+ if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+ }
+ }
+ }
+
+ return { path: current_path, node: current };
+ },getPath:function (node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path) return mount;
+ return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
+ }
+ path = path ? node.name + '/' + path : node.name;
+ node = node.parent;
+ }
+ },hashName:function (parentid, name) {
+ var hash = 0;
+
+
+ for (var i = 0; i < name.length; i++) {
+ hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
+ }
+ return ((parentid + hash) >>> 0) % FS.nameTable.length;
+ },hashAddNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node;
+ },hashRemoveNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next;
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break;
+ }
+ current = current.name_next;
+ }
+ }
+ },lookupNode:function (parent, name) {
+ var err = FS.mayLookup(parent);
+ if (err) {
+ throw new FS.ErrnoError(err, parent);
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node;
+ }
+ }
+ // if we failed to find it in the cache, call into the VFS
+ return FS.lookup(parent, name);
+ },createNode:function (parent, name, mode, rdev) {
+ if (!FS.FSNode) {
+ FS.FSNode = function(parent, name, mode, rdev) {
+ if (!parent) {
+ parent = this; // root node sets parent to itself
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ this.mounted = null;
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev;
+ };
+
+ FS.FSNode.prototype = {};
+
+ // compatibility
+ var readMode = 292 | 73;
+ var writeMode = 146;
+
+ // NOTE we must use Object.defineProperties instead of individual calls to
+ // Object.defineProperty in order to make closure compiler happy
+ Object.defineProperties(FS.FSNode.prototype, {
+ read: {
+ get: function() { return (this.mode & readMode) === readMode; },
+ set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
+ },
+ write: {
+ get: function() { return (this.mode & writeMode) === writeMode; },
+ set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
+ },
+ isFolder: {
+ get: function() { return FS.isDir(this.mode); }
+ },
+ isDevice: {
+ get: function() { return FS.isChrdev(this.mode); }
+ }
+ });
+ }
+
+ var node = new FS.FSNode(parent, name, mode, rdev);
+
+ FS.hashAddNode(node);
+
+ return node;
+ },destroyNode:function (node) {
+ FS.hashRemoveNode(node);
+ },isRoot:function (node) {
+ return node === node.parent;
+ },isMountpoint:function (node) {
+ return !!node.mounted;
+ },isFile:function (mode) {
+ return (mode & 61440) === 32768;
+ },isDir:function (mode) {
+ return (mode & 61440) === 16384;
+ },isLink:function (mode) {
+ return (mode & 61440) === 40960;
+ },isChrdev:function (mode) {
+ return (mode & 61440) === 8192;
+ },isBlkdev:function (mode) {
+ return (mode & 61440) === 24576;
+ },isFIFO:function (mode) {
+ return (mode & 61440) === 4096;
+ },isSocket:function (mode) {
+ return (mode & 49152) === 49152;
+ },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
+ var flags = FS.flagModes[str];
+ if (typeof flags === 'undefined') {
+ throw new Error('Unknown file open mode: ' + str);
+ }
+ return flags;
+ },flagsToPermissionString:function (flag) {
+ var perms = ['r', 'w', 'rw'][flag & 3];
+ if ((flag & 512)) {
+ perms += 'w';
+ }
+ return perms;
+ },nodePermissions:function (node, perms) {
+ if (FS.ignorePermissions) {
+ return 0;
+ }
+ // return 0 if any user, group or owner bits are set.
+ if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
+ return ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },mayLookup:function (dir) {
+ var err = FS.nodePermissions(dir, 'x');
+ if (err) return err;
+ if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
+ return 0;
+ },mayCreate:function (dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return ERRNO_CODES.EEXIST;
+ } catch (e) {
+ }
+ return FS.nodePermissions(dir, 'wx');
+ },mayDelete:function (dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name);
+ } catch (e) {
+ return e.errno;
+ }
+ var err = FS.nodePermissions(dir, 'wx');
+ if (err) {
+ return err;
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return ERRNO_CODES.ENOTDIR;
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return ERRNO_CODES.EBUSY;
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return 0;
+ },mayOpen:function (node, flags) {
+ if (!node) {
+ return ERRNO_CODES.ENOENT;
+ }
+ if (FS.isLink(node.mode)) {
+ return ERRNO_CODES.ELOOP;
+ } else if (FS.isDir(node.mode)) {
+ if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write
+ (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only)
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
+ },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
+ fd_start = fd_start || 0;
+ fd_end = fd_end || FS.MAX_OPEN_FDS;
+ for (var fd = fd_start; fd <= fd_end; fd++) {
+ if (!FS.streams[fd]) {
+ return fd;
+ }
+ }
+ throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
+ },getStream:function (fd) {
+ return FS.streams[fd];
+ },createStream:function (stream, fd_start, fd_end) {
+ if (!FS.FSStream) {
+ FS.FSStream = function(){};
+ FS.FSStream.prototype = {};
+ // compatibility
+ Object.defineProperties(FS.FSStream.prototype, {
+ object: {
+ get: function() { return this.node; },
+ set: function(val) { this.node = val; }
+ },
+ isRead: {
+ get: function() { return (this.flags & 2097155) !== 1; }
+ },
+ isWrite: {
+ get: function() { return (this.flags & 2097155) !== 0; }
+ },
+ isAppend: {
+ get: function() { return (this.flags & 1024); }
+ }
+ });
+ }
+ // clone it, so we can return an instance of FSStream
+ var newStream = new FS.FSStream();
+ for (var p in stream) {
+ newStream[p] = stream[p];
+ }
+ stream = newStream;
+ var fd = FS.nextfd(fd_start, fd_end);
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream;
+ },closeStream:function (fd) {
+ FS.streams[fd] = null;
+ },chrdev_stream_ops:{open:function (stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ // override node's stream ops with the device's
+ stream.stream_ops = device.stream_ops;
+ // forward the open call
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ },llseek:function () {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }},major:function (dev) {
+ return ((dev) >> 8);
+ },minor:function (dev) {
+ return ((dev) & 0xff);
+ },makedev:function (ma, mi) {
+ return ((ma) << 8 | (mi));
+ },registerDevice:function (dev, ops) {
+ FS.devices[dev] = { stream_ops: ops };
+ },getDevice:function (dev) {
+ return FS.devices[dev];
+ },getMounts:function (mount) {
+ var mounts = [];
+ var check = [mount];
+
+ while (check.length) {
+ var m = check.pop();
+
+ mounts.push(m);
+
+ check.push.apply(check, m.mounts);
+ }
+
+ return mounts;
+ },syncfs:function (populate, callback) {
+ if (typeof(populate) === 'function') {
+ callback = populate;
+ populate = false;
+ }
+
+ FS.syncFSRequests++;
+
+ if (FS.syncFSRequests > 1) {
+ console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work');
+ }
+
+ var mounts = FS.getMounts(FS.root.mount);
+ var completed = 0;
+
+ function doCallback(err) {
+ assert(FS.syncFSRequests > 0);
+ FS.syncFSRequests--;
+ return callback(err);
+ }
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return doCallback(err);
+ }
+ return;
+ }
+ if (++completed >= mounts.length) {
+ doCallback(null);
+ }
+ };
+
+ // sync all mounts
+ mounts.forEach(function (mount) {
+ if (!mount.type.syncfs) {
+ return done(null);
+ }
+ mount.type.syncfs(mount, populate, done);
+ });
+ },mount:function (type, opts, mountpoint) {
+ var root = mountpoint === '/';
+ var pseudo = !mountpoint;
+ var node;
+
+ if (root && FS.root) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ } else if (!root && !pseudo) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ mountpoint = lookup.path; // use the absolute path
+ node = lookup.node;
+
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+
+ if (!FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ }
+
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ mounts: []
+ };
+
+ // create a root node for the fs
+ var mountRoot = type.mount(mount);
+ mountRoot.mount = mount;
+ mount.root = mountRoot;
+
+ if (root) {
+ FS.root = mountRoot;
+ } else if (node) {
+ // set as a mountpoint
+ node.mounted = mount;
+
+ // add the new mount to the current mount's children
+ if (node.mount) {
+ node.mount.mounts.push(mount);
+ }
+ }
+
+ return mountRoot;
+ },unmount:function (mountpoint) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ if (!FS.isMountpoint(lookup.node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ // destroy the nodes for this mount, and all its child mounts
+ var node = lookup.node;
+ var mount = node.mounted;
+ var mounts = FS.getMounts(mount);
+
+ Object.keys(FS.nameTable).forEach(function (hash) {
+ var current = FS.nameTable[hash];
+
+ while (current) {
+ var next = current.name_next;
+
+ if (mounts.indexOf(current.mount) !== -1) {
+ FS.destroyNode(current);
+ }
+
+ current = next;
+ }
+ });
+
+ // no longer a mountpoint
+ node.mounted = null;
+
+ // remove this mount from the child mounts
+ var idx = node.mount.mounts.indexOf(mount);
+ assert(idx !== -1);
+ node.mount.mounts.splice(idx, 1);
+ },lookup:function (parent, name) {
+ return parent.node_ops.lookup(parent, name);
+ },mknod:function (path, mode, dev) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ if (!name || name === '.' || name === '..') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.mayCreate(parent, name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev);
+ },create:function (path, mode) {
+ mode = mode !== undefined ? mode : 438 /* 0666 */;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0);
+ },mkdir:function (path, mode) {
+ mode = mode !== undefined ? mode : 511 /* 0777 */;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0);
+ },mkdirTree:function (path, mode) {
+ var dirs = path.split('/');
+ var d = '';
+ for (var i = 0; i < dirs.length; ++i) {
+ if (!dirs[i]) continue;
+ d += '/' + dirs[i];
+ try {
+ FS.mkdir(d, mode);
+ } catch(e) {
+ if (e.errno != ERRNO_CODES.EEXIST) throw e;
+ }
+ }
+ },mkdev:function (path, mode, dev) {
+ if (typeof(dev) === 'undefined') {
+ dev = mode;
+ mode = 438 /* 0666 */;
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev);
+ },symlink:function (oldpath, newpath) {
+ if (!PATH.resolve(oldpath)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var lookup = FS.lookupPath(newpath, { parent: true });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var newname = PATH.basename(newpath);
+ var err = FS.mayCreate(parent, newname);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath);
+ },rename:function (old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ // parents must exist
+ var lookup, old_dir, new_dir;
+ try {
+ lookup = FS.lookupPath(old_path, { parent: true });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, { parent: true });
+ new_dir = lookup.node;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ // need to be part of the same mount
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
+ }
+ // source must exist
+ var old_node = FS.lookupNode(old_dir, old_name);
+ // old path should not be an ancestor of the new path
+ var relative = PATH.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ // new path should not be an ancestor of the old path
+ relative = PATH.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ // see if the new path already exists
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ // not fatal
+ }
+ // early out if nothing needs to change
+ if (old_node === new_node) {
+ return;
+ }
+ // we'll need to delete the old entry
+ var isdir = FS.isDir(old_node.mode);
+ var err = FS.mayDelete(old_dir, old_name, isdir);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ // need delete permissions if we'll be overwriting.
+ // need create permissions if new doesn't already exist.
+ err = new_node ?
+ FS.mayDelete(new_dir, new_name, isdir) :
+ FS.mayCreate(new_dir, new_name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ // if we are going to change the parent, check write permissions
+ if (new_dir !== old_dir) {
+ err = FS.nodePermissions(old_dir, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['willMovePath']) {
+ FS.trackingDelegate['willMovePath'](old_path, new_path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ // remove the node from the lookup hash
+ FS.hashRemoveNode(old_node);
+ // do the underlying fs rename
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name);
+ } catch (e) {
+ throw e;
+ } finally {
+ // add the node back to the hash (in case node_ops.rename
+ // changed its name)
+ FS.hashAddNode(old_node);
+ }
+ try {
+ if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ },rmdir:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, true);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ return node.node_ops.readdir(node);
+ },unlink:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, false);
+ if (err) {
+ // According to POSIX, we should map EISDIR to EPERM, but
+ // we instead do what Linux does (and we must, as we use
+ // the musl linux libc).
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readlink:function (path) {
+ var lookup = FS.lookupPath(path);
+ var link = lookup.node;
+ if (!link) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
+ },stat:function (path, dontFollow) {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ var node = lookup.node;
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return node.node_ops.getattr(node);
+ },lstat:function (path) {
+ return FS.stat(path, true);
+ },chmod:function (path, mode, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ mode: (mode & 4095) | (node.mode & ~4095),
+ timestamp: Date.now()
+ });
+ },lchmod:function (path, mode) {
+ FS.chmod(path, mode, true);
+ },fchmod:function (fd, mode) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chmod(stream.node, mode);
+ },chown:function (path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ // we ignore the uid / gid for now
+ });
+ },lchown:function (path, uid, gid) {
+ FS.chown(path, uid, gid, true);
+ },fchown:function (fd, uid, gid) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chown(stream.node, uid, gid);
+ },truncate:function (path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.nodePermissions(node, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ });
+ },ftruncate:function (fd, len) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ FS.truncate(stream.node, len);
+ },utime:function (path, atime, mtime) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ });
+ },open:function (path, flags, mode, fd_start, fd_end) {
+ if (path === "") {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
+ mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
+ if ((flags & 64)) {
+ mode = (mode & 4095) | 32768;
+ } else {
+ mode = 0;
+ }
+ var node;
+ if (typeof path === 'object') {
+ node = path;
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node;
+ } catch (e) {
+ // ignore
+ }
+ }
+ // perhaps we need to create the node
+ var created = false;
+ if ((flags & 64)) {
+ if (node) {
+ // if O_CREAT and O_EXCL are set, error out if the node already exists
+ if ((flags & 128)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
+ }
+ } else {
+ // node doesn't exist, try to create it
+ node = FS.mknod(path, mode, 0);
+ created = true;
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ // can't truncate a device
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512;
+ }
+ // if asked only for a directory, then this must be one
+ if ((flags & 65536) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ // check permissions, if this is not a file we just created now (it is ok to
+ // create and write to a file with read-only permissions; it is read-only
+ // for later use)
+ if (!created) {
+ var err = FS.mayOpen(node, flags);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ // do truncation if necessary
+ if ((flags & 512)) {
+ FS.truncate(node, 0);
+ }
+ // we've already handled these, don't pass down to the underlying vfs
+ flags &= ~(128 | 512);
+
+ // register the stream with the filesystem
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node), // we want the absolute path to the node
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ // used by the file family libc calls (fopen, fwrite, ferror, etc.)
+ ungotten: [],
+ error: false
+ }, fd_start, fd_end);
+ // call the new stream's open function
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ if (Module['logReadFiles'] && !(flags & 1)) {
+ if (!FS.readFiles) FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1;
+ Module['printErr']('read file: ' + path);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['onOpenFile']) {
+ var trackingFlags = 0;
+ if ((flags & 2097155) !== 1) {
+ trackingFlags |= FS.tracking.openFlags.READ;
+ }
+ if ((flags & 2097155) !== 0) {
+ trackingFlags |= FS.tracking.openFlags.WRITE;
+ }
+ FS.trackingDelegate['onOpenFile'](path, trackingFlags);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message);
+ }
+ return stream;
+ },close:function (stream) {
+ if (stream.getdents) stream.getdents = null; // free readdir state
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream);
+ }
+ } catch (e) {
+ throw e;
+ } finally {
+ FS.closeStream(stream.fd);
+ }
+ },llseek:function (stream, offset, whence) {
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ stream.position = stream.stream_ops.llseek(stream, offset, whence);
+ stream.ungotten = [];
+ return stream.position;
+ },read:function (stream, buffer, offset, length, position) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking) stream.position += bytesRead;
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if (stream.flags & 1024) {
+ // seek to the end before writing in append mode
+ FS.llseek(stream, 0, 2);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking) stream.position += bytesWritten;
+ try {
+ if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message);
+ }
+ return bytesWritten;
+ },allocate:function (stream, offset, length) {
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
+ }
+ stream.stream_ops.allocate(stream, offset, length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ // TODO if PROT is PROT_WRITE, make sure we have write access
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EACCES);
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!stream || !stream.stream_ops.msync) {
+ return 0;
+ }
+ return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
+ },munmap:function (stream) {
+ return 0;
+ },ioctl:function (stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg);
+ },readFile:function (path, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'r';
+ opts.encoding = opts.encoding || 'binary';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === 'utf8') {
+ ret = UTF8ArrayToString(buf, 0);
+ } else if (opts.encoding === 'binary') {
+ ret = buf;
+ }
+ FS.close(stream);
+ return ret;
+ },writeFile:function (path, data, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'w';
+ opts.encoding = opts.encoding || 'utf8';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (opts.encoding === 'utf8') {
+ var buf = new Uint8Array(lengthBytesUTF8(data)+1);
+ var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
+ FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);
+ } else if (opts.encoding === 'binary') {
+ FS.write(stream, data, 0, data.length, 0, opts.canOwn);
+ }
+ FS.close(stream);
+ },cwd:function () {
+ return FS.currentPath;
+ },chdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ if (lookup.node === null) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ var err = FS.nodePermissions(lookup.node, 'x');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ FS.currentPath = lookup.path;
+ },createDefaultDirectories:function () {
+ FS.mkdir('/tmp');
+ FS.mkdir('/home');
+ FS.mkdir('/home/web_user');
+ },createDefaultDevices:function () {
+ // create /dev
+ FS.mkdir('/dev');
+ // setup /dev/null
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: function() { return 0; },
+ write: function(stream, buffer, offset, length, pos) { return length; }
+ });
+ FS.mkdev('/dev/null', FS.makedev(1, 3));
+ // setup /dev/tty and /dev/tty1
+ // stderr needs to print output using Module['printErr']
+ // so we register a second tty just for it.
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev('/dev/tty', FS.makedev(5, 0));
+ FS.mkdev('/dev/tty1', FS.makedev(6, 0));
+ // setup /dev/[u]random
+ var random_device;
+ if (typeof crypto !== 'undefined') {
+ // for modern web browsers
+ var randomBuffer = new Uint8Array(1);
+ random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; };
+ } else if (ENVIRONMENT_IS_NODE) {
+ // for nodejs
+ random_device = function() { return require('crypto').randomBytes(1)[0]; };
+ } else {
+ // default for ES5 platforms
+ random_device = function() { return (Math.random()*256)|0; };
+ }
+ FS.createDevice('/dev', 'random', random_device);
+ FS.createDevice('/dev', 'urandom', random_device);
+ // we're not going to emulate the actual shm device,
+ // just create the tmp dirs that reside in it commonly
+ FS.mkdir('/dev/shm');
+ FS.mkdir('/dev/shm/tmp');
+ },createSpecialDirectories:function () {
+ // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname)
+ FS.mkdir('/proc');
+ FS.mkdir('/proc/self');
+ FS.mkdir('/proc/self/fd');
+ FS.mount({
+ mount: function() {
+ var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73);
+ node.node_ops = {
+ lookup: function(parent, name) {
+ var fd = +name;
+ var stream = FS.getStream(fd);
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ var ret = {
+ parent: null,
+ mount: { mountpoint: 'fake' },
+ node_ops: { readlink: function() { return stream.path } }
+ };
+ ret.parent = ret; // make it look like a simple root node
+ return ret;
+ }
+ };
+ return node;
+ }
+ }, {}, '/proc/self/fd');
+ },createStandardStreams:function () {
+ // TODO deprecate the old functionality of a single
+ // input / output callback and that utilizes FS.createDevice
+ // and instead require a unique set of stream ops
+
+ // by default, we symlink the standard streams to the
+ // default tty devices. however, if the standard streams
+ // have been overwritten we create a unique device for
+ // them instead.
+ if (Module['stdin']) {
+ FS.createDevice('/dev', 'stdin', Module['stdin']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdin');
+ }
+ if (Module['stdout']) {
+ FS.createDevice('/dev', 'stdout', null, Module['stdout']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdout');
+ }
+ if (Module['stderr']) {
+ FS.createDevice('/dev', 'stderr', null, Module['stderr']);
+ } else {
+ FS.symlink('/dev/tty1', '/dev/stderr');
+ }
+
+ // open default streams for the stdin, stdout and stderr devices
+ var stdin = FS.open('/dev/stdin', 'r');
+ assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
+
+ var stdout = FS.open('/dev/stdout', 'w');
+ assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
+
+ var stderr = FS.open('/dev/stderr', 'w');
+ assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
+ },ensureErrnoError:function () {
+ if (FS.ErrnoError) return;
+ FS.ErrnoError = function ErrnoError(errno, node) {
+ //Module.printErr(stackTrace()); // useful for debugging
+ this.node = node;
+ this.setErrno = function(errno) {
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break;
+ }
+ }
+ };
+ this.setErrno(errno);
+ this.message = ERRNO_MESSAGES[errno];
+ if (this.stack) this.stack = demangleAll(this.stack);
+ };
+ FS.ErrnoError.prototype = new Error();
+ FS.ErrnoError.prototype.constructor = FS.ErrnoError;
+ // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
+ [ERRNO_CODES.ENOENT].forEach(function(code) {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = '<generic error, no stack>';
+ });
+ },staticInit:function () {
+ FS.ensureErrnoError();
+
+ FS.nameTable = new Array(4096);
+
+ FS.mount(MEMFS, {}, '/');
+
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ FS.createSpecialDirectories();
+
+ FS.filesystems = {
+ 'MEMFS': MEMFS,
+ 'IDBFS': IDBFS,
+ 'NODEFS': NODEFS,
+ 'WORKERFS': WORKERFS,
+ };
+ },init:function (input, output, error) {
+ assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
+ FS.init.initialized = true;
+
+ FS.ensureErrnoError();
+
+ // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
+ Module['stdin'] = input || Module['stdin'];
+ Module['stdout'] = output || Module['stdout'];
+ Module['stderr'] = error || Module['stderr'];
+
+ FS.createStandardStreams();
+ },quit:function () {
+ FS.init.initialized = false;
+ // force-flush all streams, so we get musl std streams printed out
+ var fflush = Module['_fflush'];
+ if (fflush) fflush(0);
+ // close all of our streams
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue;
+ }
+ FS.close(stream);
+ }
+ },getMode:function (canRead, canWrite) {
+ var mode = 0;
+ if (canRead) mode |= 292 | 73;
+ if (canWrite) mode |= 146;
+ return mode;
+ },joinPath:function (parts, forceRelative) {
+ var path = PATH.join.apply(null, parts);
+ if (forceRelative && path[0] == '/') path = path.substr(1);
+ return path;
+ },absolutePath:function (relative, base) {
+ return PATH.resolve(base, relative);
+ },standardizePath:function (path) {
+ return PATH.normalize(path);
+ },findObject:function (path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (ret.exists) {
+ return ret.object;
+ } else {
+ ___setErrNo(ret.error);
+ return null;
+ }
+ },analyzePath:function (path, dontResolveLastLink) {
+ // operate from within the context of the symlink's target
+ try {
+ var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ path = lookup.path;
+ } catch (e) {
+ }
+ var ret = {
+ isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
+ parentExists: false, parentPath: null, parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, { parent: true });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === '/';
+ } catch (e) {
+ ret.error = e.errno;
+ };
+ return ret;
+ },createFolder:function (parent, name, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.mkdir(path, mode);
+ },createPath:function (parent, path, canRead, canWrite) {
+ parent = typeof parent === 'string' ? parent : FS.getPath(parent);
+ var parts = path.split('/').reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part) continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current);
+ } catch (e) {
+ // ignore EEXIST
+ }
+ parent = current;
+ }
+ return current;
+ },createFile:function (parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.create(path, mode);
+ },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
+ var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
+ var mode = FS.getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data === 'string') {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
+ data = arr;
+ }
+ // make sure we can write to the file
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, 'w');
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode);
+ }
+ return node;
+ },createDevice:function (parent, name, input, output) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(!!input, !!output);
+ if (!FS.createDevice.major) FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ // Create a fake device that a set of stream ops to emulate
+ // the old behavior.
+ FS.registerDevice(dev, {
+ open: function(stream) {
+ stream.seekable = false;
+ },
+ close: function(stream) {
+ // flush any pending line data
+ if (output && output.buffer && output.buffer.length) {
+ output(10);
+ }
+ },
+ read: function(stream, buffer, offset, length, pos /* ignored */) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input();
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },
+ write: function(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }
+ });
+ return FS.mkdev(path, mode, dev);
+ },createLink:function (parent, name, target, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ return FS.symlink(target, path);
+ },forceLoadFile:function (obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
+ var success = true;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
+ } else if (Module['read']) {
+ // Command-line.
+ try {
+ // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
+ // read() will try to parse UTF8.
+ obj.contents = intArrayFromString(Module['read'](obj.url), true);
+ obj.usedBytes = obj.contents.length;
+ } catch (e) {
+ success = false;
+ }
+ } else {
+ throw new Error('Cannot load without read() or XMLHttpRequest.');
+ }
+ if (!success) ___setErrNo(ERRNO_CODES.EIO);
+ return success;
+ },createLazyFile:function (parent, name, url, canRead, canWrite) {
+ // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
+ function LazyUint8Array() {
+ this.lengthKnown = false;
+ this.chunks = []; // Loaded chunks. Index is the chunk number
+ }
+ LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
+ if (idx > this.length-1 || idx < 0) {
+ return undefined;
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = (idx / this.chunkSize)|0;
+ return this.getter(chunkNum)[chunkOffset];
+ }
+ LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
+ this.getter = getter;
+ }
+ LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
+ // Find length
+ var xhr = new XMLHttpRequest();
+ xhr.open('HEAD', url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
+
+ var chunkSize = 1024*1024; // Chunk size in bytes
+
+ if (!hasByteServing) chunkSize = datalength;
+
+ // Function to get a range from the remote URL.
+ var doXHR = (function(from, to) {
+ if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
+
+ // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, false);
+ if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+
+ // Some hints to the browser that we want binary data.
+ if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
+ }
+
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || []);
+ } else {
+ return intArrayFromString(xhr.responseText || '', true);
+ }
+ });
+ var lazyArray = this;
+ lazyArray.setDataGetter(function(chunkNum) {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum+1) * chunkSize - 1; // including this byte
+ end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end);
+ }
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum];
+ });
+
+ if (usesGzip || !datalength) {
+ // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length
+ chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file
+ datalength = this.getter(0).length;
+ chunkSize = datalength;
+ console.log("LazyFiles on gzip forces download of the whole file when length is accessed");
+ }
+
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true;
+ }
+ if (typeof XMLHttpRequest !== 'undefined') {
+ if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
+ var lazyArray = new LazyUint8Array();
+ Object.defineProperties(lazyArray, {
+ length: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._length;
+ }
+ },
+ chunkSize: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._chunkSize;
+ }
+ }
+ });
+
+ var properties = { isDevice: false, contents: lazyArray };
+ } else {
+ var properties = { isDevice: false, url: url };
+ }
+
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ // This is a total hack, but I want to get this lazy file code out of the
+ // core of MEMFS. If we want to keep this lazy file concept I feel it should
+ // be its own thin LAZYFS proxying calls to MEMFS.
+ if (properties.contents) {
+ node.contents = properties.contents;
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url;
+ }
+ // Add a function that defers querying the file size until it is asked the first time.
+ Object.defineProperties(node, {
+ usedBytes: {
+ get: function() { return this.contents.length; }
+ }
+ });
+ // override each stream op with one that tries to force load the lazy file first
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach(function(key) {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = function forceLoadLazyFile() {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ return fn.apply(null, arguments);
+ };
+ });
+ // use a custom read function
+ stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) { // normal array
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i];
+ }
+ } else {
+ for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
+ buffer[offset + i] = contents.get(position + i);
+ }
+ }
+ return size;
+ };
+ node.stream_ops = stream_ops;
+ return node;
+ },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
+ Browser.init(); // XXX perhaps this method should move onto Browser?
+ // TODO we should allow people to just pass in a complete filename instead
+ // of parent and name being that we just join them anyways
+ var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
+ var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname
+ function processData(byteArray) {
+ function finish(byteArray) {
+ if (preFinish) preFinish();
+ if (!dontCreateFile) {
+ FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
+ }
+ if (onload) onload();
+ removeRunDependency(dep);
+ }
+ var handled = false;
+ Module['preloadPlugins'].forEach(function(plugin) {
+ if (handled) return;
+ if (plugin['canHandle'](fullname)) {
+ plugin['handle'](byteArray, fullname, finish, function() {
+ if (onerror) onerror();
+ removeRunDependency(dep);
+ });
+ handled = true;
+ }
+ });
+ if (!handled) finish(byteArray);
+ }
+ addRunDependency(dep);
+ if (typeof url == 'string') {
+ Browser.asyncLoad(url, function(byteArray) {
+ processData(byteArray);
+ }, onerror);
+ } else {
+ processData(url);
+ }
+ },indexedDB:function () {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ },DB_NAME:function () {
+ return 'EM_FS_' + window.location.pathname;
+ },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
+ console.log('creating db');
+ var db = openRequest.result;
+ db.createObjectStore(FS.DB_STORE_NAME);
+ };
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var putRequest = files.put(FS.analyzePath(path).object.contents, path);
+ putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
+ putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ },loadFilesFromDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = onerror; // no database to load from
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ try {
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
+ } catch(e) {
+ onerror(e);
+ return;
+ }
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var getRequest = files.get(path);
+ getRequest.onsuccess = function getRequest_onsuccess() {
+ if (FS.analyzePath(path).exists) {
+ FS.unlink(path);
+ }
+ FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
+ ok++;
+ if (ok + fail == total) finish();
+ };
+ getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) {
+ if (path[0] !== '/') {
+ // relative path
+ var dir;
+ if (dirfd === -100) {
+ dir = FS.cwd();
+ } else {
+ var dirstream = FS.getStream(dirfd);
+ if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ dir = dirstream.path;
+ }
+ path = PATH.join2(dir, path);
+ }
+ return path;
+ },doStat:function (func, path, buf) {
+ try {
+ var stat = func(path);
+ } catch (e) {
+ if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
+ // an error occurred while trying to look up the path; we should just report ENOTDIR
+ return -ERRNO_CODES.ENOTDIR;
+ }
+ throw e;
+ }
+ HEAP32[((buf)>>2)]=stat.dev;
+ HEAP32[(((buf)+(4))>>2)]=0;
+ HEAP32[(((buf)+(8))>>2)]=stat.ino;
+ HEAP32[(((buf)+(12))>>2)]=stat.mode;
+ HEAP32[(((buf)+(16))>>2)]=stat.nlink;
+ HEAP32[(((buf)+(20))>>2)]=stat.uid;
+ HEAP32[(((buf)+(24))>>2)]=stat.gid;
+ HEAP32[(((buf)+(28))>>2)]=stat.rdev;
+ HEAP32[(((buf)+(32))>>2)]=0;
+ HEAP32[(((buf)+(36))>>2)]=stat.size;
+ HEAP32[(((buf)+(40))>>2)]=4096;
+ HEAP32[(((buf)+(44))>>2)]=stat.blocks;
+ HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(52))>>2)]=0;
+ HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(60))>>2)]=0;
+ HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(68))>>2)]=0;
+ HEAP32[(((buf)+(72))>>2)]=stat.ino;
+ return 0;
+ },doMsync:function (addr, stream, len, flags) {
+ var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
+ FS.msync(stream, buffer, 0, len, flags);
+ },doMkdir:function (path, mode) {
+ // remove a trailing slash, if one - /a/b/ has basename of '', but
+ // we want to create b in the context of this function
+ path = PATH.normalize(path);
+ if (path[path.length-1] === '/') path = path.substr(0, path.length-1);
+ FS.mkdir(path, mode, 0);
+ return 0;
+ },doMknod:function (path, mode, dev) {
+ // we don't want this in the JS API as it uses mknod to create all nodes.
+ switch (mode & 61440) {
+ case 32768:
+ case 8192:
+ case 24576:
+ case 4096:
+ case 49152:
+ break;
+ default: return -ERRNO_CODES.EINVAL;
+ }
+ FS.mknod(path, mode, dev);
+ return 0;
+ },doReadlink:function (path, buf, bufsize) {
+ if (bufsize <= 0) return -ERRNO_CODES.EINVAL;
+ var ret = FS.readlink(path);
+
+ var len = Math.min(bufsize, lengthBytesUTF8(ret));
+ var endChar = HEAP8[buf+len];
+ stringToUTF8(ret, buf, bufsize+1);
+ // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!)
+ // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write.
+ HEAP8[buf+len] = endChar;
+
+ return len;
+ },doAccess:function (path, amode) {
+ if (amode & ~7) {
+ // need a valid mode
+ return -ERRNO_CODES.EINVAL;
+ }
+ var node;
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ var perms = '';
+ if (amode & 4) perms += 'r';
+ if (amode & 2) perms += 'w';
+ if (amode & 1) perms += 'x';
+ if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) {
+ return -ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },doDup:function (path, flags, suggestFD) {
+ var suggest = FS.getStream(suggestFD);
+ if (suggest) FS.close(suggest);
+ return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
+ },doReadv:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.read(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ if (curr < len) break; // nothing more to read
+ }
+ return ret;
+ },doWritev:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.write(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ }
+ return ret;
+ },varargs:0,get:function (varargs) {
SYSCALLS.varargs += 4;
var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
return ret;
},getStr:function () {
var ret = Pointer_stringify(SYSCALLS.get());
return ret;
+ },getStreamFromFD:function () {
+ var stream = FS.getStream(SYSCALLS.get());
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return stream;
+ },getSocketFromFD:function () {
+ var socket = SOCKFS.getSocket(SYSCALLS.get());
+ if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return socket;
+ },getSocketAddress:function (allowNull) {
+ var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();
+ if (allowNull && addrp === 0) return null;
+ var info = __read_sockaddr(addrp, addrlen);
+ if (info.errno) throw new FS.ErrnoError(info.errno);
+ info.addr = DNS.lookup_addr(info.addr) || info.addr;
+ return info;
},get64:function () {
var low = SYSCALLS.get(), high = SYSCALLS.get();
if (low >= 0) assert(high === 0);
@@ -3374,10 +6488,42 @@ function copyTempDouble(ptr) {
return low;
},getZero:function () {
assert(SYSCALLS.get() === 0);
- }};function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;
+ }};function ___syscall54(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 54, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// ioctl
- return 0;
+ var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();
+ switch (op) {
+ case 21505: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ case 21506: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0; // no-op, not actually adjusting terminal settings
+ }
+ case 21519: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ var argp = SYSCALLS.get();
+ HEAP32[((argp)>>2)]=0;
+ return 0;
+ }
+ case 21520: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return -ERRNO_CODES.EINVAL; // not supported
+ }
+ case 21531: {
+ var argp = SYSCALLS.get();
+ return FS.ioctl(stream, op, argp);
+ }
+ case 21523: {
+ // TODO: in theory we should write to the winsize struct that gets
+ // passed in, but for now musl doesn't read anything on it
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ default: abort('bad ioctl syscall ' + op);
+ }
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4367,6 +7513,29 @@ function copyTempDouble(ptr) {
return 0;
}
+ function _utime(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(12, path, times);
+ // int utime(const char *path, const struct utimbuf *times);
+ // http://pubs.opengroup.org/onlinepubs/009695399/basedefs/utime.h.html
+ var time;
+ if (times) {
+ // NOTE: We don't keep track of access timestamps.
+ var offset = 4;
+ time = HEAP32[(((times)+(offset))>>2)];
+ time *= 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx['copyTexImage2D'](x0, x1, x2, x3, x4, x5, x6, x7) }
function _emscripten_glTexParameterfv(target, pname, params) {
@@ -4374,6 +7543,220 @@ function copyTempDouble(ptr) {
GLctx.texParameterf(target, pname, param);
}
+
+
+
+ var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};
+
+
+ var __pthread_ptr=0;
+
+ var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr, isMainBrowserThread, isMainRuntimeThread) {
+ pthreadPtr = pthreadPtr|0;
+ isMainBrowserThread = isMainBrowserThread|0;
+ isMainRuntimeThread = isMainRuntimeThread|0;
+ __pthread_ptr = pthreadPtr;
+ __pthread_is_main_browser_thread = isMainBrowserThread;
+ __pthread_is_main_runtime_thread = isMainRuntimeThread;
+ }
+
+ var _emscripten_main_thread_process_queued_calls=undefined;var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkerPool:[],runningWorkers:[],initMainThreadBlock:function () {
+ if (ENVIRONMENT_IS_PTHREAD) return undefined;
+ PThread.mainThreadBlock = allocate(244, "i32*", ALLOC_STATIC);
+ __register_pthread_ptr(PThread.mainThreadBlock, /*isMainBrowserThread=*/!ENVIRONMENT_IS_WORKER, /*isMainRuntimeThread=*/1); // Pass the thread address inside the asm.js scope to store it for fast access that avoids the need for a FFI out.
+
+ for (var i = 0; i < 244/4; ++i) HEAPU32[PThread.mainThreadBlock/4+i] = 0;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((PThread.mainThreadBlock)+(24))>>2)]=PThread.mainThreadBlock;
+
+ // Allocate memory for thread-local storage.
+ var tlsMemory = allocate(128 * 4, "i32*", ALLOC_STATIC);
+ for (var i = 0; i < 128; ++i) HEAPU32[tlsMemory/4+i] = 0;
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 52 ) >> 2, PThread.mainThreadBlock); // Main thread ID.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ },pthreads:{},pthreadIdCounter:2,exitHandlers:null,setThreadStatus:function () {},runExitHandlers:function () {
+ if (PThread.exitHandlers !== null) {
+ while (PThread.exitHandlers.length > 0) {
+ PThread.exitHandlers.pop()();
+ }
+ PThread.exitHandlers = null;
+ }
+
+ // Call into the musl function that runs destructors of all thread-specific data.
+ if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors();
+ },threadExit:function (exitCode) {
+ var tb = _pthread_self();
+ if (tb) { // If we haven't yet exited?
+ Atomics.store(HEAPU32, (tb + 4 ) >> 2, exitCode);
+ // When we publish this, the main thread is free to deallocate the thread object and we are done.
+ // Therefore set threadInfoStruct = 0; above to 'release' the object in this worker thread.
+ Atomics.store(HEAPU32, (tb + 0 ) >> 2, 1);
+
+ // Disable all cancellation so that executing the cleanup handlers won't trigger another JS
+ // canceled exception to be thrown.
+ Atomics.store(HEAPU32, (tb + 72 ) >> 2, 1/*PTHREAD_CANCEL_DISABLE*/);
+ Atomics.store(HEAPU32, (tb + 76 ) >> 2, 0/*PTHREAD_CANCEL_DEFERRED*/);
+ PThread.runExitHandlers();
+
+ _emscripten_futex_wake(tb + 0, 2147483647);
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ threadInfoStruct = 0;
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // This worker no longer owns any WebGL OffscreenCanvases, so transfer them back to parent thread.
+ var transferList = [];
+
+
+ postMessage({ cmd: 'exit' });
+ }
+ }
+ },threadCancel:function () {
+ PThread.runExitHandlers();
+ Atomics.store(HEAPU32, (threadInfoStruct + 4 ) >> 2, -1/*PTHREAD_CANCELED*/);
+ Atomics.store(HEAPU32, (threadInfoStruct + 0 ) >> 2, 1); // Mark the thread as no longer running.
+ _emscripten_futex_wake(threadInfoStruct + 0, 2147483647); // wake all threads
+ threadInfoStruct = selfThreadId = 0; // Not hosting a pthread anymore in this worker, reset the info structures to null.
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ postMessage({ cmd: 'cancelDone' });
+ },terminateAllThreads:function () {
+ for (var t in PThread.pthreads) {
+ var pthread = PThread.pthreads[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.pthreads = {};
+ for (var t in PThread.unusedWorkerPool) {
+ var pthread = PThread.unusedWorkerPool[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.unusedWorkerPool = [];
+ for (var t in PThread.runningWorkers) {
+ var pthread = PThread.runningWorkers[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.runningWorkers = [];
+ },freeThreadData:function (pthread) {
+ if (!pthread) return;
+ if (pthread.threadInfoStruct) {
+ var tlsMemory = HEAP32[(((pthread.threadInfoStruct)+(116))>>2)];
+ HEAP32[(((pthread.threadInfoStruct)+(116))>>2)]=0;
+ _free(pthread.tlsMemory);
+ _free(pthread.threadInfoStruct);
+ }
+ pthread.threadInfoStruct = 0;
+ if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase);
+ pthread.stackBase = 0;
+ if (pthread.worker) pthread.worker.pthread = null;
+ },receiveObjectTransfer:function (data) {
+ },allocateUnusedWorkers:function (numWorkers, onFinishedLoading) {
+ if (typeof SharedArrayBuffer === 'undefined') return; // No multithreading support, no-op.
+ Module['print']('Preallocating ' + numWorkers + ' workers for a pthread spawn pool.');
+
+ var numWorkersLoaded = 0;
+ for (var i = 0; i < numWorkers; ++i) {
+ var pthreadMainJs = 'pthread-main.js';
+ // Allow HTML module to configure the location where the 'pthread-main.js' file will be loaded from,
+ // either via Module.locateFile() function, or via Module.pthreadMainPrefixURL string. If neither
+ // of these are passed, then the default URL 'pthread-main.js' relative to the main html file is loaded.
+ if (typeof Module['locateFile'] === 'function') pthreadMainJs = Module['locateFile'](pthreadMainJs);
+ else if (Module['pthreadMainPrefixURL']) pthreadMainJs = Module['pthreadMainPrefixURL'] + pthreadMainJs;
+ var worker = new Worker(pthreadMainJs);
+
+ worker.onmessage = function(e) {
+ // If this message is intended to a recipient that is not the main thread, forward it to the target thread.
+ if (e.data.targetThread && e.data.targetThread != _pthread_self()) {
+ var thread = PThread.pthreads[e.data.targetThread];
+ if (thread) {
+ thread.worker.postMessage(e.data, e.data.transferList);
+ } else {
+ console.error('Internal error! Worker sent a message "' + e.data.cmd + '" to target pthread ' + e.data.targetThread + ', but that thread no longer exists!');
+ }
+ return;
+ }
+
+ if (e.data.cmd === 'processQueuedMainThreadWork') {
+ // TODO: Must post message to main Emscripten thread in PROXY_TO_WORKER mode.
+ _emscripten_main_thread_process_queued_calls();
+ } else if (e.data.cmd === 'spawnThread') {
+ __spawn_thread(e.data);
+ } else if (e.data.cmd === 'cleanupThread') {
+ __cleanup_thread(e.data.thread);
+ } else if (e.data.cmd === 'killThread') {
+ __kill_thread(e.data.thread);
+ } else if (e.data.cmd === 'cancelThread') {
+ __cancel_thread(e.data.thread);
+ } else if (e.data.cmd === 'loaded') {
+ ++numWorkersLoaded;
+ if (numWorkersLoaded === numWorkers && onFinishedLoading) {
+ onFinishedLoading();
+ }
+ } else if (e.data.cmd === 'print') {
+ Module['print']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'printErr') {
+ Module['printErr']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'alert') {
+ alert('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'exit') {
+ // currently no-op
+ } else if (e.data.cmd === 'cancelDone') {
+ PThread.freeThreadData(worker.pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ // TODO: Free if detached.
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ } else if (e.data.cmd === 'objectTransfer') {
+ PThread.receiveObjectTransfer(e.data);
+ } else {
+ Module['printErr']("worker sent an unknown command " + e.data.cmd);
+ }
+ };
+
+ worker.onerror = function(e) {
+ Module['printErr']('pthread sent an error! ' + e.filename + ':' + e.lineno + ': ' + e.message);
+ };
+
+ // Allocate tempDoublePtr for the worker. This is done here on the worker's behalf, since we may need to do this statically
+ // if the runtime has not been loaded yet, etc. - so we just use getMemory, which is main-thread only.
+ var tempDoublePtr = getMemory(8); // TODO: leaks. Cleanup after worker terminates.
+
+ // Ask the new worker to load up the Emscripten-compiled page. This is a heavy operation.
+ worker.postMessage({
+ cmd: 'load',
+ url: currentScriptUrl,
+ buffer: HEAPU8.buffer,
+ tempDoublePtr: tempDoublePtr,
+ TOTAL_MEMORY: TOTAL_MEMORY,
+ STATICTOP: STATICTOP,
+ DYNAMIC_BASE: DYNAMIC_BASE,
+ DYNAMICTOP_PTR: DYNAMICTOP_PTR,
+ PthreadWorkerInit: PthreadWorkerInit
+ });
+ PThread.unusedWorkerPool.push(worker);
+ }
+ },getNewWorker:function () {
+ if (PThread.unusedWorkerPool.length == 0) PThread.allocateUnusedWorkers(1);
+ if (PThread.unusedWorkerPool.length > 0) return PThread.unusedWorkerPool.pop();
+ else return null;
+ },busySpinWait:function (msecs) {
+ var t = performance.now() + msecs;
+ while(performance.now() < t) {
+ ;
+ }
+ }};var __pthread_is_main_runtime_thread=0;function _emscripten_is_main_runtime_thread() {
+ return __pthread_is_main_runtime_thread|0; // Semantically the same as testing "!ENVIRONMENT_IS_PTHREAD" outside the asm.js scope
+ }
+
function _emscripten_glLinkProgram(program) {
GLctx.linkProgram(GL.programs[program]);
GL.programInfos[program] = null; // uniforms no longer keep the same names after linking
@@ -4424,6 +7807,11 @@ function copyTempDouble(ptr) {
Module["_memset"] = _memset;
+ function _atexit(func, arg) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(110, func, arg);
+ __ATEXIT__.unshift({ func: func, arg: arg });
+ }
+
function _glfwMakeContextCurrent(winid) {}
function _emscripten_set_touchcancel_callback(target, userData, useCapture, callbackfunc) {
@@ -4621,7 +8009,8 @@ function copyTempDouble(ptr) {
GLctx.uniformMatrix2fv(GL.uniforms[location], !!transpose, view);
}
- function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall6(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 6, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// close
var stream = SYSCALLS.getStreamFromFD();
@@ -4691,7 +8080,8 @@ function copyTempDouble(ptr) {
Module['printErr']('missing function: emscripten_glGetPointerv'); abort(-1);
}
- function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall140(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 140, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// llseek
var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
@@ -4707,34 +8097,12 @@ function copyTempDouble(ptr) {
}
}
- function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall146(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 146, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// writev
- // hack to support printf in NO_FILESYSTEM
- var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
- var ret = 0;
- if (!___syscall146.buffer) {
- ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr
- ___syscall146.printChar = function(stream, curr) {
- var buffer = ___syscall146.buffers[stream];
- assert(buffer);
- if (curr === 0 || curr === 10) {
- (stream === 1 ? Module['print'] : Module['printErr'])(UTF8ArrayToString(buffer, 0));
- buffer.length = 0;
- } else {
- buffer.push(curr);
- }
- };
- }
- for (var i = 0; i < iovcnt; i++) {
- var ptr = HEAP32[(((iov)+(i*8))>>2)];
- var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
- for (var j = 0; j < len; j++) {
- ___syscall146.printChar(stream, HEAPU8[ptr+j]);
- }
- ret += len;
- }
- return ret;
+ var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
+ return SYSCALLS.doWritev(stream, iov, iovcnt);
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4749,6 +8117,41 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilFuncSeparate(x0, x1, x2, x3) { GLctx['stencilFuncSeparate'](x0, x1, x2, x3) }
+
+ var _tzname; if (ENVIRONMENT_IS_PTHREAD) _tzname = PthreadWorkerInit._tzname; else PthreadWorkerInit._tzname = _tzname = allocate(8, "i32*", ALLOC_STATIC);
+
+ var _daylight; if (ENVIRONMENT_IS_PTHREAD) _daylight = PthreadWorkerInit._daylight; else PthreadWorkerInit._daylight = _daylight = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _timezone; if (ENVIRONMENT_IS_PTHREAD) _timezone = PthreadWorkerInit._timezone; else PthreadWorkerInit._timezone = _timezone = allocate(1, "i32*", ALLOC_STATIC);function _tzset() {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_0(119);
+ // TODO: Use (malleable) environment variables instead of system settings.
+ if (_tzset.called) return;
+ _tzset.called = true;
+
+ HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60;
+
+ var winter = new Date(2000, 0, 1);
+ var summer = new Date(2000, 6, 1);
+ HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
+
+ function extractZone(date) {
+ var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
+ return match ? match[1] : "GMT";
+ };
+ var winterName = extractZone(winter);
+ var summerName = extractZone(summer);
+ var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);
+ var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);
+ if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {
+ // Northern hemisphere
+ HEAP32[((_tzname)>>2)]=winterNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr;
+ } else {
+ HEAP32[((_tzname)>>2)]=summerNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=winterNamePtr;
+ }
+ }
+
Module["_i64Subtract"] = _i64Subtract;
@@ -4789,6 +8192,155 @@ function copyTempDouble(ptr) {
return JSEvents.lastGamepadState.length;
}
+ function _sysconf(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(72, name);
+ // long sysconf(int name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
+ switch(name) {
+ case 30: return PAGE_SIZE;
+ case 85:
+ var maxHeapSize = 2*1024*1024*1024 - 16777216;
+ maxHeapSize = HEAPU8.length;
+ return maxHeapSize / PAGE_SIZE;
+ case 132:
+ case 133:
+ case 12:
+ case 137:
+ case 138:
+ case 15:
+ case 235:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 149:
+ case 13:
+ case 10:
+ case 236:
+ case 153:
+ case 9:
+ case 21:
+ case 22:
+ case 159:
+ case 154:
+ case 14:
+ case 77:
+ case 78:
+ case 139:
+ case 80:
+ case 81:
+ case 82:
+ case 68:
+ case 67:
+ case 164:
+ case 11:
+ case 29:
+ case 47:
+ case 48:
+ case 95:
+ case 52:
+ case 51:
+ case 46:
+ return 200809;
+ case 79:
+ return 0;
+ case 27:
+ case 246:
+ case 127:
+ case 128:
+ case 23:
+ case 24:
+ case 160:
+ case 161:
+ case 181:
+ case 182:
+ case 242:
+ case 183:
+ case 184:
+ case 243:
+ case 244:
+ case 245:
+ case 165:
+ case 178:
+ case 179:
+ case 49:
+ case 50:
+ case 168:
+ case 169:
+ case 175:
+ case 170:
+ case 171:
+ case 172:
+ case 97:
+ case 76:
+ case 32:
+ case 173:
+ case 35:
+ return -1;
+ case 176:
+ case 177:
+ case 7:
+ case 155:
+ case 8:
+ case 157:
+ case 125:
+ case 126:
+ case 92:
+ case 93:
+ case 129:
+ case 130:
+ case 131:
+ case 94:
+ case 91:
+ return 1;
+ case 74:
+ case 60:
+ case 69:
+ case 70:
+ case 4:
+ return 1024;
+ case 31:
+ case 42:
+ case 72:
+ return 32;
+ case 87:
+ case 26:
+ case 33:
+ return 2147483647;
+ case 34:
+ case 1:
+ return 47839;
+ case 38:
+ case 36:
+ return 99;
+ case 43:
+ case 37:
+ return 2048;
+ case 0: return 2097152;
+ case 3: return 65536;
+ case 28: return 32768;
+ case 44: return 32767;
+ case 75: return 16384;
+ case 39: return 1000;
+ case 89: return 700;
+ case 71: return 256;
+ case 40: return 255;
+ case 2: return 100;
+ case 180: return 64;
+ case 25: return 20;
+ case 5: return 16;
+ case 6: return 6;
+ case 73: return 4;
+ case 84: {
+ if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;
+ return 1;
+ }
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
function _emscripten_glUniform4iv(location, count, value) {
@@ -4832,6 +8384,7 @@ function copyTempDouble(ptr) {
GL.shaders[shader]);
}
+
function _glUniform4f(location, v0, v1, v2, v3) {
GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3);
}
@@ -4869,6 +8422,13 @@ function copyTempDouble(ptr) {
GLFW.hints = GLFW.defaultHints;
}
+ function _gettimeofday(ptr) {
+ var now = Date.now();
+ HEAP32[((ptr)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((ptr)+(4))>>2)]=((now % 1000)*1000)|0; // microseconds
+ return 0;
+ }
+
function _emscripten_glClearStencil(x0) { GLctx['clearStencil'](x0) }
function _emscripten_glDetachShader(program, shader) {
@@ -4925,6 +8485,70 @@ function copyTempDouble(ptr) {
function _emscripten_glGenerateMipmap(x0) { GLctx['generateMipmap'](x0) }
+
+
+
+
+ var _environ; if (ENVIRONMENT_IS_PTHREAD) _environ = PthreadWorkerInit._environ; else PthreadWorkerInit._environ = _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'] = ENV['LOGNAME'] = 'web_user';
+ ENV['PATH'] = '/';
+ ENV['PWD'] = '/';
+ ENV['HOME'] = '/home/web_user';
+ ENV['LANG'] = 'C';
+ ENV['_'] = Module['thisProgram'];
+ // 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];
+ writeAsciiToMemory(line, poolPtr);
+ HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
+ poolPtr += line.length + 1;
+ }
+ HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
+ }var ENV={};function _clearenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(112, name);
+ // int clearenv (void);
+ // http://www.gnu.org/s/hello/manual/libc/Environment-Access.html#index-clearenv-3107
+ ENV = {};
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glCullFace(x0) { GLctx['cullFace'](x0) }
function _emscripten_glUniform4f(location, v0, v1, v2, v3) {
@@ -5009,9 +8633,14 @@ function copyTempDouble(ptr) {
GLctx.uniform2iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*8)>>2));
}
- function _emscripten_glVertexAttrib1fv(index, v) {
-
- GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ var _emscripten_asm_const=true;
+
+ function _chroot(path) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(37, path);
+ // int chroot(const char *path);
+ // http://pubs.opengroup.org/onlinepubs/7908799/xsh/chroot.html
+ ___setErrNo(ERRNO_CODES.EACCES);
+ return -1;
}
function _glEnable(x0) { GLctx['enable'](x0) }
@@ -5180,13 +8809,57 @@ function copyTempDouble(ptr) {
emscriptenWebGLGetUniform(program, location, params, 'Integer');
}
+ function _unsetenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(114, name);
+ // int unsetenv(const char *name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/unsetenv.html
+ if (name === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ name = Pointer_stringify(name);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name)) {
+ delete ENV[name];
+ ___buildEnvironment(ENV);
+ }
+ return 0;
+ }
+
function _emscripten_glDepthMask(flag) {
GLctx.depthMask(!!flag);
}
+
function _emscripten_glDepthRangef(x0, x1) { GLctx['depthRange'](x0, x1) }
- function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
+
+ function _emscripten_get_now_is_monotonic() {
+ // return whether emscripten_get_now is guaranteed monotonic; the Date.now
+ // implementation is not :(
+ return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
+ ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
+ }function _clock_gettime(clk_id, tp) {
+ // int clock_gettime(clockid_t clk_id, struct timespec *tp);
+ var now;
+ if (clk_id === 0) {
+ now = Date.now();
+ } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
+ now = _emscripten_get_now();
+ } else {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
+ return 0;
+ }function ___clock_gettime() {
+ return _clock_gettime.apply(null, arguments)
+ }
function _emscripten_set_fullscreenchange_callback(target, userData, useCapture, callbackfunc) {
if (typeof JSEvents.fullscreenEnabled() === 'undefined') return -1;
@@ -5202,7 +8875,75 @@ function copyTempDouble(ptr) {
return 0;
}
- function _pthread_join() {}
+ function _emscripten_glVertexAttrib1fv(index, v) {
+
+ GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ }
+
+
+ function __cleanup_thread(pthread_ptr) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _cleanup_thread() can only ever be called from main application thread!';
+ if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _cleanup_thread!';
+ HEAP32[(((pthread_ptr)+(24))>>2)]=0;
+ var pthread = PThread.pthreads[pthread_ptr];
+ var worker = pthread.worker;
+ PThread.freeThreadData(pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ }
+
+ function __pthread_testcancel_js() {
+ if (!ENVIRONMENT_IS_PTHREAD) return;
+ if (!threadInfoStruct) return;
+ var cancelDisabled = Atomics.load(HEAPU32, (threadInfoStruct + 72 ) >> 2);
+ if (cancelDisabled) return;
+ var canceled = Atomics.load(HEAPU32, (threadInfoStruct + 0 ) >> 2);
+ if (canceled == 2) throw 'Canceled!';
+ }function _pthread_join(thread, status) {
+ if (!thread) {
+ Module['printErr']('pthread_join attempted on a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ if (ENVIRONMENT_IS_PTHREAD && selfThreadId == thread) {
+ Module['printErr']('PThread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ else if (!ENVIRONMENT_IS_PTHREAD && PThread.mainThreadBlock == thread) {
+ Module['printErr']('Main thread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_join attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var detached = Atomics.load(HEAPU32, (thread + 80 ) >> 2);
+ if (detached) {
+ Module['printErr']('Attempted to join thread ' + thread + ', which was already detached!');
+ return ERRNO_CODES.EINVAL; // The thread is already detached, can no longer join it!
+ }
+ for (;;) {
+ var threadStatus = Atomics.load(HEAPU32, (thread + 0 ) >> 2);
+ if (threadStatus == 1) { // Exited?
+ var threadExitCode = Atomics.load(HEAPU32, (thread + 4 ) >> 2);
+ if (status) HEAP32[((status)>>2)]=threadExitCode;
+ Atomics.store(HEAPU32, (thread + 80 ) >> 2, 1); // Mark the thread as detached.
+
+ if (!ENVIRONMENT_IS_PTHREAD) __cleanup_thread(thread);
+ else postMessage({ cmd: 'cleanupThread', thread: thread});
+ return 0;
+ }
+ // TODO HACK! Replace the _js variant with just _pthread_testcancel:
+ //_pthread_testcancel();
+ __pthread_testcancel_js();
+ // In main runtime thread (the thread that initialized the Emscripten C runtime and launched main()), assist pthreads in performing operations
+ // that they need to access the Emscripten main runtime for.
+ if (!ENVIRONMENT_IS_PTHREAD) _emscripten_main_thread_process_queued_calls();
+ _emscripten_futex_wait(thread + 0, threadStatus, ENVIRONMENT_IS_PTHREAD ? 100 : 1);
+ }
+ }
@@ -5494,12 +9235,6 @@ function copyTempDouble(ptr) {
win.shouldClose = value;
}
- function _glfwWindowShouldClose(winid) {
- var win = GLFW.WindowFromId(winid);
- if (!win) return 0;
- return win.shouldClose;
- }
-
function _emscripten_glClientActiveTexture() {
Module['printErr']('missing function: emscripten_glClientActiveTexture'); abort(-1);
}
@@ -5551,8 +9286,6 @@ function copyTempDouble(ptr) {
HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target, pname);
}
- function _glfwWaitEvents() {}
-
function _emscripten_glStencilOpSeparate(x0, x1, x2, x3) { GLctx['stencilOpSeparate'](x0, x1, x2, x3) }
function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) {
@@ -5611,45 +9344,45 @@ function copyTempDouble(ptr) {
function _glDepthFunc(x0) { GLctx['depthFunc'](x0) }
-
- var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
- Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
- Module["___udivmoddi4"] = ___udivmoddi4;
- Module["___uremdi3"] = ___uremdi3;
+ var __main_thread_futex_wait_address; if (ENVIRONMENT_IS_PTHREAD) __main_thread_futex_wait_address = PthreadWorkerInit.__main_thread_futex_wait_address; else PthreadWorkerInit.__main_thread_futex_wait_address = __main_thread_futex_wait_address = allocate(1, "i32*", ALLOC_STATIC);function _emscripten_futex_wait(addr, val, timeout) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0) return -22;
+ // dump('futex_wait addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ENVIRONMENT_IS_WORKER) {
+ var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout);
+ // dump('futex_wait done by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ret === 'timed-out') return -110;
+ if (ret === 'not-equal') return -11;
+ if (ret === 'ok') return 0;
+ throw 'Atomics.wait returned an unexpected value ' + ret;
+ } else {
+ // Atomics.wait is not available in the main browser thread, so simulate it via busy spinning.
+ var loadedVal = Atomics.load(HEAP32, addr >> 2);
+ if (val != loadedVal) return -11;
+
+ var tNow = performance.now();
+ var tEnd = tNow + timeout;
+
+
+ // Register globally which address the main thread is simulating to be waiting on. When zero, main thread is not waiting on anything,
+ // and on nonzero, the contents of address pointed by __main_thread_futex_wait_address tell which address the main thread is simulating its wait on.
+ Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr);
+ var ourWaitAddress = addr; // We may recursively re-enter this function while processing queued calls, in which case we'll do a spurious wakeup of the older wait operation.
+ while (addr == ourWaitAddress) {
+ tNow = performance.now();
+ if (tNow > tEnd) {
+ return -110;
+ }
+ _emscripten_main_thread_process_queued_calls(); // We are performing a blocking loop here, so must pump any pthreads if they want to perform operations that are proxied.
+ addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); // Look for a worker thread waking us up.
+ }
+ return 0;
+ }
+ }
function _emscripten_glClearDepthf(x0) { GLctx['clearDepth'](x0) }
function _emscripten_glClear(x0) { GLctx['clear'](x0) }
-
- function _emscripten_get_now_is_monotonic() {
- // return whether emscripten_get_now is guaranteed monotonic; the Date.now
- // implementation is not :(
- return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
- ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
- }
-
- var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
-
- function ___setErrNo(value) {
- if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
- else Module.printErr('failed to set errno from JS');
- return value;
- }function _clock_gettime(clk_id, tp) {
- // int clock_gettime(clockid_t clk_id, struct timespec *tp);
- var now;
- if (clk_id === 0) {
- now = Date.now();
- } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
- now = _emscripten_get_now();
- } else {
- ___setErrNo(ERRNO_CODES.EINVAL);
- return -1;
- }
- HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
- HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
- return 0;
- }
function _emscripten_glBindBuffer(target, buffer) {
var bufferObj = buffer ? GL.buffers[buffer] : null;
@@ -5736,6 +9469,13 @@ function copyTempDouble(ptr) {
return 0;
}
+
+
+ var cttz_i8; if (ENVIRONMENT_IS_PTHREAD) cttz_i8 = PthreadWorkerInit.cttz_i8; else PthreadWorkerInit.cttz_i8 = cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
+ Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
+ Module["___udivmoddi4"] = ___udivmoddi4;
+ Module["___uremdi3"] = ___uremdi3;
+
function _glGetUniformLocation(program, name) {
name = Pointer_stringify(name);
@@ -5830,6 +9570,8 @@ function copyTempDouble(ptr) {
GLFW.setCursorPosCallback(winid, cbfun);
}
+ function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
function _glBindAttribLocation(program, index, name) {
name = Pointer_stringify(name);
GLctx.bindAttribLocation(GL.programs[program], index, name);
@@ -5913,6 +9655,43 @@ function copyTempDouble(ptr) {
GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size));
}
+ function _emscripten_futex_wake(addr, count) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0 || count < 0) return -22;
+ if (count == 0) return 0;
+ // dump('futex_wake addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+
+ // See if main thread is waiting on this address? If so, wake it up by resetting its wake location to zero.
+ // Note that this is not a fair procedure, since we always wake main thread first before any workers, so
+ // this scheme does not adhere to real queue-based waiting.
+ var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2);
+ var mainThreadWoken = 0;
+ if (mainThreadWaitAddress == addr) {
+ var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0);
+ if (loadedAddr == mainThreadWaitAddress) {
+ --count;
+ mainThreadWoken = 1;
+ if (count <= 0) return 1;
+ }
+ }
+
+ // Wake any workers waiting on this address.
+ var ret = Atomics.wake(HEAP32, addr >> 2, count);
+ if (ret >= 0) return ret + mainThreadWoken;
+ throw 'Atomics.wake returned an unexpected value ' + ret;
+ }
+
+ function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
+ var log = GLctx.getProgramInfoLog(GL.programs[program]);
+ if (log === null) log = '(unknown error)';
+
+ if (maxLength > 0 && infoLog) {
+ var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
+ if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
+ } else {
+ if (length) HEAP32[((length)>>2)]=0;
+ }
+ }
+
function _emscripten_glGenFramebuffers(n, ids) {
for (var i = 0; i < n; ++i) {
var framebuffer = GLctx.createFramebuffer();
@@ -6019,8 +9798,181 @@ function copyTempDouble(ptr) {
GLctx.shaderSource(GL.shaders[shader], source);
}
- function _pthread_create() {
- return 11;
+
+ function __spawn_thread(threadParams) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _spawn_thread() can only ever be called from main application thread!';
+
+ var worker = PThread.getNewWorker();
+ if (worker.pthread !== undefined) throw 'Internal error!';
+ if (!threadParams.pthread_ptr) throw 'Internal error, no pthread ptr!';
+ PThread.runningWorkers.push(worker);
+
+ // Allocate memory for thread-local storage and initialize it to zero.
+ var tlsMemory = _malloc(128 * 4);
+ for (var i = 0; i < 128; ++i) {
+ HEAP32[(((tlsMemory)+(i*4))>>2)]=0;
+ }
+
+ var pthread = PThread.pthreads[threadParams.pthread_ptr] = { // Create a pthread info object to represent this thread.
+ worker: worker,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ allocatedOwnStack: threadParams.allocatedOwnStack,
+ thread: threadParams.pthread_ptr,
+ threadInfoStruct: threadParams.pthread_ptr // Info area for this thread in Emscripten HEAP (shared)
+ };
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 0 ) >> 2, 0); // threadStatus <- 0, meaning not yet exited.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 4 ) >> 2, 0); // threadExitCode <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 20 ) >> 2, 0); // profilerBlock <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 80 ) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 60 ) >> 2, 0); // Mark initial status to unused.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 52 ) >> 2, pthread.threadInfoStruct); // Main thread ID.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 96) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 92) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 8) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 12) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 20) >> 2, threadParams.schedPolicy);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 24) >> 2, threadParams.schedPrio);
+
+ var global_libc = _emscripten_get_global_libc();
+ var global_locale = global_libc + 40;
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 188) >> 2, global_locale);
+
+
+ worker.pthread = pthread;
+
+ // Ask the worker to start executing its pthread entry point function.
+ worker.postMessage({
+ cmd: 'run',
+ start_routine: threadParams.startRoutine,
+ arg: threadParams.arg,
+ threadInfoStruct: threadParams.pthread_ptr,
+ selfThreadId: threadParams.pthread_ptr, // TODO: Remove this since thread ID is now the same as the thread address.
+ parentThreadId: threadParams.parent_pthread_ptr,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ }, threadParams.transferList);
+ }
+
+ function _pthread_getschedparam(thread, policy, schedparam) {
+ if (!policy && !schedparam) return ERRNO_CODES.EINVAL;
+
+ if (!thread) {
+ Module['printErr']('pthread_getschedparam called with a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_getschedparam attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var schedPolicy = Atomics.load(HEAPU32, (thread + 120 + 20 ) >> 2);
+ var schedPrio = Atomics.load(HEAPU32, (thread + 120 + 24 ) >> 2);
+
+ if (policy) HEAP32[((policy)>>2)]=schedPolicy;
+ if (schedparam) HEAP32[((schedparam)>>2)]=schedPrio;
+ return 0;
+ }
+
+ function _pthread_self() {
+ return __pthread_ptr|0;
+ }function _pthread_create(pthread_ptr, attr, start_routine, arg) {
+ if (typeof SharedArrayBuffer === 'undefined') {
+ Module['printErr']('Current environment does not support SharedArrayBuffer, pthreads are not available!');
+ return 11;
+ }
+ if (!pthread_ptr) {
+ Module['printErr']('pthread_create called with a null thread pointer!');
+ return 22;
+ }
+
+ var transferList = []; // List of JS objects that will transfer ownership to the Worker hosting the thread
+
+
+ // Synchronously proxy the thread creation to main thread if possible. If we need to transfer ownership of objects, then
+ // proxy asynchronously via postMessage.
+ if (ENVIRONMENT_IS_PTHREAD && transferList.length == 0) {
+ return _emscripten_sync_run_in_main_thread_4(137, pthread_ptr, attr, start_routine, arg);
+ }
+
+ var stackSize = 0;
+ var stackBase = 0;
+ var detached = 0; // Default thread attr is PTHREAD_CREATE_JOINABLE, i.e. start as not detached.
+ var schedPolicy = 0; /*SCHED_OTHER*/
+ var schedPrio = 0;
+ if (attr) {
+ stackSize = HEAP32[((attr)>>2)];
+ stackBase = HEAP32[(((attr)+(8))>>2)];
+ detached = HEAP32[(((attr)+(12))>>2)] != 0/*PTHREAD_CREATE_JOINABLE*/;
+ var inheritSched = HEAP32[(((attr)+(16))>>2)] == 0/*PTHREAD_INHERIT_SCHED*/;
+ if (inheritSched) {
+ var prevSchedPolicy = HEAP32[(((attr)+(20))>>2)];
+ var prevSchedPrio = HEAP32[(((attr)+(24))>>2)];
+ _pthread_getschedparam(_pthread_self(), attr + 20, attr + 24);
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ HEAP32[(((attr)+(20))>>2)]=prevSchedPolicy;
+ HEAP32[(((attr)+(24))>>2)]=prevSchedPrio;
+ } else {
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ }
+ }
+ stackSize += 81920 /*DEFAULT_STACK_SIZE*/;
+ var allocatedOwnStack = stackBase == 0; // If allocatedOwnStack == true, then the pthread impl maintains the stack allocation.
+ if (allocatedOwnStack) {
+ stackBase = _malloc(stackSize); // Allocate a stack if the user doesn't want to place the stack in a custom memory area.
+ } else {
+ // Musl stores the stack base address assuming stack grows downwards, so adjust it to Emscripten convention that the
+ // stack grows upwards instead.
+ stackBase -= stackSize;
+ assert(stackBase > 0);
+ }
+
+ // Allocate thread block (pthread_t structure).
+ var threadInfoStruct = _malloc(244);
+ for (var i = 0; i < 244 >> 2; ++i) HEAPU32[(threadInfoStruct>>2) + i] = 0; // zero-initialize thread structure.
+ HEAP32[((pthread_ptr)>>2)]=threadInfoStruct;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((threadInfoStruct)+(24))>>2)]=threadInfoStruct;
+
+ // pthread struct robust_list head should point to itself.
+ var headPtr = threadInfoStruct + 168;
+ HEAP32[((headPtr)>>2)]=headPtr;
+
+ var threadParams = {
+ stackBase: stackBase,
+ stackSize: stackSize,
+ allocatedOwnStack: allocatedOwnStack,
+ schedPolicy: schedPolicy,
+ schedPrio: schedPrio,
+ detached: detached,
+ startRoutine: start_routine,
+ pthread_ptr: threadInfoStruct,
+ parent_pthread_ptr: _pthread_self(),
+ arg: arg,
+ transferList: transferList
+ };
+
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // The prepopulated pool of web workers that can host pthreads is stored in the main JS thread. Therefore if a
+ // pthread is attempting to spawn a new thread, the thread creation must be deferred to the main JS thread.
+ threadParams.cmd = 'spawnThread';
+ postMessage(threadParams, transferList);
+ } else {
+ // We are the main thread, so we have the pthread warmup pool in this thread and can fire off JS thread creation
+ // directly ourselves.
+ __spawn_thread(threadParams);
+ }
+
+ return 0;
}
function _emscripten_glDrawArrays(mode, first, count) {
@@ -6092,6 +10044,11 @@ function copyTempDouble(ptr) {
GLctx.bindBuffer(target, bufferObj);
}
+
+ function _emscripten_set_current_thread_status_js(newStatus) {
+ }
+ Module["_emscripten_set_current_thread_status"] = _emscripten_set_current_thread_status;
+
function _emscripten_glVertexAttrib4fv(index, v) {
GLctx.vertexAttrib4f(index, HEAPF32[v>>2], HEAPF32[v+4>>2], HEAPF32[v+8>>2], HEAPF32[v+12>>2]);
@@ -6108,6 +10065,61 @@ function copyTempDouble(ptr) {
Module["_bitshift64Lshr"] = _bitshift64Lshr;
+ function _confstr(name, buf, len) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(68, name, buf, len);
+ // size_t confstr(int name, char *buf, size_t len);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/confstr.html
+ var value;
+ switch (name) {
+ case 0:
+ value = ENV['PATH'] || '/';
+ break;
+ case 1:
+ // Mimicking glibc.
+ value = 'POSIX_V6_ILP32_OFF32\nPOSIX_V6_ILP32_OFFBIG';
+ break;
+ case 2:
+ // This JS implementation was tested against this glibc version.
+ value = 'glibc 2.14';
+ break;
+ case 3:
+ // We don't support pthreads.
+ value = '';
+ break;
+ case 1118:
+ case 1122:
+ case 1124:
+ case 1125:
+ case 1126:
+ case 1128:
+ case 1129:
+ case 1130:
+ value = '';
+ break;
+ case 1116:
+ case 1117:
+ case 1121:
+ value = '-m32';
+ break;
+ case 1120:
+ value = '-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64';
+ break;
+ default:
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return 0;
+ }
+ if (len == 0 || buf == 0) {
+ return value.length + 1;
+ } else {
+ var length = Math.min(len, value.length);
+ for (var i = 0; i < length; i++) {
+ HEAP8[(((buf)+(i))>>0)]=value.charCodeAt(i);
+ }
+ if (len > length) HEAP8[(((buf)+(i++))>>0)]=0;
+ return i;
+ }
+ }
+
function _glBufferData(target, size, data, usage) {
if (!data) {
GLctx.bufferData(target, size, usage);
@@ -6122,6 +10134,24 @@ function copyTempDouble(ptr) {
return GLctx.isShader(s);
}
+ function _getenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(111, 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 _emscripten_conditional_set_current_thread_status_js(expectedStatus, newStatus) {
+ }
+ Module["_emscripten_conditional_set_current_thread_status"] = _emscripten_conditional_set_current_thread_status;
+
function _emscripten_glDrawBuffers(n, bufs) {
var bufArray = GL.tempFixedLengthArray[n];
@@ -6200,16 +10230,9 @@ function copyTempDouble(ptr) {
GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);
}
- function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
- var log = GLctx.getProgramInfoLog(GL.programs[program]);
- if (log === null) log = '(unknown error)';
-
- if (maxLength > 0 && infoLog) {
- var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
- if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
- } else {
- if (length) HEAP32[((length)>>2)]=0;
- }
+ function ___assert_fail(condition, filename, line, func) {
+ ABORT = true;
+ throw 'Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + stackTrace();
}
function _emscripten_glVertexAttribDivisor(index, divisor) {
@@ -6248,6 +10271,26 @@ function copyTempDouble(ptr) {
GLctx['bindVertexArray'](GL.vaos[vao]);
}
+ function _setenv(envname, envval, overwrite) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(113, envname, envval, overwrite);
+ // int setenv(const char *envname, const char *envval, int overwrite);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html
+ if (envname === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ var name = Pointer_stringify(envname);
+ var val = Pointer_stringify(envval);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name) && !overwrite) return 0;
+ ENV[name] = val;
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glLoadMatrixf() {
Module['printErr']('missing function: emscripten_glLoadMatrixf'); abort(-1);
}
@@ -6402,6 +10445,16 @@ function copyTempDouble(ptr) {
GLctx.validateProgram(GL.programs[program]);
}
+ function _emscripten_syscall(which, varargs) {
+ switch (which) {
+ case 54: return ___syscall54(which, varargs);
+ case 6: return ___syscall6(which, varargs);
+ case 140: return ___syscall140(which, varargs);
+ case 146: return ___syscall146(which, varargs);
+ default: throw "surprising proxied syscall: " + which;
+ }
+ }
+
function _glTexParameteri(x0, x1, x2) { GLctx['texParameteri'](x0, x1, x2) }
function _glFrontFace(x0) { GLctx['frontFace'](x0) }
@@ -6430,6 +10483,72 @@ function copyTempDouble(ptr) {
}
}
+ function _fpathconf(fildes, name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(46, fildes, name);
+ // long fpathconf(int fildes, int name);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/encrypt.html
+ // NOTE: The first parameter is ignored, so pathconf == fpathconf.
+ // The constants here aren't real values. Just mimicking glibc.
+ switch (name) {
+ case 0:
+ return 32000;
+ case 1:
+ case 2:
+ case 3:
+ return 255;
+ case 4:
+ case 5:
+ case 16:
+ case 17:
+ case 18:
+ return 4096;
+ case 6:
+ case 7:
+ case 20:
+ return 1;
+ case 8:
+ return 0;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 14:
+ case 15:
+ case 19:
+ return -1;
+ case 13:
+ return 64;
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
+ function _putenv(string) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(115, 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 _emscripten_glGenVertexArrays(n, arrays) {
for (var i = 0; i < n; i++) {
@@ -6454,10 +10573,32 @@ function copyTempDouble(ptr) {
return ret;
}
+
function _emscripten_glGetBooleanv(name_, p) {
emscriptenWebGLGet(name_, p, 'Boolean');
}
+ function _utimes(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(13, path, times);
+ var time;
+ if (times) {
+ var offset = 8 + 0;
+ time = HEAP32[(((times)+(offset))>>2)] * 1000;
+ offset = 8 + 4;
+ time += HEAP32[(((times)+(offset))>>2)] / 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCompileShader(shader) {
GLctx.compileShader(GL.shaders[shader]);
}
@@ -6484,8 +10625,14 @@ Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, res
Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) };
+FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;Module["FS_unlink"] = FS.unlink;;
+__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() });;
+if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); };
JSEvents.staticInit();;
-/* flush anything remaining in the buffer during shutdown */ __ATEXIT__.push(function() { var fflush = Module["_fflush"]; if (fflush) fflush(0); var printChar = ___syscall146.printChar; if (!printChar) return; var buffers = ___syscall146.buffers; if (buffers[1].length) printChar(1, 10); if (buffers[2].length) printChar(2, 10); });;
+if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock();;
+if (!ENVIRONMENT_IS_PTHREAD) ___buildEnvironment(ENV);;
+if (!ENVIRONMENT_IS_PTHREAD) {
+ // Only main thread initializes these, pthreads copy them over at thread worker init time (in pthread-main.js)
DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC);
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
@@ -6500,6 +10647,8 @@ staticSealed = true; // seal the static portion of memory
assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
+}
+
function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
@@ -6767,8 +10916,8 @@ function invoke_viiii(index,a1,a2,a3,a4) {
}
Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity };
-
-Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_glUniform4f": _glUniform4f, "_glfwWindowShouldClose": _glfwWindowShouldClose, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "_glLinkProgram": _glLinkProgram, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "___syscall146": ___syscall146, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glGetFloatv": _glGetFloatv, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_glfwWaitEvents": _glfwWaitEvents, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
+Module.asmGlobalArg['Atomics'] = Atomics;
+Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "___assert_fail": ___assert_fail, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_sysconf": _sysconf, "_utime": _utime, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_chroot": _chroot, "_glUniform4f": _glUniform4f, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "__pthread_testcancel_js": __pthread_testcancel_js, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_unsetenv": _unsetenv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "___syscall146": ___syscall146, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_asm_const_v": _emscripten_asm_const_v, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_pthread_self": _pthread_self, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "__register_pthread_ptr": __register_pthread_ptr, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "_gettimeofday": _gettimeofday, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "__spawn_thread": __spawn_thread, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_emscripten_conditional_set_current_thread_status_js": _emscripten_conditional_set_current_thread_status_js, "_putenv": _putenv, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_fpathconf": _fpathconf, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_is_main_runtime_thread": _emscripten_is_main_runtime_thread, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "___buildEnvironment": ___buildEnvironment, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_utimes": _utimes, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_tzset": _tzset, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_glGetFloatv": _glGetFloatv, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "___clock_gettime": ___clock_gettime, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_clearenv": _clearenv, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_getenv": _getenv, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_emscripten_futex_wake": _emscripten_futex_wake, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "__cleanup_thread": __cleanup_thread, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_set_current_thread_status_js": _emscripten_set_current_thread_status_js, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_syscall": _emscripten_syscall, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_glLinkProgram": _glLinkProgram, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_futex_wait": _emscripten_futex_wait, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "___pthread_setcancelstate": ___pthread_setcancelstate, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_confstr": _confstr, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_pthread_getschedparam": _pthread_getschedparam, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_atexit": _atexit, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_setenv": _setenv, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
'use asm';
@@ -6873,7 +11022,6 @@ var asm = (function(global, env, buffer) {
var invoke_viiii=env.invoke_viiii;
var _emscripten_glGetTexParameterfv=env._emscripten_glGetTexParameterfv;
var _glUseProgram=env._glUseProgram;
- var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _glfwCreateWindow=env._glfwCreateWindow;
var _emscripten_glReleaseShaderCompiler=env._emscripten_glReleaseShaderCompiler;
var _emscripten_glBlendFuncSeparate=env._emscripten_glBlendFuncSeparate;
@@ -6884,6 +11032,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilMaskSeparate=env._emscripten_glStencilMaskSeparate;
var _emscripten_glViewport=env._emscripten_glViewport;
var _emscripten_glFrontFace=env._emscripten_glFrontFace;
+ var ___assert_fail=env.___assert_fail;
var _glDeleteProgram=env._glDeleteProgram;
var _emscripten_glUniform3fv=env._emscripten_glUniform3fv;
var _emscripten_glPolygonOffset=env._emscripten_glPolygonOffset;
@@ -6896,25 +11045,26 @@ var asm = (function(global, env, buffer) {
var _emscripten_set_fullscreenchange_callback=env._emscripten_set_fullscreenchange_callback;
var _emscripten_set_touchmove_callback=env._emscripten_set_touchmove_callback;
var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing;
- var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _glDisable=env._glDisable;
var _glBlendFunc=env._glBlendFunc;
var _emscripten_glDisableVertexAttribArray=env._emscripten_glDisableVertexAttribArray;
var _glGetAttribLocation=env._glGetAttribLocation;
var _glDisableVertexAttribArray=env._glDisableVertexAttribArray;
var _glCreateShader=env._glCreateShader;
+ var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _sysconf=env._sysconf;
+ var _utime=env._utime;
var _emscripten_glSampleCoverage=env._emscripten_glSampleCoverage;
var _emscripten_glVertexPointer=env._emscripten_glVertexPointer;
var _emscripten_set_touchstart_callback=env._emscripten_set_touchstart_callback;
var emscriptenWebGLComputeImageSize=env.emscriptenWebGLComputeImageSize;
var _emscripten_glGetBooleanv=env._emscripten_glGetBooleanv;
var _emscripten_glGetShaderSource=env._emscripten_glGetShaderSource;
+ var _chroot=env._chroot;
var _glUniform4f=env._glUniform4f;
- var _glfwWindowShouldClose=env._glfwWindowShouldClose;
var _llvm_stacksave=env._llvm_stacksave;
var _emscripten_glUniform1i=env._emscripten_glUniform1i;
- var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
- var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
var _emscripten_glGenBuffers=env._emscripten_glGenBuffers;
var _emscripten_glDeleteObjectARB=env._emscripten_glDeleteObjectARB;
var _glfwSetWindowSizeCallback=env._glfwSetWindowSizeCallback;
@@ -6926,9 +11076,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glIsFramebuffer=env._emscripten_glIsFramebuffer;
var _emscripten_glIsEnabled=env._emscripten_glIsEnabled;
var _emscripten_glScissor=env._emscripten_glScissor;
+ var __pthread_testcancel_js=env.__pthread_testcancel_js;
var _emscripten_glVertexAttrib4fv=env._emscripten_glVertexAttrib4fv;
var _emscripten_glFramebufferTexture2D=env._emscripten_glFramebufferTexture2D;
var _emscripten_glTexParameteriv=env._emscripten_glTexParameteriv;
+ var _unsetenv=env._unsetenv;
var _emscripten_glBindProgramARB=env._emscripten_glBindProgramARB;
var _emscripten_glStencilOpSeparate=env._emscripten_glStencilOpSeparate;
var _emscripten_glFramebufferRenderbuffer=env._emscripten_glFramebufferRenderbuffer;
@@ -6936,13 +11088,14 @@ var asm = (function(global, env, buffer) {
var _glfwSetErrorCallback=env._glfwSetErrorCallback;
var _glfwDefaultWindowHints=env._glfwDefaultWindowHints;
var _glfwDestroyWindow=env._glfwDestroyWindow;
- var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
+ var ___syscall146=env.___syscall146;
var _emscripten_glGetActiveAttrib=env._emscripten_glGetActiveAttrib;
var _emscripten_glAttachShader=env._emscripten_glAttachShader;
var _emscripten_get_now_is_monotonic=env._emscripten_get_now_is_monotonic;
var _emscripten_glUniform2i=env._emscripten_glUniform2i;
var _emscripten_glUniform2f=env._emscripten_glUniform2f;
var _emscripten_glTexParameterfv=env._emscripten_glTexParameterfv;
+ var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
var _emscripten_glUniformMatrix2fv=env._emscripten_glUniformMatrix2fv;
var _glGetProgramInfoLog=env._glGetProgramInfoLog;
var _glfwSetScrollCallback=env._glfwSetScrollCallback;
@@ -6967,17 +11120,21 @@ var asm = (function(global, env, buffer) {
var _glDepthFunc=env._glDepthFunc;
var _emscripten_glClientActiveTexture=env._emscripten_glClientActiveTexture;
var _emscripten_glVertexAttrib2f=env._emscripten_glVertexAttrib2f;
+ var _emscripten_asm_const_v=env._emscripten_asm_const_v;
var _emscripten_glFlush=env._emscripten_glFlush;
var _emscripten_glBlendFunc=env._emscripten_glBlendFunc;
var _emscripten_glCheckFramebufferStatus=env._emscripten_glCheckFramebufferStatus;
var _emscripten_glGenerateMipmap=env._emscripten_glGenerateMipmap;
var _emscripten_glGetError=env._emscripten_glGetError;
var _emscripten_glClearDepthf=env._emscripten_glClearDepthf;
+ var _pthread_self=env._pthread_self;
var _emscripten_glBufferData=env._emscripten_glBufferData;
var _emscripten_glUniform3i=env._emscripten_glUniform3i;
+ var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
var _emscripten_glRotatef=env._emscripten_glRotatef;
var _emscripten_glDeleteShader=env._emscripten_glDeleteShader;
var _glEnable=env._glEnable;
+ var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
var _emscripten_glReadPixels=env._emscripten_glReadPixels;
var _emscripten_glMatrixMode=env._emscripten_glMatrixMode;
var _glGetString=env._glGetString;
@@ -6985,7 +11142,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glGetUniformLocation=env._emscripten_glGetUniformLocation;
var emscriptenWebGLGet=env.emscriptenWebGLGet;
var _emscripten_glEnableVertexAttribArray=env._emscripten_glEnableVertexAttribArray;
- var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
+ var __register_pthread_ptr=env.__register_pthread_ptr;
var _emscripten_get_now=env._emscripten_get_now;
var _emscripten_glNormalPointer=env._emscripten_glNormalPointer;
var _glAttachShader=env._glAttachShader;
@@ -6994,41 +11151,49 @@ var asm = (function(global, env, buffer) {
var _glCreateProgram=env._glCreateProgram;
var _glUniformMatrix4fv=env._glUniformMatrix4fv;
var _emscripten_glClearDepth=env._emscripten_glClearDepth;
- var _glLinkProgram=env._glLinkProgram;
var ___lock=env.___lock;
var emscriptenWebGLGetTexPixelData=env.emscriptenWebGLGetTexPixelData;
var ___syscall6=env.___syscall6;
- var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
+ var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
var _emscripten_glVertexAttrib3f=env._emscripten_glVertexAttrib3f;
var _time=env._time;
- var ___syscall146=env.___syscall146;
+ var _gettimeofday=env._gettimeofday;
+ var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
var _emscripten_glGetFramebufferAttachmentParameteriv=env._emscripten_glGetFramebufferAttachmentParameteriv;
var _emscripten_glBlendEquationSeparate=env._emscripten_glBlendEquationSeparate;
var _exit=env._exit;
var _emscripten_glEnableClientState=env._emscripten_glEnableClientState;
+ var __spawn_thread=env.__spawn_thread;
var _emscripten_glUniform4i=env._emscripten_glUniform4i;
+ var _emscripten_conditional_set_current_thread_status_js=env._emscripten_conditional_set_current_thread_status_js;
+ var _putenv=env._putenv;
var _pthread_join=env._pthread_join;
var _glCullFace=env._glCullFace;
var _emscripten_glGetPointerv=env._emscripten_glGetPointerv;
var _emscripten_set_keypress_callback=env._emscripten_set_keypress_callback;
var __emscripten_sample_gamepad_data=env.__emscripten_sample_gamepad_data;
+ var _fpathconf=env._fpathconf;
var _emscripten_get_gamepad_status=env._emscripten_get_gamepad_status;
var _emscripten_glUniform4f=env._emscripten_glUniform4f;
var _emscripten_glUniform2fv=env._emscripten_glUniform2fv;
var _glfwGetVideoModes=env._glfwGetVideoModes;
var ___unlock=env.___unlock;
var _emscripten_set_click_callback=env._emscripten_set_click_callback;
+ var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_is_main_runtime_thread=env._emscripten_is_main_runtime_thread;
var _emscripten_glShaderBinary=env._emscripten_glShaderBinary;
var _emscripten_glDrawElements=env._emscripten_glDrawElements;
var _glVertexAttribPointer=env._glVertexAttribPointer;
var _emscripten_get_num_gamepads=env._emscripten_get_num_gamepads;
+ var ___buildEnvironment=env.___buildEnvironment;
var _glCompressedTexImage2D=env._glCompressedTexImage2D;
+ var _utimes=env._utimes;
var _emscripten_glUniform1iv=env._emscripten_glUniform1iv;
var _emscripten_glGetVertexAttribPointerv=env._emscripten_glGetVertexAttribPointerv;
var _glClearDepthf=env._glClearDepthf;
var _emscripten_glCompressedTexSubImage2D=env._emscripten_glCompressedTexSubImage2D;
var emscriptenWebGLGetUniform=env.emscriptenWebGLGetUniform;
- var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
+ var _tzset=env._tzset;
var _emscripten_glDeleteVertexArrays=env._emscripten_glDeleteVertexArrays;
var _glfwSetWindowShouldClose=env._glfwSetWindowShouldClose;
var _emscripten_glUniform1fv=env._emscripten_glUniform1fv;
@@ -7039,29 +11204,33 @@ var asm = (function(global, env, buffer) {
var _emscripten_glHint=env._emscripten_glHint;
var _glfwSetCharCallback=env._glfwSetCharCallback;
var emscriptenWebGLGetVertexAttrib=env.emscriptenWebGLGetVertexAttrib;
- var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
+ var _glGetFloatv=env._glGetFloatv;
var _emscripten_glDeleteProgram=env._emscripten_glDeleteProgram;
var _emscripten_glDeleteRenderbuffers=env._emscripten_glDeleteRenderbuffers;
+ var ___clock_gettime=env.___clock_gettime;
var _emscripten_glDrawElementsInstanced=env._emscripten_glDrawElementsInstanced;
var _emscripten_glVertexAttrib4f=env._emscripten_glVertexAttrib4f;
var _glDrawArrays=env._glDrawArrays;
var _emscripten_glTexSubImage2D=env._emscripten_glTexSubImage2D;
- var _emscripten_memcpy_big=env._emscripten_memcpy_big;
+ var _clearenv=env._clearenv;
var _emscripten_glPixelStorei=env._emscripten_glPixelStorei;
var _glCompileShader=env._glCompileShader;
var _emscripten_get_pointerlock_status=env._emscripten_get_pointerlock_status;
+ var _emscripten_memcpy_big=env._emscripten_memcpy_big;
var _emscripten_glUniformMatrix3fv=env._emscripten_glUniformMatrix3fv;
var _emscripten_glColorPointer=env._emscripten_glColorPointer;
+ var _getenv=env._getenv;
var _emscripten_glDepthRange=env._emscripten_glDepthRange;
var _emscripten_glGetBufferParameteriv=env._emscripten_glGetBufferParameteriv;
var _emscripten_glFinish=env._emscripten_glFinish;
- var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
- var _glGetFloatv=env._glGetFloatv;
+ var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _emscripten_asm_const_iii=env._emscripten_asm_const_iii;
var _emscripten_glDepthMask=env._emscripten_glDepthMask;
var _glfwSetWindowIconifyCallback=env._glfwSetWindowIconifyCallback;
var _emscripten_glDrawBuffers=env._emscripten_glDrawBuffers;
var _glfwTerminate=env._glfwTerminate;
+ var _emscripten_futex_wake=env._emscripten_futex_wake;
var _glFrontFace=env._glFrontFace;
var _emscripten_glGetObjectParameterivARB=env._emscripten_glGetObjectParameterivARB;
var _emscripten_exit_pointerlock=env._emscripten_exit_pointerlock;
@@ -7071,10 +11240,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilFunc=env._emscripten_glStencilFunc;
var _abort=env._abort;
var _emscripten_glGetUniformiv=env._emscripten_glGetUniformiv;
+ var __cleanup_thread=env.__cleanup_thread;
var _glDeleteBuffers=env._glDeleteBuffers;
var _glBufferData=env._glBufferData;
var _glTexImage2D=env._glTexImage2D;
- var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
+ var _emscripten_set_current_thread_status_js=env._emscripten_set_current_thread_status_js;
var _glfwSetKeyCallback=env._glfwSetKeyCallback;
var _emscripten_glGenFramebuffers=env._emscripten_glGenFramebuffers;
var _emscripten_glUniformMatrix4fv=env._emscripten_glUniformMatrix4fv;
@@ -7085,8 +11255,9 @@ var asm = (function(global, env, buffer) {
var _emscripten_glBindFramebuffer=env._emscripten_glBindFramebuffer;
var _emscripten_glIsRenderbuffer=env._emscripten_glIsRenderbuffer;
var _glfwGetTime=env._glfwGetTime;
- var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _emscripten_set_gamepadconnected_callback=env._emscripten_set_gamepadconnected_callback;
+ var _emscripten_syscall=env._emscripten_syscall;
var _emscripten_glGetVertexAttribiv=env._emscripten_glGetVertexAttribiv;
var _emscripten_glBindVertexArray=env._emscripten_glBindVertexArray;
var _emscripten_glDrawArraysInstanced=env._emscripten_glDrawArraysInstanced;
@@ -7096,18 +11267,19 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDeleteTextures=env._emscripten_glDeleteTextures;
var _emscripten_glBindRenderbuffer=env._emscripten_glBindRenderbuffer;
var _glfwGetPrimaryMonitor=env._glfwGetPrimaryMonitor;
- var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
+ var _glLinkProgram=env._glLinkProgram;
var _emscripten_glVertexAttribDivisor=env._emscripten_glVertexAttribDivisor;
var _emscripten_set_touchend_callback=env._emscripten_set_touchend_callback;
var _emscripten_glGetUniformfv=env._emscripten_glGetUniformfv;
var _emscripten_glGetVertexAttribfv=env._emscripten_glGetVertexAttribfv;
var _emscripten_glGetRenderbufferParameteriv=env._emscripten_glGetRenderbufferParameteriv;
+ var _emscripten_futex_wait=env._emscripten_futex_wait;
var _emscripten_glDeleteFramebuffers=env._emscripten_glDeleteFramebuffers;
var _glGetShaderiv=env._glGetShaderiv;
var _emscripten_glVertexAttrib3fv=env._emscripten_glVertexAttrib3fv;
var _glGetUniformLocation=env._glGetUniformLocation;
var _emscripten_glGetInfoLogARB=env._emscripten_glGetInfoLogARB;
- var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
var _glClear=env._glClear;
var _glGenTextures=env._glGenTextures;
var _emscripten_glDisable=env._emscripten_glDisable;
@@ -7117,12 +11289,14 @@ var asm = (function(global, env, buffer) {
var _emscripten_glUniform3f=env._emscripten_glUniform3f;
var _emscripten_glGetShaderInfoLog=env._emscripten_glGetShaderInfoLog;
var _emscripten_glStencilOp=env._emscripten_glStencilOp;
+ var ___pthread_setcancelstate=env.___pthread_setcancelstate;
var _glBindAttribLocation=env._glBindAttribLocation;
var _glPixelStorei=env._glPixelStorei;
var _emscripten_glColorMask=env._emscripten_glColorMask;
var _emscripten_glLinkProgram=env._emscripten_glLinkProgram;
var _emscripten_glBlendEquation=env._emscripten_glBlendEquation;
var _emscripten_glIsTexture=env._emscripten_glIsTexture;
+ var _confstr=env._confstr;
var _emscripten_glGetProgramiv=env._emscripten_glGetProgramiv;
var _emscripten_glVertexAttrib1fv=env._emscripten_glVertexAttrib1fv;
var _emscripten_glBindTexture=env._emscripten_glBindTexture;
@@ -7132,29 +11306,42 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDrawRangeElements=env._emscripten_glDrawRangeElements;
var ___syscall54=env.___syscall54;
var _emscripten_glDeleteBuffers=env._emscripten_glDeleteBuffers;
- var _glfwWaitEvents=env._glfwWaitEvents;
+ var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
var _glfwSwapBuffers=env._glfwSwapBuffers;
var _pthread_create=env._pthread_create;
var _emscripten_set_main_loop=env._emscripten_set_main_loop;
var _emscripten_glGetProgramInfoLog=env._emscripten_glGetProgramInfoLog;
var _glfwWindowHint=env._glfwWindowHint;
+ var _pthread_getschedparam=env._pthread_getschedparam;
var _emscripten_glIsShader=env._emscripten_glIsShader;
var _emscripten_glUniform4fv=env._emscripten_glUniform4fv;
var _emscripten_glGenVertexArrays=env._emscripten_glGenVertexArrays;
var _emscripten_glDrawArrays=env._emscripten_glDrawArrays;
var _emscripten_glCompressedTexImage2D=env._emscripten_glCompressedTexImage2D;
var _emscripten_glClearColor=env._emscripten_glClearColor;
+ var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
var _emscripten_glCreateProgram=env._emscripten_glCreateProgram;
var _emscripten_glCopyTexSubImage2D=env._emscripten_glCopyTexSubImage2D;
+ var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
var _glTexParameteri=env._glTexParameteri;
var _emscripten_glBindBuffer=env._emscripten_glBindBuffer;
+ var _atexit=env._atexit;
var _emscripten_glGetFloatv=env._emscripten_glGetFloatv;
var _emscripten_glDetachShader=env._emscripten_glDetachShader;
var _glClearColor=env._glClearColor;
var _glfwSetCursorPosCallback=env._glfwSetCursorPosCallback;
- var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
+ var _setenv=env._setenv;
var _emscripten_glCopyTexImage2D=env._emscripten_glCopyTexImage2D;
var _emscripten_glTexImage2D=env._emscripten_glTexImage2D;
+ var Atomics_load=global.Atomics.load;
+ var Atomics_store=global.Atomics.store;
+ var Atomics_exchange=global.Atomics.exchange;
+ var Atomics_compareExchange=global.Atomics.compareExchange;
+ var Atomics_add=global.Atomics.add;
+ var Atomics_sub=global.Atomics.sub;
+ var Atomics_and=global.Atomics.and;
+ var Atomics_or=global.Atomics.or;
+ var Atomics_xor=global.Atomics.xor;
var tempFloat = 0.0;
// EMSCRIPTEN_START_FUNCS
@@ -7203,7 +11390,7 @@ function getTempRet0() {
function _InitPhysics() {
var label = 0, sp = 0;
sp = STACKTOP;
- (_pthread_create((14112|0),(0|0),(2|0),(0|0))|0);
+ (_pthread_create((14264|0),(0|0),(2|0),(0|0))|0);
return;
}
function _PhysicsLoop($0) {
@@ -7211,53 +11398,53 @@ function _PhysicsLoop($0) {
var $$0 = 0, $$010 = 0, $$011 = 0, $$09 = 0, $$0912 = 0, $$0913 = 0, $$pr = 0.0, $1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0;
var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3529] = 1;
- HEAPF64[1726] = 0.0;
+ HEAP32[3567] = 1;
+ HEAPF64[1745] = 0.0;
_InitTimer();
- $1 = HEAP32[3529]|0;
+ $1 = HEAP32[3567]|0;
$2 = ($1|0)==(0);
if (!($2)) {
while(1) {
$3 = (+_GetCurrentTime());
- HEAPF64[1727] = $3;
- $4 = +HEAPF64[1728];
+ HEAPF64[1746] = $3;
+ $4 = +HEAPF64[1747];
$5 = $3 - $4;
- HEAPF64[1729] = $5;
- $6 = +HEAPF64[1726];
+ HEAPF64[1748] = $5;
+ $6 = +HEAPF64[1745];
$7 = $5 + $6;
- HEAPF64[1726] = $7;
+ HEAPF64[1745] = $7;
_MathClamp();
- $$pr = +HEAPF64[1726];
+ $$pr = +HEAPF64[1745];
$8 = !($$pr >= 0.016666666666666666);
if (!($8)) {
while(1) {
_PhysicsStep();
- $9 = +HEAPF64[1729];
- $10 = +HEAPF64[1726];
+ $9 = +HEAPF64[1748];
+ $10 = +HEAPF64[1745];
$11 = $10 - $9;
- HEAPF64[1726] = $11;
+ HEAPF64[1745] = $11;
$12 = !($11 >= 0.016666666666666666);
if ($12) {
break;
}
}
}
- $13 = +HEAPF64[1727];
- HEAPF64[1728] = $13;
- $14 = HEAP32[3529]|0;
+ $13 = +HEAPF64[1746];
+ HEAPF64[1747] = $13;
+ $14 = HEAP32[3567]|0;
$15 = ($14|0)==(0);
if ($15) {
break;
}
}
}
- $16 = HEAP32[3596]|0;
+ $16 = HEAP32[3634]|0;
$$0912 = (($16) + -1)|0;
$17 = ($$0912|0)>(-1);
if ($17) {
$$0913 = $$0912;
while(1) {
- $20 = (14388 + ($$0913<<2)|0);
+ $20 = (14540 + ($$0913<<2)|0);
$21 = HEAP32[$20>>2]|0;
_DestroyPhysicsManifold($21);
$$09 = (($$0913) + -1)|0;
@@ -7269,7 +11456,7 @@ function _PhysicsLoop($0) {
}
}
}
- $18 = HEAP32[3531]|0;
+ $18 = HEAP32[3569]|0;
$$010 = (($18) + -1)|0;
$19 = ($$010|0)>(-1);
if ($19) {
@@ -7278,7 +11465,7 @@ function _PhysicsLoop($0) {
return (0|0);
}
while(1) {
- $23 = (14128 + ($$011<<2)|0);
+ $23 = (14280 + ($$011<<2)|0);
$24 = HEAP32[$23>>2]|0;
_DestroyPhysicsBody($24);
$$0 = (($$011) + -1)|0;
@@ -7313,10 +11500,10 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$6 = sp + 8|0;
$7 = sp;
$8 = (_malloc(500)|0);
- $9 = HEAP32[3530]|0;
+ $9 = HEAP32[3568]|0;
$10 = (($9) + 500)|0;
- HEAP32[3530] = $10;
- $11 = HEAP32[3531]|0;
+ HEAP32[3568] = $10;
+ $11 = HEAP32[3569]|0;
$12 = ($11|0)==(0);
$$0116149 = 0;
L1: while(1) {
@@ -7327,7 +11514,7 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$$0119144 = 0;
}
while(1) {
- $15 = (14128 + ($$0119144<<2)|0);
+ $15 = (14280 + ($$0119144<<2)|0);
$16 = HEAP32[$15>>2]|0;
$17 = HEAP32[$16>>2]|0;
$18 = ($17|0)==($$0116149|0);
@@ -7528,11 +11715,11 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
HEAP32[$120>>2] = 0;
$121 = ((($8)) + 80|0);
HEAP32[$121>>2] = 0;
- $122 = HEAP32[3531]|0;
- $123 = (14128 + ($122<<2)|0);
+ $122 = HEAP32[3569]|0;
+ $123 = (14280 + ($122<<2)|0);
HEAP32[$123>>2] = $8;
$124 = (($122) + 1)|0;
- HEAP32[3531] = $124;
+ HEAP32[3569] = $124;
STACKTOP = sp;return ($8|0);
}
function _CreateRectanglePolygon($0,$1,$2) {
@@ -7714,16 +11901,16 @@ function _DestroyPhysicsBody($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3531]|0;
+ $3 = HEAP32[3569]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3531]|0;
+ $5 = HEAP32[3569]|0;
$$02023 = 0;
while(1) {
- $6 = (14128 + ($$02023<<2)|0);
+ $6 = (14280 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -7742,24 +11929,24 @@ function _DestroyPhysicsBody($0) {
}
}
} while(0);
- $12 = (14128 + ($$021<<2)|0);
+ $12 = (14280 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3530]|0;
+ $14 = HEAP32[3568]|0;
$15 = (($14) + -500)|0;
- HEAP32[3530] = $15;
+ HEAP32[3568] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3531]|0;
+ $16 = HEAP32[3569]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3531]|0;
+ $18 = HEAP32[3569]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14128 + ($$022<<2)|0);
- $25 = (14128 + ($20<<2)|0);
+ $24 = (14280 + ($$022<<2)|0);
+ $25 = (14280 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -7775,7 +11962,7 @@ function _DestroyPhysicsBody($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3531] = $19;
+ HEAP32[3569] = $19;
return;
}
function _Vector2Subtract_4($0,$1,$2) {
@@ -7820,20 +12007,20 @@ function _MathNormalize($0) {
function _GetPhysicsBodiesCount() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[3531]|0;
+ $0 = HEAP32[3569]|0;
return ($0|0);
}
function _GetPhysicsBody($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3531]|0;
+ $1 = HEAP32[3569]|0;
$2 = ($1>>>0)>($0>>>0);
if (!($2)) {
$$0 = 0;
return ($$0|0);
}
- $3 = (14128 + ($0<<2)|0);
+ $3 = (14280 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$0 = $4;
return ($$0|0);
@@ -7842,11 +12029,11 @@ function _GetPhysicsShapeVerticesCount($0) {
$0 = $0|0;
var $$1 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3531]|0;
+ $1 = HEAP32[3569]|0;
$2 = ($1>>>0)>($0>>>0);
L1: do {
if ($2) {
- $3 = (14128 + ($0<<2)|0);
+ $3 = (14280 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$5 = ($4|0)==(0|0);
if ($5) {
@@ -7996,260 +12183,323 @@ function _Mat2Radians($0,$1) {
function _ClosePhysics() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3529] = 0;
- $0 = HEAP32[3528]|0;
+ HEAP32[3567] = 0;
+ $0 = HEAP32[3566]|0;
(_pthread_join(($0|0),(0|0))|0);
return;
}
function _main() {
- var $$0107109 = 0, $$0108 = 0, $$byval_copy10 = 0, $$byval_copy8 = 0, $$byval_copy9 = 0, $$sroa$0$0$$sroa_idx = 0, $$sroa$027$0$$sroa_idx = 0, $$sroa$030$0$$sroa_idx = 0, $$sroa$033$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx26 = 0, $$sroa$228$0$$sroa_idx29 = 0, $$sroa$231$0$$sroa_idx32 = 0, $$sroa$234$0$$sroa_idx35 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0;
- var $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0;
- var $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0;
- var $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0.0, $66 = 0, $67 = 0, $68 = 0.0, $69 = 0.0;
- var $7 = 0, $70 = 0, $71 = 0.0, $72 = 0.0, $73 = 0, $74 = 0.0, $75 = 0, $76 = 0, $77 = 0.0, $78 = 0.0, $79 = 0, $8 = 0, $80 = 0.0, $81 = 0.0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0;
- var $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $exitcond = 0, $exitcond114 = 0, label = 0, sp = 0;
+ var $$byval_copy5 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0.0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0, $19 = 0.0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0.0, $25 = 0;
+ var $26 = 0, $27 = 0.0, $28 = 0.0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0.0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0.0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0.0;
+ var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0.0, $56 = 0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0, $61 = 0;
+ var $62 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 144|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(144|0);
- $$byval_copy10 = sp + 112|0;
- $$byval_copy9 = sp + 104|0;
- $$byval_copy8 = sp + 96|0;
- $0 = sp + 88|0;
- $1 = sp + 80|0;
- $2 = sp + 72|0;
- $3 = sp + 64|0;
- $4 = sp + 56|0;
- $5 = sp + 48|0;
- $6 = sp + 128|0;
- $7 = sp + 24|0;
- $8 = sp + 8|0;
- $9 = sp + 124|0;
- $10 = sp + 120|0;
- $11 = sp + 40|0;
- $12 = sp + 36|0;
- $13 = sp + 32|0;
- $14 = sp + 20|0;
- $15 = sp + 16|0;
- $16 = sp;
+ STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
+ $$byval_copy5 = sp + 48|0;
+ $0 = sp + 40|0;
+ $1 = sp + 32|0;
+ $2 = sp + 24|0;
+ $3 = sp + 16|0;
+ $4 = sp + 8|0;
+ $5 = sp;
_SetConfigFlags(32);
- _InitWindow(800,450,3480);
- _SetTargetFPS(60);
- $17 = (_MeasureText(3515,30)|0);
- $18 = (800 - ($17))|0;
- $19 = (($18) + -10)|0;
+ $6 = HEAP32[2]|0;
+ $7 = HEAP32[3]|0;
+ _InitWindow($6,$7,3248);
+ $8 = HEAP32[2]|0;
+ $9 = (_MeasureText(3283,30)|0);
+ $10 = (($8) + -10)|0;
+ $11 = (($10) - ($9))|0;
+ HEAP32[7731] = $11;
_InitPhysics();
- HEAPF32[$0>>2] = 400.0;
- $20 = ((($0)) + 4|0);
- HEAPF32[$20>>2] = 450.0;
- ;HEAP32[$$byval_copy10>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy10+4>>2]=HEAP32[$0+4>>2]|0;
- $21 = (_CreatePhysicsBodyRectangle($$byval_copy10,800.0,100.0,10.0)|0);
- $22 = ((($21)) + 4|0);
- HEAP32[$22>>2] = 0;
- HEAPF32[$1>>2] = 400.0;
- $23 = ((($1)) + 4|0);
- HEAPF32[$23>>2] = 360.0;
- ;HEAP32[$$byval_copy10>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy10+4>>2]=HEAP32[$1+4>>2]|0;
- $24 = (_CreatePhysicsBodyRectangle($$byval_copy10,10.0,80.0,10.0)|0);
- $25 = ((($24)) + 4|0);
- HEAP32[$25>>2] = 0;
+ $12 = HEAP32[2]|0;
+ $13 = (($12|0) / 2)&-1;
+ $14 = (+($13|0));
+ HEAPF32[$0>>2] = $14;
+ $15 = ((($0)) + 4|0);
+ $16 = HEAP32[3]|0;
+ $17 = (+($16|0));
+ HEAPF32[$15>>2] = $17;
+ $18 = HEAP32[2]|0;
+ $19 = (+($18|0));
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$0+4>>2]|0;
+ $20 = (_CreatePhysicsBodyRectangle($$byval_copy5,$19,100.0,10.0)|0);
+ $21 = ((($20)) + 4|0);
+ HEAP32[$21>>2] = 0;
+ $22 = HEAP32[2]|0;
+ $23 = (($22|0) / 2)&-1;
+ $24 = (+($23|0));
+ HEAPF32[$1>>2] = $24;
+ $25 = ((($1)) + 4|0);
+ $26 = HEAP32[3]|0;
+ $27 = (+($26|0));
+ $28 = $27 * 0.80000001192092896;
+ HEAPF32[$25>>2] = $28;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$1+4>>2]|0;
+ $29 = (_CreatePhysicsBodyRectangle($$byval_copy5,10.0,80.0,10.0)|0);
+ $30 = ((($29)) + 4|0);
+ HEAP32[$30>>2] = 0;
HEAPF32[$2>>2] = 25.0;
- $26 = ((($2)) + 4|0);
- HEAPF32[$26>>2] = 445.0;
- ;HEAP32[$$byval_copy10>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy10+4>>2]=HEAP32[$2+4>>2]|0;
- $27 = (_CreatePhysicsBodyRectangle($$byval_copy10,250.0,250.0,10.0)|0);
- $28 = ((($27)) + 4|0);
- HEAP32[$28>>2] = 0;
- _SetPhysicsBodyRotation($27,0.52359879016876221);
- HEAPF32[$3>>2] = 775.0;
- $29 = ((($3)) + 4|0);
- HEAPF32[$29>>2] = 445.0;
- ;HEAP32[$$byval_copy10>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy10+4>>2]=HEAP32[$3+4>>2]|0;
- $30 = (_CreatePhysicsBodyRectangle($$byval_copy10,250.0,250.0,10.0)|0);
- $31 = ((($30)) + 4|0);
- HEAP32[$31>>2] = 0;
- _SetPhysicsBodyRotation($30,5.7595863342285156);
+ $31 = ((($2)) + 4|0);
+ $32 = HEAP32[3]|0;
+ $33 = (($32) + -5)|0;
+ $34 = (+($33|0));
+ HEAPF32[$31>>2] = $34;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$2+4>>2]|0;
+ $35 = (_CreatePhysicsBodyRectangle($$byval_copy5,250.0,250.0,10.0)|0);
+ $36 = ((($35)) + 4|0);
+ HEAP32[$36>>2] = 0;
+ _SetPhysicsBodyRotation($35,0.52359879016876221);
+ $37 = HEAP32[2]|0;
+ $38 = (($37) + -25)|0;
+ $39 = (+($38|0));
+ HEAPF32[$3>>2] = $39;
+ $40 = ((($3)) + 4|0);
+ $41 = HEAP32[3]|0;
+ $42 = (($41) + -5)|0;
+ $43 = (+($42|0));
+ HEAPF32[$40>>2] = $43;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$3+4>>2]|0;
+ $44 = (_CreatePhysicsBodyRectangle($$byval_copy5,250.0,250.0,10.0)|0);
+ $45 = ((($44)) + 4|0);
+ HEAP32[$45>>2] = 0;
+ _SetPhysicsBodyRotation($44,5.7595863342285156);
HEAPF32[$4>>2] = 35.0;
- $32 = ((($4)) + 4|0);
- HEAPF32[$32>>2] = 270.0;
- ;HEAP32[$$byval_copy10>>2]=HEAP32[$4>>2]|0;HEAP32[$$byval_copy10+4>>2]=HEAP32[$4+4>>2]|0;
- $33 = (_CreatePhysicsBodyRectangle($$byval_copy10,40.0,40.0,10.0)|0);
- $34 = ((($33)) + 60|0);
- HEAPF32[$34>>2] = 0.10000000149011612;
- $35 = ((($33)) + 64|0);
- HEAPF32[$35>>2] = 0.10000000149011612;
- _SetPhysicsBodyRotation($33,0.52359879016876221);
- HEAPF32[$5>>2] = 765.0;
- $36 = ((($5)) + 4|0);
- HEAPF32[$36>>2] = 270.0;
- ;HEAP32[$$byval_copy10>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy10+4>>2]=HEAP32[$5+4>>2]|0;
- $37 = (_CreatePhysicsBodyRectangle($$byval_copy10,40.0,40.0,10.0)|0);
- $38 = ((($37)) + 60|0);
- HEAPF32[$38>>2] = 1.0;
- $39 = ((($37)) + 64|0);
- HEAPF32[$39>>2] = 1.0;
- _SetPhysicsBodyRotation($37,5.7595863342285156);
- $40 = (_WindowShouldClose()|0);
- $41 = ($40|0)==(0);
- if (!($41)) {
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
- }
- $42 = ((($6)) + 1|0);
- $43 = ((($6)) + 2|0);
- $44 = ((($6)) + 3|0);
- $45 = ((($10)) + 1|0);
- $46 = ((($10)) + 2|0);
- $47 = ((($10)) + 3|0);
- $48 = ((($33)) + 8|0);
- $49 = ((($33)) + 12|0);
- $50 = ((($37)) + 8|0);
- $51 = ((($37)) + 12|0);
- $52 = (($18) + 40)|0;
- $53 = ((($9)) + 1|0);
- $54 = ((($9)) + 2|0);
- $55 = ((($9)) + 3|0);
- $$sroa$033$0$$sroa_idx = ((($33)) + 8|0);
- $$sroa$234$0$$sroa_idx35 = ((($33)) + 12|0);
- $$sroa$030$0$$sroa_idx = ((($33)) + 16|0);
- $$sroa$231$0$$sroa_idx32 = ((($33)) + 20|0);
- $56 = ((($33)) + 32|0);
- $$sroa$027$0$$sroa_idx = ((($37)) + 8|0);
- $$sroa$228$0$$sroa_idx29 = ((($37)) + 12|0);
- $$sroa$0$0$$sroa_idx = ((($37)) + 16|0);
- $$sroa$2$0$$sroa_idx26 = ((($37)) + 20|0);
- $57 = ((($37)) + 32|0);
- while(1) {
- $58 = (_IsKeyPressed(82)|0);
- $59 = ($58|0)==(0);
- if (!($59)) {
- HEAPF32[$$sroa$033$0$$sroa_idx>>2] = 35.0;
- HEAPF32[$$sroa$234$0$$sroa_idx35>>2] = 270.0;
- HEAPF32[$$sroa$030$0$$sroa_idx>>2] = 0.0;
- HEAPF32[$$sroa$231$0$$sroa_idx32>>2] = 0.0;
- HEAPF32[$56>>2] = 0.0;
- _SetPhysicsBodyRotation($33,0.52359879016876221);
- HEAPF32[$$sroa$027$0$$sroa_idx>>2] = 765.0;
- HEAPF32[$$sroa$228$0$$sroa_idx29>>2] = 270.0;
- HEAPF32[$$sroa$0$0$$sroa_idx>>2] = 0.0;
- HEAPF32[$$sroa$2$0$$sroa_idx26>>2] = 0.0;
- HEAPF32[$57>>2] = 0.0;
- _SetPhysicsBodyRotation($37,5.7595863342285156);
- }
- _BeginDrawing();
- HEAP8[$6>>0] = 0;
- HEAP8[$42>>0] = 0;
- HEAP8[$43>>0] = 0;
- HEAP8[$44>>0] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$6+3>>0]|0;
- _ClearBackground($$byval_copy10);
- _DrawFPS(710,420);
- $60 = (_GetPhysicsBodiesCount()|0);
- $61 = ($60|0)>(0);
- if ($61) {
- $$0107109 = 0;
- while(1) {
- $85 = (_GetPhysicsBody($$0107109)|0);
- $86 = ($85|0)==(0|0);
- if (!($86)) {
- $87 = (_GetPhysicsShapeVerticesCount($$0107109)|0);
- $88 = ($87|0)>(0);
- if ($88) {
- $$0108 = 0;
- while(1) {
- _GetPhysicsShapeVertex($7,$85,$$0108);
- $89 = (($$0108) + 1)|0;
- $90 = ($89|0)<($87|0);
- $91 = $90 ? $89 : 0;
- _GetPhysicsShapeVertex($8,$85,$91);
- HEAP8[$9>>0] = 0;
- HEAP8[$53>>0] = -28;
- HEAP8[$54>>0] = 48;
- HEAP8[$55>>0] = -1;
- ;HEAP32[$$byval_copy8>>2]=HEAP32[$7>>2]|0;HEAP32[$$byval_copy8+4>>2]=HEAP32[$7+4>>2]|0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$8>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$8+4>>2]|0;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$9+3>>0]|0;
- _DrawLineV($$byval_copy8,$$byval_copy9,$$byval_copy10);
- $exitcond = ($89|0)==($87|0);
- if ($exitcond) {
- break;
- } else {
- $$0108 = $89;
- }
- }
- }
- }
- $92 = (($$0107109) + 1)|0;
- $exitcond114 = ($92|0)==($60|0);
- if ($exitcond114) {
- break;
- } else {
- $$0107109 = $92;
- }
- }
- }
- HEAP8[$10>>0] = 0;
- HEAP8[$45>>0] = 0;
- HEAP8[$46>>0] = 0;
- HEAP8[$47>>0] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$10>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$10+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$10+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$10+3>>0]|0;
- _DrawRectangle(0,401,800,49,$$byval_copy10);
- $62 = (_MeasureText(3522,30)|0);
- $63 = (800 - ($62))|0;
- $64 = (($63|0) / 2)&-1;
- HEAP32[$11>>2] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$11>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$11+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$11+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$11+3>>0]|0;
- _DrawText(3522,$64,75,30,$$byval_copy10);
- $65 = +HEAPF32[$48>>2];
- $66 = (_MeasureText(3538,20)|0);
- $67 = (($66|0) / 2)&-1;
- $68 = (+($67|0));
- $69 = $65 - $68;
- $70 = (~~(($69)));
- $71 = +HEAPF32[$49>>2];
- $72 = $71 + -7.0;
- $73 = (~~(($72)));
- HEAP32[$12>>2] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$12>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$12+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$12+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$12+3>>0]|0;
- _DrawText(3538,$70,$73,20,$$byval_copy10);
- $74 = +HEAPF32[$50>>2];
- $75 = (_MeasureText(3542,20)|0);
- $76 = (($75|0) / 2)&-1;
- $77 = (+($76|0));
- $78 = $74 - $77;
- $79 = (~~(($78)));
- $80 = +HEAPF32[$51>>2];
- $81 = $80 + -7.0;
- $82 = (~~(($81)));
- HEAP32[$13>>2] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$13>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$13+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$13+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$13+3>>0]|0;
- _DrawText(3542,$79,$82,20,$$byval_copy10);
- HEAP32[$14>>2] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$14>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$14+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$14+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$14+3>>0]|0;
- _DrawText(3544,10,10,10,$$byval_copy10);
- HEAP32[$15>>2] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$15>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$15+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$15+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$15+3>>0]|0;
- _DrawText(3515,$19,15,30,$$byval_copy10);
- HEAP32[$16>>2] = -1;
- ;HEAP8[$$byval_copy10>>0]=HEAP8[$16>>0]|0;HEAP8[$$byval_copy10+1>>0]=HEAP8[$16+1>>0]|0;HEAP8[$$byval_copy10+2>>0]=HEAP8[$16+2>>0]|0;HEAP8[$$byval_copy10+3>>0]=HEAP8[$16+3>>0]|0;
- _DrawText(3571,$52,8,10,$$byval_copy10);
- _EndDrawing();
- $83 = (_WindowShouldClose()|0);
- $84 = ($83|0)==(0);
- if (!($84)) {
- break;
- }
- }
+ $46 = ((($4)) + 4|0);
+ $47 = HEAP32[3]|0;
+ $48 = (+($47|0));
+ $49 = $48 * 0.60000002384185791;
+ HEAPF32[$46>>2] = $49;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$4>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$4+4>>2]|0;
+ $50 = (_CreatePhysicsBodyRectangle($$byval_copy5,40.0,40.0,10.0)|0);
+ HEAP32[7732] = $50;
+ $51 = ((($50)) + 60|0);
+ HEAPF32[$51>>2] = 0.10000000149011612;
+ $52 = ((($50)) + 64|0);
+ HEAPF32[$52>>2] = 0.10000000149011612;
+ _SetPhysicsBodyRotation($50,0.52359879016876221);
+ $53 = HEAP32[2]|0;
+ $54 = (($53) + -35)|0;
+ $55 = (+($54|0));
+ HEAPF32[$5>>2] = $55;
+ $56 = ((($5)) + 4|0);
+ $57 = HEAP32[3]|0;
+ $58 = (+($57|0));
+ $59 = $58 * 0.60000002384185791;
+ HEAPF32[$56>>2] = $59;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$5+4>>2]|0;
+ $60 = (_CreatePhysicsBodyRectangle($$byval_copy5,40.0,40.0,10.0)|0);
+ HEAP32[7733] = $60;
+ $61 = ((($60)) + 60|0);
+ HEAPF32[$61>>2] = 1.0;
+ $62 = ((($60)) + 64|0);
+ HEAPF32[$62>>2] = 1.0;
+ _SetPhysicsBodyRotation($60,5.7595863342285156);
+ _emscripten_set_main_loop((1|0),0,1);
_ClosePhysics();
_CloseWindow();
STACKTOP = sp;return 0;
}
+function _UpdateDrawFrame() {
+ var $$03637 = 0, $$038 = 0, $$byval_copy2 = 0, $$byval_copy3 = 0, $$byval_copy4 = 0, $$sroa$0$0$$sroa_idx = 0, $$sroa$027$0$$sroa_idx = 0, $$sroa$030$0$$sroa_idx = 0, $$sroa$033$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx26 = 0, $$sroa$228$0$$sroa_idx29 = 0, $$sroa$231$0$$sroa_idx32 = 0, $$sroa$234$0$$sroa_idx35 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0;
+ var $15 = 0.0, $16 = 0.0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0.0, $24 = 0.0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0;
+ var $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0;
+ var $51 = 0, $52 = 0.0, $53 = 0, $54 = 0, $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0, $63 = 0, $64 = 0, $65 = 0.0, $66 = 0, $67 = 0, $68 = 0.0, $69 = 0.0;
+ var $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0.0, $74 = 0.0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0;
+ var $88 = 0, $89 = 0, $9 = 0, $exitcond = 0, $exitcond40 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 80|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(80|0);
+ $$byval_copy4 = sp + 76|0;
+ $$byval_copy3 = sp + 56|0;
+ $$byval_copy2 = sp + 48|0;
+ $0 = sp + 72|0;
+ $1 = sp + 24|0;
+ $2 = sp + 8|0;
+ $3 = sp + 68|0;
+ $4 = sp + 64|0;
+ $5 = sp + 44|0;
+ $6 = sp + 40|0;
+ $7 = sp + 36|0;
+ $8 = sp + 32|0;
+ $9 = sp + 16|0;
+ $10 = sp;
+ $11 = (_IsKeyPressed(82)|0);
+ $12 = ($11|0)==(0);
+ if (!($12)) {
+ $13 = HEAP32[7732]|0;
+ $14 = HEAP32[3]|0;
+ $15 = (+($14|0));
+ $16 = $15 * 0.60000002384185791;
+ $$sroa$033$0$$sroa_idx = ((($13)) + 8|0);
+ HEAPF32[$$sroa$033$0$$sroa_idx>>2] = 35.0;
+ $$sroa$234$0$$sroa_idx35 = ((($13)) + 12|0);
+ HEAPF32[$$sroa$234$0$$sroa_idx35>>2] = $16;
+ $$sroa$030$0$$sroa_idx = ((($13)) + 16|0);
+ HEAPF32[$$sroa$030$0$$sroa_idx>>2] = 0.0;
+ $$sroa$231$0$$sroa_idx32 = ((($13)) + 20|0);
+ HEAPF32[$$sroa$231$0$$sroa_idx32>>2] = 0.0;
+ $17 = ((($13)) + 32|0);
+ HEAPF32[$17>>2] = 0.0;
+ _SetPhysicsBodyRotation($13,0.52359879016876221);
+ $18 = HEAP32[7733]|0;
+ $19 = HEAP32[2]|0;
+ $20 = (($19) + -35)|0;
+ $21 = (+($20|0));
+ $22 = HEAP32[3]|0;
+ $23 = (+($22|0));
+ $24 = $23 * 0.60000002384185791;
+ $$sroa$027$0$$sroa_idx = ((($18)) + 8|0);
+ HEAPF32[$$sroa$027$0$$sroa_idx>>2] = $21;
+ $$sroa$228$0$$sroa_idx29 = ((($18)) + 12|0);
+ HEAPF32[$$sroa$228$0$$sroa_idx29>>2] = $24;
+ $25 = HEAP32[7733]|0;
+ $$sroa$0$0$$sroa_idx = ((($25)) + 16|0);
+ HEAPF32[$$sroa$0$0$$sroa_idx>>2] = 0.0;
+ $$sroa$2$0$$sroa_idx26 = ((($25)) + 20|0);
+ HEAPF32[$$sroa$2$0$$sroa_idx26>>2] = 0.0;
+ $26 = ((($25)) + 32|0);
+ HEAPF32[$26>>2] = 0.0;
+ $27 = HEAP32[7733]|0;
+ _SetPhysicsBodyRotation($27,5.7595863342285156);
+ }
+ _BeginDrawing();
+ HEAP8[$0>>0] = 0;
+ $28 = ((($0)) + 1|0);
+ HEAP8[$28>>0] = 0;
+ $29 = ((($0)) + 2|0);
+ HEAP8[$29>>0] = 0;
+ $30 = ((($0)) + 3|0);
+ HEAP8[$30>>0] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$0>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$0+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$0+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$0+3>>0]|0;
+ _ClearBackground($$byval_copy4);
+ $31 = HEAP32[2]|0;
+ $32 = (($31) + -90)|0;
+ $33 = HEAP32[3]|0;
+ $34 = (($33) + -30)|0;
+ _DrawFPS($32,$34);
+ $35 = (_GetPhysicsBodiesCount()|0);
+ $36 = ($35|0)>(0);
+ if ($36) {
+ $37 = ((($3)) + 1|0);
+ $38 = ((($3)) + 2|0);
+ $39 = ((($3)) + 3|0);
+ $$038 = 0;
+ while(1) {
+ $82 = (_GetPhysicsBody($$038)|0);
+ $83 = ($82|0)==(0|0);
+ if (!($83)) {
+ $84 = (_GetPhysicsShapeVerticesCount($$038)|0);
+ $85 = ($84|0)>(0);
+ if ($85) {
+ $$03637 = 0;
+ while(1) {
+ _GetPhysicsShapeVertex($1,$82,$$03637);
+ $86 = (($$03637) + 1)|0;
+ $87 = ($86|0)<($84|0);
+ $88 = $87 ? $86 : 0;
+ _GetPhysicsShapeVertex($2,$82,$88);
+ HEAP8[$3>>0] = 0;
+ HEAP8[$37>>0] = -28;
+ HEAP8[$38>>0] = 48;
+ HEAP8[$39>>0] = -1;
+ ;HEAP32[$$byval_copy2>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy2+4>>2]=HEAP32[$1+4>>2]|0;
+ ;HEAP32[$$byval_copy3>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[$2+4>>2]|0;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$3>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$3+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$3+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$3+3>>0]|0;
+ _DrawLineV($$byval_copy2,$$byval_copy3,$$byval_copy4);
+ $exitcond = ($86|0)==($84|0);
+ if ($exitcond) {
+ break;
+ } else {
+ $$03637 = $86;
+ }
+ }
+ }
+ }
+ $89 = (($$038) + 1)|0;
+ $exitcond40 = ($89|0)==($35|0);
+ if ($exitcond40) {
+ break;
+ } else {
+ $$038 = $89;
+ }
+ }
+ }
+ $40 = HEAP32[3]|0;
+ $41 = (($40) + -49)|0;
+ $42 = HEAP32[2]|0;
+ HEAP8[$4>>0] = 0;
+ $43 = ((($4)) + 1|0);
+ HEAP8[$43>>0] = 0;
+ $44 = ((($4)) + 2|0);
+ HEAP8[$44>>0] = 0;
+ $45 = ((($4)) + 3|0);
+ HEAP8[$45>>0] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$4>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$4+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$4+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$4+3>>0]|0;
+ _DrawRectangle(0,$41,$42,49,$$byval_copy4);
+ $46 = HEAP32[2]|0;
+ $47 = (_MeasureText(3290,30)|0);
+ $48 = (($46) - ($47))|0;
+ $49 = (($48|0) / 2)&-1;
+ HEAP32[$5>>2] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$5>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$5+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$5+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$5+3>>0]|0;
+ _DrawText(3290,$49,75,30,$$byval_copy4);
+ $50 = HEAP32[7732]|0;
+ $51 = ((($50)) + 8|0);
+ $52 = +HEAPF32[$51>>2];
+ $53 = (_MeasureText(3306,20)|0);
+ $54 = (($53|0) / 2)&-1;
+ $55 = (+($54|0));
+ $56 = $52 - $55;
+ $57 = (~~(($56)));
+ $58 = HEAP32[7732]|0;
+ $59 = ((($58)) + 12|0);
+ $60 = +HEAPF32[$59>>2];
+ $61 = $60 + -7.0;
+ $62 = (~~(($61)));
+ HEAP32[$6>>2] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$6+3>>0]|0;
+ _DrawText(3306,$57,$62,20,$$byval_copy4);
+ $63 = HEAP32[7733]|0;
+ $64 = ((($63)) + 8|0);
+ $65 = +HEAPF32[$64>>2];
+ $66 = (_MeasureText(3310,20)|0);
+ $67 = (($66|0) / 2)&-1;
+ $68 = (+($67|0));
+ $69 = $65 - $68;
+ $70 = (~~(($69)));
+ $71 = HEAP32[7733]|0;
+ $72 = ((($71)) + 12|0);
+ $73 = +HEAPF32[$72>>2];
+ $74 = $73 + -7.0;
+ $75 = (~~(($74)));
+ HEAP32[$7>>2] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$7>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$7+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$7+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$7+3>>0]|0;
+ _DrawText(3310,$70,$75,20,$$byval_copy4);
+ HEAP32[$8>>2] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$8>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$8+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$8+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$8+3>>0]|0;
+ _DrawText(3312,10,10,10,$$byval_copy4);
+ $76 = HEAP32[7731]|0;
+ $77 = HEAP32[4]|0;
+ HEAP32[$9>>2] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$9+3>>0]|0;
+ _DrawText(3283,$76,$77,30,$$byval_copy4);
+ $78 = HEAP32[7731]|0;
+ $79 = (($78) + 50)|0;
+ $80 = HEAP32[4]|0;
+ $81 = (($80) + -7)|0;
+ HEAP32[$10>>2] = -1;
+ ;HEAP8[$$byval_copy4>>0]=HEAP8[$10>>0]|0;HEAP8[$$byval_copy4+1>>0]=HEAP8[$10+1>>0]|0;HEAP8[$$byval_copy4+2>>0]=HEAP8[$10+2>>0]|0;HEAP8[$$byval_copy4+3>>0]=HEAP8[$10+3>>0]|0;
+ _DrawText(3339,$79,$81,10,$$byval_copy4);
+ _EndDrawing();
+ STACKTOP = sp;return;
+}
function _InitTimer() {
var $0 = 0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetCurrentTime());
- HEAPF64[1728] = $1;
+ HEAPF64[1747] = $1;
return;
}
function _GetCurrentTime() {
@@ -8276,7 +12526,7 @@ function _GetCurrentTime() {
function _MathClamp() {
var $$sink = 0.0, $0 = 0.0, $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1726];
+ $0 = +HEAPF64[1745];
$1 = $0 < 0.0;
if ($1) {
$$sink = 0.0;
@@ -8288,7 +12538,7 @@ function _MathClamp() {
return;
}
}
- HEAPF64[1726] = $$sink;
+ HEAPF64[1745] = $$sink;
return;
}
function _PhysicsStep() {
@@ -8302,16 +12552,16 @@ function _PhysicsStep() {
var $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0;
var $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7693]|0;
+ $0 = HEAP32[7734]|0;
$1 = (($0) + 1)|0;
- HEAP32[7693] = $1;
- $2 = HEAP32[3596]|0;
+ HEAP32[7734] = $1;
+ $2 = HEAP32[3634]|0;
$$0167 = (($2) + -1)|0;
$3 = ($$0167|0)>(-1);
if ($3) {
$$0168 = $$0167;
while(1) {
- $6 = (14388 + ($$0168<<2)|0);
+ $6 = (14540 + ($$0168<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = ($7|0)==(0|0);
if (!($8)) {
@@ -8326,7 +12576,7 @@ function _PhysicsStep() {
}
}
}
- $4 = HEAP32[3531]|0;
+ $4 = HEAP32[3569]|0;
$5 = ($4|0)==(0);
if ($5) {
$17 = $4;
@@ -8334,7 +12584,7 @@ function _PhysicsStep() {
} else {
$$0125165 = 0;
while(1) {
- $11 = (14128 + ($$0125165<<2)|0);
+ $11 = (14280 + ($$0125165<<2)|0);
$12 = HEAP32[$11>>2]|0;
$13 = ((($12)) + 76|0);
HEAP32[$13>>2] = 0;
@@ -8346,24 +12596,24 @@ function _PhysicsStep() {
break;
}
}
- $$pr = HEAP32[3531]|0;
+ $$pr = HEAP32[3569]|0;
$10 = ($$pr|0)==(0);
if (!($10)) {
$$0126163 = 0;
while(1) {
- $19 = (14128 + ($$0126163<<2)|0);
+ $19 = (14280 + ($$0126163<<2)|0);
$20 = HEAP32[$19>>2]|0;
$21 = ($20|0)==(0|0);
if (!($21)) {
$$0130160 = (($$0126163) + 1)|0;
- $22 = HEAP32[3531]|0;
+ $22 = HEAP32[3569]|0;
$23 = ($$0130160>>>0)<($22>>>0);
if ($23) {
$24 = ((($20)) + 56|0);
$25 = ((($20)) + 84|0);
$$0130161 = $$0130160;
while(1) {
- $26 = (14128 + ($$0130161<<2)|0);
+ $26 = (14280 + ($$0130161<<2)|0);
$27 = HEAP32[$26>>2]|0;
$28 = ($27|0)==(0|0);
do {
@@ -8469,7 +12719,7 @@ function _PhysicsStep() {
}
} while(0);
$$0130 = (($$0130161) + 1)|0;
- $29 = HEAP32[3531]|0;
+ $29 = HEAP32[3569]|0;
$30 = ($$0130>>>0)<($29>>>0);
if ($30) {
$$0130161 = $$0130;
@@ -8480,7 +12730,7 @@ function _PhysicsStep() {
}
}
$97 = (($$0126163) + 1)|0;
- $98 = HEAP32[3531]|0;
+ $98 = HEAP32[3569]|0;
$99 = ($97>>>0)<($98>>>0);
if ($99) {
$$0126163 = $97;
@@ -8495,10 +12745,10 @@ function _PhysicsStep() {
if ((label|0) == 8) {
$16 = ($17|0)==(0);
if (!($16)) {
- $18 = HEAP32[3531]|0;
+ $18 = HEAP32[3569]|0;
$$0135158 = 0;
while(1) {
- $103 = (14128 + ($$0135158<<2)|0);
+ $103 = (14280 + ($$0135158<<2)|0);
$104 = HEAP32[$103>>2]|0;
$105 = ($104|0)==(0|0);
if (!($105)) {
@@ -8514,15 +12764,15 @@ function _PhysicsStep() {
}
}
}
- $100 = HEAP32[3596]|0;
+ $100 = HEAP32[3634]|0;
$101 = ($100|0)==(0);
if ($101) {
$$0134155 = 0;$114 = 0;
} else {
- $102 = HEAP32[3596]|0;
+ $102 = HEAP32[3634]|0;
$$0136156 = 0;
while(1) {
- $108 = (14388 + ($$0136156<<2)|0);
+ $108 = (14540 + ($$0136156<<2)|0);
$109 = HEAP32[$108>>2]|0;
$110 = ($109|0)==(0|0);
if (!($110)) {
@@ -8542,12 +12792,12 @@ function _PhysicsStep() {
while(1) {
if ((label|0) == 32) {
label = 0;
- $$pr172 = HEAP32[3596]|0;
+ $$pr172 = HEAP32[3634]|0;
$$0134155 = $$0134155$ph;$114 = $$pr172;
}
$113 = ($114|0)==(0);
if (!($113)) {
- $115 = (14388 + ($$0134155<<2)|0);
+ $115 = (14540 + ($$0134155<<2)|0);
$$0133152 = 0;
while(1) {
$120 = HEAP32[$115>>2]|0;
@@ -8556,7 +12806,7 @@ function _PhysicsStep() {
_IntegratePhysicsImpulses($120);
}
$122 = (($$0133152) + 1)|0;
- $123 = HEAP32[3596]|0;
+ $123 = HEAP32[3634]|0;
$124 = ($122>>>0)<($123>>>0);
if ($124) {
$$0133152 = $122;
@@ -8574,13 +12824,13 @@ function _PhysicsStep() {
label = 32;
}
}
- $116 = HEAP32[3531]|0;
+ $116 = HEAP32[3569]|0;
$117 = ($116|0)==(0);
if (!($117)) {
- $118 = HEAP32[3531]|0;
+ $118 = HEAP32[3569]|0;
$$0131150 = 0;
while(1) {
- $128 = (14128 + ($$0131150<<2)|0);
+ $128 = (14280 + ($$0131150<<2)|0);
$129 = HEAP32[$128>>2]|0;
$130 = ($129|0)==(0|0);
if (!($130)) {
@@ -8595,13 +12845,13 @@ function _PhysicsStep() {
}
}
}
- $125 = HEAP32[3596]|0;
+ $125 = HEAP32[3634]|0;
$126 = ($125|0)==(0);
if (!($126)) {
- $127 = HEAP32[3596]|0;
+ $127 = HEAP32[3634]|0;
$$0129148 = 0;
while(1) {
- $136 = (14388 + ($$0129148<<2)|0);
+ $136 = (14540 + ($$0129148<<2)|0);
$137 = HEAP32[$136>>2]|0;
$138 = ($137|0)==(0|0);
if (!($138)) {
@@ -8616,15 +12866,15 @@ function _PhysicsStep() {
}
}
}
- $133 = HEAP32[3531]|0;
+ $133 = HEAP32[3569]|0;
$134 = ($133|0)==(0);
if ($134) {
return;
}
- $135 = HEAP32[3531]|0;
+ $135 = HEAP32[3569]|0;
$$0127147 = 0;
while(1) {
- $141 = (14128 + ($$0127147<<2)|0);
+ $141 = (14280 + ($$0127147<<2)|0);
$142 = HEAP32[$141>>2]|0;
$143 = ($142|0)==(0|0);
if (!($143)) {
@@ -8655,16 +12905,16 @@ function _DestroyPhysicsManifold($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3596]|0;
+ $3 = HEAP32[3634]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3596]|0;
+ $5 = HEAP32[3634]|0;
$$02023 = 0;
while(1) {
- $6 = (14388 + ($$02023<<2)|0);
+ $6 = (14540 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -8683,24 +12933,24 @@ function _DestroyPhysicsManifold($0) {
}
}
} while(0);
- $12 = (14388 + ($$021<<2)|0);
+ $12 = (14540 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3530]|0;
+ $14 = HEAP32[3568]|0;
$15 = (($14) + -56)|0;
- HEAP32[3530] = $15;
+ HEAP32[3568] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3596]|0;
+ $16 = HEAP32[3634]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3596]|0;
+ $18 = HEAP32[3634]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14388 + ($$022<<2)|0);
- $25 = (14388 + ($20<<2)|0);
+ $24 = (14540 + ($$022<<2)|0);
+ $25 = (14540 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -8716,7 +12966,7 @@ function _DestroyPhysicsManifold($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3596] = $19;
+ HEAP32[3634] = $19;
return;
}
function _CreatePhysicsManifold($0,$1) {
@@ -8726,10 +12976,10 @@ function _CreatePhysicsManifold($0,$1) {
var $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
sp = STACKTOP;
$2 = (_malloc(56)|0);
- $3 = HEAP32[3530]|0;
+ $3 = HEAP32[3568]|0;
$4 = (($3) + 56)|0;
- HEAP32[3530] = $4;
- $5 = HEAP32[3596]|0;
+ HEAP32[3568] = $4;
+ $5 = HEAP32[3634]|0;
$6 = ($5|0)==(0);
$$04457 = 0;
L1: while(1) {
@@ -8740,7 +12990,7 @@ function _CreatePhysicsManifold($0,$1) {
$$04755 = 0;
}
while(1) {
- $9 = (14388 + ($$04755<<2)|0);
+ $9 = (14540 + ($$04755<<2)|0);
$10 = HEAP32[$9>>2]|0;
$11 = HEAP32[$10>>2]|0;
$12 = ($11|0)==($$04457|0);
@@ -8783,11 +13033,11 @@ function _CreatePhysicsManifold($0,$1) {
HEAP32[$17>>2] = $1;
$18 = ((($2)) + 12|0);
dest=$18; stop=dest+44|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
- $19 = HEAP32[3596]|0;
- $20 = (14388 + ($19<<2)|0);
+ $19 = HEAP32[3634]|0;
+ $20 = (14540 + ($19<<2)|0);
HEAP32[$20>>2] = $2;
$21 = (($19) + 1)|0;
- HEAP32[3596] = $21;
+ HEAP32[3634] = $21;
return ($2|0);
}
function _SolvePhysicsManifold($0) {
@@ -8887,7 +13137,7 @@ function _IntegratePhysicsForces($0) {
$8 = +HEAPF32[$7>>2];
$9 = $2 * $8;
$10 = $9;
- $11 = +HEAPF64[1729];
+ $11 = +HEAPF64[1748];
$12 = $11 * 0.5;
$13 = $10 * $12;
$14 = ((($0)) + 16|0);
@@ -8911,7 +13161,7 @@ function _IntegratePhysicsForces($0) {
$30 = HEAP32[$29>>2]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = +HEAPF32[7694];
+ $32 = +HEAPF32[7735];
$33 = $32;
$34 = $12 * $33;
$35 = +HEAPF32[$14>>2];
@@ -8919,7 +13169,7 @@ function _IntegratePhysicsForces($0) {
$37 = $36 + $34;
$38 = $37;
HEAPF32[$14>>2] = $38;
- $39 = +HEAPF32[2];
+ $39 = +HEAPF32[5];
$40 = $39;
$41 = $12 * $40;
$42 = +HEAPF32[$24>>2];
@@ -9004,13 +13254,13 @@ function _InitializePhysicsManifolds($0) {
$39 = ((($7)) + 20|0);
$40 = ((($$byval_copy9)) + 4|0);
$41 = ((($4)) + 4|0);
- $42 = +HEAPF32[7694];
+ $42 = +HEAPF32[7735];
$43 = $42;
- $44 = +HEAPF64[1729];
+ $44 = +HEAPF64[1748];
$45 = $43 * $44;
$46 = $45;
$47 = ((($5)) + 4|0);
- $48 = +HEAPF32[2];
+ $48 = +HEAPF32[5];
$49 = $48;
$50 = $49 * $44;
$51 = $50;
@@ -9507,7 +13757,7 @@ function _IntegratePhysicsVelocity($0) {
$4 = ((($0)) + 16|0);
$5 = +HEAPF32[$4>>2];
$6 = $5;
- $7 = +HEAPF64[1729];
+ $7 = +HEAPF64[1748];
$8 = $6 * $7;
$9 = ((($0)) + 8|0);
$10 = +HEAPF32[$9>>2];
@@ -11928,7 +16178,7 @@ function _ProcessGestureEvent($0) {
$moveDownPosition$byval_copy11 = sp;
$1 = ((($0)) + 4|0);
$2 = HEAP32[$1>>2]|0;
- HEAP32[7696] = $2;
+ HEAP32[7737] = $2;
$3 = ($2|0)<(2);
$4 = HEAP32[$0>>2]|0;
$5 = ($4|0)==(1);
@@ -11941,7 +16191,7 @@ function _ProcessGestureEvent($0) {
$92 = (($89) + 4)|0;
$93 = $92;
$94 = HEAP32[$93>>2]|0;
- $95 = 13840;
+ $95 = 13992;
$96 = $95;
HEAP32[$96>>2] = $91;
$97 = (($95) + 4)|0;
@@ -11954,48 +16204,48 @@ function _ProcessGestureEvent($0) {
$103 = (($100) + 4)|0;
$104 = $103;
$105 = HEAP32[$104>>2]|0;
- $106 = 13880;
+ $106 = 14032;
$107 = $106;
HEAP32[$107>>2] = $102;
$108 = (($106) + 4)|0;
$109 = $108;
HEAP32[$109>>2] = $105;
- $110 = +HEAPF32[3470];
- $111 = +HEAPF32[3460];
+ $110 = +HEAPF32[3508];
+ $111 = +HEAPF32[3498];
$112 = $110 - $111;
- HEAPF32[3472] = $112;
- $113 = +HEAPF32[(13884)>>2];
- $114 = +HEAPF32[(13844)>>2];
+ HEAPF32[3510] = $112;
+ $113 = +HEAPF32[(14036)>>2];
+ $114 = +HEAPF32[(13996)>>2];
$115 = $113 - $114;
- HEAPF32[(13892)>>2] = $115;
- HEAP32[7695] = 4;
+ HEAPF32[(14044)>>2] = $115;
+ HEAP32[7736] = 4;
STACKTOP = sp;return;
}
switch ($4|0) {
case 2: {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13872>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13872+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13896>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13896+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14024>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14024+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14048>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14048+4>>2]|0;
$116 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- HEAPF32[7701] = $116;
- $117 = 13872;
+ HEAPF32[7742] = $116;
+ $117 = 14024;
$118 = $117;
$119 = HEAP32[$118>>2]|0;
$120 = (($117) + 4)|0;
$121 = $120;
$122 = HEAP32[$121>>2]|0;
- $123 = 13840;
+ $123 = 13992;
$124 = $123;
HEAP32[$124>>2] = $119;
$125 = (($123) + 4)|0;
$126 = $125;
HEAP32[$126>>2] = $122;
- $127 = 13896;
+ $127 = 14048;
$128 = $127;
$129 = HEAP32[$128>>2]|0;
$130 = (($127) + 4)|0;
$131 = $130;
$132 = HEAP32[$131>>2]|0;
- $133 = 13880;
+ $133 = 14032;
$134 = $133;
HEAP32[$134>>2] = $129;
$135 = (($133) + 4)|0;
@@ -12008,7 +16258,7 @@ function _ProcessGestureEvent($0) {
$141 = (($138) + 4)|0;
$142 = $141;
$143 = HEAP32[$142>>2]|0;
- $144 = 13872;
+ $144 = 14024;
$145 = $144;
HEAP32[$145>>2] = $140;
$146 = (($144) + 4)|0;
@@ -12021,27 +16271,27 @@ function _ProcessGestureEvent($0) {
$152 = (($149) + 4)|0;
$153 = $152;
$154 = HEAP32[$153>>2]|0;
- $155 = 13896;
+ $155 = 14048;
$156 = $155;
HEAP32[$156>>2] = $151;
$157 = (($155) + 4)|0;
$158 = $157;
HEAP32[$158>>2] = $154;
- $159 = +HEAPF32[3474];
- $160 = +HEAPF32[3468];
+ $159 = +HEAPF32[3512];
+ $160 = +HEAPF32[3506];
$161 = $159 - $160;
- HEAPF32[3472] = $161;
- $162 = +HEAPF32[(13900)>>2];
- $163 = +HEAPF32[(13876)>>2];
+ HEAPF32[3510] = $161;
+ $162 = +HEAPF32[(14052)>>2];
+ $163 = +HEAPF32[(14028)>>2];
$164 = $162 - $163;
- HEAPF32[(13892)>>2] = $164;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13840>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13840+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13872>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13872+4>>2]|0;
+ HEAPF32[(14044)>>2] = $164;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13992>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13992+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14024>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14024+4>>2]|0;
$165 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$166 = !($165 >= 0.004999999888241291);
if ($166) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13880+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13896>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13896+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14032+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14048>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14048+4>>2]|0;
$167 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$168 = !($167 >= 0.004999999888241291);
if ($168) {
@@ -12053,31 +16303,31 @@ function _ProcessGestureEvent($0) {
label = 29;
}
if ((label|0) == 29) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13872>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13872+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13896>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13896+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14024>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14024+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14048>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14048+4>>2]|0;
$169 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- $170 = +HEAPF32[7701];
+ $170 = +HEAPF32[7742];
$171 = $169 - $170;
$172 = $171 < 0.0;
$$sink11 = $172 ? 256 : 512;
$$sink16 = $$sink11;
}
- HEAP32[7695] = $$sink16;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13872>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13872+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13896>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13896+4>>2]|0;
+ HEAP32[7736] = $$sink16;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14024>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14024+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14048>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14048+4>>2]|0;
$173 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$174 = 360.0 - $173;
- HEAPF32[7702] = $174;
+ HEAPF32[7743] = $174;
STACKTOP = sp;return;
break;
}
case 0: {
- HEAPF32[7701] = 0.0;
- HEAPF32[7702] = 0.0;
- HEAPF32[3472] = 0.0;
- HEAPF32[(13892)>>2] = 0.0;
- HEAP32[7696] = 0;
- HEAP32[7695] = 0;
+ HEAPF32[7742] = 0.0;
+ HEAPF32[7743] = 0.0;
+ HEAPF32[3510] = 0.0;
+ HEAPF32[(14044)>>2] = 0.0;
+ HEAP32[7737] = 0;
+ HEAP32[7736] = 0;
STACKTOP = sp;return;
break;
}
@@ -12087,22 +16337,22 @@ function _ProcessGestureEvent($0) {
}
}
if ($5) {
- $6 = HEAP32[7697]|0;
+ $6 = HEAP32[7738]|0;
$7 = (($6) + 1)|0;
- HEAP32[7697] = $7;
- $8 = HEAP32[7695]|0;
+ HEAP32[7738] = $7;
+ $8 = HEAP32[7736]|0;
$9 = ($8|0)==(0);
$10 = ($6|0)>(0);
$or$cond = $10 & $9;
if ($or$cond) {
$11 = ((($0)) + 24|0);
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13840>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13840+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13992>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13992+4>>2]|0;
;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[$11>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[$11+4>>2]|0;
$12 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$13 = $12 < 0.029999999329447746;
if ($13) {
- HEAP32[7695] = 2;
- HEAP32[7697] = 0;
+ HEAP32[7736] = 2;
+ HEAP32[7738] = 0;
} else {
label = 6;
}
@@ -12110,8 +16360,8 @@ function _ProcessGestureEvent($0) {
label = 6;
}
if ((label|0) == 6) {
- HEAP32[7697] = 1;
- HEAP32[7695] = 1;
+ HEAP32[7738] = 1;
+ HEAP32[7736] = 1;
}
$14 = ((($0)) + 24|0);
$15 = $14;
@@ -12120,19 +16370,19 @@ function _ProcessGestureEvent($0) {
$18 = (($15) + 4)|0;
$19 = $18;
$20 = HEAP32[$19>>2]|0;
- $21 = 13840;
+ $21 = 13992;
$22 = $21;
HEAP32[$22>>2] = $17;
$23 = (($21) + 4)|0;
$24 = $23;
HEAP32[$24>>2] = $20;
- $25 = 13848;
+ $25 = 14000;
$26 = $25;
HEAP32[$26>>2] = $17;
$27 = (($25) + 4)|0;
$28 = $27;
HEAP32[$28>>2] = $20;
- $29 = 13856;
+ $29 = 14008;
$30 = $29;
HEAP32[$30>>2] = $17;
$31 = (($29) + 4)|0;
@@ -12140,14 +16390,14 @@ function _ProcessGestureEvent($0) {
HEAP32[$32>>2] = $20;
$33 = ((($0)) + 8|0);
$34 = HEAP32[$33>>2]|0;
- HEAP32[3] = $34;
- HEAPF32[3466] = 0.0;
- HEAPF32[(13868)>>2] = 0.0;
+ HEAP32[6] = $34;
+ HEAPF32[3504] = 0.0;
+ HEAPF32[(14020)>>2] = 0.0;
STACKTOP = sp;return;
}
switch ($4|0) {
case 0: {
- $35 = HEAP32[7695]|0;
+ $35 = HEAP32[7736]|0;
$36 = ($35|0)==(8);
if ($36) {
$37 = ((($0)) + 24|0);
@@ -12157,31 +16407,31 @@ function _ProcessGestureEvent($0) {
$41 = (($38) + 4)|0;
$42 = $41;
$43 = HEAP32[$42>>2]|0;
- $44 = 13856;
+ $44 = 14008;
$45 = $44;
HEAP32[$45>>2] = $40;
$46 = (($44) + 4)|0;
$47 = $46;
HEAP32[$47>>2] = $43;
}
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13840>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13840+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13856>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13856+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13992>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13992+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14008>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14008+4>>2]|0;
$48 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$49 = $48 / 0.0;
- HEAPF32[7698] = $49;
- HEAP32[7699] = 0;
+ HEAPF32[7739] = $49;
+ HEAP32[7740] = 0;
$50 = $49 > 5.0000002374872565E-4;
if ($50) {
- $51 = HEAP32[3]|0;
+ $51 = HEAP32[6]|0;
$52 = ((($0)) + 8|0);
$53 = HEAP32[$52>>2]|0;
$54 = ($51|0)==($53|0);
if ($54) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13840>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13840+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13856>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13856+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13992>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13992+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14008>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14008+4>>2]|0;
$55 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$56 = 360.0 - $55;
- HEAPF32[7700] = $56;
+ HEAPF32[7741] = $56;
$57 = $56 < 30.0;
$58 = $56 > 330.0;
$or$cond3 = $57 | $58;
@@ -12212,22 +16462,22 @@ function _ProcessGestureEvent($0) {
label = 16;
}
if ((label|0) == 16) {
- HEAPF32[7698] = 0.0;
- HEAPF32[7700] = 0.0;
+ HEAPF32[7739] = 0.0;
+ HEAPF32[7741] = 0.0;
$$sink10 = 0;
}
- HEAP32[7695] = $$sink10;
- HEAPF32[3462] = 0.0;
- HEAPF32[(13852)>>2] = 0.0;
- HEAP32[7696] = 0;
+ HEAP32[7736] = $$sink10;
+ HEAPF32[3500] = 0.0;
+ HEAPF32[(14004)>>2] = 0.0;
+ HEAP32[7737] = 0;
STACKTOP = sp;return;
break;
}
case 2: {
- $65 = HEAP32[7699]|0;
+ $65 = HEAP32[7740]|0;
$66 = ($65|0)==(0);
if ($66) {
- HEAP32[7699] = 1;
+ HEAP32[7740] = 1;
}
$67 = ((($0)) + 24|0);
$68 = $67;
@@ -12236,31 +16486,31 @@ function _ProcessGestureEvent($0) {
$71 = (($68) + 4)|0;
$72 = $71;
$73 = HEAP32[$72>>2]|0;
- $74 = 13872;
+ $74 = 14024;
$75 = $74;
HEAP32[$75>>2] = $70;
$76 = (($74) + 4)|0;
$77 = $76;
HEAP32[$77>>2] = $73;
- $78 = HEAP32[7695]|0;
+ $78 = HEAP32[7736]|0;
$79 = ($78|0)==(4);
if ($79) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13840>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13840+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13872>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13872+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13992>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13992+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14024>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14024+4>>2]|0;
$80 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$81 = !($80 >= 0.014999999664723873);
if (!($81)) {
- HEAP32[7695] = 8;
+ HEAP32[7736] = 8;
}
}
- $82 = +HEAPF32[3468];
- $83 = +HEAPF32[3462];
+ $82 = +HEAPF32[3506];
+ $83 = +HEAPF32[3500];
$84 = $82 - $83;
- HEAPF32[3466] = $84;
- $85 = +HEAPF32[(13876)>>2];
- $86 = +HEAPF32[(13852)>>2];
+ HEAPF32[3504] = $84;
+ $85 = +HEAPF32[(14028)>>2];
+ $86 = +HEAPF32[(14004)>>2];
$87 = $85 - $86;
- HEAPF32[(13868)>>2] = $87;
+ HEAPF32[(14020)>>2] = $87;
STACKTOP = sp;return;
break;
}
@@ -12272,16 +16522,16 @@ function _ProcessGestureEvent($0) {
function _UpdateGestures() {
var $$off = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $or$cond3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7695]|0;
+ $0 = HEAP32[7736]|0;
$$off = (($0) + -1)|0;
$1 = ($$off>>>0)<(2);
- $2 = HEAP32[7696]|0;
+ $2 = HEAP32[7737]|0;
$3 = ($2|0)<(2);
$or$cond3 = $1 & $3;
if ($or$cond3) {
- HEAP32[7695] = 4;
+ HEAP32[7736] = 4;
}
- $4 = HEAP32[7695]|0;
+ $4 = HEAP32[7736]|0;
$5 = (($4) + -16)|0;
$6 = $5 >>> 4;
$7 = $5 << 28;
@@ -12294,14 +16544,14 @@ function _UpdateGestures() {
return;
}
}
- HEAP32[7695] = 0;
+ HEAP32[7736] = 0;
return;
}
function _GetMousePosition($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = 13904;
+ $1 = 14056;
$2 = $1;
$3 = HEAP32[$2>>2]|0;
$4 = (($1) + 4)|0;
@@ -12318,13 +16568,13 @@ function _GetMousePosition($0) {
function _GetScreenWidth() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7705]|0;
+ $0 = HEAP32[7746]|0;
return ($0|0);
}
function _GetScreenHeight() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7704]|0;
+ $0 = HEAP32[7745]|0;
return ($0|0);
}
function _InitWindow($0,$1,$2) {
@@ -12335,29 +16585,29 @@ function _InitWindow($0,$1,$2) {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- _TraceLog(0,3582,$vararg_buffer);
- HEAP32[7707] = $2;
+ _TraceLog(0,3350,$vararg_buffer);
+ HEAP32[7748] = $2;
_InitGraphicsDevice($0,$1);
_LoadDefaultFont();
- _InitTimer_8();
+ _InitTimer_10();
(_emscripten_set_fullscreenchange_callback((0|0),(0|0),1,(4|0))|0);
- (_emscripten_set_keypress_callback((3611|0),(0|0),1,(5|0))|0);
- (_emscripten_set_click_callback((3611|0),(0|0),1,(6|0))|0);
- (_emscripten_set_touchstart_callback((3611|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchend_callback((3611|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchmove_callback((3611|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchcancel_callback((3611|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_keypress_callback((3379|0),(0|0),1,(5|0))|0);
+ (_emscripten_set_click_callback((3379|0),(0|0),1,(6|0))|0);
+ (_emscripten_set_touchstart_callback((3379|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchend_callback((3379|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchmove_callback((3379|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchcancel_callback((3379|0),(0|0),1,(7|0))|0);
(_emscripten_set_gamepadconnected_callback((0|0),1,(8|0))|0);
(_emscripten_set_gamepaddisconnected_callback((0|0),1,(8|0))|0);
- $3 = HEAP32[7705]|0;
+ $3 = HEAP32[7746]|0;
$4 = (+($3|0));
$5 = $4 * 0.5;
- HEAPF32[3476] = $5;
- $6 = HEAP32[7704]|0;
+ HEAPF32[3514] = $5;
+ $6 = HEAP32[7745]|0;
$7 = (+($6|0));
$8 = $7 * 0.5;
- HEAPF32[(13908)>>2] = $8;
- $9 = HEAP32[7708]|0;
+ HEAPF32[(14060)>>2] = $8;
+ $9 = HEAP32[7749]|0;
$10 = ($9|0)==(0);
if ($10) {
STACKTOP = sp;return;
@@ -12376,11 +16626,11 @@ function _TraceLog($0,$1,$varargs) {
$2 = sp;
switch ($0|0) {
case 0: {
- ;HEAP8[13944>>0]=HEAP8[8140>>0]|0;HEAP8[13944+1>>0]=HEAP8[8140+1>>0]|0;HEAP8[13944+2>>0]=HEAP8[8140+2>>0]|0;HEAP8[13944+3>>0]=HEAP8[8140+3>>0]|0;HEAP8[13944+4>>0]=HEAP8[8140+4>>0]|0;HEAP8[13944+5>>0]=HEAP8[8140+5>>0]|0;HEAP8[13944+6>>0]=HEAP8[8140+6>>0]|0;
+ ;HEAP8[14096>>0]=HEAP8[7908>>0]|0;HEAP8[14096+1>>0]=HEAP8[7908+1>>0]|0;HEAP8[14096+2>>0]=HEAP8[7908+2>>0]|0;HEAP8[14096+3>>0]=HEAP8[7908+3>>0]|0;HEAP8[14096+4>>0]=HEAP8[7908+4>>0]|0;HEAP8[14096+5>>0]=HEAP8[7908+5>>0]|0;HEAP8[14096+6>>0]=HEAP8[7908+6>>0]|0;
break;
}
case 1: {
- $3 = 13944;
+ $3 = 14096;
$4 = $3;
HEAP32[$4>>2] = 1330795077;
$5 = (($3) + 4)|0;
@@ -12389,11 +16639,11 @@ function _TraceLog($0,$1,$varargs) {
break;
}
case 2: {
- dest=13944; src=8147; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
+ dest=14096; src=7915; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
break;
}
case 3: {
- $7 = 13944;
+ $7 = 14096;
$8 = $7;
HEAP32[$8>>2] = 1430406468;
$9 = (($7) + 4)|0;
@@ -12404,16 +16654,16 @@ function _TraceLog($0,$1,$varargs) {
default: {
}
}
- (_strcat(13944,$1)|0);
- $strlen = (_strlen(13944)|0);
- $endptr = (13944 + ($strlen)|0);
+ (_strcat(14096,$1)|0);
+ $strlen = (_strlen(14096)|0);
+ $endptr = (14096 + ($strlen)|0);
HEAP8[$endptr>>0]=10&255;HEAP8[$endptr+1>>0]=10>>8;
HEAP32[$2>>2] = $varargs;
$11 = ($0|0)==(3);
if ($11) {
STACKTOP = sp;return;
}
- (_vprintf(13944,$2)|0);
+ (_vprintf(14096,$2)|0);
$12 = ($0|0)==(1);
if ($12) {
_exit(1);
@@ -12445,22 +16695,22 @@ function _InitGraphicsDevice($0,$1) {
$vararg_buffer = sp;
$2 = sp + 72|0;
$3 = sp + 140|0;
- HEAP32[7705] = $0;
- HEAP32[7704] = $1;
+ HEAP32[7746] = $0;
+ HEAP32[7745] = $1;
_MatrixIdentity($2);
- dest=30908; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31072; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_glfwSetErrorCallback((1|0))|0);
$4 = (_glfwInit()|0);
$5 = ($4|0)==(0);
if ($5) {
- _TraceLog(1,4282,$vararg_buffer);
+ _TraceLog(1,4050,$vararg_buffer);
}
- $6 = HEAP32[7705]|0;
- HEAP32[7743] = $6;
- $7 = HEAP32[7704]|0;
- HEAP32[7744] = $7;
+ $6 = HEAP32[7746]|0;
+ HEAP32[7784] = $6;
+ $7 = HEAP32[7745]|0;
+ HEAP32[7785] = $7;
_glfwDefaultWindowHints();
- $8 = HEAP8[33632]|0;
+ $8 = HEAP8[35948]|0;
$9 = $8 & 4;
$10 = ($9<<24>>24)==(0);
if ($10) {
@@ -12468,18 +16718,18 @@ function _InitGraphicsDevice($0,$1) {
} else {
_glfwWindowHint(131075,1);
}
- $11 = HEAP8[33632]|0;
+ $11 = HEAP8[35948]|0;
$12 = $11 & 8;
$13 = ($12<<24>>24)==(0);
if (!($13)) {
_glfwWindowHint(131077,1);
}
- $14 = HEAP8[33632]|0;
+ $14 = HEAP8[35948]|0;
$15 = $14 & 32;
$16 = ($15<<24>>24)==(0);
if (!($16)) {
_glfwWindowHint(135181,4);
- _TraceLog(0,4308,$vararg_buffer1);
+ _TraceLog(0,4076,$vararg_buffer1);
}
$17 = (_rlGetVersion()|0);
$18 = ($17|0)==(2);
@@ -12496,18 +16746,18 @@ function _InitGraphicsDevice($0,$1) {
_glfwWindowHint(139270,0);
}
}
- $21 = HEAP32[7745]|0;
+ $21 = HEAP32[7786]|0;
$22 = ($21|0)==(0);
if ($22) {
- $47 = HEAP32[7705]|0;
- $48 = HEAP32[7704]|0;
- $49 = HEAP32[7707]|0;
+ $47 = HEAP32[7746]|0;
+ $48 = HEAP32[7745]|0;
+ $49 = HEAP32[7748]|0;
$50 = (_glfwCreateWindow(($47|0),($48|0),($49|0),(0|0),(0|0))|0);
- HEAP32[7703] = $50;
- $51 = HEAP32[7705]|0;
- HEAP32[7746] = $51;
- $52 = HEAP32[7704]|0;
- HEAP32[7747] = $52;
+ HEAP32[7744] = $50;
+ $51 = HEAP32[7746]|0;
+ HEAP32[7787] = $51;
+ $52 = HEAP32[7745]|0;
+ HEAP32[7788] = $52;
$54 = $50;
} else {
$23 = (_glfwGetPrimaryMonitor()|0);
@@ -12516,9 +16766,9 @@ function _InitGraphicsDevice($0,$1) {
$26 = ($25|0)>(0);
L22: do {
if ($26) {
- $27 = HEAP32[7705]|0;
+ $27 = HEAP32[7746]|0;
$28 = HEAP32[$$byval_copy>>2]|0;
- $29 = HEAP32[7704]|0;
+ $29 = HEAP32[7745]|0;
$$015 = 0;
while(1) {
$30 = (($24) + (($$015*24)|0)|0);
@@ -12540,87 +16790,87 @@ function _InitGraphicsDevice($0,$1) {
break L22;
}
}
- HEAP32[7743] = $31;
- HEAP32[7744] = $34;
+ HEAP32[7784] = $31;
+ HEAP32[7785] = $34;
}
} while(0);
- $38 = HEAP32[7743]|0;
- $39 = HEAP32[7744]|0;
+ $38 = HEAP32[7784]|0;
+ $39 = HEAP32[7785]|0;
HEAP32[$vararg_buffer3>>2] = $38;
$vararg_ptr5 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr5>>2] = $39;
- _TraceLog(2,4333,$vararg_buffer3);
- $40 = HEAP32[7743]|0;
- $41 = HEAP32[7744]|0;
+ _TraceLog(2,4101,$vararg_buffer3);
+ $40 = HEAP32[7784]|0;
+ $41 = HEAP32[7785]|0;
_SetupFramebufferSize($40,$41);
- $42 = HEAP32[7743]|0;
- $43 = HEAP32[7744]|0;
- $44 = HEAP32[7707]|0;
+ $42 = HEAP32[7784]|0;
+ $43 = HEAP32[7785]|0;
+ $44 = HEAP32[7748]|0;
$45 = (_glfwGetPrimaryMonitor()|0);
$46 = (_glfwCreateWindow(($42|0),($43|0),($44|0),($45|0),(0|0))|0);
- HEAP32[7703] = $46;
+ HEAP32[7744] = $46;
$54 = $46;
}
$53 = ($54|0)==(0|0);
if ($53) {
_glfwTerminate();
- _TraceLog(1,4371,$vararg_buffer6);
+ _TraceLog(1,4139,$vararg_buffer6);
} else {
- _TraceLog(0,4404,$vararg_buffer8);
- $55 = HEAP32[7746]|0;
- $56 = HEAP32[7747]|0;
+ _TraceLog(0,4172,$vararg_buffer8);
+ $55 = HEAP32[7787]|0;
+ $56 = HEAP32[7788]|0;
HEAP32[$vararg_buffer10>>2] = $55;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $56;
- _TraceLog(0,4444,$vararg_buffer10);
- $57 = HEAP32[7705]|0;
- $58 = HEAP32[7704]|0;
+ _TraceLog(0,4212,$vararg_buffer10);
+ $57 = HEAP32[7746]|0;
+ $58 = HEAP32[7745]|0;
HEAP32[$vararg_buffer14>>2] = $57;
$vararg_ptr17 = ((($vararg_buffer14)) + 4|0);
HEAP32[$vararg_ptr17>>2] = $58;
- _TraceLog(0,4465,$vararg_buffer14);
- $59 = HEAP32[7748]|0;
- $60 = HEAP32[7749]|0;
+ _TraceLog(0,4233,$vararg_buffer14);
+ $59 = HEAP32[7789]|0;
+ $60 = HEAP32[7790]|0;
HEAP32[$vararg_buffer18>>2] = $59;
$vararg_ptr21 = ((($vararg_buffer18)) + 4|0);
HEAP32[$vararg_ptr21>>2] = $60;
- _TraceLog(0,4486,$vararg_buffer18);
+ _TraceLog(0,4254,$vararg_buffer18);
}
- $61 = HEAP32[7703]|0;
+ $61 = HEAP32[7744]|0;
(_glfwSetWindowSizeCallback(($61|0),(1|0))|0);
- $62 = HEAP32[7703]|0;
+ $62 = HEAP32[7744]|0;
(_glfwSetCursorEnterCallback(($62|0),(2|0))|0);
- $63 = HEAP32[7703]|0;
+ $63 = HEAP32[7744]|0;
(_glfwSetKeyCallback(($63|0),(1|0))|0);
- $64 = HEAP32[7703]|0;
+ $64 = HEAP32[7744]|0;
(_glfwSetMouseButtonCallback(($64|0),(1|0))|0);
- $65 = HEAP32[7703]|0;
+ $65 = HEAP32[7744]|0;
(_glfwSetCursorPosCallback(($65|0),(1|0))|0);
- $66 = HEAP32[7703]|0;
+ $66 = HEAP32[7744]|0;
(_glfwSetCharCallback(($66|0),(3|0))|0);
- $67 = HEAP32[7703]|0;
+ $67 = HEAP32[7744]|0;
(_glfwSetScrollCallback(($67|0),(2|0))|0);
- $68 = HEAP32[7703]|0;
+ $68 = HEAP32[7744]|0;
(_glfwSetWindowIconifyCallback(($68|0),(4|0))|0);
- $69 = HEAP32[7703]|0;
+ $69 = HEAP32[7744]|0;
_glfwMakeContextCurrent(($69|0));
_glfwSwapInterval(0);
- $70 = HEAP8[33632]|0;
+ $70 = HEAP8[35948]|0;
$71 = $70 & 64;
$72 = ($71<<24>>24)==(0);
if ($72) {
- $73 = HEAP32[7705]|0;
- $74 = HEAP32[7704]|0;
+ $73 = HEAP32[7746]|0;
+ $74 = HEAP32[7745]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7746]|0;
- $76 = HEAP32[7748]|0;
+ $75 = HEAP32[7787]|0;
+ $76 = HEAP32[7789]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7747]|0;
- $80 = HEAP32[7749]|0;
+ $79 = HEAP32[7788]|0;
+ $80 = HEAP32[7790]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -12638,19 +16888,19 @@ function _InitGraphicsDevice($0,$1) {
STACKTOP = sp;return;
}
_glfwSwapInterval(1);
- _TraceLog(0,4511,$vararg_buffer22);
- $73 = HEAP32[7705]|0;
- $74 = HEAP32[7704]|0;
+ _TraceLog(0,4279,$vararg_buffer22);
+ $73 = HEAP32[7746]|0;
+ $74 = HEAP32[7745]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7746]|0;
- $76 = HEAP32[7748]|0;
+ $75 = HEAP32[7787]|0;
+ $76 = HEAP32[7789]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7747]|0;
- $80 = HEAP32[7749]|0;
+ $79 = HEAP32[7788]|0;
+ $80 = HEAP32[7790]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -12678,12 +16928,12 @@ function _LoadDefaultFont() {
$vararg_buffer = sp;
$0 = sp + 4|0;
$1 = sp + 24|0;
- HEAP32[(30876)>>2] = 224;
+ HEAP32[(31040)>>2] = 224;
$2 = (_malloc(65536)|0);
_memset(($2|0),0,65536)|0;
$$095104 = 0;$$096103 = 0;
while(1) {
- $3 = (16 + ($$095104<<2)|0);
+ $3 = (28 + ($$095104<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$097102 = 31;
while(1) {
@@ -12719,27 +16969,27 @@ function _LoadDefaultFont() {
_free($2);
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_LoadTextureFromImage($1,$$byval_copy1);
- ;HEAP32[30852>>2]=HEAP32[$1>>2]|0;HEAP32[30852+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[30852+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[30852+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[30852+16>>2]=HEAP32[$1+16>>2]|0;
+ ;HEAP32[31016>>2]=HEAP32[$1>>2]|0;HEAP32[31016+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[31016+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[31016+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[31016+16>>2]=HEAP32[$1+16>>2]|0;
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_UnloadImage($$byval_copy1);
- $5 = HEAP32[(30876)>>2]|0;
+ $5 = HEAP32[(31040)>>2]|0;
$6 = $5 << 5;
$7 = (_malloc($6)|0);
- HEAP32[(30880)>>2] = $7;
+ HEAP32[(31044)>>2] = $7;
$8 = ($5|0)>(0);
if (!($8)) {
$$lcssa = $7;
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30872)>>2] = $23;
- $24 = HEAP32[7713]|0;
+ HEAP32[(31036)>>2] = $23;
+ $24 = HEAP32[7754]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3806,$vararg_buffer);
+ _TraceLog(0,3574,$vararg_buffer);
STACKTOP = sp;return;
}
- $9 = HEAP32[(30856)>>2]|0;
- $10 = HEAP32[(30876)>>2]|0;
- $11 = HEAP32[(30880)>>2]|0;
+ $9 = HEAP32[(31020)>>2]|0;
+ $10 = HEAP32[(31040)>>2]|0;
+ $11 = HEAP32[(31044)>>2]|0;
$$0101 = 0;$$090100 = 1;$$09299 = 0;$27 = $7;
while(1) {
$25 = (($$0101) + 32)|0;
@@ -12751,7 +17001,7 @@ function _LoadDefaultFont() {
$30 = (($29) + 1)|0;
$31 = (((($27) + ($$0101<<5)|0)) + 8|0);
HEAP32[$31>>2] = $30;
- $32 = (2064 + ($$0101<<2)|0);
+ $32 = (2076 + ($$0101<<2)|0);
$33 = HEAP32[$32>>2]|0;
$34 = (((($27) + ($$0101<<5)|0)) + 12|0);
HEAP32[$34>>2] = $33;
@@ -12788,19 +17038,19 @@ function _LoadDefaultFont() {
}
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30872)>>2] = $23;
- $24 = HEAP32[7713]|0;
+ HEAP32[(31036)>>2] = $23;
+ $24 = HEAP32[7754]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3806,$vararg_buffer);
+ _TraceLog(0,3574,$vararg_buffer);
STACKTOP = sp;return;
}
-function _InitTimer_8() {
+function _InitTimer_10() {
var $0 = 0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetTime());
- HEAPF64[1742] = $1;
+ HEAPF64[1761] = $1;
return;
}
function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
@@ -12830,7 +17080,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr8>>2] = $10;
$vararg_ptr9 = ((($vararg_buffer4)) + 12|0);
HEAP32[$vararg_ptr9>>2] = $12;
- _TraceLog(0,3739,$vararg_buffer4);
+ _TraceLog(0,3507,$vararg_buffer4);
STACKTOP = sp;return 0;
} else {
HEAP32[$vararg_buffer>>2] = $6;
@@ -12840,7 +17090,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr2>>2] = $10;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $12;
- _TraceLog(0,3670,$vararg_buffer);
+ _TraceLog(0,3438,$vararg_buffer);
STACKTOP = sp;return 0;
}
return (0)|0;
@@ -12856,7 +17106,7 @@ function _EmscriptenKeyboardCallback($0,$1,$2) {
return 0;
}
$4 = ((($1)) + 32|0);
- $5 = (_strcmp($4,3663)|0);
+ $5 = (_strcmp($4,3431)|0);
$6 = ($5|0)==(0);
if (!($6)) {
return 0;
@@ -12959,7 +17209,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$28 = (($25) + 4)|0;
$29 = $28;
$30 = HEAP32[$29>>2]|0;
- $31 = 13920;
+ $31 = 14072;
$32 = $31;
HEAP32[$32>>2] = $27;
$33 = (($31) + 4)|0;
@@ -12972,7 +17222,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$39 = (($36) + 4)|0;
$40 = $39;
$41 = HEAP32[$40>>2]|0;
- $42 = (13928);
+ $42 = (14080);
$43 = $42;
HEAP32[$43>>2] = $38;
$44 = (($42) + 4)|0;
@@ -13028,7 +17278,7 @@ function _EmscriptenGamepadCallback($0,$1,$2) {
}
$9 = ((($1)) + 1300|0);
$10 = HEAP32[$9>>2]|0;
- $11 = (30836 + ($10<<2)|0);
+ $11 = (31000 + ($10<<2)|0);
HEAP32[$11>>2] = $$sink;
return 0;
}
@@ -13042,19 +17292,19 @@ function _SetTargetFPS($0) {
$2 = (+($0|0));
$3 = 1.0 / $2;
$$ = $1 ? 0.0 : $3;
- HEAPF64[1739] = $$;
+ HEAPF64[1758] = $$;
$4 = $3;
$$op = $4 * 1000.0;
$5 = $$op;
$6 = $1 ? 0.0 : $5;
HEAPF64[$vararg_buffer>>3] = $6;
- _TraceLog(0,3619,$vararg_buffer);
+ _TraceLog(0,3387,$vararg_buffer);
STACKTOP = sp;return;
}
function _LogoAnimation() {
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7708] = 0;
+ HEAP32[7749] = 0;
return;
}
function _GetTime() {
@@ -13153,7 +17403,7 @@ function _ImageFormat($0,$1) {
$6 = ($1|0)<(8);
$or$cond = $6 & $5;
if (!($or$cond)) {
- _TraceLog(2,4182,$vararg_buffer);
+ _TraceLog(2,3950,$vararg_buffer);
STACKTOP = sp;return;
}
;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[$0+16>>2]|0;
@@ -13630,52 +17880,52 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$5 = sp + 68|0;
_glBindTexture(3553,0);
HEAP32[$5>>2] = 0;
- $6 = HEAP32[7721]|0;
+ $6 = HEAP32[7762]|0;
$7 = ($6|0)==(0);
$8 = $3 & -4;
$switch = ($8|0)==(8);
$or$cond100 = $switch & $7;
if ($or$cond100) {
- _TraceLog(2,3851,$vararg_buffer);
+ _TraceLog(2,3619,$vararg_buffer);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $9 = HEAP32[7722]|0;
+ $9 = HEAP32[7763]|0;
$10 = ($9|0)==(0);
$11 = ($3|0)==(12);
$or$cond7 = $11 & $10;
if ($or$cond7) {
- _TraceLog(2,3895,$vararg_buffer1);
+ _TraceLog(2,3663,$vararg_buffer1);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $12 = HEAP32[7723]|0;
+ $12 = HEAP32[7764]|0;
$13 = ($12|0)==(0);
$$off = (($3) + -13)|0;
$14 = ($$off>>>0)<(2);
$or$cond = $14 & $13;
if ($or$cond) {
- _TraceLog(2,3940,$vararg_buffer3);
+ _TraceLog(2,3708,$vararg_buffer3);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $15 = HEAP32[7724]|0;
+ $15 = HEAP32[7765]|0;
$16 = ($15|0)==(0);
$$off92 = (($3) + -15)|0;
$17 = ($$off92>>>0)<(2);
$or$cond96 = $17 & $16;
if ($or$cond96) {
- _TraceLog(2,3985,$vararg_buffer5);
+ _TraceLog(2,3753,$vararg_buffer5);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $18 = HEAP32[7725]|0;
+ $18 = HEAP32[7766]|0;
$19 = ($18|0)==(0);
$$off93 = (($3) + -17)|0;
$20 = ($$off93>>>0)<(2);
$or$cond98 = $20 & $19;
if ($or$cond98) {
- _TraceLog(2,4030,$vararg_buffer7);
+ _TraceLog(2,3798,$vararg_buffer7);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -13713,7 +17963,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 8: {
- $22 = HEAP32[7721]|0;
+ $22 = HEAP32[7762]|0;
$23 = ($22|0)==(0);
if (!($23)) {
_LoadCompressedTexture($0,$1,$2,$4,33776);
@@ -13721,7 +17971,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 9: {
- $24 = HEAP32[7721]|0;
+ $24 = HEAP32[7762]|0;
$25 = ($24|0)==(0);
if (!($25)) {
_LoadCompressedTexture($0,$1,$2,$4,33777);
@@ -13729,7 +17979,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 10: {
- $26 = HEAP32[7721]|0;
+ $26 = HEAP32[7762]|0;
$27 = ($26|0)==(0);
if (!($27)) {
_LoadCompressedTexture($0,$1,$2,$4,33778);
@@ -13737,7 +17987,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 11: {
- $28 = HEAP32[7721]|0;
+ $28 = HEAP32[7762]|0;
$29 = ($28|0)==(0);
if (!($29)) {
_LoadCompressedTexture($0,$1,$2,$4,33779);
@@ -13745,7 +17995,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 12: {
- $30 = HEAP32[7722]|0;
+ $30 = HEAP32[7763]|0;
$31 = ($30|0)==(0);
if (!($31)) {
_LoadCompressedTexture($0,$1,$2,$4,36196);
@@ -13753,7 +18003,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 13: {
- $32 = HEAP32[7723]|0;
+ $32 = HEAP32[7764]|0;
$33 = ($32|0)==(0);
if (!($33)) {
_LoadCompressedTexture($0,$1,$2,$4,37492);
@@ -13761,7 +18011,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 14: {
- $34 = HEAP32[7723]|0;
+ $34 = HEAP32[7764]|0;
$35 = ($34|0)==(0);
if (!($35)) {
_LoadCompressedTexture($0,$1,$2,$4,37496);
@@ -13769,7 +18019,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 15: {
- $36 = HEAP32[7724]|0;
+ $36 = HEAP32[7765]|0;
$37 = ($36|0)==(0);
if (!($37)) {
_LoadCompressedTexture($0,$1,$2,$4,35840);
@@ -13777,7 +18027,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 16: {
- $38 = HEAP32[7724]|0;
+ $38 = HEAP32[7765]|0;
$39 = ($38|0)==(0);
if (!($39)) {
_LoadCompressedTexture($0,$1,$2,$4,35842);
@@ -13785,7 +18035,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 17: {
- $40 = HEAP32[7725]|0;
+ $40 = HEAP32[7766]|0;
$41 = ($40|0)==(0);
if (!($41)) {
_LoadCompressedTexture($0,$1,$2,$4,37808);
@@ -13793,7 +18043,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 18: {
- $42 = HEAP32[7725]|0;
+ $42 = HEAP32[7766]|0;
$43 = ($42|0)==(0);
if (!($43)) {
_LoadCompressedTexture($0,$1,$2,$4,37815);
@@ -13801,11 +18051,11 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
default: {
- _TraceLog(2,4075,$vararg_buffer9);
+ _TraceLog(2,3843,$vararg_buffer9);
}
}
} while(0);
- $44 = HEAP32[7726]|0;
+ $44 = HEAP32[7767]|0;
$45 = ($44|0)==(0);
if ($45) {
_glTexParameteri(3553,10242,33071);
@@ -13820,7 +18070,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$46 = HEAP32[$5>>2]|0;
$47 = ($46|0)==(0);
if ($47) {
- _TraceLog(2,4153,$vararg_buffer15);
+ _TraceLog(2,3921,$vararg_buffer15);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
} else {
@@ -13829,7 +18079,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
HEAP32[$vararg_ptr13>>2] = $1;
$vararg_ptr14 = ((($vararg_buffer11)) + 8|0);
HEAP32[$vararg_ptr14>>2] = $2;
- _TraceLog(0,4104,$vararg_buffer11);
+ _TraceLog(0,3872,$vararg_buffer11);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14103,7 +18353,7 @@ function _GetImageData($0) {
break;
}
default: {
- _TraceLog(2,4236,$vararg_buffer);
+ _TraceLog(2,4004,$vararg_buffer);
$$1 = $$0106;
}
}
@@ -14130,7 +18380,7 @@ function _ErrorCallback($0,$1) {
HEAP32[$vararg_buffer>>2] = $0;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $1;
- _TraceLog(2,8102,$vararg_buffer);
+ _TraceLog(2,7870,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlGetVersion() {
@@ -14151,20 +18401,20 @@ function _SetupFramebufferSize($0,$1) {
$vararg_buffer4 = sp + 16|0;
$vararg_buffer = sp;
$2 = sp + 40|0;
- $3 = HEAP32[7705]|0;
+ $3 = HEAP32[7746]|0;
$4 = ($3|0)>($0|0);
if (!($4)) {
- $5 = HEAP32[7704]|0;
+ $5 = HEAP32[7745]|0;
$6 = ($5|0)>($1|0);
if (!($6)) {
$30 = ($3|0)<($0|0);
$31 = ($5|0)<($1|0);
$or$cond = $30 | $31;
if (!($or$cond)) {
- HEAP32[7746] = $3;
- HEAP32[7747] = $5;
- HEAP32[7748] = 0;
- HEAP32[7749] = 0;
+ HEAP32[7787] = $3;
+ HEAP32[7788] = $5;
+ HEAP32[7789] = 0;
+ HEAP32[7790] = 0;
STACKTOP = sp;return;
}
HEAP32[$vararg_buffer8>>2] = $3;
@@ -14174,13 +18424,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr12>>2] = $0;
$vararg_ptr13 = ((($vararg_buffer8)) + 12|0);
HEAP32[$vararg_ptr13>>2] = $1;
- _TraceLog(0,8036,$vararg_buffer8);
+ _TraceLog(0,7804,$vararg_buffer8);
$32 = (+($0|0));
$33 = (+($1|0));
$34 = $32 / $33;
- $35 = HEAP32[7705]|0;
+ $35 = HEAP32[7746]|0;
$36 = (+($35|0));
- $37 = HEAP32[7704]|0;
+ $37 = HEAP32[7745]|0;
$38 = (+($37|0));
$39 = $36 / $38;
$40 = !($34 <= $39);
@@ -14188,26 +18438,26 @@ function _SetupFramebufferSize($0,$1) {
$44 = $34 * $38;
$roundf = (+_roundf((+$44)));
$45 = (~~(($roundf)));
- HEAP32[7746] = $45;
- HEAP32[7747] = $37;
+ HEAP32[7787] = $45;
+ HEAP32[7788] = $37;
$46 = (($45) - ($35))|0;
- HEAP32[7748] = $46;
+ HEAP32[7789] = $46;
$$sink1 = 0;
} else {
- HEAP32[7746] = $35;
+ HEAP32[7787] = $35;
$41 = $36 / $34;
$roundf38 = (+_roundf((+$41)));
$42 = (~~(($roundf38)));
- HEAP32[7747] = $42;
- HEAP32[7748] = 0;
+ HEAP32[7788] = $42;
+ HEAP32[7789] = 0;
$43 = (($42) - ($37))|0;
$$sink1 = $43;
}
- HEAP32[7749] = $$sink1;
+ HEAP32[7790] = $$sink1;
STACKTOP = sp;return;
}
}
- $7 = HEAP32[7704]|0;
+ $7 = HEAP32[7745]|0;
HEAP32[$vararg_buffer>>2] = $3;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $7;
@@ -14215,13 +18465,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr2>>2] = $0;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $1;
- _TraceLog(2,7893,$vararg_buffer);
+ _TraceLog(2,7661,$vararg_buffer);
$8 = (+($0|0));
- $9 = HEAP32[7705]|0;
+ $9 = HEAP32[7746]|0;
$10 = (+($9|0));
$11 = $8 / $10;
$12 = (+($1|0));
- $13 = HEAP32[7704]|0;
+ $13 = HEAP32[7745]|0;
$14 = (+($13|0));
$15 = $12 / $14;
$16 = !($11 <= $15);
@@ -14229,37 +18479,37 @@ function _SetupFramebufferSize($0,$1) {
$22 = $10 * $15;
$roundf39 = (+_roundf((+$22)));
$23 = (~~(($roundf39)));
- HEAP32[7746] = $23;
- HEAP32[7747] = $1;
+ HEAP32[7787] = $23;
+ HEAP32[7788] = $1;
$24 = (($0) - ($23))|0;
- HEAP32[7748] = $24;
+ HEAP32[7789] = $24;
$$sink = 0;
} else {
- HEAP32[7746] = $0;
- $17 = HEAP32[7704]|0;
+ HEAP32[7787] = $0;
+ $17 = HEAP32[7745]|0;
$18 = (+($17|0));
$19 = $11 * $18;
$roundf40 = (+_roundf((+$19)));
$20 = (~~(($roundf40)));
- HEAP32[7747] = $20;
- HEAP32[7748] = 0;
+ HEAP32[7788] = $20;
+ HEAP32[7789] = 0;
$21 = (($1) - ($20))|0;
$$sink = $21;
}
- HEAP32[7749] = $$sink;
- $25 = HEAP32[7746]|0;
+ HEAP32[7790] = $$sink;
+ $25 = HEAP32[7787]|0;
$26 = (+($25|0));
- $27 = HEAP32[7705]|0;
+ $27 = HEAP32[7746]|0;
$28 = (+($27|0));
$29 = $26 / $28;
_MatrixScale($2,$29,$29,$29);
- dest=30908; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7746] = $0;
- HEAP32[7747] = $1;
+ dest=31072; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7787] = $0;
+ HEAP32[7788] = $1;
HEAP32[$vararg_buffer4>>2] = $0;
$vararg_ptr7 = ((($vararg_buffer4)) + 4|0);
HEAP32[$vararg_ptr7>>2] = $1;
- _TraceLog(2,7971,$vararg_buffer4);
+ _TraceLog(2,7739,$vararg_buffer4);
STACKTOP = sp;return;
}
function _WindowSizeCallback($0,$1,$2) {
@@ -14277,10 +18527,10 @@ function _WindowSizeCallback($0,$1,$2) {
_rlMatrixMode(5888);
_rlLoadIdentity();
_rlClearScreenBuffers();
- HEAP32[7705] = $1;
- HEAP32[7704] = $2;
HEAP32[7746] = $1;
- HEAP32[7747] = $2;
+ HEAP32[7745] = $2;
+ HEAP32[7787] = $1;
+ HEAP32[7788] = $2;
return;
}
function _CursorEnterCallback($0,$1) {
@@ -14298,7 +18548,7 @@ function _KeyCallback($0,$1,$2,$3,$4) {
$4 = $4|0;
var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $5 = HEAP32[741]|0;
+ $5 = HEAP32[744]|0;
$6 = ($5|0)==($1|0);
$7 = ($3|0)==(1);
$or$cond = $7 & $6;
@@ -14307,12 +18557,12 @@ function _KeyCallback($0,$1,$2,$3,$4) {
return;
}
$8 = $3&255;
- $9 = (33639 + ($1)|0);
+ $9 = (35955 + ($1)|0);
HEAP8[$9>>0] = $8;
if (!($7)) {
return;
}
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _MouseButtonCallback($0,$1,$2,$3) {
@@ -14328,7 +18578,7 @@ function _MouseButtonCallback($0,$1,$2,$3) {
$4 = sp + 8|0;
$5 = sp;
$6 = $2&255;
- $7 = (33633 + ($1)|0);
+ $7 = (35949 + ($1)|0);
HEAP8[$7>>0] = $6;
$8 = (_IsMouseButtonPressed(0)|0);
$9 = ($8|0)==(0);
@@ -14407,7 +18657,7 @@ function _MouseCursorPosCallback($0,$1,$2) {
$12 = (($9) + 4)|0;
$13 = $12;
$14 = HEAP32[$13>>2]|0;
- $15 = 13920;
+ $15 = 14072;
$16 = $15;
HEAP32[$16>>2] = $11;
$17 = (($15) + 4)|0;
@@ -14432,7 +18682,7 @@ function _CharCallback($0,$1) {
$1 = $1|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _ScrollCallback($0,$1,$2) {
@@ -14442,7 +18692,7 @@ function _ScrollCallback($0,$1,$2) {
var $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
$3 = (~~(($2)));
- HEAP32[8119] = $3;
+ HEAP32[8160] = $3;
return;
}
function _WindowIconifyCallback($0,$1) {
@@ -14452,7 +18702,7 @@ function _WindowIconifyCallback($0,$1) {
sp = STACKTOP;
$2 = ($1|0)!=(0);
$$sink = $2&1;
- HEAP32[8118] = $$sink;
+ HEAP32[8159] = $$sink;
return;
}
function _rlglInit($0,$1) {
@@ -14492,16 +18742,16 @@ function _rlglInit($0,$1) {
$6 = sp + 2192|0;
$7 = (_glGetString(7936)|0);
HEAP32[$vararg_buffer>>2] = $7;
- _TraceLog(0,4534,$vararg_buffer);
+ _TraceLog(0,4302,$vararg_buffer);
$8 = (_glGetString(7937)|0);
HEAP32[$vararg_buffer1>>2] = $8;
- _TraceLog(0,4552,$vararg_buffer1);
+ _TraceLog(0,4320,$vararg_buffer1);
$9 = (_glGetString(7938)|0);
HEAP32[$vararg_buffer4>>2] = $9;
- _TraceLog(0,4570,$vararg_buffer4);
+ _TraceLog(0,4338,$vararg_buffer4);
$10 = (_glGetString(35724)|0);
HEAP32[$vararg_buffer7>>2] = $10;
- _TraceLog(0,4588,$vararg_buffer7);
+ _TraceLog(0,4356,$vararg_buffer7);
$11 = (_glGetString(7939)|0);
$12 = (_strlen($11)|0);
$13 = (($12) + 1)|0;
@@ -14509,7 +18759,7 @@ function _rlglInit($0,$1) {
_memcpy(($14|0),($11|0),($13|0))|0;
$$062 = 0;$$sink63 = $14;
while(1) {
- $15 = (_strtok($$sink63,4606)|0);
+ $15 = (_strtok($$sink63,4374)|0);
$16 = (($vararg_buffer7) + ($$062<<2)|0);
HEAP32[$16>>2] = $15;
$17 = ($15|0)==(0|0);
@@ -14523,41 +18773,41 @@ function _rlglInit($0,$1) {
_free($14);
$19 = (($$062) + -1)|0;
HEAP32[$vararg_buffer10>>2] = $19;
- _TraceLog(0,4608,$vararg_buffer10);
+ _TraceLog(0,4376,$vararg_buffer10);
$20 = ($$062|0)>(1);
if ($20) {
$$06167 = 0;
while(1) {
$23 = (($vararg_buffer7) + ($$06167<<2)|0);
$24 = HEAP32[$23>>2]|0;
- $25 = (_strcmp($24,4643)|0);
+ $25 = (_strcmp($24,4411)|0);
$26 = ($25|0)==(0);
if ($26) {
- HEAP32[7784] = 1;
- $27 = (_eglGetProcAddress((4670|0))|0);
- HEAP32[7785] = $27;
- $28 = (_eglGetProcAddress((4691|0))|0);
- HEAP32[7786] = $28;
- $29 = (_eglGetProcAddress((4712|0))|0);
- HEAP32[7787] = $29;
- }
- $30 = (_strcmp($24,4736)|0);
+ HEAP32[7825] = 1;
+ $27 = (_eglGetProcAddress((4438|0))|0);
+ HEAP32[7826] = $27;
+ $28 = (_eglGetProcAddress((4459|0))|0);
+ HEAP32[7827] = $28;
+ $29 = (_eglGetProcAddress((4480|0))|0);
+ HEAP32[7828] = $29;
+ }
+ $30 = (_strcmp($24,4504)|0);
$31 = ($30|0)==(0);
if ($31) {
- HEAP32[7726] = 1;
+ HEAP32[7767] = 1;
}
- $32 = (_strcmp($24,4756)|0);
+ $32 = (_strcmp($24,4524)|0);
$33 = ($32|0)==(0);
if ($33) {
label = 12;
} else {
$34 = HEAP32[$23>>2]|0;
- $35 = (_strcmp($34,4788)|0);
+ $35 = (_strcmp($34,4556)|0);
$36 = ($35|0)==(0);
if ($36) {
label = 12;
} else {
- $37 = (_strcmp($34,4821)|0);
+ $37 = (_strcmp($34,4589)|0);
$38 = ($37|0)==(0);
if ($38) {
label = 12;
@@ -14566,15 +18816,15 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 12) {
label = 0;
- HEAP32[7721] = 1;
+ HEAP32[7762] = 1;
}
- $39 = (_strcmp($24,4861)|0);
+ $39 = (_strcmp($24,4629)|0);
$40 = ($39|0)==(0);
if ($40) {
label = 15;
} else {
$41 = HEAP32[$23>>2]|0;
- $42 = (_strcmp($41,4897)|0);
+ $42 = (_strcmp($41,4665)|0);
$43 = ($42|0)==(0);
if ($43) {
label = 15;
@@ -14582,35 +18832,35 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 15) {
label = 0;
- HEAP32[7722] = 1;
+ HEAP32[7763] = 1;
}
$44 = HEAP32[$23>>2]|0;
- $45 = (_strcmp($44,4930)|0);
+ $45 = (_strcmp($44,4698)|0);
$46 = ($45|0)==(0);
if ($46) {
- HEAP32[7723] = 1;
+ HEAP32[7764] = 1;
}
- $47 = (_strcmp($44,4955)|0);
+ $47 = (_strcmp($44,4723)|0);
$48 = ($47|0)==(0);
if ($48) {
- HEAP32[7724] = 1;
+ HEAP32[7765] = 1;
}
- $49 = (_strcmp($44,4988)|0);
+ $49 = (_strcmp($44,4756)|0);
$50 = ($49|0)==(0);
if ($50) {
- HEAP32[7725] = 1;
+ HEAP32[7766] = 1;
}
- $51 = (_strcmp($44,5024)|0);
+ $51 = (_strcmp($44,4792)|0);
$52 = ($51|0)==(0);
if ($52) {
- HEAP32[7788] = 1;
- _glGetFloatv(34047,(31156|0));
+ HEAP32[7829] = 1;
+ _glGetFloatv(34047,(31320|0));
}
$53 = HEAP32[$23>>2]|0;
- $54 = (_strcmp($53,5058)|0);
+ $54 = (_strcmp($53,4826)|0);
$55 = ($54|0)==(0);
if ($55) {
- HEAP32[7790] = 1;
+ HEAP32[7831] = 1;
}
$56 = (($$06167) + 1)|0;
$exitcond70 = ($56|0)==($19|0);
@@ -14621,77 +18871,77 @@ function _rlglInit($0,$1) {
}
}
}
- $21 = HEAP32[7784]|0;
+ $21 = HEAP32[7825]|0;
$22 = ($21|0)==(0);
if ($22) {
- _TraceLog(2,5161,$vararg_buffer15);
+ _TraceLog(2,4929,$vararg_buffer15);
} else {
- _TraceLog(0,5086,$vararg_buffer13);
+ _TraceLog(0,4854,$vararg_buffer13);
}
- $57 = HEAP32[7726]|0;
+ $57 = HEAP32[7767]|0;
$58 = ($57|0)==(0);
if ($58) {
- _TraceLog(2,5297,$vararg_buffer19);
+ _TraceLog(2,5065,$vararg_buffer19);
} else {
- _TraceLog(0,5222,$vararg_buffer17);
+ _TraceLog(0,4990,$vararg_buffer17);
}
- $59 = HEAP32[7721]|0;
+ $59 = HEAP32[7762]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- _TraceLog(0,5389,$vararg_buffer21);
+ _TraceLog(0,5157,$vararg_buffer21);
}
- $61 = HEAP32[7722]|0;
+ $61 = HEAP32[7763]|0;
$62 = ($61|0)==(0);
if (!($62)) {
- _TraceLog(0,5435,$vararg_buffer23);
+ _TraceLog(0,5203,$vararg_buffer23);
}
- $63 = HEAP32[7723]|0;
+ $63 = HEAP32[7764]|0;
$64 = ($63|0)==(0);
if (!($64)) {
- _TraceLog(0,5482,$vararg_buffer25);
+ _TraceLog(0,5250,$vararg_buffer25);
}
- $65 = HEAP32[7724]|0;
+ $65 = HEAP32[7765]|0;
$66 = ($65|0)==(0);
if (!($66)) {
- _TraceLog(0,5533,$vararg_buffer27);
+ _TraceLog(0,5301,$vararg_buffer27);
}
- $67 = HEAP32[7725]|0;
+ $67 = HEAP32[7766]|0;
$68 = ($67|0)==(0);
if (!($68)) {
- _TraceLog(0,5580,$vararg_buffer29);
+ _TraceLog(0,5348,$vararg_buffer29);
}
- $69 = HEAP32[7788]|0;
+ $69 = HEAP32[7829]|0;
$70 = ($69|0)==(0);
if (!($70)) {
- $71 = +HEAPF32[7789];
+ $71 = +HEAPF32[7830];
$72 = $71;
HEAPF64[$vararg_buffer31>>3] = $72;
- _TraceLog(0,5627,$vararg_buffer31);
+ _TraceLog(0,5395,$vararg_buffer31);
}
- $73 = HEAP32[7790]|0;
+ $73 = HEAP32[7831]|0;
$74 = ($73|0)==(0);
if (!($74)) {
- _TraceLog(0,5693,$vararg_buffer34);
+ _TraceLog(0,5461,$vararg_buffer34);
}
HEAP32[$vararg_buffer10>>2] = -1;
$75 = (_rlglLoadTexture($vararg_buffer10,1,1,7,1)|0);
- HEAP32[7791] = $75;
+ HEAP32[7832] = $75;
$76 = ($75|0)==(0);
if ($76) {
- _TraceLog(2,5797,$vararg_buffer39);
+ _TraceLog(2,5565,$vararg_buffer39);
} else {
HEAP32[$vararg_buffer36>>2] = $75;
- _TraceLog(0,5746,$vararg_buffer36);
+ _TraceLog(0,5514,$vararg_buffer36);
}
_LoadDefaultShader($2);
- dest=31168; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31224; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31332; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31388; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_LoadDefaultBuffers();
$77 = (_malloc(49152)|0);
- HEAP32[7820] = $77;
+ HEAP32[7861] = $77;
$$06066 = 0;
while(1) {
- $79 = HEAP32[7820]|0;
+ $79 = HEAP32[7861]|0;
$80 = (($79) + (($$06066*12)|0)|0);
_VectorZero($3);
;HEAP32[$80>>2]=HEAP32[$3>>2]|0;HEAP32[$80+4>>2]=HEAP32[$3+4>>2]|0;HEAP32[$80+8>>2]=HEAP32[$3+8>>2]|0;
@@ -14704,7 +18954,7 @@ function _rlglInit($0,$1) {
}
}
$78 = (_malloc(36864)|0);
- HEAP32[7821] = $78;
+ HEAP32[7862] = $78;
$$05965 = 0;
while(1) {
$82 = (((($78) + (($$05965*144)|0)|0)) + 8|0);
@@ -14719,48 +18969,48 @@ function _rlglInit($0,$1) {
$$05965 = $84;
}
}
- HEAP32[7822] = 1;
- $85 = HEAP32[7791]|0;
+ HEAP32[7863] = 1;
+ $85 = HEAP32[7832]|0;
$86 = ((($78)) + 8|0);
HEAP32[$86>>2] = $85;
- HEAP32[7823] = 4;
+ HEAP32[7864] = 4;
_MatrixIdentity($4);
- dest=31296; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31460; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31360); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31524); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31424); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31588); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31488); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31652); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31552); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31716); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31616); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31780); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31680); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31844); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31744); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31908); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31808); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31972); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31872); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32036); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31936); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32100); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32000); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32164); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32064); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32228); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32128); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32292); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32192); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32356); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32256); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32420); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($5);
- dest=31004; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31168; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($6);
- dest=31068; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7750] = 31068;
+ dest=31232; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7791] = 31232;
_glDepthFunc(515);
_glDisable(2929);
_glBlendFunc(770,771);
@@ -14771,21 +19021,21 @@ function _rlglInit($0,$1) {
_glClearColor(0.0,0.0,0.0,1.0);
_glClearDepthf(1.0);
_glClear(16640);
- HEAP32[8080] = $0;
- HEAP32[8081] = $1;
- _TraceLog(0,5836,$vararg_buffer41);
+ HEAP32[8121] = $0;
+ HEAP32[8122] = $1;
+ _TraceLog(0,5604,$vararg_buffer41);
STACKTOP = sp;return;
}
function _SetupViewport() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7748]|0;
+ $0 = HEAP32[7789]|0;
$1 = (($0|0) / 2)&-1;
- $2 = HEAP32[7749]|0;
+ $2 = HEAP32[7790]|0;
$3 = (($2|0) / 2)&-1;
- $4 = HEAP32[7746]|0;
+ $4 = HEAP32[7787]|0;
$5 = (($4) - ($0))|0;
- $6 = HEAP32[7747]|0;
+ $6 = HEAP32[7788]|0;
$7 = (($6) - ($2))|0;
_rlViewport($1,$3,$5,$7);
return;
@@ -14796,12 +19046,12 @@ function _rlMatrixMode($0) {
sp = STACKTOP;
switch ($0|0) {
case 5889: {
- $modelview$sink = 31004;
+ $modelview$sink = 31168;
label = 3;
break;
}
case 5888: {
- $modelview$sink = 31068;
+ $modelview$sink = 31232;
label = 3;
break;
}
@@ -14809,9 +19059,9 @@ function _rlMatrixMode($0) {
}
}
if ((label|0) == 3) {
- HEAP32[7750] = $modelview$sink;
+ HEAP32[7791] = $modelview$sink;
}
- HEAP32[7783] = $0;
+ HEAP32[7824] = $0;
return;
}
function _rlLoadIdentity() {
@@ -14819,7 +19069,7 @@ function _rlLoadIdentity() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$0 = sp;
- $1 = HEAP32[7750]|0;
+ $1 = HEAP32[7791]|0;
_MatrixIdentity($0);
dest=$1; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
@@ -14840,7 +19090,7 @@ function _rlOrtho($0,$1,$2,$3,$4,$5) {
$7 = sp;
_MatrixOrtho($6,$0,$1,$2,$3,$4,$5);
_MatrixTranspose($6);
- $8 = HEAP32[7750]|0;
+ $8 = HEAP32[7791]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy,$$byval_copy1);
@@ -14899,17 +19149,17 @@ function _LoadDefaultShader($0) {
$1 = sp + 16|0;
$2 = sp + 513|0;
$3 = sp + 72|0;
- _memcpy(($2|0),(6412|0),489)|0;
- _memcpy(($3|0),(6901|0),441)|0;
+ _memcpy(($2|0),(6180|0),489)|0;
+ _memcpy(($3|0),(6669|0),441)|0;
$4 = (_LoadShaderProgram($2,$3)|0);
HEAP32[$1>>2] = $4;
$5 = ($4|0)==(0);
if ($5) {
HEAP32[$vararg_buffer1>>2] = $4;
- _TraceLog(2,7390,$vararg_buffer1);
+ _TraceLog(2,7158,$vararg_buffer1);
} else {
HEAP32[$vararg_buffer>>2] = $4;
- _TraceLog(0,7342,$vararg_buffer);
+ _TraceLog(0,7110,$vararg_buffer);
}
$6 = HEAP32[$1>>2]|0;
$7 = ($6|0)==(0);
@@ -14937,15 +19187,15 @@ function _LoadDefaultBuffers() {
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
$0 = (_malloc(24576)|0);
- HEAP32[(32340)>>2] = $0;
+ HEAP32[(32504)>>2] = $0;
$1 = (_malloc(8192)|0);
- HEAP32[(32348)>>2] = $1;
- HEAP32[(32344)>>2] = 0;
- HEAP32[(32352)>>2] = 0;
+ HEAP32[(32512)>>2] = $1;
+ HEAP32[(32508)>>2] = 0;
+ HEAP32[(32516)>>2] = 0;
_memset(($0|0),0,24576)|0;
$$05972 = 0;
while(1) {
- $2 = HEAP32[(32348)>>2]|0;
+ $2 = HEAP32[(32512)>>2]|0;
$3 = (($2) + ($$05972)|0);
HEAP8[$3>>0] = 0;
$4 = (($$05972) + 1)|0;
@@ -14956,19 +19206,19 @@ function _LoadDefaultBuffers() {
$$05972 = $4;
}
}
- HEAP32[8082] = 0;
- HEAP32[(32336)>>2] = 0;
- HEAP32[(32332)>>2] = 0;
+ HEAP32[8123] = 0;
+ HEAP32[(32500)>>2] = 0;
+ HEAP32[(32496)>>2] = 0;
$5 = (_malloc(73728)|0);
- HEAP32[(32388)>>2] = $5;
+ HEAP32[(32552)>>2] = $5;
$6 = (_malloc(24576)|0);
- HEAP32[(32396)>>2] = $6;
- HEAP32[(32392)>>2] = 0;
- HEAP32[(32400)>>2] = 0;
+ HEAP32[(32560)>>2] = $6;
+ HEAP32[(32556)>>2] = 0;
+ HEAP32[(32564)>>2] = 0;
_memset(($5|0),0,73728)|0;
$$05770 = 0;
while(1) {
- $7 = HEAP32[(32396)>>2]|0;
+ $7 = HEAP32[(32560)>>2]|0;
$8 = (($7) + ($$05770)|0);
HEAP8[$8>>0] = 0;
$9 = (($$05770) + 1)|0;
@@ -14979,24 +19229,24 @@ function _LoadDefaultBuffers() {
$$05770 = $9;
}
}
- HEAP32[8094] = 0;
- HEAP32[(32384)>>2] = 0;
- HEAP32[(32380)>>2] = 0;
+ HEAP32[8135] = 0;
+ HEAP32[(32548)>>2] = 0;
+ HEAP32[(32544)>>2] = 0;
$10 = (_malloc(49152)|0);
- HEAP32[(32436)>>2] = $10;
+ HEAP32[(32600)>>2] = $10;
$11 = (_malloc(32768)|0);
- HEAP32[(32440)>>2] = $11;
+ HEAP32[(32604)>>2] = $11;
$12 = (_malloc(16384)|0);
- HEAP32[(32444)>>2] = $12;
+ HEAP32[(32608)>>2] = $12;
$13 = (_malloc(12288)|0);
- HEAP32[(32448)>>2] = $13;
- $14 = HEAP32[(32436)>>2]|0;
+ HEAP32[(32612)>>2] = $13;
+ $14 = HEAP32[(32600)>>2]|0;
_memset(($14|0),0,49152)|0;
- $15 = HEAP32[(32440)>>2]|0;
+ $15 = HEAP32[(32604)>>2]|0;
_memset(($15|0),0,32768)|0;
$$05467 = 0;
while(1) {
- $17 = HEAP32[(32444)>>2]|0;
+ $17 = HEAP32[(32608)>>2]|0;
$18 = (($17) + ($$05467)|0);
HEAP8[$18>>0] = 0;
$19 = (($$05467) + 1)|0;
@@ -15007,7 +19257,7 @@ function _LoadDefaultBuffers() {
$$05467 = $19;
}
}
- $16 = HEAP32[(32448)>>2]|0;
+ $16 = HEAP32[(32612)>>2]|0;
$$05365 = 0;$$066 = 0;
while(1) {
$22 = $$05365 << 2;
@@ -15044,140 +19294,140 @@ function _LoadDefaultBuffers() {
$$05365 = $41;$$066 = $42;
}
}
- HEAP32[8106] = 0;
- HEAP32[(32428)>>2] = 0;
- HEAP32[(32432)>>2] = 0;
- _TraceLog(0,5883,$vararg_buffer);
- $20 = HEAP32[7784]|0;
+ HEAP32[8147] = 0;
+ HEAP32[(32592)>>2] = 0;
+ HEAP32[(32596)>>2] = 0;
+ _TraceLog(0,5651,$vararg_buffer);
+ $20 = HEAP32[7825]|0;
$21 = ($20|0)==(0);
if (!($21)) {
- $43 = HEAP32[7785]|0;
- FUNCTION_TABLE_vii[$43 & 63](1,(32356));
- $44 = HEAP32[7786]|0;
- $45 = HEAP32[(32356)>>2]|0;
+ $43 = HEAP32[7826]|0;
+ FUNCTION_TABLE_vii[$43 & 63](1,(32520));
+ $44 = HEAP32[7827]|0;
+ $45 = HEAP32[(32520)>>2]|0;
FUNCTION_TABLE_vi[$44 & 31]($45);
}
- _glGenBuffers(2,((32360)|0));
- $46 = HEAP32[(32360)>>2]|0;
+ _glGenBuffers(2,((32524)|0));
+ $46 = HEAP32[(32524)>>2]|0;
_glBindBuffer(34962,($46|0));
- $47 = HEAP32[(32340)>>2]|0;
+ $47 = HEAP32[(32504)>>2]|0;
_glBufferData(34962,24576,($47|0),35048);
- $48 = HEAP32[(31228)>>2]|0;
+ $48 = HEAP32[(31392)>>2]|0;
_glEnableVertexAttribArray(($48|0));
- $49 = HEAP32[(31228)>>2]|0;
+ $49 = HEAP32[(31392)>>2]|0;
_glVertexAttribPointer(($49|0),3,5126,0,0,(0|0));
- _glGenBuffers(2,((32364)|0));
- $50 = HEAP32[(32364)>>2]|0;
+ _glGenBuffers(2,((32528)|0));
+ $50 = HEAP32[(32528)>>2]|0;
_glBindBuffer(34962,($50|0));
- $51 = HEAP32[(32348)>>2]|0;
+ $51 = HEAP32[(32512)>>2]|0;
_glBufferData(34962,8192,($51|0),35048);
- $52 = HEAP32[(31248)>>2]|0;
+ $52 = HEAP32[(31412)>>2]|0;
_glEnableVertexAttribArray(($52|0));
- $53 = HEAP32[(31248)>>2]|0;
+ $53 = HEAP32[(31412)>>2]|0;
_glVertexAttribPointer(($53|0),4,5121,1,0,(0|0));
- $54 = HEAP32[7784]|0;
+ $54 = HEAP32[7825]|0;
$55 = ($54|0)==(0);
if ($55) {
- $57 = HEAP32[(32360)>>2]|0;
- $58 = HEAP32[(32364)>>2]|0;
+ $57 = HEAP32[(32524)>>2]|0;
+ $58 = HEAP32[(32528)>>2]|0;
HEAP32[$vararg_buffer3>>2] = $57;
$vararg_ptr6 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr6>>2] = $58;
- _TraceLog(0,6021,$vararg_buffer3);
+ _TraceLog(0,5789,$vararg_buffer3);
} else {
- $56 = HEAP32[(32356)>>2]|0;
+ $56 = HEAP32[(32520)>>2]|0;
HEAP32[$vararg_buffer1>>2] = $56;
- _TraceLog(0,5956,$vararg_buffer1);
+ _TraceLog(0,5724,$vararg_buffer1);
}
- $59 = HEAP32[7784]|0;
+ $59 = HEAP32[7825]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- $61 = HEAP32[7785]|0;
- FUNCTION_TABLE_vii[$61 & 63](1,(32404));
- $62 = HEAP32[7786]|0;
- $63 = HEAP32[(32404)>>2]|0;
+ $61 = HEAP32[7826]|0;
+ FUNCTION_TABLE_vii[$61 & 63](1,(32568));
+ $62 = HEAP32[7827]|0;
+ $63 = HEAP32[(32568)>>2]|0;
FUNCTION_TABLE_vi[$62 & 31]($63);
}
- _glGenBuffers(1,((32408)|0));
- $64 = HEAP32[(32408)>>2]|0;
+ _glGenBuffers(1,((32572)|0));
+ $64 = HEAP32[(32572)>>2]|0;
_glBindBuffer(34962,($64|0));
- $65 = HEAP32[(32388)>>2]|0;
+ $65 = HEAP32[(32552)>>2]|0;
_glBufferData(34962,73728,($65|0),35048);
- $66 = HEAP32[(31228)>>2]|0;
+ $66 = HEAP32[(31392)>>2]|0;
_glEnableVertexAttribArray(($66|0));
- $67 = HEAP32[(31228)>>2]|0;
+ $67 = HEAP32[(31392)>>2]|0;
_glVertexAttribPointer(($67|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32412)|0));
- $68 = HEAP32[(32412)>>2]|0;
+ _glGenBuffers(1,((32576)|0));
+ $68 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($68|0));
- $69 = HEAP32[(32396)>>2]|0;
+ $69 = HEAP32[(32560)>>2]|0;
_glBufferData(34962,24576,($69|0),35048);
- $70 = HEAP32[(31248)>>2]|0;
+ $70 = HEAP32[(31412)>>2]|0;
_glEnableVertexAttribArray(($70|0));
- $71 = HEAP32[(31248)>>2]|0;
+ $71 = HEAP32[(31412)>>2]|0;
_glVertexAttribPointer(($71|0),4,5121,1,0,(0|0));
- $72 = HEAP32[7784]|0;
+ $72 = HEAP32[7825]|0;
$73 = ($72|0)==(0);
if ($73) {
- $75 = HEAP32[(32408)>>2]|0;
- $76 = HEAP32[(32412)>>2]|0;
+ $75 = HEAP32[(32572)>>2]|0;
+ $76 = HEAP32[(32576)>>2]|0;
HEAP32[$vararg_buffer10>>2] = $75;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $76;
- _TraceLog(0,6167,$vararg_buffer10);
+ _TraceLog(0,5935,$vararg_buffer10);
} else {
- $74 = HEAP32[(32404)>>2]|0;
+ $74 = HEAP32[(32568)>>2]|0;
HEAP32[$vararg_buffer7>>2] = $74;
- _TraceLog(0,6098,$vararg_buffer7);
+ _TraceLog(0,5866,$vararg_buffer7);
}
- $77 = HEAP32[7784]|0;
+ $77 = HEAP32[7825]|0;
$78 = ($77|0)==(0);
if (!($78)) {
- $79 = HEAP32[7785]|0;
- FUNCTION_TABLE_vii[$79 & 63](1,(32452));
- $80 = HEAP32[7786]|0;
- $81 = HEAP32[(32452)>>2]|0;
+ $79 = HEAP32[7826]|0;
+ FUNCTION_TABLE_vii[$79 & 63](1,(32616));
+ $80 = HEAP32[7827]|0;
+ $81 = HEAP32[(32616)>>2]|0;
FUNCTION_TABLE_vi[$80 & 31]($81);
}
- _glGenBuffers(1,((32456)|0));
- $82 = HEAP32[(32456)>>2]|0;
+ _glGenBuffers(1,((32620)|0));
+ $82 = HEAP32[(32620)>>2]|0;
_glBindBuffer(34962,($82|0));
- $83 = HEAP32[(32436)>>2]|0;
+ $83 = HEAP32[(32600)>>2]|0;
_glBufferData(34962,49152,($83|0),35048);
- $84 = HEAP32[(31228)>>2]|0;
+ $84 = HEAP32[(31392)>>2]|0;
_glEnableVertexAttribArray(($84|0));
- $85 = HEAP32[(31228)>>2]|0;
+ $85 = HEAP32[(31392)>>2]|0;
_glVertexAttribPointer(($85|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32460)|0));
- $86 = HEAP32[(32460)>>2]|0;
+ _glGenBuffers(1,((32624)|0));
+ $86 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($86|0));
- $87 = HEAP32[(32440)>>2]|0;
+ $87 = HEAP32[(32604)>>2]|0;
_glBufferData(34962,32768,($87|0),35048);
- $88 = HEAP32[(31232)>>2]|0;
+ $88 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($88|0));
- $89 = HEAP32[(31232)>>2]|0;
+ $89 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($89|0),2,5126,0,0,(0|0));
- _glGenBuffers(1,((32464)|0));
- $90 = HEAP32[(32464)>>2]|0;
+ _glGenBuffers(1,((32628)|0));
+ $90 = HEAP32[(32628)>>2]|0;
_glBindBuffer(34962,($90|0));
- $91 = HEAP32[(32444)>>2]|0;
+ $91 = HEAP32[(32608)>>2]|0;
_glBufferData(34962,16384,($91|0),35048);
- $92 = HEAP32[(31248)>>2]|0;
+ $92 = HEAP32[(31412)>>2]|0;
_glEnableVertexAttribArray(($92|0));
- $93 = HEAP32[(31248)>>2]|0;
+ $93 = HEAP32[(31412)>>2]|0;
_glVertexAttribPointer(($93|0),4,5121,1,0,(0|0));
- _glGenBuffers(1,((32468)|0));
- $94 = HEAP32[(32468)>>2]|0;
+ _glGenBuffers(1,((32632)|0));
+ $94 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34963,($94|0));
- $95 = HEAP32[(32448)>>2]|0;
+ $95 = HEAP32[(32612)>>2]|0;
_glBufferData(34963,12288,($95|0),35044);
- $96 = HEAP32[7784]|0;
+ $96 = HEAP32[7825]|0;
$97 = ($96|0)==(0);
if ($97) {
- $99 = HEAP32[(32456)>>2]|0;
- $100 = HEAP32[(32460)>>2]|0;
- $101 = HEAP32[(32464)>>2]|0;
- $102 = HEAP32[(32468)>>2]|0;
+ $99 = HEAP32[(32620)>>2]|0;
+ $100 = HEAP32[(32624)>>2]|0;
+ $101 = HEAP32[(32628)>>2]|0;
+ $102 = HEAP32[(32632)>>2]|0;
HEAP32[$vararg_buffer17>>2] = $99;
$vararg_ptr20 = ((($vararg_buffer17)) + 4|0);
HEAP32[$vararg_ptr20>>2] = $100;
@@ -15185,18 +19435,18 @@ function _LoadDefaultBuffers() {
HEAP32[$vararg_ptr21>>2] = $101;
$vararg_ptr22 = ((($vararg_buffer17)) + 12|0);
HEAP32[$vararg_ptr22>>2] = $102;
- _TraceLog(0,6313,$vararg_buffer17);
+ _TraceLog(0,6081,$vararg_buffer17);
} else {
- $98 = HEAP32[(32452)>>2]|0;
+ $98 = HEAP32[(32616)>>2]|0;
HEAP32[$vararg_buffer14>>2] = $98;
- _TraceLog(0,6248,$vararg_buffer14);
+ _TraceLog(0,6016,$vararg_buffer14);
}
- $103 = HEAP32[7784]|0;
+ $103 = HEAP32[7825]|0;
$104 = ($103|0)==(0);
if ($104) {
STACKTOP = sp;return;
}
- $105 = HEAP32[7786]|0;
+ $105 = HEAP32[7827]|0;
FUNCTION_TABLE_vi[$105 & 31](0);
STACKTOP = sp;return;
}
@@ -15233,10 +19483,10 @@ function _LoadShaderProgram($0,$1) {
$9 = ($8|0)==(1);
if ($9) {
HEAP32[$vararg_buffer4>>2] = $6;
- _TraceLog(0,7646,$vararg_buffer4);
+ _TraceLog(0,7414,$vararg_buffer4);
} else {
HEAP32[$vararg_buffer>>2] = $6;
- _TraceLog(2,7594,$vararg_buffer);
+ _TraceLog(2,7362,$vararg_buffer);
HEAP32[$vararg_buffer>>2] = 0;
_glGetShaderiv(($6|0),35716,($vararg_buffer|0));
$10 = HEAP32[$vararg_buffer>>2]|0;
@@ -15246,7 +19496,7 @@ function _LoadShaderProgram($0,$1) {
$13 = HEAP32[$vararg_buffer>>2]|0;
_glGetShaderInfoLog(($6|0),($13|0),($5|0),($12|0));
HEAP32[$vararg_buffer1>>2] = $12;
- _TraceLog(0,7643,$vararg_buffer1);
+ _TraceLog(0,7411,$vararg_buffer1);
_llvm_stackrestore(($11|0));
}
_glCompileShader(($7|0));
@@ -15255,10 +19505,10 @@ function _LoadShaderProgram($0,$1) {
$15 = ($14|0)==(1);
if ($15) {
HEAP32[$vararg_buffer13>>2] = $7;
- _TraceLog(0,7747,$vararg_buffer13);
+ _TraceLog(0,7515,$vararg_buffer13);
} else {
HEAP32[$vararg_buffer7>>2] = $7;
- _TraceLog(2,7696,$vararg_buffer7);
+ _TraceLog(2,7464,$vararg_buffer7);
HEAP32[$vararg_buffer7>>2] = 0;
_glGetShaderiv(($7|0),35716,($vararg_buffer7|0));
$16 = HEAP32[$vararg_buffer7>>2]|0;
@@ -15268,25 +19518,25 @@ function _LoadShaderProgram($0,$1) {
$19 = HEAP32[$vararg_buffer7>>2]|0;
_glGetShaderInfoLog(($7|0),($19|0),($5|0),($18|0));
HEAP32[$vararg_buffer10>>2] = $18;
- _TraceLog(0,7643,$vararg_buffer10);
+ _TraceLog(0,7411,$vararg_buffer10);
_llvm_stackrestore(($17|0));
}
$20 = (_glCreateProgram()|0);
_glAttachShader(($20|0),($6|0));
_glAttachShader(($20|0),($7|0));
- _glBindAttribLocation(($20|0),0,(7438|0));
- _glBindAttribLocation(($20|0),1,(7453|0));
- _glBindAttribLocation(($20|0),2,(7484|0));
- _glBindAttribLocation(($20|0),3,(7511|0));
- _glBindAttribLocation(($20|0),4,(7497|0));
- _glBindAttribLocation(($20|0),5,(7468|0));
+ _glBindAttribLocation(($20|0),0,(7206|0));
+ _glBindAttribLocation(($20|0),1,(7221|0));
+ _glBindAttribLocation(($20|0),2,(7252|0));
+ _glBindAttribLocation(($20|0),3,(7279|0));
+ _glBindAttribLocation(($20|0),4,(7265|0));
+ _glBindAttribLocation(($20|0),5,(7236|0));
_glLinkProgram(($20|0));
_glGetProgramiv(($20|0),35714,($4|0));
$21 = HEAP32[$4>>2]|0;
$22 = ($21|0)==(0);
if ($22) {
HEAP32[$vararg_buffer16>>2] = $20;
- _TraceLog(2,7799,$vararg_buffer16);
+ _TraceLog(2,7567,$vararg_buffer16);
HEAP32[$vararg_buffer16>>2] = 0;
_glGetProgramiv(($20|0),35716,($vararg_buffer16|0));
$23 = HEAP32[$vararg_buffer16>>2]|0;
@@ -15296,7 +19546,7 @@ function _LoadShaderProgram($0,$1) {
$26 = HEAP32[$vararg_buffer16>>2]|0;
_glGetProgramInfoLog(($20|0),($26|0),($5|0),($25|0));
HEAP32[$vararg_buffer19>>2] = $25;
- _TraceLog(0,7643,$vararg_buffer19);
+ _TraceLog(0,7411,$vararg_buffer19);
_glDeleteProgram(($20|0));
_llvm_stackrestore(($24|0));
$$0 = 0;
@@ -15305,7 +19555,7 @@ function _LoadShaderProgram($0,$1) {
STACKTOP = sp;return ($$0|0);
} else {
HEAP32[$vararg_buffer22>>2] = $20;
- _TraceLog(0,7845,$vararg_buffer22);
+ _TraceLog(0,7613,$vararg_buffer22);
$$0 = $20;
_glDeleteShader(($6|0));
_glDeleteShader(($7|0));
@@ -15320,55 +19570,55 @@ function _LoadDefaultShaderLocations($0) {
var sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- $2 = (_glGetAttribLocation(($1|0),(7438|0))|0);
+ $2 = (_glGetAttribLocation(($1|0),(7206|0))|0);
$3 = ((($0)) + 4|0);
HEAP32[$3>>2] = $2;
$4 = HEAP32[$0>>2]|0;
- $5 = (_glGetAttribLocation(($4|0),(7453|0))|0);
+ $5 = (_glGetAttribLocation(($4|0),(7221|0))|0);
$6 = ((($0)) + 8|0);
HEAP32[$6>>2] = $5;
$7 = HEAP32[$0>>2]|0;
- $8 = (_glGetAttribLocation(($7|0),(7468|0))|0);
+ $8 = (_glGetAttribLocation(($7|0),(7236|0))|0);
$9 = ((($0)) + 12|0);
HEAP32[$9>>2] = $8;
$10 = HEAP32[$0>>2]|0;
- $11 = (_glGetAttribLocation(($10|0),(7484|0))|0);
+ $11 = (_glGetAttribLocation(($10|0),(7252|0))|0);
$12 = ((($0)) + 16|0);
HEAP32[$12>>2] = $11;
$13 = HEAP32[$0>>2]|0;
- $14 = (_glGetAttribLocation(($13|0),(7497|0))|0);
+ $14 = (_glGetAttribLocation(($13|0),(7265|0))|0);
$15 = ((($0)) + 20|0);
HEAP32[$15>>2] = $14;
$16 = HEAP32[$0>>2]|0;
- $17 = (_glGetAttribLocation(($16|0),(7511|0))|0);
+ $17 = (_glGetAttribLocation(($16|0),(7279|0))|0);
$18 = ((($0)) + 24|0);
HEAP32[$18>>2] = $17;
$19 = HEAP32[$0>>2]|0;
- $20 = (_glGetUniformLocation(($19|0),(7523|0))|0);
+ $20 = (_glGetUniformLocation(($19|0),(7291|0))|0);
$21 = ((($0)) + 28|0);
HEAP32[$21>>2] = $20;
$22 = HEAP32[$0>>2]|0;
- $23 = (_glGetUniformLocation(($22|0),(7533|0))|0);
+ $23 = (_glGetUniformLocation(($22|0),(7301|0))|0);
$24 = ((($0)) + 32|0);
HEAP32[$24>>2] = $23;
$25 = HEAP32[$0>>2]|0;
- $26 = (_glGetUniformLocation(($25|0),(7544|0))|0);
+ $26 = (_glGetUniformLocation(($25|0),(7312|0))|0);
$27 = ((($0)) + 36|0);
HEAP32[$27>>2] = $26;
$28 = HEAP32[$0>>2]|0;
- $29 = (_glGetUniformLocation(($28|0),(7555|0))|0);
+ $29 = (_glGetUniformLocation(($28|0),(7323|0))|0);
$30 = ((($0)) + 40|0);
HEAP32[$30>>2] = $29;
$31 = HEAP32[$0>>2]|0;
- $32 = (_glGetUniformLocation(($31|0),(7567|0))|0);
+ $32 = (_glGetUniformLocation(($31|0),(7335|0))|0);
$33 = ((($0)) + 44|0);
HEAP32[$33>>2] = $32;
$34 = HEAP32[$0>>2]|0;
- $35 = (_glGetUniformLocation(($34|0),(7576|0))|0);
+ $35 = (_glGetUniformLocation(($34|0),(7344|0))|0);
$36 = ((($0)) + 48|0);
HEAP32[$36>>2] = $35;
$37 = HEAP32[$0>>2]|0;
- $38 = (_glGetUniformLocation(($37|0),(7585|0))|0);
+ $38 = (_glGetUniformLocation(($37|0),(7353|0))|0);
$39 = ((($0)) + 52|0);
HEAP32[$39>>2] = $38;
return;
@@ -15377,9 +19627,9 @@ function _IsMouseButtonPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33633 + ($0)|0);
+ $1 = (35949 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33636 + ($0)|0);
+ $3 = (35952 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -15391,9 +19641,9 @@ function _IsMouseButtonReleased($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33633 + ($0)|0);
+ $1 = (35949 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33636 + ($0)|0);
+ $3 = (35952 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(0);
@@ -15414,10 +19664,10 @@ function _CloseWindow() {
$vararg_buffer = sp;
_UnloadDefaultFont();
_rlglClose();
- $0 = HEAP32[7703]|0;
+ $0 = HEAP32[7744]|0;
_glfwDestroyWindow(($0|0));
_glfwTerminate();
- _TraceLog(0,8157,$vararg_buffer);
+ _TraceLog(0,7925,$vararg_buffer);
STACKTOP = sp;return;
}
function _UnloadDefaultFont() {
@@ -15425,9 +19675,9 @@ function _UnloadDefaultFont() {
sp = STACKTOP;
STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
$$byval_copy = sp;
- ;HEAP32[$$byval_copy>>2]=HEAP32[30852>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[30852+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[30852+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[30852+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[30852+16>>2]|0;
+ ;HEAP32[$$byval_copy>>2]=HEAP32[31016>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[31016+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[31016+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[31016+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[31016+16>>2]|0;
_UnloadTexture($$byval_copy);
- $0 = HEAP32[(30880)>>2]|0;
+ $0 = HEAP32[(31044)>>2]|0;
_free($0);
STACKTOP = sp;return;
}
@@ -15438,11 +19688,11 @@ function _rlglClose() {
$vararg_buffer = sp;
_UnloadDefaultShader();
_UnloadDefaultBuffers();
- _glDeleteTextures(1,(31164|0));
- $0 = HEAP32[7791]|0;
+ _glDeleteTextures(1,(31328|0));
+ $0 = HEAP32[7832]|0;
HEAP32[$vararg_buffer>>2] = $0;
- _TraceLog(0,8184,$vararg_buffer);
- $1 = HEAP32[7821]|0;
+ _TraceLog(0,7952,$vararg_buffer);
+ $1 = HEAP32[7862]|0;
_free($1);
STACKTOP = sp;return;
}
@@ -15450,17 +19700,17 @@ function _UnloadDefaultShader() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
_glUseProgram(0);
- $0 = HEAP32[7792]|0;
+ $0 = HEAP32[7833]|0;
_glDeleteProgram(($0|0));
return;
}
function _UnloadDefaultBuffers() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7784]|0;
+ $0 = HEAP32[7825]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[7786]|0;
+ $2 = HEAP32[7827]|0;
FUNCTION_TABLE_vi[$2 & 31](0);
}
_glDisableVertexAttribArray(0);
@@ -15469,39 +19719,39 @@ function _UnloadDefaultBuffers() {
_glDisableVertexAttribArray(3);
_glBindBuffer(34962,0);
_glBindBuffer(34963,0);
- _glDeleteBuffers(1,((32360)|0));
- _glDeleteBuffers(1,((32364)|0));
- _glDeleteBuffers(1,((32408)|0));
- _glDeleteBuffers(1,((32412)|0));
- _glDeleteBuffers(1,((32456)|0));
- _glDeleteBuffers(1,((32460)|0));
- _glDeleteBuffers(1,((32464)|0));
- _glDeleteBuffers(1,((32468)|0));
- $3 = HEAP32[7784]|0;
+ _glDeleteBuffers(1,((32524)|0));
+ _glDeleteBuffers(1,((32528)|0));
+ _glDeleteBuffers(1,((32572)|0));
+ _glDeleteBuffers(1,((32576)|0));
+ _glDeleteBuffers(1,((32620)|0));
+ _glDeleteBuffers(1,((32624)|0));
+ _glDeleteBuffers(1,((32628)|0));
+ _glDeleteBuffers(1,((32632)|0));
+ $3 = HEAP32[7825]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$5 & 63](1,(32356));
- $6 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$6 & 63](1,(32404));
- $7 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$7 & 63](1,(32452));
- }
- $8 = HEAP32[(32340)>>2]|0;
+ $5 = HEAP32[7828]|0;
+ FUNCTION_TABLE_vii[$5 & 63](1,(32520));
+ $6 = HEAP32[7828]|0;
+ FUNCTION_TABLE_vii[$6 & 63](1,(32568));
+ $7 = HEAP32[7828]|0;
+ FUNCTION_TABLE_vii[$7 & 63](1,(32616));
+ }
+ $8 = HEAP32[(32504)>>2]|0;
_free($8);
- $9 = HEAP32[(32348)>>2]|0;
+ $9 = HEAP32[(32512)>>2]|0;
_free($9);
- $10 = HEAP32[(32388)>>2]|0;
+ $10 = HEAP32[(32552)>>2]|0;
_free($10);
- $11 = HEAP32[(32396)>>2]|0;
+ $11 = HEAP32[(32560)>>2]|0;
_free($11);
- $12 = HEAP32[(32436)>>2]|0;
+ $12 = HEAP32[(32600)>>2]|0;
_free($12);
- $13 = HEAP32[(32440)>>2]|0;
+ $13 = HEAP32[(32604)>>2]|0;
_free($13);
- $14 = HEAP32[(32444)>>2]|0;
+ $14 = HEAP32[(32608)>>2]|0;
_free($14);
- $15 = HEAP32[(32448)>>2]|0;
+ $15 = HEAP32[(32612)>>2]|0;
_free($15);
return;
}
@@ -15519,7 +19769,7 @@ function _UnloadTexture($0) {
_rlDeleteTextures($1);
$3 = HEAP32[$0>>2]|0;
HEAP32[$vararg_buffer>>2] = $3;
- _TraceLog(0,8249,$vararg_buffer);
+ _TraceLog(0,8017,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlDeleteTextures($0) {
@@ -15535,41 +19785,22 @@ function _rlDeleteTextures($0) {
}
STACKTOP = sp;return;
}
-function _WindowShouldClose() {
- var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
- sp = STACKTOP;
- $0 = HEAP32[8118]|0;
- $1 = ($0|0)==(0);
- if (!($1)) {
- while(1) {
- _glfwWaitEvents();
- $2 = HEAP32[8118]|0;
- $3 = ($2|0)==(0);
- if ($3) {
- break;
- }
- }
- }
- $4 = HEAP32[7703]|0;
- $5 = (_glfwWindowShouldClose(($4|0))|0);
- return ($5|0);
-}
function _BeginDrawing() {
var $0 = 0.0, $1 = 0.0, $2 = 0.0, $downscaleView$byval_copy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$downscaleView$byval_copy = sp;
$0 = (+_GetTime());
- HEAPF64[1759] = $0;
- $1 = +HEAPF64[1742];
+ HEAPF64[1778] = $0;
+ $1 = +HEAPF64[1761];
$2 = $0 - $1;
- HEAPF64[1760] = $2;
- HEAPF64[1742] = $0;
+ HEAPF64[1779] = $2;
+ HEAPF64[1761] = $0;
_rlClearScreenBuffers();
_rlLoadIdentity();
- dest=$downscaleView$byval_copy; src=30908; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$downscaleView$byval_copy; src=31072; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_MatrixToFloat($downscaleView$byval_copy)|0);
- _rlMultMatrixf(32480);
+ _rlMultMatrixf(32644);
STACKTOP = sp;return;
}
function _MatrixToFloat($0) {
@@ -15578,53 +19809,53 @@ function _MatrixToFloat($0) {
var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- HEAP32[8120] = $1;
+ HEAP32[8161] = $1;
$2 = ((($0)) + 4|0);
$3 = HEAP32[$2>>2]|0;
- HEAP32[(32484)>>2] = $3;
+ HEAP32[(32648)>>2] = $3;
$4 = ((($0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
- HEAP32[(32488)>>2] = $5;
+ HEAP32[(32652)>>2] = $5;
$6 = ((($0)) + 12|0);
$7 = HEAP32[$6>>2]|0;
- HEAP32[(32492)>>2] = $7;
+ HEAP32[(32656)>>2] = $7;
$8 = ((($0)) + 16|0);
$9 = HEAP32[$8>>2]|0;
- HEAP32[(32496)>>2] = $9;
+ HEAP32[(32660)>>2] = $9;
$10 = ((($0)) + 20|0);
$11 = HEAP32[$10>>2]|0;
- HEAP32[(32500)>>2] = $11;
+ HEAP32[(32664)>>2] = $11;
$12 = ((($0)) + 24|0);
$13 = HEAP32[$12>>2]|0;
- HEAP32[(32504)>>2] = $13;
+ HEAP32[(32668)>>2] = $13;
$14 = ((($0)) + 28|0);
$15 = HEAP32[$14>>2]|0;
- HEAP32[(32508)>>2] = $15;
+ HEAP32[(32672)>>2] = $15;
$16 = ((($0)) + 32|0);
$17 = HEAP32[$16>>2]|0;
- HEAP32[(32512)>>2] = $17;
+ HEAP32[(32676)>>2] = $17;
$18 = ((($0)) + 36|0);
$19 = HEAP32[$18>>2]|0;
- HEAP32[(32516)>>2] = $19;
+ HEAP32[(32680)>>2] = $19;
$20 = ((($0)) + 40|0);
$21 = HEAP32[$20>>2]|0;
- HEAP32[(32520)>>2] = $21;
+ HEAP32[(32684)>>2] = $21;
$22 = ((($0)) + 44|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(32524)>>2] = $23;
+ HEAP32[(32688)>>2] = $23;
$24 = ((($0)) + 48|0);
$25 = HEAP32[$24>>2]|0;
- HEAP32[(32528)>>2] = $25;
+ HEAP32[(32692)>>2] = $25;
$26 = ((($0)) + 52|0);
$27 = HEAP32[$26>>2]|0;
- HEAP32[(32532)>>2] = $27;
+ HEAP32[(32696)>>2] = $27;
$28 = ((($0)) + 56|0);
$29 = HEAP32[$28>>2]|0;
- HEAP32[(32536)>>2] = $29;
+ HEAP32[(32700)>>2] = $29;
$30 = ((($0)) + 60|0);
$31 = HEAP32[$30>>2]|0;
- HEAP32[(32540)>>2] = $31;
- return (32480|0);
+ HEAP32[(32704)>>2] = $31;
+ return (32644|0);
}
function _rlMultMatrixf($0) {
$0 = $0|0;
@@ -15699,7 +19930,7 @@ function _rlMultMatrixf($0) {
$47 = ((($0)) + 60|0);
$48 = HEAP32[$47>>2]|0;
HEAP32[$46>>2] = $48;
- $49 = HEAP32[7750]|0;
+ $49 = HEAP32[7791]|0;
dest=$$byval_copy; src=$49; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$$byval_copy,$$byval_copy1);
@@ -15713,15 +19944,15 @@ function _EndDrawing() {
_SwapBuffers();
_PollInputEvents();
$0 = (+_GetTime());
- HEAPF64[1759] = $0;
- $1 = +HEAPF64[1742];
+ HEAPF64[1778] = $0;
+ $1 = +HEAPF64[1761];
$2 = $0 - $1;
- HEAPF64[1761] = $2;
- HEAPF64[1742] = $0;
- $3 = +HEAPF64[1760];
+ HEAPF64[1780] = $2;
+ HEAPF64[1761] = $0;
+ $3 = +HEAPF64[1779];
$4 = $2 + $3;
- HEAPF64[1762] = $4;
- $5 = +HEAPF64[1739];
+ HEAPF64[1781] = $4;
+ $5 = +HEAPF64[1758];
$6 = $4 < $5;
if (!($6)) {
return;
@@ -15731,13 +19962,13 @@ function _EndDrawing() {
$9 = $8;
_Wait($9);
$10 = (+_GetTime());
- HEAPF64[1759] = $10;
- $11 = +HEAPF64[1742];
+ HEAPF64[1778] = $10;
+ $11 = +HEAPF64[1761];
$12 = $10 - $11;
- HEAPF64[1742] = $10;
- $13 = +HEAPF64[1762];
+ HEAPF64[1761] = $10;
+ $13 = +HEAPF64[1781];
$14 = $12 + $13;
- HEAPF64[1762] = $14;
+ HEAPF64[1781] = $14;
return;
}
function _rlglDraw() {
@@ -15750,7 +19981,7 @@ function _rlglDraw() {
function _SwapBuffers() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7703]|0;
+ $0 = HEAP32[7744]|0;
_glfwSwapBuffers(($0|0));
return;
}
@@ -15764,22 +19995,22 @@ function _PollInputEvents() {
$1 = sp + 1432|0;
$2 = sp;
_UpdateGestures();
- HEAP32[740] = -1;
- HEAP32[742] = -1;
- HEAP32[8136] = 0;
- $3 = HEAP32[7703]|0;
+ HEAP32[743] = -1;
+ HEAP32[745] = -1;
+ HEAP32[8177] = 0;
+ $3 = HEAP32[7744]|0;
_glfwGetCursorPos(($3|0),($0|0),($1|0));
$4 = +HEAPF64[$0>>3];
$5 = $4;
- HEAPF32[3476] = $5;
+ HEAPF32[3514] = $5;
$6 = +HEAPF64[$1>>3];
$7 = $6;
- HEAPF32[(13908)>>2] = $7;
- _memcpy((34151|0),(33639|0),512)|0;
- ;HEAP8[33636>>0]=HEAP8[33633>>0]|0;HEAP8[33636+1>>0]=HEAP8[33633+1>>0]|0;HEAP8[33636+2>>0]=HEAP8[33633+2>>0]|0;
- $8 = HEAP32[8119]|0;
- HEAP32[7706] = $8;
- HEAP32[8119] = 0;
+ HEAPF32[(14060)>>2] = $7;
+ _memcpy((36467|0),(35955|0),512)|0;
+ ;HEAP8[35952>>0]=HEAP8[35949>>0]|0;HEAP8[35952+1>>0]=HEAP8[35949+1>>0]|0;HEAP8[35952+2>>0]=HEAP8[35949+2>>0]|0;
+ $8 = HEAP32[8160]|0;
+ HEAP32[7747] = $8;
+ HEAP32[8160] = 0;
$9 = (_emscripten_get_num_gamepads()|0);
$10 = ($9|0)>(0);
if (!($10)) {
@@ -15789,8 +20020,8 @@ function _PollInputEvents() {
$12 = ((($2)) + 8|0);
$$05160 = 0;
while(1) {
- $scevgep = (34663 + ($$05160<<5)|0);
- $scevgep67 = (34791 + ($$05160<<5)|0);
+ $scevgep = (36979 + ($$05160<<5)|0);
+ $scevgep67 = (37107 + ($$05160<<5)|0);
dest=$scevgep; src=$scevgep67; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
$13 = (_emscripten_get_gamepad_status(($$05160|0),($2|0))|0);
$14 = ($13|0)==(0);
@@ -15804,10 +20035,10 @@ function _PollInputEvents() {
$21 = (((($2)) + 1040|0) + ($$04857<<2)|0);
$22 = HEAP32[$21>>2]|0;
$23 = ($22|0)==(1);
- $24 = ((34791 + ($$05160<<5)|0) + ($$04857)|0);
+ $24 = ((37107 + ($$05160<<5)|0) + ($$04857)|0);
if ($23) {
HEAP8[$24>>0] = 1;
- HEAP32[742] = $$04857;
+ HEAP32[745] = $$04857;
} else {
HEAP8[$24>>0] = 0;
}
@@ -15831,7 +20062,7 @@ function _PollInputEvents() {
$29 = (((($2)) + 16|0) + ($$058<<3)|0);
$30 = +HEAPF64[$29>>3];
$31 = $30;
- $32 = ((32548 + ($$05160<<5)|0) + ($$058<<2)|0);
+ $32 = ((32712 + ($$05160<<5)|0) + ($$058<<2)|0);
HEAPF32[$32>>2] = $31;
$33 = (($$058) + 1)|0;
$34 = ($33|0)<($20|0);
@@ -15847,7 +20078,7 @@ function _PollInputEvents() {
} else {
$$lcssa = $18;
}
- HEAP32[8136] = $$lcssa;
+ HEAP32[8177] = $$lcssa;
}
$37 = (($$05160) + 1)|0;
$38 = ($37|0)<($9|0);
@@ -15888,87 +20119,87 @@ function _UpdateDefaultBuffers() {
var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8082]|0;
+ $0 = HEAP32[8123]|0;
$1 = ($0|0)>(0);
if ($1) {
- $2 = HEAP32[7784]|0;
+ $2 = HEAP32[7825]|0;
$3 = ($2|0)==(0);
if (!($3)) {
- $4 = HEAP32[7786]|0;
- $5 = HEAP32[(32356)>>2]|0;
+ $4 = HEAP32[7827]|0;
+ $5 = HEAP32[(32520)>>2]|0;
FUNCTION_TABLE_vi[$4 & 31]($5);
}
- $6 = HEAP32[(32360)>>2]|0;
+ $6 = HEAP32[(32524)>>2]|0;
_glBindBuffer(34962,($6|0));
- $7 = HEAP32[8082]|0;
+ $7 = HEAP32[8123]|0;
$8 = ($7*12)|0;
- $9 = HEAP32[(32340)>>2]|0;
+ $9 = HEAP32[(32504)>>2]|0;
_glBufferSubData(34962,0,($8|0),($9|0));
- $10 = HEAP32[(32364)>>2]|0;
+ $10 = HEAP32[(32528)>>2]|0;
_glBindBuffer(34962,($10|0));
- $11 = HEAP32[(32336)>>2]|0;
+ $11 = HEAP32[(32500)>>2]|0;
$12 = $11 << 2;
- $13 = HEAP32[(32348)>>2]|0;
+ $13 = HEAP32[(32512)>>2]|0;
_glBufferSubData(34962,0,($12|0),($13|0));
}
- $14 = HEAP32[8094]|0;
+ $14 = HEAP32[8135]|0;
$15 = ($14|0)>(0);
if ($15) {
- $16 = HEAP32[7784]|0;
+ $16 = HEAP32[7825]|0;
$17 = ($16|0)==(0);
if (!($17)) {
- $18 = HEAP32[7786]|0;
- $19 = HEAP32[(32404)>>2]|0;
+ $18 = HEAP32[7827]|0;
+ $19 = HEAP32[(32568)>>2]|0;
FUNCTION_TABLE_vi[$18 & 31]($19);
}
- $20 = HEAP32[(32408)>>2]|0;
+ $20 = HEAP32[(32572)>>2]|0;
_glBindBuffer(34962,($20|0));
- $21 = HEAP32[8094]|0;
+ $21 = HEAP32[8135]|0;
$22 = ($21*12)|0;
- $23 = HEAP32[(32388)>>2]|0;
+ $23 = HEAP32[(32552)>>2]|0;
_glBufferSubData(34962,0,($22|0),($23|0));
- $24 = HEAP32[(32412)>>2]|0;
+ $24 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($24|0));
- $25 = HEAP32[(32384)>>2]|0;
+ $25 = HEAP32[(32548)>>2]|0;
$26 = $25 << 2;
- $27 = HEAP32[(32396)>>2]|0;
+ $27 = HEAP32[(32560)>>2]|0;
_glBufferSubData(34962,0,($26|0),($27|0));
}
- $28 = HEAP32[8106]|0;
+ $28 = HEAP32[8147]|0;
$29 = ($28|0)>(0);
if ($29) {
- $30 = HEAP32[7784]|0;
+ $30 = HEAP32[7825]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = HEAP32[7786]|0;
- $33 = HEAP32[(32452)>>2]|0;
+ $32 = HEAP32[7827]|0;
+ $33 = HEAP32[(32616)>>2]|0;
FUNCTION_TABLE_vi[$32 & 31]($33);
}
- $34 = HEAP32[(32456)>>2]|0;
+ $34 = HEAP32[(32620)>>2]|0;
_glBindBuffer(34962,($34|0));
- $35 = HEAP32[8106]|0;
+ $35 = HEAP32[8147]|0;
$36 = ($35*12)|0;
- $37 = HEAP32[(32436)>>2]|0;
+ $37 = HEAP32[(32600)>>2]|0;
_glBufferSubData(34962,0,($36|0),($37|0));
- $38 = HEAP32[(32460)>>2]|0;
+ $38 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($38|0));
- $39 = HEAP32[8106]|0;
+ $39 = HEAP32[8147]|0;
$40 = $39 << 3;
- $41 = HEAP32[(32440)>>2]|0;
+ $41 = HEAP32[(32604)>>2]|0;
_glBufferSubData(34962,0,($40|0),($41|0));
- $42 = HEAP32[(32464)>>2]|0;
+ $42 = HEAP32[(32628)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[8106]|0;
+ $43 = HEAP32[8147]|0;
$44 = $43 << 2;
- $45 = HEAP32[(32444)>>2]|0;
+ $45 = HEAP32[(32608)>>2]|0;
_glBufferSubData(34962,0,($44|0),($45|0));
}
- $46 = HEAP32[7784]|0;
+ $46 = HEAP32[7825]|0;
$47 = ($46|0)==(0);
if ($47) {
return;
}
- $48 = HEAP32[7786]|0;
+ $48 = HEAP32[7827]|0;
FUNCTION_TABLE_vi[$48 & 31](0);
return;
}
@@ -15986,9 +20217,9 @@ function _DrawDefaultBuffers() {
$0 = sp + 128|0;
$1 = sp + 64|0;
$2 = sp;
- dest=$0; src=31004; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$1; src=31068; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $3 = HEAP32[8169]|0;
+ dest=$0; src=31168; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$1; src=31232; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ $3 = HEAP32[8210]|0;
$4 = ($3|0)!=(0);
$$ = $4 ? 2 : 1;
$$02932 = 0;
@@ -15998,134 +20229,134 @@ function _DrawDefaultBuffers() {
dest=$$byval_copy2; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetStereoView($$02932,$modelview$byval_copy,$$byval_copy2);
}
- $8 = HEAP32[8082]|0;
+ $8 = HEAP32[8123]|0;
$9 = ($8|0)>(0);
- $10 = HEAP32[8094]|0;
+ $10 = HEAP32[8135]|0;
$11 = ($10|0)>(0);
$or$cond = $9 | $11;
- $12 = HEAP32[8106]|0;
+ $12 = HEAP32[8147]|0;
$13 = ($12|0)>(0);
$or$cond3 = $or$cond | $13;
if ($or$cond3) {
- $14 = HEAP32[7806]|0;
+ $14 = HEAP32[7847]|0;
_glUseProgram(($14|0));
- dest=$modelview$byval_copy; src=31068; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$$byval_copy2; src=31004; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$modelview$byval_copy; src=31232; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$$byval_copy2; src=31168; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$modelview$byval_copy,$$byval_copy2);
- $15 = HEAP32[(31252)>>2]|0;
+ $15 = HEAP32[(31416)>>2]|0;
dest=$$byval_copy2; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$16 = (_MatrixToFloat($$byval_copy2)|0);
_glUniformMatrix4fv(($15|0),1,0,($16|0));
- $17 = HEAP32[(31256)>>2]|0;
+ $17 = HEAP32[(31420)>>2]|0;
_glUniform4f(($17|0),1.0,1.0,1.0,1.0);
- $18 = HEAP32[(31268)>>2]|0;
+ $18 = HEAP32[(31432)>>2]|0;
_glUniform1i(($18|0),0);
}
- $19 = HEAP32[8082]|0;
+ $19 = HEAP32[8123]|0;
$20 = ($19|0)>(0);
if ($20) {
- $21 = HEAP32[7791]|0;
+ $21 = HEAP32[7832]|0;
_glBindTexture(3553,($21|0));
- $22 = HEAP32[7784]|0;
+ $22 = HEAP32[7825]|0;
$23 = ($22|0)==(0);
if ($23) {
- $26 = HEAP32[(32360)>>2]|0;
+ $26 = HEAP32[(32524)>>2]|0;
_glBindBuffer(34962,($26|0));
- $27 = HEAP32[(31228)>>2]|0;
+ $27 = HEAP32[(31392)>>2]|0;
_glVertexAttribPointer(($27|0),3,5126,0,0,(0|0));
- $28 = HEAP32[(31228)>>2]|0;
+ $28 = HEAP32[(31392)>>2]|0;
_glEnableVertexAttribArray(($28|0));
- $29 = HEAP32[(32364)>>2]|0;
+ $29 = HEAP32[(32528)>>2]|0;
_glBindBuffer(34962,($29|0));
- $30 = HEAP32[(31248)>>2]|0;
+ $30 = HEAP32[(31412)>>2]|0;
_glVertexAttribPointer(($30|0),4,5121,1,0,(0|0));
- $31 = HEAP32[(31248)>>2]|0;
+ $31 = HEAP32[(31412)>>2]|0;
_glEnableVertexAttribArray(($31|0));
} else {
- $24 = HEAP32[7786]|0;
- $25 = HEAP32[(32356)>>2]|0;
+ $24 = HEAP32[7827]|0;
+ $25 = HEAP32[(32520)>>2]|0;
FUNCTION_TABLE_vi[$24 & 31]($25);
}
- $32 = HEAP32[8082]|0;
+ $32 = HEAP32[8123]|0;
_glDrawArrays(1,0,($32|0));
- $33 = HEAP32[7784]|0;
+ $33 = HEAP32[7825]|0;
$34 = ($33|0)==(0);
if ($34) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $35 = HEAP32[8094]|0;
+ $35 = HEAP32[8135]|0;
$36 = ($35|0)>(0);
if ($36) {
- $37 = HEAP32[7791]|0;
+ $37 = HEAP32[7832]|0;
_glBindTexture(3553,($37|0));
- $38 = HEAP32[7784]|0;
+ $38 = HEAP32[7825]|0;
$39 = ($38|0)==(0);
if ($39) {
- $42 = HEAP32[(32408)>>2]|0;
+ $42 = HEAP32[(32572)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[(31228)>>2]|0;
+ $43 = HEAP32[(31392)>>2]|0;
_glVertexAttribPointer(($43|0),3,5126,0,0,(0|0));
- $44 = HEAP32[(31228)>>2]|0;
+ $44 = HEAP32[(31392)>>2]|0;
_glEnableVertexAttribArray(($44|0));
- $45 = HEAP32[(32412)>>2]|0;
+ $45 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($45|0));
- $46 = HEAP32[(31248)>>2]|0;
+ $46 = HEAP32[(31412)>>2]|0;
_glVertexAttribPointer(($46|0),4,5121,1,0,(0|0));
- $47 = HEAP32[(31248)>>2]|0;
+ $47 = HEAP32[(31412)>>2]|0;
_glEnableVertexAttribArray(($47|0));
} else {
- $40 = HEAP32[7786]|0;
- $41 = HEAP32[(32404)>>2]|0;
+ $40 = HEAP32[7827]|0;
+ $41 = HEAP32[(32568)>>2]|0;
FUNCTION_TABLE_vi[$40 & 31]($41);
}
- $48 = HEAP32[8094]|0;
+ $48 = HEAP32[8135]|0;
_glDrawArrays(4,0,($48|0));
- $49 = HEAP32[7784]|0;
+ $49 = HEAP32[7825]|0;
$50 = ($49|0)==(0);
if ($50) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $51 = HEAP32[8106]|0;
+ $51 = HEAP32[8147]|0;
$52 = ($51|0)>(0);
if ($52) {
- $53 = HEAP32[7784]|0;
+ $53 = HEAP32[7825]|0;
$54 = ($53|0)==(0);
if ($54) {
- $57 = HEAP32[(32456)>>2]|0;
+ $57 = HEAP32[(32620)>>2]|0;
_glBindBuffer(34962,($57|0));
- $58 = HEAP32[(31228)>>2]|0;
+ $58 = HEAP32[(31392)>>2]|0;
_glVertexAttribPointer(($58|0),3,5126,0,0,(0|0));
- $59 = HEAP32[(31228)>>2]|0;
+ $59 = HEAP32[(31392)>>2]|0;
_glEnableVertexAttribArray(($59|0));
- $60 = HEAP32[(32460)>>2]|0;
+ $60 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($60|0));
- $61 = HEAP32[(31232)>>2]|0;
+ $61 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($61|0),2,5126,0,0,(0|0));
- $62 = HEAP32[(31232)>>2]|0;
+ $62 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($62|0));
- $63 = HEAP32[(32464)>>2]|0;
+ $63 = HEAP32[(32628)>>2]|0;
_glBindBuffer(34962,($63|0));
- $64 = HEAP32[(31248)>>2]|0;
+ $64 = HEAP32[(31412)>>2]|0;
_glVertexAttribPointer(($64|0),4,5121,1,0,(0|0));
- $65 = HEAP32[(31248)>>2]|0;
+ $65 = HEAP32[(31412)>>2]|0;
_glEnableVertexAttribArray(($65|0));
- $66 = HEAP32[(32468)>>2]|0;
+ $66 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34963,($66|0));
} else {
- $55 = HEAP32[7786]|0;
- $56 = HEAP32[(32452)>>2]|0;
+ $55 = HEAP32[7827]|0;
+ $56 = HEAP32[(32616)>>2]|0;
FUNCTION_TABLE_vi[$55 & 31]($56);
}
- $67 = HEAP32[7822]|0;
+ $67 = HEAP32[7863]|0;
$68 = ($67|0)>(0);
if ($68) {
$$02830 = 0;$$031 = 0;
while(1) {
- $71 = HEAP32[7821]|0;
+ $71 = HEAP32[7862]|0;
$72 = (($71) + (($$031*144)|0)|0);
$73 = HEAP32[$72>>2]|0;
$74 = (($73|0) / 4)&-1;
@@ -16136,14 +20367,14 @@ function _DrawDefaultBuffers() {
$78 = $$02830 << 1;
$79 = $78;
_glDrawElements(4,($75|0),5123,($79|0));
- $80 = HEAP32[7821]|0;
+ $80 = HEAP32[7862]|0;
$81 = (($80) + (($$031*144)|0)|0);
$82 = HEAP32[$81>>2]|0;
$83 = (($82|0) / 4)&-1;
$84 = ($83*6)|0;
$85 = (($84) + ($$02830))|0;
$86 = (($$031) + 1)|0;
- $87 = HEAP32[7822]|0;
+ $87 = HEAP32[7863]|0;
$88 = ($86|0)<($87|0);
if ($88) {
$$02830 = $85;$$031 = $86;
@@ -16152,7 +20383,7 @@ function _DrawDefaultBuffers() {
}
}
}
- $69 = HEAP32[7784]|0;
+ $69 = HEAP32[7825]|0;
$70 = ($69|0)==(0);
if ($70) {
_glBindBuffer(34962,0);
@@ -16160,10 +20391,10 @@ function _DrawDefaultBuffers() {
}
_glBindTexture(3553,0);
}
- $89 = HEAP32[7784]|0;
+ $89 = HEAP32[7825]|0;
$90 = ($89|0)==(0);
if (!($90)) {
- $91 = HEAP32[7786]|0;
+ $91 = HEAP32[7827]|0;
FUNCTION_TABLE_vi[$91 & 31](0);
}
_glUseProgram(0);
@@ -16175,22 +20406,22 @@ function _DrawDefaultBuffers() {
break;
}
}
- HEAP32[7822] = 1;
- $5 = HEAP32[7791]|0;
- $6 = HEAP32[7821]|0;
+ HEAP32[7863] = 1;
+ $5 = HEAP32[7832]|0;
+ $6 = HEAP32[7862]|0;
$7 = ((($6)) + 8|0);
HEAP32[$7>>2] = $5;
HEAP32[$6>>2] = 0;
- HEAP32[8082] = 0;
- HEAP32[(32336)>>2] = 0;
- HEAP32[8094] = 0;
- HEAP32[(32384)>>2] = 0;
- HEAP32[8106] = 0;
- HEAP32[(32428)>>2] = 0;
- HEAP32[(32432)>>2] = 0;
- HEAPF32[743] = -1.0;
- dest=31004; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31068; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[8123] = 0;
+ HEAP32[(32500)>>2] = 0;
+ HEAP32[8135] = 0;
+ HEAP32[(32548)>>2] = 0;
+ HEAP32[8147] = 0;
+ HEAP32[(32592)>>2] = 0;
+ HEAP32[(32596)>>2] = 0;
+ HEAPF32[746] = -1.0;
+ dest=31168; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31232; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
}
function _SetStereoView($0,$1,$2) {
@@ -16205,17 +20436,17 @@ function _SetStereoView($0,$1,$2) {
$3 = sp;
$4 = sp + 128|0;
dest=$3; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $5 = HEAP32[8080]|0;
+ $5 = HEAP32[8121]|0;
$6 = Math_imul($5, $0)|0;
$7 = (($6|0) / 2)&-1;
$8 = (($5|0) / 2)&-1;
- $9 = HEAP32[8081]|0;
+ $9 = HEAP32[8122]|0;
_rlViewport($7,0,$8,$9);
- $10 = (32908 + ($0<<6)|0);
+ $10 = (33072 + ($0<<6)|0);
dest=$$byval_copy; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$10; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy3);
- $11 = (32780 + ($0<<6)|0);
+ $11 = (32944 + ($0<<6)|0);
dest=$3; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetMatrixModelview($$byval_copy3);
@@ -16227,14 +20458,14 @@ function _SetMatrixModelview($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31068; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31232; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _SetMatrixProjection($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31004; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31168; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _rlPushMatrix() {
@@ -16242,43 +20473,43 @@ function _rlPushMatrix() {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- $0 = HEAP32[8259]|0;
+ $0 = HEAP32[8300]|0;
$1 = ($0|0)==(15);
if ($1) {
HEAP32[$vararg_buffer>>2] = 16;
- _TraceLog(1,8299,$vararg_buffer);
+ _TraceLog(1,8067,$vararg_buffer);
}
- $2 = HEAP32[8259]|0;
- $3 = (31296 + ($2<<6)|0);
- $4 = HEAP32[7750]|0;
+ $2 = HEAP32[8300]|0;
+ $3 = (31460 + ($2<<6)|0);
+ $4 = HEAP32[7791]|0;
dest=$3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_rlLoadIdentity();
- $5 = HEAP32[8259]|0;
+ $5 = HEAP32[8300]|0;
$6 = (($5) + 1)|0;
- HEAP32[8259] = $6;
- $7 = HEAP32[7783]|0;
+ HEAP32[8300] = $6;
+ $7 = HEAP32[7824]|0;
$8 = ($7|0)==(5888);
if (!($8)) {
STACKTOP = sp;return;
}
- HEAP32[8260] = 1;
+ HEAP32[8301] = 1;
STACKTOP = sp;return;
}
function _rlPopMatrix() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8259]|0;
+ $0 = HEAP32[8300]|0;
$1 = ($0|0)>(0);
if (!($1)) {
return;
}
- $2 = HEAP32[8259]|0;
+ $2 = HEAP32[8300]|0;
$3 = (($2) + -1)|0;
- $4 = (31296 + ($3<<6)|0);
- $5 = HEAP32[7750]|0;
+ $4 = (31460 + ($3<<6)|0);
+ $5 = HEAP32[7791]|0;
_memmove(($5|0),($4|0),64)|0;
$6 = (($2) + -1)|0;
- HEAP32[8259] = $6;
+ HEAP32[8300] = $6;
return;
}
function _GetFPS() {
@@ -16292,7 +20523,7 @@ function _GetFPS() {
function _GetFrameTime() {
var $0 = 0.0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1762];
+ $0 = +HEAPF64[1781];
$1 = $0;
return (+$1);
}
@@ -16300,28 +20531,28 @@ function _SetConfigFlags($0) {
$0 = $0|0;
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP8[33632] = $0;
+ HEAP8[35948] = $0;
$1 = $0 & 1;
$2 = ($1<<24>>24)==(0);
if (!($2)) {
- HEAP32[7708] = 1;
+ HEAP32[7749] = 1;
}
- $3 = HEAP8[33632]|0;
+ $3 = HEAP8[35948]|0;
$4 = $3 & 2;
$5 = ($4<<24>>24)==(0);
if ($5) {
return;
}
- HEAP32[7745] = 1;
+ HEAP32[7786] = 1;
return;
}
function _IsKeyPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33639 + ($0)|0);
+ $1 = (35955 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (34151 + ($0)|0);
+ $3 = (36467 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -16342,7 +20573,7 @@ function _rlTranslatef($0,$1,$2) {
$4 = sp;
_MatrixTranslate($3,$0,$1,$2);
_MatrixTranspose($3);
- $5 = HEAP32[7750]|0;
+ $5 = HEAP32[7791]|0;
dest=$$byval_copy; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$3; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy1);
@@ -16375,7 +20606,7 @@ function _rlRotatef($0,$1,$2,$3) {
_MatrixRotate($6,$$byval_copy2,$10);
dest=$4; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixTranspose($4);
- $11 = HEAP32[7750]|0;
+ $11 = HEAP32[7791]|0;
dest=$$byval_copy1; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy2; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy1,$$byval_copy2);
@@ -16386,7 +20617,7 @@ function _rlBegin($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7823] = $0;
+ HEAP32[7864] = $0;
return;
}
function _rlEnd() {
@@ -16402,21 +20633,21 @@ function _rlEnd() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$$byval_copy = sp;
- $0 = HEAP32[8260]|0;
+ $0 = HEAP32[8301]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[8261]|0;
+ $2 = HEAP32[8302]|0;
$3 = ($2|0)>(0);
if ($3) {
$$03956 = 0;
while(1) {
- $6 = HEAP32[7820]|0;
+ $6 = HEAP32[7861]|0;
$7 = (($6) + (($$03956*12)|0)|0);
- $8 = HEAP32[7750]|0;
+ $8 = HEAP32[7791]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_VectorTransform($7,$$byval_copy);
$9 = (($$03956) + 1)|0;
- $5 = HEAP32[8261]|0;
+ $5 = HEAP32[8302]|0;
$10 = ($9|0)<($5|0);
if ($10) {
$$03956 = $9;
@@ -16424,12 +20655,12 @@ function _rlEnd() {
break;
}
}
- HEAP32[8260] = 0;
+ HEAP32[8301] = 0;
$4 = ($5|0)>(0);
if ($4) {
$$04154 = 0;
while(1) {
- $11 = HEAP32[7820]|0;
+ $11 = HEAP32[7861]|0;
$12 = (($11) + (($$04154*12)|0)|0);
$13 = +HEAPF32[$12>>2];
$14 = (((($11) + (($$04154*12)|0)|0)) + 4|0);
@@ -16438,7 +20669,7 @@ function _rlEnd() {
$17 = +HEAPF32[$16>>2];
_rlVertex3f($13,$15,$17);
$18 = (($$04154) + 1)|0;
- $19 = HEAP32[8261]|0;
+ $19 = HEAP32[8302]|0;
$20 = ($18|0)<($19|0);
if ($20) {
$$04154 = $18;
@@ -16448,20 +20679,20 @@ function _rlEnd() {
}
}
} else {
- HEAP32[8260] = 0;
+ HEAP32[8301] = 0;
}
- HEAP32[8261] = 0;
+ HEAP32[8302] = 0;
}
- $21 = HEAP32[7823]|0;
+ $21 = HEAP32[7864]|0;
switch ($21|0) {
case 1: {
- $22 = HEAP32[8082]|0;
- $23 = HEAP32[(32336)>>2]|0;
+ $22 = HEAP32[8123]|0;
+ $23 = HEAP32[(32500)>>2]|0;
$24 = ($22|0)==($23|0);
if ($24) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$25 = (($22) - ($23))|0;
@@ -16469,22 +20700,22 @@ function _rlEnd() {
if ($26) {
$$04347 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $27 = HEAP32[(32348)>>2]|0;
- $28 = HEAP32[(32336)>>2]|0;
+ $27 = HEAP32[(32512)>>2]|0;
+ $28 = HEAP32[(32500)>>2]|0;
$29 = $28 << 2;
$30 = (($29) + -4)|0;
$31 = (($27) + ($30)|0);
$32 = HEAP8[$31>>0]|0;
$33 = (($27) + ($29)|0);
HEAP8[$33>>0] = $32;
- $34 = HEAP32[(32348)>>2]|0;
- $35 = HEAP32[(32336)>>2]|0;
+ $34 = HEAP32[(32512)>>2]|0;
+ $35 = HEAP32[(32500)>>2]|0;
$36 = $35 << 2;
$37 = (($36) + -3)|0;
$38 = (($34) + ($37)|0);
@@ -16492,8 +20723,8 @@ function _rlEnd() {
$40 = $36 | 1;
$41 = (($34) + ($40)|0);
HEAP8[$41>>0] = $39;
- $42 = HEAP32[(32348)>>2]|0;
- $43 = HEAP32[(32336)>>2]|0;
+ $42 = HEAP32[(32512)>>2]|0;
+ $43 = HEAP32[(32500)>>2]|0;
$44 = $43 << 2;
$45 = (($44) + -2)|0;
$46 = (($42) + ($45)|0);
@@ -16501,8 +20732,8 @@ function _rlEnd() {
$48 = $44 | 2;
$49 = (($42) + ($48)|0);
HEAP8[$49>>0] = $47;
- $50 = HEAP32[(32348)>>2]|0;
- $51 = HEAP32[(32336)>>2]|0;
+ $50 = HEAP32[(32512)>>2]|0;
+ $51 = HEAP32[(32500)>>2]|0;
$52 = $51 << 2;
$53 = (($52) + -1)|0;
$54 = (($50) + ($53)|0);
@@ -16510,9 +20741,9 @@ function _rlEnd() {
$56 = $52 | 3;
$57 = (($50) + ($56)|0);
HEAP8[$57>>0] = $55;
- $58 = HEAP32[(32336)>>2]|0;
+ $58 = HEAP32[(32500)>>2]|0;
$59 = (($58) + 1)|0;
- HEAP32[(32336)>>2] = $59;
+ HEAP32[(32500)>>2] = $59;
$60 = (($$04347) + 1)|0;
$exitcond = ($60|0)==($25|0);
if ($exitcond) {
@@ -16521,20 +20752,20 @@ function _rlEnd() {
$$04347 = $60;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 4: {
- $61 = HEAP32[8094]|0;
- $62 = HEAP32[(32384)>>2]|0;
+ $61 = HEAP32[8135]|0;
+ $62 = HEAP32[(32548)>>2]|0;
$63 = ($61|0)==($62|0);
if ($63) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$64 = (($61) - ($62))|0;
@@ -16542,22 +20773,22 @@ function _rlEnd() {
if ($65) {
$$04248 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $66 = HEAP32[(32396)>>2]|0;
- $67 = HEAP32[(32384)>>2]|0;
+ $66 = HEAP32[(32560)>>2]|0;
+ $67 = HEAP32[(32548)>>2]|0;
$68 = $67 << 2;
$69 = (($68) + -4)|0;
$70 = (($66) + ($69)|0);
$71 = HEAP8[$70>>0]|0;
$72 = (($66) + ($68)|0);
HEAP8[$72>>0] = $71;
- $73 = HEAP32[(32396)>>2]|0;
- $74 = HEAP32[(32384)>>2]|0;
+ $73 = HEAP32[(32560)>>2]|0;
+ $74 = HEAP32[(32548)>>2]|0;
$75 = $74 << 2;
$76 = (($75) + -3)|0;
$77 = (($73) + ($76)|0);
@@ -16565,8 +20796,8 @@ function _rlEnd() {
$79 = $75 | 1;
$80 = (($73) + ($79)|0);
HEAP8[$80>>0] = $78;
- $81 = HEAP32[(32396)>>2]|0;
- $82 = HEAP32[(32384)>>2]|0;
+ $81 = HEAP32[(32560)>>2]|0;
+ $82 = HEAP32[(32548)>>2]|0;
$83 = $82 << 2;
$84 = (($83) + -2)|0;
$85 = (($81) + ($84)|0);
@@ -16574,8 +20805,8 @@ function _rlEnd() {
$87 = $83 | 2;
$88 = (($81) + ($87)|0);
HEAP8[$88>>0] = $86;
- $89 = HEAP32[(32396)>>2]|0;
- $90 = HEAP32[(32384)>>2]|0;
+ $89 = HEAP32[(32560)>>2]|0;
+ $90 = HEAP32[(32548)>>2]|0;
$91 = $90 << 2;
$92 = (($91) + -1)|0;
$93 = (($89) + ($92)|0);
@@ -16583,9 +20814,9 @@ function _rlEnd() {
$95 = $91 | 3;
$96 = (($89) + ($95)|0);
HEAP8[$96>>0] = $94;
- $97 = HEAP32[(32384)>>2]|0;
+ $97 = HEAP32[(32548)>>2]|0;
$98 = (($97) + 1)|0;
- HEAP32[(32384)>>2] = $98;
+ HEAP32[(32548)>>2] = $98;
$99 = (($$04248) + 1)|0;
$exitcond60 = ($99|0)==($64|0);
if ($exitcond60) {
@@ -16594,15 +20825,15 @@ function _rlEnd() {
$$04248 = $99;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 7: {
- $100 = HEAP32[8106]|0;
- $101 = HEAP32[(32432)>>2]|0;
+ $100 = HEAP32[8147]|0;
+ $101 = HEAP32[(32596)>>2]|0;
$102 = ($100|0)==($101|0);
if (!($102)) {
$103 = (($100) - ($101))|0;
@@ -16610,16 +20841,16 @@ function _rlEnd() {
if ($104) {
$$04052 = 0;
while(1) {
- $105 = HEAP32[(32444)>>2]|0;
- $106 = HEAP32[(32432)>>2]|0;
+ $105 = HEAP32[(32608)>>2]|0;
+ $106 = HEAP32[(32596)>>2]|0;
$107 = $106 << 2;
$108 = (($107) + -4)|0;
$109 = (($105) + ($108)|0);
$110 = HEAP8[$109>>0]|0;
$111 = (($105) + ($107)|0);
HEAP8[$111>>0] = $110;
- $112 = HEAP32[(32444)>>2]|0;
- $113 = HEAP32[(32432)>>2]|0;
+ $112 = HEAP32[(32608)>>2]|0;
+ $113 = HEAP32[(32596)>>2]|0;
$114 = $113 << 2;
$115 = (($114) + -3)|0;
$116 = (($112) + ($115)|0);
@@ -16627,8 +20858,8 @@ function _rlEnd() {
$118 = $114 | 1;
$119 = (($112) + ($118)|0);
HEAP8[$119>>0] = $117;
- $120 = HEAP32[(32444)>>2]|0;
- $121 = HEAP32[(32432)>>2]|0;
+ $120 = HEAP32[(32608)>>2]|0;
+ $121 = HEAP32[(32596)>>2]|0;
$122 = $121 << 2;
$123 = (($122) + -2)|0;
$124 = (($120) + ($123)|0);
@@ -16636,8 +20867,8 @@ function _rlEnd() {
$126 = $122 | 2;
$127 = (($120) + ($126)|0);
HEAP8[$127>>0] = $125;
- $128 = HEAP32[(32444)>>2]|0;
- $129 = HEAP32[(32432)>>2]|0;
+ $128 = HEAP32[(32608)>>2]|0;
+ $129 = HEAP32[(32596)>>2]|0;
$130 = $129 << 2;
$131 = (($130) + -1)|0;
$132 = (($128) + ($131)|0);
@@ -16645,9 +20876,9 @@ function _rlEnd() {
$134 = $130 | 3;
$135 = (($128) + ($134)|0);
HEAP8[$135>>0] = $133;
- $136 = HEAP32[(32432)>>2]|0;
+ $136 = HEAP32[(32596)>>2]|0;
$137 = (($136) + 1)|0;
- HEAP32[(32432)>>2] = $137;
+ HEAP32[(32596)>>2] = $137;
$138 = (($$04052) + 1)|0;
$exitcond63 = ($138|0)==($103|0);
if ($exitcond63) {
@@ -16658,17 +20889,17 @@ function _rlEnd() {
}
}
}
- $139 = HEAP32[8106]|0;
- $140 = HEAP32[(32428)>>2]|0;
+ $139 = HEAP32[8147]|0;
+ $140 = HEAP32[(32592)>>2]|0;
$141 = ($139|0)>($140|0);
if (!($141)) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
- $142 = HEAP32[(32440)>>2]|0;
- $$promoted = HEAP32[(32428)>>2]|0;
+ $142 = HEAP32[(32604)>>2]|0;
+ $$promoted = HEAP32[(32592)>>2]|0;
$143 = $$promoted << 1;
$scevgep = (($142) + ($143<<2)|0);
$144 = (($139) - ($140))|0;
@@ -16676,17 +20907,17 @@ function _rlEnd() {
_memset(($scevgep|0),0,($145|0))|0;
$146 = (($139) + ($$promoted))|0;
$147 = (($146) - ($140))|0;
- HEAP32[(32428)>>2] = $147;
- $148 = +HEAPF32[743];
+ HEAP32[(32592)>>2] = $147;
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
default: {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
}
@@ -16703,11 +20934,11 @@ function _rlVertex3f($0,$1,$2) {
$vararg_buffer3 = sp + 16|0;
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
- $3 = HEAP32[8260]|0;
+ $3 = HEAP32[8301]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7820]|0;
- $6 = HEAP32[8261]|0;
+ $5 = HEAP32[7861]|0;
+ $6 = HEAP32[8302]|0;
$7 = (($5) + (($6*12)|0)|0);
HEAPF32[$7>>2] = $0;
$8 = (((($5) + (($6*12)|0)|0)) + 4|0);
@@ -16715,16 +20946,16 @@ function _rlVertex3f($0,$1,$2) {
$9 = (((($5) + (($6*12)|0)|0)) + 8|0);
HEAPF32[$9>>2] = $2;
$10 = (($6) + 1)|0;
- HEAP32[8261] = $10;
+ HEAP32[8302] = $10;
STACKTOP = sp;return;
}
- $11 = HEAP32[7823]|0;
+ $11 = HEAP32[7864]|0;
switch ($11|0) {
case 1: {
- $12 = HEAP32[8082]|0;
+ $12 = HEAP32[8123]|0;
$13 = ($12|0)<(2048);
if ($13) {
- $14 = HEAP32[(32340)>>2]|0;
+ $14 = HEAP32[(32504)>>2]|0;
$15 = ($12*3)|0;
$16 = (($14) + ($15<<2)|0);
HEAPF32[$16>>2] = $0;
@@ -16735,19 +20966,19 @@ function _rlVertex3f($0,$1,$2) {
$20 = (($14) + ($19<<2)|0);
HEAPF32[$20>>2] = $2;
$21 = (($12) + 1)|0;
- HEAP32[8082] = $21;
+ HEAP32[8123] = $21;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8337,$vararg_buffer);
+ _TraceLog(1,8105,$vararg_buffer);
STACKTOP = sp;return;
}
break;
}
case 4: {
- $22 = HEAP32[8094]|0;
+ $22 = HEAP32[8135]|0;
$23 = ($22|0)<(6144);
if ($23) {
- $24 = HEAP32[(32388)>>2]|0;
+ $24 = HEAP32[(32552)>>2]|0;
$25 = ($22*3)|0;
$26 = (($24) + ($25<<2)|0);
HEAPF32[$26>>2] = $0;
@@ -16758,19 +20989,19 @@ function _rlVertex3f($0,$1,$2) {
$30 = (($24) + ($29<<2)|0);
HEAPF32[$30>>2] = $2;
$31 = (($22) + 1)|0;
- HEAP32[8094] = $31;
+ HEAP32[8135] = $31;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8362,$vararg_buffer1);
+ _TraceLog(1,8130,$vararg_buffer1);
STACKTOP = sp;return;
}
break;
}
case 7: {
- $32 = HEAP32[8106]|0;
+ $32 = HEAP32[8147]|0;
$33 = ($32|0)<(4096);
if ($33) {
- $34 = HEAP32[(32436)>>2]|0;
+ $34 = HEAP32[(32600)>>2]|0;
$35 = ($32*3)|0;
$36 = (($34) + ($35<<2)|0);
HEAPF32[$36>>2] = $0;
@@ -16781,9 +21012,9 @@ function _rlVertex3f($0,$1,$2) {
$40 = (($34) + ($39<<2)|0);
HEAPF32[$40>>2] = $2;
$41 = (($32) + 1)|0;
- HEAP32[8106] = $41;
- $42 = HEAP32[7821]|0;
- $43 = HEAP32[7822]|0;
+ HEAP32[8147] = $41;
+ $42 = HEAP32[7862]|0;
+ $43 = HEAP32[7863]|0;
$44 = (($43) + -1)|0;
$45 = (($42) + (($44*144)|0)|0);
$46 = HEAP32[$45>>2]|0;
@@ -16791,7 +21022,7 @@ function _rlVertex3f($0,$1,$2) {
HEAP32[$45>>2] = $47;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8391,$vararg_buffer3);
+ _TraceLog(1,8159,$vararg_buffer3);
STACKTOP = sp;return;
}
break;
@@ -16806,7 +21037,7 @@ function _rlVertex2f($0,$1) {
$1 = +$1;
var $2 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = +HEAPF32[743];
+ $2 = +HEAPF32[746];
_rlVertex3f($0,$1,$2);
return;
}
@@ -16817,7 +21048,7 @@ function _rlVertex2i($0,$1) {
sp = STACKTOP;
$2 = (+($0|0));
$3 = (+($1|0));
- $4 = +HEAPF32[743];
+ $4 = +HEAPF32[746];
_rlVertex3f($2,$3,$4);
return;
}
@@ -16826,13 +21057,13 @@ function _rlTexCoord2f($0,$1) {
$1 = +$1;
var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[7823]|0;
+ $2 = HEAP32[7864]|0;
$3 = ($2|0)==(7);
if (!($3)) {
return;
}
- $4 = HEAP32[(32440)>>2]|0;
- $5 = HEAP32[(32428)>>2]|0;
+ $4 = HEAP32[(32604)>>2]|0;
+ $5 = HEAP32[(32592)>>2]|0;
$6 = $5 << 1;
$7 = (($4) + ($6<<2)|0);
HEAPF32[$7>>2] = $0;
@@ -16840,7 +21071,7 @@ function _rlTexCoord2f($0,$1) {
$9 = (($4) + ($8<<2)|0);
HEAPF32[$9>>2] = $1;
$10 = (($5) + 1)|0;
- HEAP32[(32428)>>2] = $10;
+ HEAP32[(32592)>>2] = $10;
return;
}
function _rlNormal3f($0,$1,$2) {
@@ -16859,18 +21090,18 @@ function _rlColor4ub($0,$1,$2,$3) {
var $$sink37 = 0, $$sink38 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $4 = 0, $5 = 0;
var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $4 = HEAP32[7823]|0;
+ $4 = HEAP32[7864]|0;
switch ($4|0) {
case 1: {
- $$sink37 = (32336);$$sink38 = (32348);
+ $$sink37 = (32500);$$sink38 = (32512);
break;
}
case 4: {
- $$sink37 = (32384);$$sink38 = (32396);
+ $$sink37 = (32548);$$sink38 = (32560);
break;
}
case 7: {
- $$sink37 = (32432);$$sink38 = (32444);
+ $$sink37 = (32596);$$sink38 = (32608);
break;
}
default: {
@@ -16909,8 +21140,8 @@ function _rlEnableTexture($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[7821]|0;
- $2 = HEAP32[7822]|0;
+ $1 = HEAP32[7862]|0;
+ $2 = HEAP32[7863]|0;
$3 = (($2) + -1)|0;
$4 = (((($1) + (($3*144)|0)|0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
@@ -16923,9 +21154,9 @@ function _rlEnableTexture($0) {
$9 = ($8|0)>(0);
if ($9) {
$10 = (($2) + 1)|0;
- HEAP32[7822] = $10;
+ HEAP32[7863] = $10;
}
- $11 = HEAP32[7822]|0;
+ $11 = HEAP32[7863]|0;
$12 = (($11) + -1)|0;
$13 = (((($1) + (($12*144)|0)|0)) + 8|0);
HEAP32[$13>>2] = $0;
@@ -16936,7 +21167,7 @@ function _rlEnableTexture($0) {
function _rlDisableTexture() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8106]|0;
+ $0 = HEAP32[8147]|0;
$1 = ($0|0)>(4095);
if (!($1)) {
return;
@@ -16948,7 +21179,7 @@ function _GetDefaultTexture($0) {
$0 = $0|0;
var $$sroa$4$0$$sroa_idx2 = 0, $$sroa$5$0$$sroa_idx4 = 0, $$sroa$6$0$$sroa_idx6 = 0, $$sroa$7$0$$sroa_idx8 = 0, $1 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[7791]|0;
+ $1 = HEAP32[7832]|0;
HEAP32[$0>>2] = $1;
$$sroa$4$0$$sroa_idx2 = ((($0)) + 4|0);
HEAP32[$$sroa$4$0$$sroa_idx2>>2] = 1;
@@ -17138,7 +21369,7 @@ function _GetDefaultFont($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- ;HEAP32[$0>>2]=HEAP32[30852>>2]|0;HEAP32[$0+4>>2]=HEAP32[30852+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[30852+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[30852+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[30852+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[30852+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[30852+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[30852+28>>2]|0;
+ ;HEAP32[$0>>2]=HEAP32[31016>>2]|0;HEAP32[$0+4>>2]=HEAP32[31016+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[31016+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[31016+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[31016+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[31016+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[31016+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[31016+28>>2]|0;
return;
}
function _MeasureTextEx($0,$1,$2,$3,$4) {
@@ -17614,8 +21845,8 @@ function _FormatText($0,$varargs) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
HEAP32[$1>>2] = $varargs;
- (_vsprintf(34919,$0,$1)|0);
- STACKTOP = sp;return (34919|0);
+ (_vsprintf(37235,$0,$1)|0);
+ STACKTOP = sp;return (37235|0);
}
function _MeasureText($0,$1) {
$0 = $0|0;
@@ -17654,22 +21885,22 @@ function _DrawFPS($0,$1) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$$byval_copy = sp;
$2 = sp + 4|0;
- $3 = HEAP32[8262]|0;
- $4 = HEAP32[744]|0;
+ $3 = HEAP32[8303]|0;
+ $4 = HEAP32[747]|0;
$5 = ($3|0)<($4|0);
if ($5) {
$6 = (($3) + 1)|0;
$$sink = $6;
} else {
$7 = (_GetFPS()|0);
- HEAP32[8263] = $7;
- HEAP32[744] = $7;
+ HEAP32[8304] = $7;
+ HEAP32[747] = $7;
$$sink = 0;
}
- HEAP32[8262] = $$sink;
- $8 = HEAP32[8263]|0;
+ HEAP32[8303] = $$sink;
+ $8 = HEAP32[8304]|0;
HEAP32[$$byval_copy>>2] = $8;
- (_FormatText(8416,$$byval_copy)|0);
+ (_FormatText(8184,$$byval_copy)|0);
HEAP8[$2>>0] = 0;
$9 = ((($2)) + 1|0);
HEAP8[$9>>0] = -98;
@@ -17678,7 +21909,7 @@ function _DrawFPS($0,$1) {
$11 = ((($2)) + 3|0);
HEAP8[$11>>0] = -1;
;HEAP8[$$byval_copy>>0]=HEAP8[$2>>0]|0;HEAP8[$$byval_copy+1>>0]=HEAP8[$2+1>>0]|0;HEAP8[$$byval_copy+2>>0]=HEAP8[$2+2>>0]|0;HEAP8[$$byval_copy+3>>0]=HEAP8[$2+3>>0]|0;
- _DrawText(34919,$0,$1,20,$$byval_copy);
+ _DrawText(37235,$0,$1,20,$$byval_copy);
STACKTOP = sp;return;
}
function _emscripten_GetProcAddress($0) {
@@ -17727,7 +21958,7 @@ function _emscripten_GetProcAddress($0) {
$10 = HEAP32[$2>>2]|0;
(_strcpy($9,$10)|0);
$11 = HEAP32[$3>>2]|0;
- $12 = (_strstr($11,8424)|0);
+ $12 = (_strstr($11,8192)|0);
HEAP32[$4>>2] = $12;
$13 = HEAP32[$4>>2]|0;
$14 = ($13|0)!=(0|0);
@@ -17736,7 +21967,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$15>>0] = 0;
}
$16 = HEAP32[$3>>2]|0;
- $17 = (_strstr($16,8428)|0);
+ $17 = (_strstr($16,8196)|0);
HEAP32[$4>>2] = $17;
$18 = HEAP32[$4>>2]|0;
$19 = ($18|0)!=(0|0);
@@ -17745,7 +21976,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$20>>0] = 0;
}
$21 = HEAP32[$3>>2]|0;
- $22 = (_strstr($21,8432)|0);
+ $22 = (_strstr($21,8200)|0);
HEAP32[$4>>2] = $22;
$23 = HEAP32[$4>>2]|0;
$24 = ($23|0)!=(0|0);
@@ -17754,7 +21985,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$25>>0] = 0;
}
$26 = HEAP32[$3>>2]|0;
- $27 = (_strstr($26,8436)|0);
+ $27 = (_strstr($26,8204)|0);
HEAP32[$4>>2] = $27;
$28 = HEAP32[$4>>2]|0;
$29 = ($28|0)!=(0|0);
@@ -17763,1210 +21994,1210 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$30>>0] = 0;
}
$31 = HEAP32[$3>>2]|0;
- $32 = (_strcmp($31,8442)|0);
+ $32 = (_strcmp($31,8210)|0);
$33 = ($32|0)!=(0);
do {
if ($33) {
$34 = HEAP32[$3>>2]|0;
- $35 = (_strcmp($34,8480)|0);
+ $35 = (_strcmp($34,8248)|0);
$36 = ($35|0)!=(0);
if (!($36)) {
- HEAP32[$3>>2] = 8499;
+ HEAP32[$3>>2] = 8267;
break;
}
$37 = HEAP32[$3>>2]|0;
- $38 = (_strcmp($37,8512)|0);
+ $38 = (_strcmp($37,8280)|0);
$39 = ($38|0)!=(0);
if (!($39)) {
- HEAP32[$3>>2] = 8533;
+ HEAP32[$3>>2] = 8301;
break;
}
$40 = HEAP32[$3>>2]|0;
- $41 = (_strcmp($40,8548)|0);
+ $41 = (_strcmp($40,8316)|0);
$42 = ($41|0)!=(0);
if (!($42)) {
- HEAP32[$3>>2] = 8563;
+ HEAP32[$3>>2] = 8331;
break;
}
$43 = HEAP32[$3>>2]|0;
- $44 = (_strcmp($43,8578)|0);
+ $44 = (_strcmp($43,8346)|0);
$45 = ($44|0)!=(0);
if (!($45)) {
- HEAP32[$3>>2] = 8593;
+ HEAP32[$3>>2] = 8361;
}
} else {
- HEAP32[$3>>2] = 8464;
+ HEAP32[$3>>2] = 8232;
}
} while(0);
$46 = HEAP32[$3>>2]|0;
- $47 = (_strcmp($46,8608)|0);
+ $47 = (_strcmp($46,8376)|0);
$48 = ($47|0)!=(0);
do {
if ($48) {
$49 = HEAP32[$3>>2]|0;
- $50 = (_strcmp($49,8622)|0);
+ $50 = (_strcmp($49,8390)|0);
$51 = ($50|0)!=(0);
if (!($51)) {
HEAP32[$1>>2] = 3;
break;
}
$52 = HEAP32[$3>>2]|0;
- $53 = (_strcmp($52,8634)|0);
+ $53 = (_strcmp($52,8402)|0);
$54 = ($53|0)!=(0);
if (!($54)) {
HEAP32[$1>>2] = 6;
break;
}
$55 = HEAP32[$3>>2]|0;
- $56 = (_strcmp($55,8648)|0);
+ $56 = (_strcmp($55,8416)|0);
$57 = ($56|0)!=(0);
if (!($57)) {
HEAP32[$1>>2] = 7;
break;
}
$58 = HEAP32[$3>>2]|0;
- $59 = (_strcmp($58,8660)|0);
+ $59 = (_strcmp($58,8428)|0);
$60 = ($59|0)!=(0);
if (!($60)) {
HEAP32[$1>>2] = 8;
break;
}
$61 = HEAP32[$3>>2]|0;
- $62 = (_strcmp($61,8674)|0);
+ $62 = (_strcmp($61,8442)|0);
$63 = ($62|0)!=(0);
if (!($63)) {
HEAP32[$1>>2] = 9;
break;
}
$64 = HEAP32[$3>>2]|0;
- $65 = (_strcmp($64,8688)|0);
+ $65 = (_strcmp($64,8456)|0);
$66 = ($65|0)!=(0);
if (!($66)) {
HEAP32[$1>>2] = 10;
break;
}
$67 = HEAP32[$3>>2]|0;
- $68 = (_strcmp($67,8705)|0);
+ $68 = (_strcmp($67,8473)|0);
$69 = ($68|0)!=(0);
if (!($69)) {
HEAP32[$1>>2] = 1;
break;
}
$70 = HEAP32[$3>>2]|0;
- $71 = (_strcmp($70,8728)|0);
+ $71 = (_strcmp($70,8496)|0);
$72 = ($71|0)!=(0);
if (!($72)) {
HEAP32[$1>>2] = 1;
break;
}
$73 = HEAP32[$3>>2]|0;
- $74 = (_strcmp($73,8754)|0);
+ $74 = (_strcmp($73,8522)|0);
$75 = ($74|0)!=(0);
if (!($75)) {
HEAP32[$1>>2] = 2;
break;
}
$76 = HEAP32[$3>>2]|0;
- $77 = (_strcmp($76,8767)|0);
+ $77 = (_strcmp($76,8535)|0);
$78 = ($77|0)!=(0);
if (!($78)) {
HEAP32[$1>>2] = 3;
break;
}
$79 = HEAP32[$3>>2]|0;
- $80 = (_strcmp($79,8783)|0);
+ $80 = (_strcmp($79,8551)|0);
$81 = ($80|0)!=(0);
if (!($81)) {
HEAP32[$1>>2] = 1;
break;
}
$82 = HEAP32[$3>>2]|0;
- $83 = (_strcmp($82,8796)|0);
+ $83 = (_strcmp($82,8564)|0);
$84 = ($83|0)!=(0);
if (!($84)) {
HEAP32[$1>>2] = 11;
break;
}
$85 = HEAP32[$3>>2]|0;
- $86 = (_strcmp($85,8810)|0);
+ $86 = (_strcmp($85,8578)|0);
$87 = ($86|0)!=(0);
if (!($87)) {
HEAP32[$1>>2] = 2;
break;
}
$88 = HEAP32[$3>>2]|0;
- $89 = (_strcmp($88,8830)|0);
+ $89 = (_strcmp($88,8598)|0);
$90 = ($89|0)!=(0);
if (!($90)) {
HEAP32[$1>>2] = 3;
break;
}
$91 = HEAP32[$3>>2]|0;
- $92 = (_strcmp($91,8850)|0);
+ $92 = (_strcmp($91,8618)|0);
$93 = ($92|0)!=(0);
if (!($93)) {
HEAP32[$1>>2] = 4;
break;
}
$94 = HEAP32[$3>>2]|0;
- $95 = (_strcmp($94,8867)|0);
+ $95 = (_strcmp($94,8635)|0);
$96 = ($95|0)!=(0);
if (!($96)) {
HEAP32[$1>>2] = 5;
break;
}
$97 = HEAP32[$3>>2]|0;
- $98 = (_strcmp($97,8884)|0);
+ $98 = (_strcmp($97,8652)|0);
$99 = ($98|0)!=(0);
if (!($99)) {
HEAP32[$1>>2] = 4;
break;
}
$100 = HEAP32[$3>>2]|0;
- $101 = (_strcmp($100,8896)|0);
+ $101 = (_strcmp($100,8664)|0);
$102 = ($101|0)!=(0);
if (!($102)) {
HEAP32[$1>>2] = 12;
break;
}
$103 = HEAP32[$3>>2]|0;
- $104 = (_strcmp($103,8909)|0);
+ $104 = (_strcmp($103,8677)|0);
$105 = ($104|0)!=(0);
if (!($105)) {
HEAP32[$1>>2] = 13;
break;
}
$106 = HEAP32[$3>>2]|0;
- $107 = (_strcmp($106,8925)|0);
+ $107 = (_strcmp($106,8693)|0);
$108 = ($107|0)!=(0);
if (!($108)) {
HEAP32[$1>>2] = 6;
break;
}
$109 = HEAP32[$3>>2]|0;
- $110 = (_strcmp($109,8948)|0);
+ $110 = (_strcmp($109,8716)|0);
$111 = ($110|0)!=(0);
if (!($111)) {
HEAP32[$1>>2] = 2;
break;
}
$112 = HEAP32[$3>>2]|0;
- $113 = (_strcmp($112,8961)|0);
+ $113 = (_strcmp($112,8729)|0);
$114 = ($113|0)!=(0);
if (!($114)) {
HEAP32[$1>>2] = 3;
break;
}
$115 = HEAP32[$3>>2]|0;
- $116 = (_strcmp($115,8977)|0);
+ $116 = (_strcmp($115,8745)|0);
$117 = ($116|0)!=(0);
if (!($117)) {
HEAP32[$1>>2] = 5;
break;
}
$118 = HEAP32[$3>>2]|0;
- $119 = (_strcmp($118,8988)|0);
+ $119 = (_strcmp($118,8756)|0);
$120 = ($119|0)!=(0);
if (!($120)) {
HEAP32[$1>>2] = 14;
break;
}
$121 = HEAP32[$3>>2]|0;
- $122 = (_strcmp($121,9007)|0);
+ $122 = (_strcmp($121,8775)|0);
$123 = ($122|0)!=(0);
if (!($123)) {
HEAP32[$1>>2] = 15;
break;
}
$124 = HEAP32[$3>>2]|0;
- $125 = (_strcmp($124,9029)|0);
+ $125 = (_strcmp($124,8797)|0);
$126 = ($125|0)!=(0);
if (!($126)) {
HEAP32[$1>>2] = 16;
break;
}
$127 = HEAP32[$3>>2]|0;
- $128 = (_strcmp($127,9048)|0);
+ $128 = (_strcmp($127,8816)|0);
$129 = ($128|0)!=(0);
if (!($129)) {
HEAP32[$1>>2] = 7;
break;
}
$130 = HEAP32[$3>>2]|0;
- $131 = (_strcmp($130,9077)|0);
+ $131 = (_strcmp($130,8845)|0);
$132 = ($131|0)!=(0);
if (!($132)) {
HEAP32[$1>>2] = 6;
break;
}
$133 = HEAP32[$3>>2]|0;
- $134 = (_strcmp($133,9094)|0);
+ $134 = (_strcmp($133,8862)|0);
$135 = ($134|0)!=(0);
if (!($135)) {
HEAP32[$1>>2] = 8;
break;
}
$136 = HEAP32[$3>>2]|0;
- $137 = (_strcmp($136,9109)|0);
+ $137 = (_strcmp($136,8877)|0);
$138 = ($137|0)!=(0);
if (!($138)) {
HEAP32[$1>>2] = 9;
break;
}
$139 = HEAP32[$3>>2]|0;
- $140 = (_strcmp($139,9124)|0);
+ $140 = (_strcmp($139,8892)|0);
$141 = ($140|0)!=(0);
if (!($141)) {
HEAP32[$1>>2] = 1;
break;
}
$142 = HEAP32[$3>>2]|0;
- $143 = (_strcmp($142,9145)|0);
+ $143 = (_strcmp($142,8913)|0);
$144 = ($143|0)!=(0);
if (!($144)) {
HEAP32[$1>>2] = 10;
break;
}
$145 = HEAP32[$3>>2]|0;
- $146 = (_strcmp($145,9165)|0);
+ $146 = (_strcmp($145,8933)|0);
$147 = ($146|0)!=(0);
if (!($147)) {
HEAP32[$1>>2] = 11;
break;
}
$148 = HEAP32[$3>>2]|0;
- $149 = (_strcmp($148,9185)|0);
+ $149 = (_strcmp($148,8953)|0);
$150 = ($149|0)!=(0);
if (!($150)) {
HEAP32[$1>>2] = 12;
break;
}
$151 = HEAP32[$3>>2]|0;
- $152 = (_strcmp($151,9211)|0);
+ $152 = (_strcmp($151,8979)|0);
$153 = ($152|0)!=(0);
if (!($153)) {
HEAP32[$1>>2] = 2;
break;
}
$154 = HEAP32[$3>>2]|0;
- $155 = (_strcmp($154,9230)|0);
+ $155 = (_strcmp($154,8998)|0);
$156 = ($155|0)!=(0);
if (!($156)) {
HEAP32[$1>>2] = 1;
break;
}
$157 = HEAP32[$3>>2]|0;
- $158 = (_strcmp($157,9242)|0);
+ $158 = (_strcmp($157,9010)|0);
$159 = ($158|0)!=(0);
if (!($159)) {
HEAP32[$1>>2] = 3;
break;
}
$160 = HEAP32[$3>>2]|0;
- $161 = (_strcmp($160,9254)|0);
+ $161 = (_strcmp($160,9022)|0);
$162 = ($161|0)!=(0);
if (!($162)) {
HEAP32[$1>>2] = 1;
break;
}
$163 = HEAP32[$3>>2]|0;
- $164 = (_strcmp($163,9266)|0);
+ $164 = (_strcmp($163,9034)|0);
$165 = ($164|0)!=(0);
if (!($165)) {
HEAP32[$1>>2] = 1;
break;
}
$166 = HEAP32[$3>>2]|0;
- $167 = (_strcmp($166,9278)|0);
+ $167 = (_strcmp($166,9046)|0);
$168 = ($167|0)!=(0);
if (!($168)) {
HEAP32[$1>>2] = 17;
break;
}
$169 = HEAP32[$3>>2]|0;
- $170 = (_strcmp($169,9290)|0);
+ $170 = (_strcmp($169,9058)|0);
$171 = ($170|0)!=(0);
if (!($171)) {
HEAP32[$1>>2] = 13;
break;
}
$172 = HEAP32[$3>>2]|0;
- $173 = (_strcmp($172,9302)|0);
+ $173 = (_strcmp($172,9070)|0);
$174 = ($173|0)!=(0);
if (!($174)) {
HEAP32[$1>>2] = 4;
break;
}
$175 = HEAP32[$3>>2]|0;
- $176 = (_strcmp($175,9314)|0);
+ $176 = (_strcmp($175,9082)|0);
$177 = ($176|0)!=(0);
if (!($177)) {
HEAP32[$1>>2] = 2;
break;
}
$178 = HEAP32[$3>>2]|0;
- $179 = (_strcmp($178,9326)|0);
+ $179 = (_strcmp($178,9094)|0);
$180 = ($179|0)!=(0);
if (!($180)) {
HEAP32[$1>>2] = 14;
break;
}
$181 = HEAP32[$3>>2]|0;
- $182 = (_strcmp($181,9339)|0);
+ $182 = (_strcmp($181,9107)|0);
$183 = ($182|0)!=(0);
if (!($183)) {
HEAP32[$1>>2] = 15;
break;
}
$184 = HEAP32[$3>>2]|0;
- $185 = (_strcmp($184,9352)|0);
+ $185 = (_strcmp($184,9120)|0);
$186 = ($185|0)!=(0);
if (!($186)) {
HEAP32[$1>>2] = 16;
break;
}
$187 = HEAP32[$3>>2]|0;
- $188 = (_strcmp($187,9365)|0);
+ $188 = (_strcmp($187,9133)|0);
$189 = ($188|0)!=(0);
if (!($189)) {
HEAP32[$1>>2] = 17;
break;
}
$190 = HEAP32[$3>>2]|0;
- $191 = (_strcmp($190,9378)|0);
+ $191 = (_strcmp($190,9146)|0);
$192 = ($191|0)!=(0);
if (!($192)) {
HEAP32[$1>>2] = 18;
break;
}
$193 = HEAP32[$3>>2]|0;
- $194 = (_strcmp($193,9391)|0);
+ $194 = (_strcmp($193,9159)|0);
$195 = ($194|0)!=(0);
if (!($195)) {
HEAP32[$1>>2] = 19;
break;
}
$196 = HEAP32[$3>>2]|0;
- $197 = (_strcmp($196,9404)|0);
+ $197 = (_strcmp($196,9172)|0);
$198 = ($197|0)!=(0);
if (!($198)) {
HEAP32[$1>>2] = 20;
break;
}
$199 = HEAP32[$3>>2]|0;
- $200 = (_strcmp($199,9417)|0);
+ $200 = (_strcmp($199,9185)|0);
$201 = ($200|0)!=(0);
if (!($201)) {
HEAP32[$1>>2] = 21;
break;
}
$202 = HEAP32[$3>>2]|0;
- $203 = (_strcmp($202,9430)|0);
+ $203 = (_strcmp($202,9198)|0);
$204 = ($203|0)!=(0);
if (!($204)) {
HEAP32[$1>>2] = 5;
break;
}
$205 = HEAP32[$3>>2]|0;
- $206 = (_strcmp($205,9449)|0);
+ $206 = (_strcmp($205,9217)|0);
$207 = ($206|0)!=(0);
if (!($207)) {
HEAP32[$1>>2] = 6;
break;
}
$208 = HEAP32[$3>>2]|0;
- $209 = (_strcmp($208,9468)|0);
+ $209 = (_strcmp($208,9236)|0);
$210 = ($209|0)!=(0);
if (!($210)) {
HEAP32[$1>>2] = 7;
break;
}
$211 = HEAP32[$3>>2]|0;
- $212 = (_strcmp($211,9487)|0);
+ $212 = (_strcmp($211,9255)|0);
$213 = ($212|0)!=(0);
if (!($213)) {
HEAP32[$1>>2] = 18;
break;
}
$214 = HEAP32[$3>>2]|0;
- $215 = (_strcmp($214,9500)|0);
+ $215 = (_strcmp($214,9268)|0);
$216 = ($215|0)!=(0);
if (!($216)) {
HEAP32[$1>>2] = 19;
break;
}
$217 = HEAP32[$3>>2]|0;
- $218 = (_strcmp($217,9518)|0);
+ $218 = (_strcmp($217,9286)|0);
$219 = ($218|0)!=(0);
if (!($219)) {
HEAP32[$1>>2] = 20;
break;
}
$220 = HEAP32[$3>>2]|0;
- $221 = (_strcmp($220,9536)|0);
+ $221 = (_strcmp($220,9304)|0);
$222 = ($221|0)!=(0);
if (!($222)) {
HEAP32[$1>>2] = 21;
break;
}
$223 = HEAP32[$3>>2]|0;
- $224 = (_strcmp($223,9554)|0);
+ $224 = (_strcmp($223,9322)|0);
$225 = ($224|0)!=(0);
if (!($225)) {
HEAP32[$1>>2] = 22;
break;
}
$226 = HEAP32[$3>>2]|0;
- $227 = (_strcmp($226,9572)|0);
+ $227 = (_strcmp($226,9340)|0);
$228 = ($227|0)!=(0);
if (!($228)) {
HEAP32[$1>>2] = 2;
break;
}
$229 = HEAP32[$3>>2]|0;
- $230 = (_strcmp($229,9592)|0);
+ $230 = (_strcmp($229,9360)|0);
$231 = ($230|0)!=(0);
if (!($231)) {
HEAP32[$1>>2] = 3;
break;
}
$232 = HEAP32[$3>>2]|0;
- $233 = (_strcmp($232,8533)|0);
+ $233 = (_strcmp($232,8301)|0);
$234 = ($233|0)!=(0);
if (!($234)) {
HEAP32[$1>>2] = 7;
break;
}
$235 = HEAP32[$3>>2]|0;
- $236 = (_strcmp($235,9610)|0);
+ $236 = (_strcmp($235,9378)|0);
$237 = ($236|0)!=(0);
if (!($237)) {
HEAP32[$1>>2] = 1;
break;
}
$238 = HEAP32[$3>>2]|0;
- $239 = (_strcmp($238,9625)|0);
+ $239 = (_strcmp($238,9393)|0);
$240 = ($239|0)!=(0);
if (!($240)) {
HEAP32[$1>>2] = 8;
break;
}
$241 = HEAP32[$3>>2]|0;
- $242 = (_strcmp($241,9646)|0);
+ $242 = (_strcmp($241,9414)|0);
$243 = ($242|0)!=(0);
if (!($243)) {
HEAP32[$1>>2] = 9;
break;
}
$244 = HEAP32[$3>>2]|0;
- $245 = (_strcmp($244,9661)|0);
+ $245 = (_strcmp($244,9429)|0);
$246 = ($245|0)!=(0);
if (!($246)) {
HEAP32[$1>>2] = 10;
break;
}
$247 = HEAP32[$3>>2]|0;
- $248 = (_strcmp($247,9679)|0);
+ $248 = (_strcmp($247,9447)|0);
$249 = ($248|0)!=(0);
if (!($249)) {
HEAP32[$1>>2] = 2;
break;
}
$250 = HEAP32[$3>>2]|0;
- $251 = (_strcmp($250,9695)|0);
+ $251 = (_strcmp($250,9463)|0);
$252 = ($251|0)!=(0);
if (!($252)) {
HEAP32[$1>>2] = 11;
break;
}
$253 = HEAP32[$3>>2]|0;
- $254 = (_strcmp($253,9714)|0);
+ $254 = (_strcmp($253,9482)|0);
$255 = ($254|0)!=(0);
if (!($255)) {
HEAP32[$1>>2] = 22;
break;
}
$256 = HEAP32[$3>>2]|0;
- $257 = (_strcmp($256,9728)|0);
+ $257 = (_strcmp($256,9496)|0);
$258 = ($257|0)!=(0);
if (!($258)) {
HEAP32[$1>>2] = 23;
break;
}
$259 = HEAP32[$3>>2]|0;
- $260 = (_strcmp($259,9743)|0);
+ $260 = (_strcmp($259,9511)|0);
$261 = ($260|0)!=(0);
if (!($261)) {
HEAP32[$1>>2] = 8;
break;
}
$262 = HEAP32[$3>>2]|0;
- $263 = (_strcmp($262,8464)|0);
+ $263 = (_strcmp($262,8232)|0);
$264 = ($263|0)!=(0);
if (!($264)) {
HEAP32[$1>>2] = 1;
break;
}
$265 = HEAP32[$3>>2]|0;
- $266 = (_strcmp($265,9754)|0);
+ $266 = (_strcmp($265,9522)|0);
$267 = ($266|0)!=(0);
if (!($267)) {
HEAP32[$1>>2] = 3;
break;
}
$268 = HEAP32[$3>>2]|0;
- $269 = (_strcmp($268,8563)|0);
+ $269 = (_strcmp($268,8331)|0);
$270 = ($269|0)!=(0);
if (!($270)) {
HEAP32[$1>>2] = 23;
break;
}
$271 = HEAP32[$3>>2]|0;
- $272 = (_strcmp($271,8593)|0);
+ $272 = (_strcmp($271,8361)|0);
$273 = ($272|0)!=(0);
if (!($273)) {
HEAP32[$1>>2] = 24;
break;
}
$274 = HEAP32[$3>>2]|0;
- $275 = (_strcmp($274,9770)|0);
+ $275 = (_strcmp($274,9538)|0);
$276 = ($275|0)!=(0);
if (!($276)) {
HEAP32[$1>>2] = 12;
break;
}
$277 = HEAP32[$3>>2]|0;
- $278 = (_strcmp($277,9797)|0);
+ $278 = (_strcmp($277,9565)|0);
$279 = ($278|0)!=(0);
if (!($279)) {
HEAP32[$1>>2] = 4;
break;
}
$280 = HEAP32[$3>>2]|0;
- $281 = (_strcmp($280,9811)|0);
+ $281 = (_strcmp($280,9579)|0);
$282 = ($281|0)!=(0);
if (!($282)) {
HEAP32[$1>>2] = 13;
break;
}
$283 = HEAP32[$3>>2]|0;
- $284 = (_strcmp($283,8499)|0);
+ $284 = (_strcmp($283,8267)|0);
$285 = ($284|0)!=(0);
if (!($285)) {
HEAP32[$1>>2] = 5;
break;
}
$286 = HEAP32[$3>>2]|0;
- $287 = (_strcmp($286,9831)|0);
+ $287 = (_strcmp($286,9599)|0);
$288 = ($287|0)!=(0);
if (!($288)) {
HEAP32[$1>>2] = 6;
break;
}
$289 = HEAP32[$3>>2]|0;
- $290 = (_strcmp($289,9849)|0);
+ $290 = (_strcmp($289,9617)|0);
$291 = ($290|0)!=(0);
if (!($291)) {
HEAP32[$1>>2] = 9;
break;
}
$292 = HEAP32[$3>>2]|0;
- $293 = (_strcmp($292,9861)|0);
+ $293 = (_strcmp($292,9629)|0);
$294 = ($293|0)!=(0);
if (!($294)) {
HEAP32[$1>>2] = 24;
break;
}
$295 = HEAP32[$3>>2]|0;
- $296 = (_strcmp($295,9882)|0);
+ $296 = (_strcmp($295,9650)|0);
$297 = ($296|0)!=(0);
if (!($297)) {
HEAP32[$1>>2] = 25;
break;
}
$298 = HEAP32[$3>>2]|0;
- $299 = (_strcmp($298,9900)|0);
+ $299 = (_strcmp($298,9668)|0);
$300 = ($299|0)!=(0);
if (!($300)) {
HEAP32[$1>>2] = 26;
break;
}
$301 = HEAP32[$3>>2]|0;
- $302 = (_strcmp($301,9918)|0);
+ $302 = (_strcmp($301,9686)|0);
$303 = ($302|0)!=(0);
if (!($303)) {
HEAP32[$1>>2] = 27;
break;
}
$304 = HEAP32[$3>>2]|0;
- $305 = (_strcmp($304,9939)|0);
+ $305 = (_strcmp($304,9707)|0);
$306 = ($305|0)!=(0);
if (!($306)) {
HEAP32[$1>>2] = 14;
break;
}
$307 = HEAP32[$3>>2]|0;
- $308 = (_strcmp($307,9965)|0);
+ $308 = (_strcmp($307,9733)|0);
$309 = ($308|0)!=(0);
if (!($309)) {
HEAP32[$1>>2] = 3;
break;
}
$310 = HEAP32[$3>>2]|0;
- $311 = (_strcmp($310,9988)|0);
+ $311 = (_strcmp($310,9756)|0);
$312 = ($311|0)!=(0);
if (!($312)) {
HEAP32[$1>>2] = 15;
break;
}
$313 = HEAP32[$3>>2]|0;
- $314 = (_strcmp($313,10026)|0);
+ $314 = (_strcmp($313,9794)|0);
$315 = ($314|0)!=(0);
if (!($315)) {
HEAP32[$1>>2] = 10;
break;
}
$316 = HEAP32[$3>>2]|0;
- $317 = (_strcmp($316,10042)|0);
+ $317 = (_strcmp($316,9810)|0);
$318 = ($317|0)!=(0);
if (!($318)) {
HEAP32[$1>>2] = 7;
break;
}
$319 = HEAP32[$3>>2]|0;
- $320 = (_strcmp($319,10057)|0);
+ $320 = (_strcmp($319,9825)|0);
$321 = ($320|0)!=(0);
if (!($321)) {
HEAP32[$1>>2] = 25;
break;
}
$322 = HEAP32[$3>>2]|0;
- $323 = (_strcmp($322,10080)|0);
+ $323 = (_strcmp($322,9848)|0);
$324 = ($323|0)!=(0);
if (!($324)) {
HEAP32[$1>>2] = 16;
break;
}
$325 = HEAP32[$3>>2]|0;
- $326 = (_strcmp($325,10093)|0);
+ $326 = (_strcmp($325,9861)|0);
$327 = ($326|0)!=(0);
if (!($327)) {
HEAP32[$1>>2] = 28;
break;
}
$328 = HEAP32[$3>>2]|0;
- $329 = (_strcmp($328,10107)|0);
+ $329 = (_strcmp($328,9875)|0);
$330 = ($329|0)!=(0);
if (!($330)) {
HEAP32[$1>>2] = 29;
break;
}
$331 = HEAP32[$3>>2]|0;
- $332 = (_strcmp($331,10121)|0);
+ $332 = (_strcmp($331,9889)|0);
$333 = ($332|0)!=(0);
if (!($333)) {
HEAP32[$1>>2] = 1;
break;
}
$334 = HEAP32[$3>>2]|0;
- $335 = (_strcmp($334,10141)|0);
+ $335 = (_strcmp($334,9909)|0);
$336 = ($335|0)!=(0);
if (!($336)) {
HEAP32[$1>>2] = 8;
break;
}
$337 = HEAP32[$3>>2]|0;
- $338 = (_strcmp($337,10161)|0);
+ $338 = (_strcmp($337,9929)|0);
$339 = ($338|0)!=(0);
if (!($339)) {
HEAP32[$1>>2] = 17;
break;
}
$340 = HEAP32[$3>>2]|0;
- $341 = (_strcmp($340,10177)|0);
+ $341 = (_strcmp($340,9945)|0);
$342 = ($341|0)!=(0);
if (!($342)) {
HEAP32[$1>>2] = 18;
break;
}
$343 = HEAP32[$3>>2]|0;
- $344 = (_strcmp($343,10195)|0);
+ $344 = (_strcmp($343,9963)|0);
$345 = ($344|0)!=(0);
if (!($345)) {
HEAP32[$1>>2] = 26;
break;
}
$346 = HEAP32[$3>>2]|0;
- $347 = (_strcmp($346,10211)|0);
+ $347 = (_strcmp($346,9979)|0);
$348 = ($347|0)!=(0);
if (!($348)) {
HEAP32[$1>>2] = 19;
break;
}
$349 = HEAP32[$3>>2]|0;
- $350 = (_strcmp($349,10226)|0);
+ $350 = (_strcmp($349,9994)|0);
$351 = ($350|0)!=(0);
if (!($351)) {
HEAP32[$1>>2] = 9;
break;
}
$352 = HEAP32[$3>>2]|0;
- $353 = (_strcmp($352,10248)|0);
+ $353 = (_strcmp($352,10016)|0);
$354 = ($353|0)!=(0);
if (!($354)) {
HEAP32[$1>>2] = 30;
break;
}
$355 = HEAP32[$3>>2]|0;
- $356 = (_strcmp($355,10266)|0);
+ $356 = (_strcmp($355,10034)|0);
$357 = ($356|0)!=(0);
if (!($357)) {
HEAP32[$1>>2] = 31;
break;
}
$358 = HEAP32[$3>>2]|0;
- $359 = (_strcmp($358,10287)|0);
+ $359 = (_strcmp($358,10055)|0);
$360 = ($359|0)!=(0);
if (!($360)) {
HEAP32[$1>>2] = 10;
break;
}
$361 = HEAP32[$3>>2]|0;
- $362 = (_strcmp($361,10305)|0);
+ $362 = (_strcmp($361,10073)|0);
$363 = ($362|0)!=(0);
if (!($363)) {
HEAP32[$1>>2] = 11;
break;
}
$364 = HEAP32[$3>>2]|0;
- $365 = (_strcmp($364,10318)|0);
+ $365 = (_strcmp($364,10086)|0);
$366 = ($365|0)!=(0);
if (!($366)) {
- HEAP32[$1>>2] = 1;
+ HEAP32[$1>>2] = 2;
break;
}
$367 = HEAP32[$3>>2]|0;
- $368 = (_strcmp($367,10333)|0);
+ $368 = (_strcmp($367,10101)|0);
$369 = ($368|0)!=(0);
if (!($369)) {
HEAP32[$1>>2] = 12;
break;
}
$370 = HEAP32[$3>>2]|0;
- $371 = (_strcmp($370,10347)|0);
+ $371 = (_strcmp($370,10115)|0);
$372 = ($371|0)!=(0);
if (!($372)) {
HEAP32[$1>>2] = 1;
break;
}
$373 = HEAP32[$3>>2]|0;
- $374 = (_strcmp($373,10357)|0);
+ $374 = (_strcmp($373,10125)|0);
$375 = ($374|0)!=(0);
if (!($375)) {
HEAP32[$1>>2] = 1;
break;
}
$376 = HEAP32[$3>>2]|0;
- $377 = (_strcmp($376,10367)|0);
+ $377 = (_strcmp($376,10135)|0);
$378 = ($377|0)!=(0);
if (!($378)) {
HEAP32[$1>>2] = 2;
break;
}
$379 = HEAP32[$3>>2]|0;
- $380 = (_strcmp($379,10389)|0);
+ $380 = (_strcmp($379,10157)|0);
$381 = ($380|0)!=(0);
if (!($381)) {
HEAP32[$1>>2] = 13;
break;
}
$382 = HEAP32[$3>>2]|0;
- $383 = (_strcmp($382,10415)|0);
+ $383 = (_strcmp($382,10183)|0);
$384 = ($383|0)!=(0);
if (!($384)) {
HEAP32[$1>>2] = 14;
break;
}
$385 = HEAP32[$3>>2]|0;
- $386 = (_strcmp($385,10442)|0);
+ $386 = (_strcmp($385,10210)|0);
$387 = ($386|0)!=(0);
if (!($387)) {
HEAP32[$1>>2] = 27;
break;
}
$388 = HEAP32[$3>>2]|0;
- $389 = (_strcmp($388,10455)|0);
+ $389 = (_strcmp($388,10223)|0);
$390 = ($389|0)!=(0);
if (!($390)) {
HEAP32[$1>>2] = 20;
break;
}
$391 = HEAP32[$3>>2]|0;
- $392 = (_strcmp($391,10470)|0);
+ $392 = (_strcmp($391,10238)|0);
$393 = ($392|0)!=(0);
if (!($393)) {
HEAP32[$1>>2] = 4;
break;
}
$394 = HEAP32[$3>>2]|0;
- $395 = (_strcmp($394,10485)|0);
+ $395 = (_strcmp($394,10253)|0);
$396 = ($395|0)!=(0);
if (!($396)) {
- HEAP32[$1>>2] = 2;
+ HEAP32[$1>>2] = 3;
break;
}
$397 = HEAP32[$3>>2]|0;
- $398 = (_strcmp($397,10509)|0);
+ $398 = (_strcmp($397,10277)|0);
$399 = ($398|0)!=(0);
if (!($399)) {
HEAP32[$1>>2] = 2;
break;
}
$400 = HEAP32[$3>>2]|0;
- $401 = (_strcmp($400,10520)|0);
+ $401 = (_strcmp($400,10288)|0);
$402 = ($401|0)!=(0);
if (!($402)) {
HEAP32[$1>>2] = 32;
break;
}
$403 = HEAP32[$3>>2]|0;
- $404 = (_strcmp($403,10542)|0);
+ $404 = (_strcmp($403,10310)|0);
$405 = ($404|0)!=(0);
if (!($405)) {
HEAP32[$1>>2] = 21;
break;
}
$406 = HEAP32[$3>>2]|0;
- $407 = (_strcmp($406,10564)|0);
+ $407 = (_strcmp($406,10332)|0);
$408 = ($407|0)!=(0);
if (!($408)) {
HEAP32[$1>>2] = 5;
break;
}
$409 = HEAP32[$3>>2]|0;
- $410 = (_strcmp($409,10588)|0);
+ $410 = (_strcmp($409,10356)|0);
$411 = ($410|0)!=(0);
if (!($411)) {
- HEAP32[$1>>2] = 3;
+ HEAP32[$1>>2] = 4;
break;
}
$412 = HEAP32[$3>>2]|0;
- $413 = (_strcmp($412,10597)|0);
+ $413 = (_strcmp($412,10365)|0);
$414 = ($413|0)!=(0);
if (!($414)) {
- HEAP32[$1>>2] = 4;
+ HEAP32[$1>>2] = 5;
break;
}
$415 = HEAP32[$3>>2]|0;
- $416 = (_strcmp($415,10605)|0);
+ $416 = (_strcmp($415,10373)|0);
$417 = ($416|0)!=(0);
if (!($417)) {
HEAP32[$1>>2] = 1;
break;
}
$418 = HEAP32[$3>>2]|0;
- $419 = (_strcmp($418,10618)|0);
+ $419 = (_strcmp($418,10386)|0);
$420 = ($419|0)!=(0);
if (!($420)) {
HEAP32[$1>>2] = 2;
break;
}
$421 = HEAP32[$3>>2]|0;
- $422 = (_strcmp($421,10632)|0);
+ $422 = (_strcmp($421,10400)|0);
$423 = ($422|0)!=(0);
if (!($423)) {
HEAP32[$1>>2] = 15;
break;
}
$424 = HEAP32[$3>>2]|0;
- $425 = (_strcmp($424,10644)|0);
+ $425 = (_strcmp($424,10412)|0);
$426 = ($425|0)!=(0);
if (!($426)) {
HEAP32[$1>>2] = 16;
break;
}
$427 = HEAP32[$3>>2]|0;
- $428 = (_strcmp($427,10653)|0);
+ $428 = (_strcmp($427,10421)|0);
$429 = ($428|0)!=(0);
if (!($429)) {
HEAP32[$1>>2] = 17;
break;
}
$430 = HEAP32[$3>>2]|0;
- $431 = (_strcmp($430,10663)|0);
+ $431 = (_strcmp($430,10431)|0);
$432 = ($431|0)!=(0);
if (!($432)) {
HEAP32[$1>>2] = 18;
break;
}
$433 = HEAP32[$3>>2]|0;
- $434 = (_strcmp($433,10675)|0);
+ $434 = (_strcmp($433,10443)|0);
$435 = ($434|0)!=(0);
if (!($435)) {
HEAP32[$1>>2] = 19;
break;
}
$436 = HEAP32[$3>>2]|0;
- $437 = (_strcmp($436,10686)|0);
+ $437 = (_strcmp($436,10454)|0);
$438 = ($437|0)!=(0);
if (!($438)) {
HEAP32[$1>>2] = 20;
break;
}
$439 = HEAP32[$3>>2]|0;
- $440 = (_strcmp($439,10694)|0);
+ $440 = (_strcmp($439,10462)|0);
$441 = ($440|0)!=(0);
if (!($441)) {
HEAP32[$1>>2] = 3;
break;
}
$442 = HEAP32[$3>>2]|0;
- $443 = (_strcmp($442,10706)|0);
+ $443 = (_strcmp($442,10474)|0);
$444 = ($443|0)!=(0);
if (!($444)) {
HEAP32[$1>>2] = 21;
break;
}
$445 = HEAP32[$3>>2]|0;
- $446 = (_strcmp($445,10721)|0);
+ $446 = (_strcmp($445,10489)|0);
$447 = ($446|0)!=(0);
if (!($447)) {
HEAP32[$1>>2] = 22;
break;
}
$448 = HEAP32[$3>>2]|0;
- $449 = (_strcmp($448,10733)|0);
+ $449 = (_strcmp($448,10501)|0);
$450 = ($449|0)!=(0);
if (!($450)) {
HEAP32[$1>>2] = 23;
break;
}
$451 = HEAP32[$3>>2]|0;
- $452 = (_strcmp($451,10747)|0);
+ $452 = (_strcmp($451,10515)|0);
$453 = ($452|0)!=(0);
if (!($453)) {
HEAP32[$1>>2] = 11;
break;
}
$454 = HEAP32[$3>>2]|0;
- $455 = (_strcmp($454,10772)|0);
+ $455 = (_strcmp($454,10540)|0);
$456 = ($455|0)!=(0);
if (!($456)) {
HEAP32[$1>>2] = 24;
break;
}
$457 = HEAP32[$3>>2]|0;
- $458 = (_strcmp($457,10789)|0);
+ $458 = (_strcmp($457,10557)|0);
$459 = ($458|0)!=(0);
if (!($459)) {
HEAP32[$1>>2] = 25;
break;
}
$460 = HEAP32[$3>>2]|0;
- $461 = (_strcmp($460,10805)|0);
+ $461 = (_strcmp($460,10573)|0);
$462 = ($461|0)!=(0);
if (!($462)) {
HEAP32[$1>>2] = 26;
break;
}
$463 = HEAP32[$3>>2]|0;
- $464 = (_strcmp($463,10821)|0);
+ $464 = (_strcmp($463,10589)|0);
$465 = ($464|0)!=(0);
if (!($465)) {
HEAP32[$1>>2] = 12;
break;
}
$466 = HEAP32[$3>>2]|0;
- $467 = (_strcmp($466,10833)|0);
+ $467 = (_strcmp($466,10601)|0);
$468 = ($467|0)!=(0);
if (!($468)) {
HEAP32[$1>>2] = 33;
break;
}
$469 = HEAP32[$3>>2]|0;
- $470 = (_strcmp($469,10845)|0);
+ $470 = (_strcmp($469,10613)|0);
$471 = ($470|0)!=(0);
if (!($471)) {
HEAP32[$1>>2] = 34;
break;
}
$472 = HEAP32[$3>>2]|0;
- $473 = (_strcmp($472,10869)|0);
+ $473 = (_strcmp($472,10637)|0);
$474 = ($473|0)!=(0);
if (!($474)) {
HEAP32[$1>>2] = 1;
break;
}
$475 = HEAP32[$3>>2]|0;
- $476 = (_strcmp($475,10882)|0);
+ $476 = (_strcmp($475,10650)|0);
$477 = ($476|0)!=(0);
if (!($477)) {
HEAP32[$1>>2] = 2;
break;
}
$478 = HEAP32[$3>>2]|0;
- $479 = (_strcmp($478,10896)|0);
+ $479 = (_strcmp($478,10664)|0);
$480 = ($479|0)!=(0);
if (!($480)) {
HEAP32[$1>>2] = 35;
break;
}
$481 = HEAP32[$3>>2]|0;
- $482 = (_strcmp($481,10918)|0);
+ $482 = (_strcmp($481,10686)|0);
$483 = ($482|0)!=(0);
if (!($483)) {
HEAP32[$1>>2] = 36;
break;
}
$484 = HEAP32[$3>>2]|0;
- $485 = (_strcmp($484,10925)|0);
+ $485 = (_strcmp($484,10693)|0);
$486 = ($485|0)!=(0);
if (!($486)) {
HEAP32[$1>>2] = 3;
break;
}
$487 = HEAP32[$3>>2]|0;
- $488 = (_strcmp($487,10941)|0);
+ $488 = (_strcmp($487,10709)|0);
$489 = ($488|0)!=(0);
if (!($489)) {
HEAP32[$1>>2] = 2;
break;
}
$490 = HEAP32[$3>>2]|0;
- $491 = (_strcmp($490,10958)|0);
+ $491 = (_strcmp($490,10726)|0);
$492 = ($491|0)!=(0);
if (!($492)) {
HEAP32[$1>>2] = 1;
break;
}
$493 = HEAP32[$3>>2]|0;
- $494 = (_strcmp($493,10975)|0);
+ $494 = (_strcmp($493,10743)|0);
$495 = ($494|0)!=(0);
if (!($495)) {
HEAP32[$1>>2] = 28;
break;
}
$496 = HEAP32[$3>>2]|0;
- $497 = (_strcmp($496,10991)|0);
+ $497 = (_strcmp($496,10759)|0);
$498 = ($497|0)!=(0);
if (!($498)) {
HEAP32[$1>>2] = 1;
break;
}
$499 = HEAP32[$3>>2]|0;
- $500 = (_strcmp($499,11007)|0);
+ $500 = (_strcmp($499,10775)|0);
$501 = ($500|0)!=(0);
if (!($501)) {
HEAP32[$1>>2] = 4;
break;
}
$502 = HEAP32[$3>>2]|0;
- $503 = (_strcmp($502,11024)|0);
+ $503 = (_strcmp($502,10792)|0);
$504 = ($503|0)!=(0);
if (!($504)) {
HEAP32[$1>>2] = 29;
break;
}
$505 = HEAP32[$3>>2]|0;
- $506 = (_strcmp($505,11038)|0);
+ $506 = (_strcmp($505,10806)|0);
$507 = ($506|0)!=(0);
if (!($507)) {
HEAP32[$1>>2] = 30;
break;
}
$508 = HEAP32[$3>>2]|0;
- $509 = (_strcmp($508,11050)|0);
+ $509 = (_strcmp($508,10818)|0);
$510 = ($509|0)!=(0);
if (!($510)) {
HEAP32[$1>>2] = 22;
break;
}
$511 = HEAP32[$3>>2]|0;
- $512 = (_strcmp($511,11061)|0);
+ $512 = (_strcmp($511,10829)|0);
$513 = ($512|0)!=(0);
if (!($513)) {
HEAP32[$1>>2] = 2;
break;
}
$514 = HEAP32[$3>>2]|0;
- $515 = (_strcmp($514,11074)|0);
+ $515 = (_strcmp($514,10842)|0);
$516 = ($515|0)!=(0);
if (!($516)) {
HEAP32[$1>>2] = 23;
break;
}
$517 = HEAP32[$3>>2]|0;
- $518 = (_strcmp($517,11084)|0);
+ $518 = (_strcmp($517,10852)|0);
$519 = ($518|0)!=(0);
if (!($519)) {
HEAP32[$1>>2] = 2;
break;
}
$520 = HEAP32[$3>>2]|0;
- $521 = (_strcmp($520,11101)|0);
+ $521 = (_strcmp($520,10869)|0);
$522 = ($521|0)!=(0);
if (!($522)) {
HEAP32[$1>>2] = 24;
break;
}
$523 = HEAP32[$3>>2]|0;
- $524 = (_strcmp($523,11113)|0);
+ $524 = (_strcmp($523,10881)|0);
$525 = ($524|0)!=(0);
if (!($525)) {
HEAP32[$1>>2] = 25;
break;
}
$526 = HEAP32[$3>>2]|0;
- $527 = (_strcmp($526,11135)|0);
+ $527 = (_strcmp($526,10903)|0);
$528 = ($527|0)!=(0);
if (!($528)) {
HEAP32[$1>>2] = 26;
break;
}
$529 = HEAP32[$3>>2]|0;
- $530 = (_strcmp($529,11155)|0);
+ $530 = (_strcmp($529,10923)|0);
$531 = ($530|0)!=(0);
if (!($531)) {
HEAP32[$1>>2] = 3;
break;
}
$532 = HEAP32[$3>>2]|0;
- $533 = (_strcmp($532,11168)|0);
+ $533 = (_strcmp($532,10936)|0);
$534 = ($533|0)!=(0);
if (!($534)) {
HEAP32[$1>>2] = 27;
break;
}
$535 = HEAP32[$3>>2]|0;
- $536 = (_strcmp($535,11190)|0);
+ $536 = (_strcmp($535,10958)|0);
$537 = ($536|0)!=(0);
if (!($537)) {
HEAP32[$1>>2] = 28;
break;
}
$538 = HEAP32[$3>>2]|0;
- $539 = (_strcmp($538,11210)|0);
+ $539 = (_strcmp($538,10978)|0);
$540 = ($539|0)!=(0);
if (!($540)) {
HEAP32[$1>>2] = 2;
break;
}
$541 = HEAP32[$3>>2]|0;
- $542 = (_strcmp($541,11227)|0);
+ $542 = (_strcmp($541,10995)|0);
$543 = ($542|0)!=(0);
if (!($543)) {
HEAP32[$1>>2] = 2;
break;
}
$544 = HEAP32[$3>>2]|0;
- $545 = (_strcmp($544,11244)|0);
+ $545 = (_strcmp($544,11012)|0);
$546 = ($545|0)!=(0);
if (!($546)) {
HEAP32[$1>>2] = 3;
break;
}
$547 = HEAP32[$3>>2]|0;
- $548 = (_strcmp($547,11264)|0);
+ $548 = (_strcmp($547,11032)|0);
$549 = ($548|0)!=(0);
if ($549) {
$550 = HEAP32[$2>>2]|0;
@@ -18988,7 +23219,15 @@ function _emscripten_GetProcAddress($0) {
function _emscripten_get_global_libc() {
var label = 0, sp = 0;
sp = STACKTOP;
- return (33056|0);
+ return (33220|0);
+}
+function ___emscripten_pthread_data_constructor() {
+ var $0 = 0, $1 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 188|0);
+ HEAP32[$1>>2] = (33260);
+ return;
}
function ___stdio_close($0) {
$0 = $0|0;
@@ -18998,7 +23237,7 @@ function ___stdio_close($0) {
$vararg_buffer = sp;
$1 = ((($0)) + 60|0);
$2 = HEAP32[$1>>2]|0;
- $3 = (_dummy_738($2)|0);
+ $3 = (_dummy_736($2)|0);
HEAP32[$vararg_buffer>>2] = $3;
$4 = (___syscall6(6,($vararg_buffer|0))|0);
$5 = (___syscall_ret($4)|0);
@@ -19178,12 +23417,7 @@ function ___pthread_self_108() {
$0 = (_pthread_self()|0);
return ($0|0);
}
-function _pthread_self() {
- var label = 0, sp = 0;
- sp = STACKTOP;
- return (2980|0);
-}
-function _dummy_738($0) {
+function _dummy_736($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
@@ -19316,7 +23550,7 @@ function _vsnprintf($0,$1,$2,$3) {
STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
$4 = sp + 124|0;
$5 = sp;
- dest=$5; src=3356; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$5; src=3124; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$6 = (($1) + -1)|0;
$7 = ($6>>>0)>(2147483646);
if ($7) {
@@ -19387,7 +23621,7 @@ function _vfprintf($0,$1,$2) {
$$0 = -1;
} else {
$9 = ((($0)) + 76|0);
- $10 = HEAP32[$9>>2]|0;
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
$11 = ($10|0)>(-1);
if ($11) {
$12 = (___lockfile($0)|0);
@@ -19800,7 +24034,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$133 = HEAP8[$128>>0]|0;
$134 = $133 << 24 >> 24;
$135 = (($134) + -65)|0;
- $136 = ((11380 + (($$0252*58)|0)|0) + ($135)|0);
+ $136 = ((11148 + (($$0252*58)|0)|0) + ($135)|0);
$137 = HEAP8[$136>>0]|0;
$138 = $137&255;
$139 = (($138) + -1)|0;
@@ -19978,7 +24212,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$222 = (($220) + 1)|0;
$223 = $218 | $221;
$$0254$$0254$ = $223 ? $$0254 : $222;
- $$0228 = $216;$$1233 = 0;$$1238 = 11844;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
+ $$0228 = $216;$$1233 = 0;$$1238 = 11612;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
label = 67;
break;
}
@@ -19999,7 +24233,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$235 = (($233) + 4)|0;
$236 = $235;
HEAP32[$236>>2] = $232;
- $$0232 = 1;$$0237 = 11844;$242 = $231;$243 = $232;
+ $$0232 = 1;$$0237 = 11612;$242 = $231;$243 = $232;
label = 66;
break L71;
} else {
@@ -20007,8 +24241,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$238 = ($237|0)==(0);
$239 = $$1263$ & 1;
$240 = ($239|0)==(0);
- $$ = $240 ? 11844 : (11846);
- $$$ = $238 ? $$ : (11845);
+ $$ = $240 ? 11612 : (11614);
+ $$$ = $238 ? $$ : (11613);
$241 = $$1263$ & 2049;
$narrow = ($241|0)!=(0);
$$284$ = $narrow&1;
@@ -20025,7 +24259,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$168 = (($165) + 4)|0;
$169 = $168;
$170 = HEAP32[$169>>2]|0;
- $$0232 = 0;$$0237 = 11844;$242 = $167;$243 = $170;
+ $$0232 = 0;$$0237 = 11612;$242 = $167;$243 = $170;
label = 66;
break;
}
@@ -20038,7 +24272,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$264 = HEAP32[$263>>2]|0;
$265 = $261&255;
HEAP8[$13>>0] = $265;
- $$2 = $13;$$2234 = 0;$$2239 = 11844;$$2251 = $11;$$5 = 1;$$6268 = $164;
+ $$2 = $13;$$2234 = 0;$$2239 = 11612;$$2251 = $11;$$5 = 1;$$6268 = $164;
break;
}
case 109: {
@@ -20052,7 +24286,7 @@ function _printf_core($0,$1,$2,$3,$4) {
case 115: {
$269 = HEAP32[$6>>2]|0;
$270 = ($269|0)!=(0|0);
- $271 = $270 ? $269 : 11854;
+ $271 = $270 ? $269 : 11622;
$$1 = $271;
label = 71;
break;
@@ -20075,7 +24309,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$pre349 = HEAP32[$6>>2]|0;
$284 = ($$0254|0)==(0);
if ($284) {
- _pad_674($0,32,$$1260,0,$$1263$);
+ _pad_672($0,32,$$1260,0,$$1263$);
$$0240$lcssa357 = 0;
label = 84;
} else {
@@ -20092,7 +24326,7 @@ function _printf_core($0,$1,$2,$3,$4) {
break;
}
default: {
- $$2 = $21;$$2234 = 0;$$2239 = 11844;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
+ $$2 = $21;$$2234 = 0;$$2239 = 11612;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
}
}
} while(0);
@@ -20114,8 +24348,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$207 = ($206|0)==(0);
$or$cond283 = $207 | $205;
$208 = $$1236 >> 4;
- $209 = (11844 + ($208)|0);
- $$289 = $or$cond283 ? 11844 : $209;
+ $209 = (11612 + ($208)|0);
+ $$289 = $or$cond283 ? 11612 : $209;
$$290 = $or$cond283 ? 0 : 2;
$$0228 = $202;$$1233 = $$290;$$1238 = $$289;$$2256 = $$1255;$$4266 = $$3265;$248 = $197;$250 = $200;
label = 67;
@@ -20136,7 +24370,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$277 = (($$1) + ($$0254)|0);
$$3257 = $273 ? $$0254 : $276;
$$1250 = $273 ? $277 : $272;
- $$2 = $$1;$$2234 = 0;$$2239 = 11844;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
+ $$2 = $$1;$$2234 = 0;$$2239 = 11612;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
}
else if ((label|0) == 75) {
label = 0;
@@ -20172,7 +24406,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$0 = -1;
break L1;
}
- _pad_674($0,32,$$1260,$$0240$lcssa,$$1263$);
+ _pad_672($0,32,$$1260,$$0240$lcssa,$$1263$);
$295 = ($$0240$lcssa|0)==(0);
if ($295) {
$$0240$lcssa357 = 0;
@@ -20233,7 +24467,7 @@ function _printf_core($0,$1,$2,$3,$4) {
else if ((label|0) == 84) {
label = 0;
$303 = $$1263$ ^ 8192;
- _pad_674($0,32,$$1260,$$0240$lcssa357,$303);
+ _pad_672($0,32,$$1260,$$0240$lcssa357,$303);
$304 = ($$1260|0)>($$0240$lcssa357|0);
$305 = $304 ? $$1260 : $$0240$lcssa357;
$$0243 = $305;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
@@ -20247,14 +24481,14 @@ function _printf_core($0,$1,$2,$3,$4) {
$312 = (($$$5) + ($$2234))|0;
$313 = ($$1260|0)<($312|0);
$$2261 = $313 ? $312 : $$1260;
- _pad_674($0,32,$$2261,$312,$$6268);
+ _pad_672($0,32,$$2261,$312,$$6268);
_out($0,$$2239,$$2234);
$314 = $$6268 ^ 65536;
- _pad_674($0,48,$$2261,$312,$314);
- _pad_674($0,48,$$$5,$310,0);
+ _pad_672($0,48,$$2261,$312,$314);
+ _pad_672($0,48,$$$5,$310,0);
_out($0,$$2,$310);
$315 = $$6268 ^ 8192;
- _pad_674($0,32,$$2261,$312,$315);
+ _pad_672($0,32,$$2261,$312,$315);
$$0243 = $$2261;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
}
L114: do {
@@ -20666,7 +24900,7 @@ function _fmt_x($0,$1,$2,$3) {
$$056 = $2;$15 = $1;$8 = $0;
while(1) {
$7 = $8 & 15;
- $9 = (11896 + ($7)|0);
+ $9 = (11664 + ($7)|0);
$10 = HEAP8[$9>>0]|0;
$11 = $10&255;
$12 = $11 | $3;
@@ -20921,7 +25155,7 @@ function _memchr($0,$1,$2) {
$39 = $38 ? $$2 : 0;
return ($39|0);
}
-function _pad_674($0,$1,$2,$3,$4) {
+function _pad_672($0,$1,$2,$3,$4) {
$0 = $0|0;
$1 = $1|0;
$2 = $2|0;
@@ -21019,25 +25253,25 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$10 = sp + 512|0;
HEAP32[$7>>2] = 0;
$11 = ((($10)) + 12|0);
- (___DOUBLE_BITS_675($1)|0);
+ (___DOUBLE_BITS_673($1)|0);
$12 = tempRet0;
$13 = ($12|0)<(0);
if ($13) {
$14 = -$1;
- $$0471 = $14;$$0520 = 1;$$0521 = 11861;
+ $$0471 = $14;$$0520 = 1;$$0521 = 11629;
} else {
$15 = $4 & 2048;
$16 = ($15|0)==(0);
$17 = $4 & 1;
$18 = ($17|0)==(0);
- $$ = $18 ? (11862) : (11867);
- $$$ = $16 ? $$ : (11864);
+ $$ = $18 ? (11630) : (11635);
+ $$$ = $16 ? $$ : (11632);
$19 = $4 & 2049;
$narrow = ($19|0)!=(0);
$$534$ = $narrow&1;
$$0471 = $1;$$0520 = $$534$;$$0521 = $$$;
}
- (___DOUBLE_BITS_675($$0471)|0);
+ (___DOUBLE_BITS_673($$0471)|0);
$20 = tempRet0;
$21 = $20 & 2146435072;
$22 = ($21>>>0)<(2146435072);
@@ -21130,7 +25364,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$0523 = $8;$$2473 = $$1472;
while(1) {
$80 = (~~(($$2473)));
- $81 = (11896 + ($80)|0);
+ $81 = (11664 + ($80)|0);
$82 = HEAP8[$81>>0]|0;
$83 = $82&255;
$84 = $83 | $42;
@@ -21177,16 +25411,16 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$pn = $or$cond537 ? $103 : $99;
$$0525 = (($100) + ($45))|0;
$104 = (($$0525) + ($$pn))|0;
- _pad_674($0,32,$2,$104,$4);
+ _pad_672($0,32,$2,$104,$4);
_out($0,$$0521$,$45);
$105 = $4 ^ 65536;
- _pad_674($0,48,$2,$104,$105);
+ _pad_672($0,48,$2,$104,$105);
_out($0,$8,$99);
$106 = (($$pn) - ($99))|0;
- _pad_674($0,48,$106,0,0);
+ _pad_672($0,48,$106,0,0);
_out($0,$77,$100);
$107 = $4 ^ 8192;
- _pad_674($0,32,$2,$104,$107);
+ _pad_672($0,32,$2,$104,$107);
$$sink562 = $104;
break;
}
@@ -21684,10 +25918,10 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$319 = (($318) + ($$3477))|0;
$$1526 = (($319) + ($291))|0;
$320 = (($$1526) + ($$pn566))|0;
- _pad_674($0,32,$2,$320,$4);
+ _pad_672($0,32,$2,$320,$4);
_out($0,$$0521,$$0520);
$321 = $4 ^ 65536;
- _pad_674($0,48,$2,$320,$321);
+ _pad_672($0,48,$2,$320,$321);
if ($293) {
$322 = ($$9$ph>>>0)>($$556>>>0);
$$0496$$9 = $322 ? $$556 : $$9$ph;
@@ -21741,7 +25975,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
}
$339 = ($289|0)==(0);
if (!($339)) {
- _out($0,11912,1);
+ _out($0,11680,1);
}
$340 = ($337>>>0)<($$7505>>>0);
$341 = ($$3477|0)>(0);
@@ -21789,7 +26023,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$4478$lcssa = $$3477;
}
$357 = (($$4478$lcssa) + 9)|0;
- _pad_674($0,48,$357,9,0);
+ _pad_672($0,48,$357,9,0);
} else {
$358 = ((($$9$ph)) + 4|0);
$$7505$ = $$lcssa673 ? $$7505 : $358;
@@ -21822,7 +26056,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$2 = $372;
break;
}
- _out($0,11912,1);
+ _out($0,11680,1);
$$2 = $372;
} else {
$369 = ($$0>>>0)>($8>>>0);
@@ -21867,29 +26101,29 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$5$lcssa = $$3477;
}
$383 = (($$5$lcssa) + 18)|0;
- _pad_674($0,48,$383,18,0);
+ _pad_672($0,48,$383,18,0);
$384 = $11;
$385 = $$2513;
$386 = (($384) - ($385))|0;
_out($0,$$2513,$386);
}
$387 = $4 ^ 8192;
- _pad_674($0,32,$2,$320,$387);
+ _pad_672($0,32,$2,$320,$387);
$$sink562 = $320;
} else {
$27 = $5 & 32;
$28 = ($27|0)!=(0);
- $29 = $28 ? 11880 : 11884;
+ $29 = $28 ? 11648 : 11652;
$30 = ($$0471 != $$0471) | (0.0 != 0.0);
- $31 = $28 ? 11888 : 11892;
+ $31 = $28 ? 11656 : 11660;
$$0510 = $30 ? $31 : $29;
$32 = (($$0520) + 3)|0;
$33 = $4 & -65537;
- _pad_674($0,32,$2,$32,$33);
+ _pad_672($0,32,$2,$32,$33);
_out($0,$$0521,$$0520);
_out($0,$$0510,3);
$34 = $4 ^ 8192;
- _pad_674($0,32,$2,$32,$34);
+ _pad_672($0,32,$2,$32,$34);
$$sink562 = $32;
}
} while(0);
@@ -21897,7 +26131,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$555 = $388 ? $2 : $$sink562;
STACKTOP = sp;return ($$555|0);
}
-function ___DOUBLE_BITS_675($0) {
+function ___DOUBLE_BITS_673($0) {
$0 = +$0;
var $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
@@ -21978,10 +26212,10 @@ function _wcrtomb($0,$1,$2) {
$$0 = 1;
break;
}
- $6 = (___pthread_self_448()|0);
+ $6 = (___pthread_self_446()|0);
$7 = ((($6)) + 188|0);
$8 = HEAP32[$7>>2]|0;
- $9 = HEAP32[$8>>2]|0;
+ $9 = (Atomics_load(HEAP32,$8>>2)|0);
$not$ = ($9|0)==(0|0);
if ($not$) {
$10 = $1 & -128;
@@ -22071,7 +26305,7 @@ function _wcrtomb($0,$1,$2) {
} while(0);
return ($$0|0);
}
-function ___pthread_self_448() {
+function ___pthread_self_446() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_pthread_self()|0);
@@ -22091,7 +26325,7 @@ function ___strerror_l($0,$1) {
sp = STACKTOP;
$$016 = 0;
while(1) {
- $3 = (11914 + ($$016)|0);
+ $3 = (11682 + ($$016)|0);
$4 = HEAP8[$3>>0]|0;
$5 = $4&255;
$6 = ($5|0)==($0|0);
@@ -22102,7 +26336,7 @@ function ___strerror_l($0,$1) {
$7 = (($$016) + 1)|0;
$8 = ($7|0)==(87);
if ($8) {
- $$01214 = 12002;$$115 = 87;
+ $$01214 = 11770;$$115 = 87;
label = 5;
break;
} else {
@@ -22112,9 +26346,9 @@ function ___strerror_l($0,$1) {
if ((label|0) == 2) {
$2 = ($$016|0)==(0);
if ($2) {
- $$012$lcssa = 12002;
+ $$012$lcssa = 11770;
} else {
- $$01214 = 12002;$$115 = $$016;
+ $$01214 = 11770;$$115 = $$016;
label = 5;
}
}
@@ -22144,7 +26378,7 @@ function ___strerror_l($0,$1) {
}
}
$14 = ((($1)) + 20|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = (___lctrans($$012$lcssa,$15)|0);
return ($16|0);
}
@@ -22751,13 +26985,13 @@ function ___stpcpy($0,$1) {
function ___ofl_lock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___lock((33120|0));
- return (33128|0);
+ ___lock((33284|0));
+ return (33292|0);
}
function ___ofl_unlock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___unlock((33120|0));
+ ___unlock((33284|0));
return;
}
function _fflush($0) {
@@ -22768,12 +27002,12 @@ function _fflush($0) {
$1 = ($0|0)==(0|0);
do {
if ($1) {
- $8 = HEAP32[838]|0;
+ $8 = (Atomics_load(HEAP32,780)|0);
$9 = ($8|0)==(0|0);
if ($9) {
$29 = 0;
} else {
- $10 = HEAP32[838]|0;
+ $10 = (Atomics_load(HEAP32,780)|0);
$11 = (_fflush($10)|0);
$29 = $11;
}
@@ -22786,7 +27020,7 @@ function _fflush($0) {
$$02327 = $$02325;$$02426 = $29;
while(1) {
$14 = ((($$02327)) + 76|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = ($15|0)>(-1);
if ($16) {
$17 = (___lockfile($$02327)|0);
@@ -22825,7 +27059,7 @@ function _fflush($0) {
$$0 = $$024$lcssa;
} else {
$2 = ((($0)) + 76|0);
- $3 = HEAP32[$2>>2]|0;
+ $3 = (Atomics_load(HEAP32,$2>>2)|0);
$4 = ($3|0)>(-1);
if (!($4)) {
$5 = (___fflush_unlocked($0)|0);
@@ -23597,7 +27831,7 @@ function _srand($0) {
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = (($0) + -1)|0;
- $2 = 14104;
+ $2 = 14256;
$3 = $2;
HEAP32[$3>>2] = $1;
$4 = (($2) + 4)|0;
@@ -23610,7 +27844,7 @@ function _vprintf($0,$1) {
$1 = $1|0;
var $2 = 0, $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[806]|0;
+ $2 = HEAP32[748]|0;
$3 = (_vfprintf($2,$0,$1)|0);
return ($3|0);
}
@@ -23717,7 +27951,7 @@ function _strtok($0,$1) {
sp = STACKTOP;
$2 = ($0|0)==(0|0);
if ($2) {
- $3 = HEAP32[8283]|0;
+ $3 = HEAP32[8324]|0;
$4 = ($3|0)==(0|0);
if ($4) {
$$0 = 0;
@@ -23736,22 +27970,22 @@ function _strtok($0,$1) {
$7 = HEAP8[$6>>0]|0;
$8 = ($7<<24>>24)==(0);
if ($8) {
- HEAP32[8283] = 0;
+ HEAP32[8324] = 0;
$$0 = 0;
break;
}
$9 = (_strcspn($6,$1)|0);
$10 = (($6) + ($9)|0);
- HEAP32[8283] = $10;
+ HEAP32[8324] = $10;
$11 = HEAP8[$10>>0]|0;
$12 = ($11<<24>>24)==(0);
if ($12) {
- HEAP32[8283] = 0;
+ HEAP32[8324] = 0;
$$0 = $6;
break;
} else {
$13 = ((($10)) + 1|0);
- HEAP32[8283] = $13;
+ HEAP32[8324] = $13;
HEAP8[$10>>0] = 0;
$$0 = $6;
break;
@@ -23760,112 +27994,2175 @@ function _strtok($0,$1) {
} while(0);
return ($$0|0);
}
-function _malloc($0) {
+function __emscripten_atomic_fetch_and_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_async_run_in_main_thread($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$0$in = 0, $$0$in19 = 0, $$0$lcssa = 0, $$020 = 0, $$expand_i1_val = 0, $$lcssa = 0, $$lcssa18 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, $call_queue$init$val = 0, $call_queue$init$val$pre_trunc = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ($0|0)==(0|0);
+ if ($1) {
+ ___assert_fail((13864|0),(13696|0),260,(13869|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ if (!($3)) {
+ __do_call($0);
+ return;
+ }
+ (___pthread_mutex_lock(33816)|0);
+ $call_queue$init$val$pre_trunc = HEAP8[38331]|0;
+ $call_queue$init$val = $call_queue$init$val$pre_trunc&1;
+ if (!($call_queue$init$val)) {
+ $$expand_i1_val = 1;
+ HEAP8[38331] = $$expand_i1_val;
+ }
+ $4 = (Atomics_load(HEAP32, 8461)|0);
+ $5 = (Atomics_load(HEAP32, 8462)|0);
+ $$0$in19 = (($5) + 1)|0;
+ $$020 = (($$0$in19|0) % 128)&-1;
+ $6 = ($$020|0)==($4|0);
+ if ($6) {
+ $7 = $4;
+ while(1) {
+ (___pthread_mutex_unlock(33816)|0);
+ (_emscripten_futex_wait((33844|0),($7|0),inf)|0);
+ (___pthread_mutex_lock(33816)|0);
+ $8 = (Atomics_load(HEAP32, 8461)|0);
+ $9 = (Atomics_load(HEAP32, 8462)|0);
+ $$0$in = (($9) + 1)|0;
+ $$0 = (($$0$in|0) % 128)&-1;
+ $10 = ($$0|0)==($8|0);
+ if ($10) {
+ $7 = $8;
+ } else {
+ $$0$lcssa = $$0;$$lcssa = $9;$$lcssa18 = $8;
+ break;
+ }
+ }
+ } else {
+ $$0$lcssa = $$020;$$lcssa = $5;$$lcssa18 = $4;
+ }
+ $11 = (33852 + ($$lcssa<<2)|0);
+ HEAP32[$11>>2] = $0;
+ $12 = ($$lcssa18|0)==($$lcssa|0);
+ if ($12) {
+ _emscripten_asm_const_v(1);
+ }
+ $13 = (Atomics_store(HEAP32, 8462, $$0$lcssa)|0);
+ (___pthread_mutex_unlock(33816)|0);
+ return;
+}
+function _emscripten_atomic_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_cas_u64($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $5 = $0;
+ $6 = $5 >>> 3;
+ $7 = $6 & 255;
+ $8 = (34372 + ($7<<2)|0);
+ while(1) {
+ while(1) {
+ $9 = (Atomics_load(HEAP32, $8>>2)|0);
+ $10 = (Atomics_compareExchange(HEAP32, $8>>2, $9, 1)|0);
+ $11 = ($9|0)==($10|0);
+ if ($11) {
+ break;
+ }
+ }
+ $12 = ($9|0)==(0);
+ if ($12) {
+ break;
+ }
+ }
+ $13 = $0;
+ $14 = $13;
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (($13) + 4)|0;
+ $17 = $16;
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($15|0)==($1|0);
+ $20 = ($18|0)==($2|0);
+ $21 = $19 & $20;
+ if (!($21)) {
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+ }
+ $22 = $0;
+ $23 = $22;
+ HEAP32[$23>>2] = $3;
+ $24 = (($22) + 4)|0;
+ $25 = $24;
+ HEAP32[$25>>2] = $4;
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+}
+function _emscripten_atomic_exchange_u32($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ while(1) {
+ $2 = (Atomics_load(HEAP32, $0>>2)|0);
+ $3 = (Atomics_compareExchange(HEAP32, $0>>2, $2, $1)|0);
+ $4 = ($2|0)==($3|0);
+ if ($4) {
+ break;
+ }
+ }
+ return ($2|0);
+}
+function _emscripten_atomic_exchange_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
+ var sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $0;
+ $18 = $17;
+ HEAP32[$18>>2] = $1;
+ $19 = (($17) + 4)|0;
+ $20 = $19;
+ HEAP32[$20>>2] = $2;
+ $21 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_atomic_load_f32($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = (Atomics_load(HEAP32, $0>>2)|0);
+ $2 = (HEAP32[tempDoublePtr>>2]=$1,+HEAPF32[tempDoublePtr>>2]);
+ return (+$2);
+}
+function _emscripten_atomic_load_f64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34372 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = +HEAPF64[$0>>3];
+ $10 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ return (+$9);
+}
+function _emscripten_atomic_load_u64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34372 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = $0;
+ $10 = $9;
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (($9) + 4)|0;
+ $13 = $12;
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ tempRet0 = ($14);
+ return ($11|0);
+}
+function _emscripten_atomic_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_store_f32($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $2 = 0, $3 = 0, $4 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = (HEAPF32[tempDoublePtr>>2]=$1,HEAP32[tempDoublePtr>>2]|0);
+ $3 = (Atomics_store(HEAP32, $0>>2, $2)|0);
+ $4 = (+($3>>>0));
+ return (+$4);
+}
+function _emscripten_atomic_store_f64($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = $0;
+ $3 = $2 >>> 3;
+ $4 = $3 & 255;
+ $5 = (34372 + ($4<<2)|0);
+ while(1) {
+ while(1) {
+ $6 = (Atomics_load(HEAP32, $5>>2)|0);
+ $7 = (Atomics_compareExchange(HEAP32, $5>>2, $6, 1)|0);
+ $8 = ($6|0)==($7|0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = ($6|0)==(0);
+ if ($9) {
+ break;
+ }
+ }
+ HEAPF64[$0>>3] = $1;
+ $10 = (Atomics_store(HEAP32, $5>>2, 0)|0);
+ return (+$1);
+}
+function _emscripten_atomic_store_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ HEAP32[$12>>2] = $1;
+ $13 = (($11) + 4)|0;
+ $14 = $13;
+ HEAP32[$14>>2] = $2;
+ $15 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($2);
+ return ($1|0);
+}
+function _emscripten_atomic_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34372 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_main_thread_process_queued_calls() {
+ var $$0910 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_emscripten_is_main_runtime_thread()|0);
+ $1 = ($0|0)==(0);
+ if ($1) {
+ ___assert_fail((13574|0),(13696|0),424,(13760|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ $4 = HEAP32[8453]|0;
+ $5 = ($4|0)!=(0);
+ $or$cond = $3 | $5;
+ if ($or$cond) {
+ return;
+ }
+ HEAP32[8453] = 1;
+ (___pthread_mutex_lock(33816)|0);
+ $6 = (Atomics_load(HEAP32, 8461)|0);
+ $7 = (Atomics_load(HEAP32, 8462)|0);
+ $8 = ($6|0)==($7|0);
+ (___pthread_mutex_unlock(33816)|0);
+ if (!($8)) {
+ $$0910 = $6;
+ while(1) {
+ $9 = (33852 + ($$0910<<2)|0);
+ $10 = HEAP32[$9>>2]|0;
+ __do_call($10);
+ (___pthread_mutex_lock(33816)|0);
+ $11 = (($$0910) + 1)|0;
+ $12 = (($11|0) % 128)&-1;
+ $13 = (Atomics_store(HEAP32, 8461, $12)|0);
+ $14 = (Atomics_load(HEAP32, 8462)|0);
+ $15 = ($12|0)==($14|0);
+ (___pthread_mutex_unlock(33816)|0);
+ if ($15) {
+ break;
+ } else {
+ $$0910 = $12;
+ }
+ }
+ }
+ (_emscripten_futex_wake((33844|0),2147483647)|0);
+ HEAP32[8453] = 0;
+ return;
+}
+function _emscripten_sync_run_in_main_thread($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ _emscripten_async_run_in_main_thread($0);
+ (_emscripten_wait_for_call_v($0,inf)|0);
+ return;
+}
+function _emscripten_sync_run_in_main_thread_0($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $1 = sp;
+ dest=$1; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$1>>2] = $0;
+ $2 = ((($1)) + 80|0);
+ HEAP32[$2>>2] = 0;
+ _emscripten_async_run_in_main_thread($1);
+ (_emscripten_wait_for_call_v($1,inf)|0);
+ $3 = HEAP32[$2>>2]|0;
+ STACKTOP = sp;return ($3|0);
+}
+function _emscripten_sync_run_in_main_thread_1($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $2 = sp;
+ dest=$2; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$2>>2] = $0;
+ $3 = ((($2)) + 16|0);
+ HEAP32[$3>>2] = $1;
+ $4 = ((($2)) + 80|0);
+ HEAP32[$4>>2] = 0;
+ _emscripten_async_run_in_main_thread($2);
+ (_emscripten_wait_for_call_v($2,inf)|0);
+ $5 = HEAP32[$4>>2]|0;
+ STACKTOP = sp;return ($5|0);
+}
+function _emscripten_sync_run_in_main_thread_2($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $3 = sp;
+ dest=$3; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$3>>2] = $0;
+ $4 = ((($3)) + 16|0);
+ HEAP32[$4>>2] = $1;
+ $5 = ((($3)) + 24|0);
+ HEAP32[$5>>2] = $2;
+ $6 = ((($3)) + 80|0);
+ HEAP32[$6>>2] = 0;
+ _emscripten_async_run_in_main_thread($3);
+ (_emscripten_wait_for_call_v($3,inf)|0);
+ $7 = HEAP32[$6>>2]|0;
+ STACKTOP = sp;return ($7|0);
+}
+function _emscripten_sync_run_in_main_thread_3($0,$1,$2,$3) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $4 = sp;
+ dest=$4; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$4>>2] = $0;
+ $5 = ((($4)) + 16|0);
+ HEAP32[$5>>2] = $1;
+ $6 = ((($4)) + 24|0);
+ HEAP32[$6>>2] = $2;
+ $7 = ((($4)) + 32|0);
+ HEAP32[$7>>2] = $3;
+ $8 = ((($4)) + 80|0);
+ HEAP32[$8>>2] = 0;
+ _emscripten_async_run_in_main_thread($4);
+ (_emscripten_wait_for_call_v($4,inf)|0);
+ $9 = HEAP32[$8>>2]|0;
+ STACKTOP = sp;return ($9|0);
+}
+function _emscripten_sync_run_in_main_thread_4($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $5 = sp;
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $6 = ((($5)) + 16|0);
+ HEAP32[$6>>2] = $1;
+ $7 = ((($5)) + 24|0);
+ HEAP32[$7>>2] = $2;
+ $8 = ((($5)) + 32|0);
+ HEAP32[$8>>2] = $3;
+ $9 = ((($5)) + 40|0);
+ HEAP32[$9>>2] = $4;
+ $10 = ((($5)) + 80|0);
+ HEAP32[$10>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $11 = HEAP32[$10>>2]|0;
+ STACKTOP = sp;return ($11|0);
+}
+function _emscripten_sync_run_in_main_thread_5($0,$1,$2,$3,$4,$5) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $6 = sp;
+ dest=$6; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$6>>2] = $0;
+ $7 = ((($6)) + 16|0);
+ HEAP32[$7>>2] = $1;
+ $8 = ((($6)) + 24|0);
+ HEAP32[$8>>2] = $2;
+ $9 = ((($6)) + 32|0);
+ HEAP32[$9>>2] = $3;
+ $10 = ((($6)) + 40|0);
+ HEAP32[$10>>2] = $4;
+ $11 = ((($6)) + 48|0);
+ HEAP32[$11>>2] = $5;
+ $12 = ((($6)) + 80|0);
+ HEAP32[$12>>2] = 0;
+ _emscripten_async_run_in_main_thread($6);
+ (_emscripten_wait_for_call_v($6,inf)|0);
+ $13 = HEAP32[$12>>2]|0;
+ STACKTOP = sp;return ($13|0);
+}
+function _emscripten_sync_run_in_main_thread_6($0,$1,$2,$3,$4,$5,$6) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $7 = sp;
+ dest=$7; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$7>>2] = $0;
+ $8 = ((($7)) + 16|0);
+ HEAP32[$8>>2] = $1;
+ $9 = ((($7)) + 24|0);
+ HEAP32[$9>>2] = $2;
+ $10 = ((($7)) + 32|0);
+ HEAP32[$10>>2] = $3;
+ $11 = ((($7)) + 40|0);
+ HEAP32[$11>>2] = $4;
+ $12 = ((($7)) + 48|0);
+ HEAP32[$12>>2] = $5;
+ $13 = ((($7)) + 56|0);
+ HEAP32[$13>>2] = $6;
+ $14 = ((($7)) + 80|0);
+ HEAP32[$14>>2] = 0;
+ _emscripten_async_run_in_main_thread($7);
+ (_emscripten_wait_for_call_v($7,inf)|0);
+ $15 = HEAP32[$14>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function _emscripten_sync_run_in_main_thread_7($0,$1,$2,$3,$4,$5,$6,$7) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ $7 = $7|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $8 = sp;
+ dest=$8; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$8>>2] = $0;
+ $9 = ((($8)) + 16|0);
+ HEAP32[$9>>2] = $1;
+ $10 = ((($8)) + 24|0);
+ HEAP32[$10>>2] = $2;
+ $11 = ((($8)) + 32|0);
+ HEAP32[$11>>2] = $3;
+ $12 = ((($8)) + 40|0);
+ HEAP32[$12>>2] = $4;
+ $13 = ((($8)) + 48|0);
+ HEAP32[$13>>2] = $5;
+ $14 = ((($8)) + 56|0);
+ HEAP32[$14>>2] = $6;
+ $15 = ((($8)) + 64|0);
+ HEAP32[$15>>2] = $7;
+ $16 = ((($8)) + 80|0);
+ HEAP32[$16>>2] = 0;
+ _emscripten_async_run_in_main_thread($8);
+ (_emscripten_wait_for_call_v($8,inf)|0);
+ $17 = HEAP32[$16>>2]|0;
+ STACKTOP = sp;return ($17|0);
+}
+function _emscripten_sync_run_in_main_thread_xprintf_varargs($0,$1,$2,$varargs) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $varargs = $varargs|0;
+ var $$0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 240|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(240|0);
+ $3 = sp + 96|0;
+ $4 = sp + 112|0;
+ $5 = sp;
+ HEAP32[$3>>2] = $varargs;
+ $6 = (_vsnprintf($4,128,$2,$3)|0);
+ $7 = ($6|0)>(127);
+ $8 = (($6) + 1)|0;
+ if ($7) {
+ $9 = (_malloc($8)|0);
+ HEAP32[$3>>2] = $varargs;
+ (_vsnprintf($9,$8,$2,$3)|0);
+ $$0 = $9;
+ } else {
+ $$0 = $4;
+ }
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $10 = $1;
+ $11 = ((($5)) + 16|0);
+ HEAP32[$11>>2] = $10;
+ $12 = ((($5)) + 24|0);
+ HEAP32[$12>>2] = $$0;
+ $13 = ((($5)) + 80|0);
+ HEAP32[$13>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $14 = ($$0|0)==($4|0);
+ if ($14) {
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+ }
+ _free($$0);
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function ___pthread_tsd_run_dtors() {
+ var $$02427 = 0, $$026 = 0, $$125 = 0, $$2 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, $exitcond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 60|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ $4 = ((($0)) + 116|0);
+ $$02427 = 0;
+ while(1) {
+ $$026 = 0;$$125 = 0;
+ while(1) {
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (($5) + ($$026<<2)|0);
+ $7 = HEAP32[$6>>2]|0;
+ $8 = ($7|0)==(0|0);
+ if ($8) {
+ $$2 = $$125;
+ } else {
+ $9 = (33300 + ($$026<<2)|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = ($10|0)==(0|0);
+ if ($11) {
+ $$2 = $$125;
+ } else {
+ HEAP32[$6>>2] = 0;
+ $12 = (Atomics_load(HEAP32,$9>>2)|0);
+ FUNCTION_TABLE_vi[$12 & 31]($7);
+ $$2 = 1;
+ }
+ }
+ $13 = (($$026) + 1)|0;
+ $exitcond = ($13|0)==(128);
+ if ($exitcond) {
+ break;
+ } else {
+ $$026 = $13;$$125 = $$2;
+ }
+ }
+ $14 = (($$02427) + 1)|0;
+ $15 = ($$2|0)!=(0);
+ $16 = ($14|0)<(4);
+ $17 = $16 & $15;
+ if ($17) {
+ $$02427 = $14;
+ } else {
+ break;
+ }
+ }
+ return;
+}
+function _emscripten_wait_for_call_v($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $$ = 0, $$01921 = 0.0, $$020$lcssa = 0, $$1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = ((($0)) + 8|0);
+ $3 = (Atomics_load(HEAP32, $2>>2)|0);
+ $4 = ($3|0)==(0);
+ if (!($4)) {
+ $$1 = $3;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+ }
+ $5 = (+_emscripten_get_now());
+ $6 = $5 + $1;
+ _emscripten_set_current_thread_status(5);
+ $7 = $5 < $6;
+ if ($7) {
+ $$01921 = $5;
+ while(1) {
+ $8 = $6 - $$01921;
+ (_emscripten_futex_wait(($2|0),0,(+$8))|0);
+ $9 = (Atomics_load(HEAP32, $2>>2)|0);
+ $10 = (+_emscripten_get_now());
+ $11 = ($9|0)==(0);
+ $12 = $10 < $6;
+ $or$cond = $11 & $12;
+ if ($or$cond) {
+ $$01921 = $10;
+ } else {
+ $$020$lcssa = $9;
+ break;
+ }
+ }
+ } else {
+ $$020$lcssa = 0;
+ }
+ _emscripten_set_current_thread_status(1);
+ $$1 = $$020$lcssa;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+}
+function __do_call($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0;
+ var $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ do {
+ switch ($1|0) {
+ case 12: {
+ $2 = ((($0)) + 16|0);
+ $3 = HEAP32[$2>>2]|0;
+ $4 = ((($0)) + 24|0);
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (_utime(($3|0),($5|0))|0);
+ $7 = ((($0)) + 80|0);
+ HEAP32[$7>>2] = $6;
+ break;
+ }
+ case 13: {
+ $8 = ((($0)) + 16|0);
+ $9 = HEAP32[$8>>2]|0;
+ $10 = ((($0)) + 24|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (_utimes(($9|0),($11|0))|0);
+ $13 = ((($0)) + 80|0);
+ HEAP32[$13>>2] = $12;
+ break;
+ }
+ case 37: {
+ $14 = ((($0)) + 16|0);
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (_chroot(($15|0))|0);
+ $17 = ((($0)) + 80|0);
+ HEAP32[$17>>2] = $16;
+ break;
+ }
+ case 46: {
+ $18 = ((($0)) + 16|0);
+ $19 = HEAP32[$18>>2]|0;
+ $20 = ((($0)) + 24|0);
+ $21 = HEAP32[$20>>2]|0;
+ $22 = (_fpathconf(($19|0),($21|0))|0);
+ $23 = ((($0)) + 80|0);
+ HEAP32[$23>>2] = $22;
+ break;
+ }
+ case 68: {
+ $24 = ((($0)) + 16|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = ((($0)) + 24|0);
+ $27 = HEAP32[$26>>2]|0;
+ $28 = ((($0)) + 32|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = (_confstr(($25|0),($27|0),($29|0))|0);
+ $31 = ((($0)) + 80|0);
+ HEAP32[$31>>2] = $30;
+ break;
+ }
+ case 72: {
+ $32 = ((($0)) + 16|0);
+ $33 = HEAP32[$32>>2]|0;
+ $34 = (_sysconf(($33|0))|0);
+ $35 = ((($0)) + 80|0);
+ HEAP32[$35>>2] = $34;
+ break;
+ }
+ case 110: {
+ $36 = ((($0)) + 16|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = (_atexit(($37|0))|0);
+ $39 = ((($0)) + 80|0);
+ HEAP32[$39>>2] = $38;
+ break;
+ }
+ case 111: {
+ $40 = ((($0)) + 16|0);
+ $41 = HEAP32[$40>>2]|0;
+ $42 = (_getenv(($41|0))|0);
+ $43 = ((($0)) + 80|0);
+ HEAP32[$43>>2] = $42;
+ break;
+ }
+ case 112: {
+ $44 = (_clearenv()|0);
+ $45 = ((($0)) + 80|0);
+ HEAP32[$45>>2] = $44;
+ break;
+ }
+ case 113: {
+ $46 = ((($0)) + 16|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ((($0)) + 24|0);
+ $49 = HEAP32[$48>>2]|0;
+ $50 = ((($0)) + 32|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = (_setenv(($47|0),($49|0),($51|0))|0);
+ $53 = ((($0)) + 80|0);
+ HEAP32[$53>>2] = $52;
+ break;
+ }
+ case 114: {
+ $54 = ((($0)) + 16|0);
+ $55 = HEAP32[$54>>2]|0;
+ $56 = (_unsetenv(($55|0))|0);
+ $57 = ((($0)) + 80|0);
+ HEAP32[$57>>2] = $56;
+ break;
+ }
+ case 115: {
+ $58 = ((($0)) + 16|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = (_putenv(($59|0))|0);
+ $61 = ((($0)) + 80|0);
+ HEAP32[$61>>2] = $60;
+ break;
+ }
+ case 119: {
+ _tzset();
+ break;
+ }
+ case 137: {
+ $62 = ((($0)) + 16|0);
+ $63 = HEAP32[$62>>2]|0;
+ $64 = ((($0)) + 24|0);
+ $65 = HEAP32[$64>>2]|0;
+ $66 = ((($0)) + 32|0);
+ $67 = HEAP32[$66>>2]|0;
+ $68 = ((($0)) + 40|0);
+ $69 = HEAP32[$68>>2]|0;
+ $70 = (_pthread_create(($63|0),($65|0),($67|0),($69|0))|0);
+ $71 = ((($0)) + 80|0);
+ HEAP32[$71>>2] = $70;
+ break;
+ }
+ case 138: {
+ $72 = ((($0)) + 16|0);
+ $73 = HEAP32[$72>>2]|0;
+ $74 = ((($0)) + 24|0);
+ $75 = HEAP32[$74>>2]|0;
+ $76 = (_emscripten_syscall(($73|0),($75|0))|0);
+ $77 = ((($0)) + 80|0);
+ HEAP32[$77>>2] = $76;
+ break;
+ }
+ case 1024: {
+ $78 = ((($0)) + 4|0);
+ $79 = HEAP32[$78>>2]|0;
+ FUNCTION_TABLE_v[$79 & 7]();
+ break;
+ }
+ case 1025: {
+ $80 = ((($0)) + 4|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ((($0)) + 16|0);
+ $83 = HEAP32[$82>>2]|0;
+ FUNCTION_TABLE_vi[$81 & 31]($83);
+ break;
+ }
+ case 1026: {
+ $84 = ((($0)) + 4|0);
+ $85 = HEAP32[$84>>2]|0;
+ $86 = ((($0)) + 16|0);
+ $87 = HEAP32[$86>>2]|0;
+ $88 = ((($0)) + 24|0);
+ $89 = HEAP32[$88>>2]|0;
+ FUNCTION_TABLE_vii[$85 & 63]($87,$89);
+ break;
+ }
+ case 1027: {
+ $90 = ((($0)) + 4|0);
+ $91 = HEAP32[$90>>2]|0;
+ $92 = ((($0)) + 16|0);
+ $93 = HEAP32[$92>>2]|0;
+ $94 = ((($0)) + 24|0);
+ $95 = HEAP32[$94>>2]|0;
+ $96 = ((($0)) + 32|0);
+ $97 = HEAP32[$96>>2]|0;
+ FUNCTION_TABLE_viii[$91 & 31]($93,$95,$97);
+ break;
+ }
+ case 2048: {
+ $98 = ((($0)) + 4|0);
+ $99 = HEAP32[$98>>2]|0;
+ $100 = (FUNCTION_TABLE_i[$99 & 3]()|0);
+ $101 = ((($0)) + 80|0);
+ HEAP32[$101>>2] = $100;
+ break;
+ }
+ case 2049: {
+ $102 = ((($0)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ((($0)) + 16|0);
+ $105 = HEAP32[$104>>2]|0;
+ $106 = (FUNCTION_TABLE_ii[$103 & 15]($105)|0);
+ $107 = ((($0)) + 80|0);
+ HEAP32[$107>>2] = $106;
+ break;
+ }
+ case 2050: {
+ $108 = ((($0)) + 4|0);
+ $109 = HEAP32[$108>>2]|0;
+ $110 = ((($0)) + 16|0);
+ $111 = HEAP32[$110>>2]|0;
+ $112 = ((($0)) + 24|0);
+ $113 = HEAP32[$112>>2]|0;
+ $114 = (FUNCTION_TABLE_iii[$109 & 3]($111,$113)|0);
+ $115 = ((($0)) + 80|0);
+ HEAP32[$115>>2] = $114;
+ break;
+ }
+ case 2051: {
+ $116 = ((($0)) + 4|0);
+ $117 = HEAP32[$116>>2]|0;
+ $118 = ((($0)) + 16|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = ((($0)) + 24|0);
+ $121 = HEAP32[$120>>2]|0;
+ $122 = ((($0)) + 32|0);
+ $123 = HEAP32[$122>>2]|0;
+ $124 = (FUNCTION_TABLE_iiii[$117 & 15]($119,$121,$123)|0);
+ $125 = ((($0)) + 80|0);
+ HEAP32[$125>>2] = $124;
+ break;
+ }
+ default: {
+ ___assert_fail((13804|0),(13696|0),211,(13855|0));
+ // unreachable;
+ }
+ }
+ } while(0);
+ $126 = ((($0)) + 88|0);
+ $127 = HEAP32[$126>>2]|0;
+ $128 = ($127|0)==(0);
+ if ($128) {
+ $129 = ((($0)) + 8|0);
+ HEAP32[$129>>2] = 1;
+ (_emscripten_futex_wake(($129|0),2147483647)|0);
+ return;
+ } else {
+ _free($0);
+ return;
+ }
+}
+function ___pthread_mutex_unlock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$045 = 0, $$pre = 0, $$pre$phiZ2D = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
+ var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $5 = 0, $6 = 0;
+ var $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ((($0)) + 8|0);
+ $2 = (Atomics_load(HEAP32,$1>>2)|0);
+ $3 = HEAP32[$0>>2]|0;
+ $4 = $3 & 15;
+ $5 = $3 & 128;
+ $6 = $5 ^ 128;
+ $7 = ($4|0)==(0);
+ if ($7) {
+ $$pre = ((($0)) + 4|0);
+ $$045 = 0;$$pre$phiZ2D = $$pre;
+ } else {
+ $8 = (_pthread_self()|0);
+ $9 = ((($0)) + 4|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = $10 & 2147483647;
+ $12 = ((($8)) + 52|0);
+ $13 = HEAP32[$12>>2]|0;
+ $14 = ($11|0)==($13|0);
+ if (!($14)) {
+ $$0 = 1;
+ return ($$0|0);
+ }
+ $15 = $3 & 3;
+ $16 = ($15|0)==(1);
+ if ($16) {
+ $17 = ((($0)) + 20|0);
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($18|0)==(0);
+ if (!($19)) {
+ $20 = (($18) + -1)|0;
+ HEAP32[$17>>2] = $20;
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $21 = ($6|0)==(0);
+ $22 = ((($0)) + 16|0);
+ if ($21) {
+ $23 = ((($8)) + 176|0);
+ Atomics_store(HEAP32,$23>>2,$22)|0;
+ ___vm_lock();
+ }
+ $24 = ((($0)) + 12|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = HEAP32[$22>>2]|0;
+ Atomics_store(HEAP32,$25>>2,$26)|0;
+ $27 = ((($8)) + 168|0);
+ $28 = ($26|0)==($27|0);
+ if ($28) {
+ $$045 = $8;$$pre$phiZ2D = $9;
+ } else {
+ $29 = ((($26)) + -4|0);
+ Atomics_store(HEAP32,$29>>2,$25)|0;
+ $$045 = $8;$$pre$phiZ2D = $9;
+ }
+ }
+ $30 = $3 & 8;
+ $31 = ($30|0)!=(0);
+ $32 = $31 ? 2147483647 : 0;
+ while(1) {
+ $33 = (Atomics_load(HEAP32, $$pre$phiZ2D>>2)|0);
+ $34 = (Atomics_compareExchange(HEAP32, $$pre$phiZ2D>>2, $33, $32)|0);
+ $35 = ($34|0)==($33|0);
+ if ($35) {
+ break;
+ }
+ }
+ $36 = ($6|0)!=(0);
+ $or$cond = $7 | $36;
+ if (!($or$cond)) {
+ $37 = ((($$045)) + 176|0);
+ Atomics_store(HEAP32,$37>>2,0)|0;
+ ___vm_unlock();
+ }
+ $38 = ($2|0)!=(0);
+ $39 = ($33|0)<(0);
+ $or$cond3 = $38 | $39;
+ if (!($or$cond3)) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ (_emscripten_futex_wake(($$pre$phiZ2D|0),1)|0);
+ $$0 = 0;
+ return ($$0|0);
+}
+function ___vm_lock() {
+ var $0 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8591, 1)|0);
+ return;
+}
+function ___vm_unlock() {
+ var $0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8591, -1)|0);
+ $1 = ($0|0)==(1);
+ if (!($1)) {
+ return;
+ }
+ $2 = (Atomics_load(HEAP32,(34368)>>2)|0);
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ (_emscripten_futex_wake((34364|0),2147483647)|0);
+ return;
+}
+function ___pthread_mutex_lock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = ($5|0)==(0);
+ if ($6) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $7 = (___pthread_mutex_timedlock($0,0)|0);
+ $$0 = $7;
+ return ($$0|0);
+}
+function ___pthread_mutex_timedlock($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$0 = 0, $$2 = 0, $$pre = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
+ var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
+ var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond40 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = HEAP32[$0>>2]|0;
+ $3 = $2 & 15;
+ $4 = ($3|0)==(0);
+ do {
+ if ($4) {
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_compareExchange(HEAP32, $5>>2, 0, 16)|0);
+ $7 = ($6|0)==(0);
+ if ($7) {
+ $$2 = 0;
+ return ($$2|0);
+ } else {
+ $$pre = HEAP32[$0>>2]|0;
+ $9 = $$pre;
+ break;
+ }
+ } else {
+ $9 = $2;
+ }
+ } while(0);
+ $8 = $9 & 128;
+ $10 = $8 ^ 128;
+ $11 = (___pthread_mutex_trylock($0)|0);
+ $12 = ($11|0)==(16);
+ if (!($12)) {
+ $$2 = $11;
+ return ($$2|0);
+ }
+ $13 = ((($0)) + 4|0);
+ $14 = ((($0)) + 8|0);
+ $$0 = 100;
+ while(1) {
+ $15 = (($$0) + -1)|0;
+ $16 = ($$0|0)==(0);
+ if ($16) {
+ break;
+ }
+ $17 = (Atomics_load(HEAP32,$13>>2)|0);
+ $18 = ($17|0)==(0);
+ if ($18) {
+ break;
+ }
+ $19 = (Atomics_load(HEAP32,$14>>2)|0);
+ $20 = ($19|0)==(0);
+ if ($20) {
+ $$0 = $15;
+ } else {
+ break;
+ }
+ }
+ $21 = (___pthread_mutex_trylock($0)|0);
+ $22 = ($21|0)==(16);
+ if (!($22)) {
+ $$2 = $21;
+ return ($$2|0);
+ }
+ L18: while(1) {
+ $23 = (Atomics_load(HEAP32,$13>>2)|0);
+ $24 = ($23|0)==(0);
+ if (!($24)) {
+ $27 = $23 & 1073741824;
+ $28 = ($27|0)==(0);
+ $29 = HEAP32[$0>>2]|0;
+ $30 = $29 & 4;
+ $31 = ($30|0)==(0);
+ $or$cond40 = $28 | $31;
+ if ($or$cond40) {
+ $32 = $29 & 3;
+ $33 = ($32|0)==(2);
+ if ($33) {
+ $34 = $23 & 2147483647;
+ $35 = (_pthread_self()|0);
+ $36 = ((($35)) + 52|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($34|0)==($37|0);
+ if ($38) {
+ $$2 = 35;
+ label = 17;
+ break;
+ }
+ }
+ $39 = (Atomics_add(HEAP32, $14>>2, 1)|0);
+ $40 = $23 | -2147483648;
+ $41 = (Atomics_compareExchange(HEAP32, $13>>2, $23, $40)|0);
+ $42 = (___timedwait($13,$40,0,$1,$10)|0);
+ $43 = (Atomics_sub(HEAP32, $14>>2, 1)|0);
+ switch ($42|0) {
+ case 0: case 4: {
+ break;
+ }
+ default: {
+ $$2 = $42;
+ label = 17;
+ break L18;
+ }
+ }
+ }
+ }
+ $25 = (___pthread_mutex_trylock($0)|0);
+ $26 = ($25|0)==(16);
+ if (!($26)) {
+ $$2 = $25;
+ label = 17;
+ break;
+ }
+ }
+ if ((label|0) == 17) {
+ return ($$2|0);
+ }
+ return (0)|0;
+}
+function ___timedwait($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ (___pthread_setcancelstate(1,($5|0))|0);
+ _emscripten_conditional_set_current_thread_status(1,4);
+ $6 = (___timedwait_cp($0,$1,$2,$3,$4)|0);
+ _emscripten_conditional_set_current_thread_status(4,1);
+ $7 = HEAP32[$5>>2]|0;
+ (___pthread_setcancelstate(($7|0),(0|0))|0);
+ STACKTOP = sp;return ($6|0);
+}
+function ___timedwait_cp($0,$1,$2,$3,$4) {
$0 = $0|0;
- var $$$0192$i = 0, $$$0193$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0 = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i18$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0197 = 0, $$0199 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
- var $$0212$i$i = 0, $$024371$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1196$i = 0, $$1198$i = 0;
- var $$124470$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i201 = 0, $$3350$i = 0, $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0;
- var $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$723948$i = 0, $$749$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i19$i = 0, $$pre$i210 = 0, $$pre$i212 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i20$iZ2D = 0, $$pre$phi$i211Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0;
- var $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i204 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0;
- var $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0;
- var $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0;
- var $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0;
- var $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0;
- var $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0;
- var $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0;
- var $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0;
- var $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0;
- var $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0;
- var $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0;
- var $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0;
- var $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0;
- var $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0;
- var $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0;
- var $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0;
- var $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0;
- var $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0;
- var $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0;
- var $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0;
- var $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0;
- var $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0;
- var $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0;
- var $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0;
- var $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0;
- var $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0;
- var $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0;
- var $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0;
- var $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0;
- var $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0;
- var $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0;
- var $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0;
- var $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0;
- var $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0;
- var $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0;
- var $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0;
- var $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0;
- var $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0;
- var $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0;
- var $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0;
- var $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0;
- var $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0;
- var $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0;
- var $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0;
- var $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0;
- var $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0;
- var $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0;
- var $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0;
- var $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0;
- var $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0;
- var $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0;
- var $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0;
- var $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0;
- var $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0, $cond$i$i = 0, $cond$i208 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i17$i = 0, $not$$i209 = 0, $not$$i216 = 0, $not$1$i = 0, $not$1$i203 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0;
- var $or$cond$i = 0, $or$cond$i214 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond11$not$i = 0, $or$cond12$i = 0, $or$cond2$i = 0, $or$cond2$i215 = 0, $or$cond5$i = 0, $or$cond50$i = 0, $or$cond51$i = 0, $or$cond7$i = 0, label = 0, sp = 0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $$$0$us = 0.0, $$$045 = 0.0, $$$046$us = 0.0, $$0$us = 0.0, $$0$us53 = 0.0, $$138 = 0, $$138$ph = 0, $$138$ph70 = 0, $$138$ph72 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0;
+ var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $40 = 0;
+ var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ $6 = ($3|0)!=(0|0);
+ if ($6) {
+ $7 = ((($3)) + 4|0);
+ $8 = HEAP32[$7>>2]|0;
+ $9 = ($8>>>0)>(999999999);
+ if ($9) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $10 = (___clock_gettime(($2|0),($5|0))|0);
+ $11 = ($10|0)==(0);
+ if (!($11)) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $12 = HEAP32[$3>>2]|0;
+ $13 = HEAP32[$5>>2]|0;
+ $14 = (($12) - ($13))|0;
+ HEAP32[$5>>2] = $14;
+ $15 = HEAP32[$7>>2]|0;
+ $16 = ((($5)) + 4|0);
+ $17 = HEAP32[$16>>2]|0;
+ $18 = (($15) - ($17))|0;
+ HEAP32[$16>>2] = $18;
+ $19 = ($18|0)<(0);
+ if ($19) {
+ $20 = (($14) + -1)|0;
+ HEAP32[$5>>2] = $20;
+ $21 = (($18) + 1000000000)|0;
+ HEAP32[$16>>2] = $21;
+ $23 = $20;
+ } else {
+ $23 = $14;
+ }
+ $22 = ($23|0)<(0);
+ if ($22) {
+ $$138 = 110;
+ STACKTOP = sp;return ($$138|0);
+ }
+ }
+ $24 = (_emscripten_is_main_runtime_thread()|0);
+ $25 = ($24|0)!=(0);
+ $$$045 = $25 ? 1.0 : 100.0;
+ if ($25) {
+ L15: while(1) {
+ $26 = (_pthread_self()|0);
+ $27 = (__pthread_isduecanceled($26)|0);
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $$138$ph = 125;
+ break;
+ }
+ _emscripten_main_thread_process_queued_calls();
+ if ($6) {
+ $29 = (+__pthread_msecs_until($3));
+ $30 = !($29 <= 0.0);
+ $31 = $29 > 100.0;
+ $$0$us = $31 ? 100.0 : $29;
+ $32 = $$0$us > 1.0;
+ $$$0$us = $32 ? 1.0 : $$0$us;
+ if ($30) {
+ $$$046$us = $$$0$us;
+ } else {
+ $$138$ph = 110;
+ break;
+ }
+ } else {
+ $$$046$us = $$$045;
+ }
+ $33 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$046$us))|0);
+ $34 = (0 - ($33))|0;
+ switch ($34|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph = $34;
+ break L15;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L15;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph;
+ STACKTOP = sp;return ($$138|0);
+ }
+ if (!($6)) {
+ L27: while(1) {
+ $43 = (_pthread_self()|0);
+ $44 = (__pthread_isduecanceled($43)|0);
+ $45 = ($44|0)==(0);
+ if (!($45)) {
+ $$138$ph72 = 125;
+ break;
+ }
+ $46 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$045))|0);
+ $47 = (0 - ($46))|0;
+ switch ($47|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph72 = $47;
+ break L27;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L27;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph72;
+ STACKTOP = sp;return ($$138|0);
+ }
+ L34: while(1) {
+ $35 = (_pthread_self()|0);
+ $36 = (__pthread_isduecanceled($35)|0);
+ $37 = ($36|0)==(0);
+ if (!($37)) {
+ $$138$ph70 = 125;
+ break;
+ }
+ $38 = (+__pthread_msecs_until($3));
+ $39 = !($38 <= 0.0);
+ if (!($39)) {
+ $$138$ph70 = 110;
+ break;
+ }
+ $40 = $38 > 100.0;
+ $$0$us53 = $40 ? 100.0 : $38;
+ $41 = (_emscripten_futex_wait(($0|0),($1|0),(+$$0$us53))|0);
+ $42 = (0 - ($41))|0;
+ switch ($42|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph70 = $42;
+ break L34;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L34;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph70;
+ STACKTOP = sp;return ($$138|0);
+}
+function __pthread_isduecanceled($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = ($1|0)==(2);
+ $3 = $2&1;
+ return ($3|0);
+}
+function __pthread_msecs_until($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
- $2 = ($0>>>0)<(245);
+ (_gettimeofday(($1|0),(0|0))|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = (+($2|0));
+ $4 = $3 * 1000.0;
+ $5 = ((($1)) + 4|0);
+ $6 = HEAP32[$5>>2]|0;
+ $7 = (+($6|0));
+ $8 = $7 * 0.001;
+ $9 = $4 + $8;
+ $10 = HEAP32[$0>>2]|0;
+ $11 = (+($10|0));
+ $12 = $11 * 1000.0;
+ $13 = ((($0)) + 4|0);
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (+($14|0));
+ $16 = $15 * 9.9999999999999995E-7;
+ $17 = $12 + $16;
+ $18 = $17 - $9;
+ STACKTOP = sp;return (+$18);
+}
+function ___pthread_mutex_trylock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = $5 & 16;
+ $$0 = $6;
+ return ($$0|0);
+ } else {
+ $7 = (___pthread_mutex_trylock_owner($0)|0);
+ $$0 = $7;
+ return ($$0|0);
+ }
+ return (0)|0;
+}
+function ___pthread_mutex_trylock_owner($0) {
+ $0 = $0|0;
+ var $$ = 0, $$1 = 0, $$154 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0;
+ var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0;
+ var $43 = 0, $44 = 0, $45 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond57 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = (_pthread_self()|0);
+ $3 = ((($2)) + 52|0);
+ $4 = HEAP32[$3>>2]|0;
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_load(HEAP32,$5>>2)|0);
+ $7 = $6 & 2147483647;
+ $8 = ($7|0)==($4|0);
+ $9 = $1 & 3;
+ $10 = ($9|0)==(1);
+ $or$cond = $10 & $8;
+ if ($or$cond) {
+ $11 = ((($0)) + 20|0);
+ $12 = HEAP32[$11>>2]|0;
+ $13 = ($12>>>0)>(2147483646);
+ if ($13) {
+ $$1 = 11;
+ return ($$1|0);
+ }
+ $14 = (($12) + 1)|0;
+ HEAP32[$11>>2] = $14;
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $15 = ($7|0)==(2147483647);
+ if ($15) {
+ $$1 = 131;
+ return ($$1|0);
+ }
+ $16 = HEAP32[$0>>2]|0;
+ $17 = $16 & 128;
+ $18 = ($17|0)==(0);
+ if ($18) {
+ $$154 = $4;
+ } else {
+ $19 = ((($2)) + 172|0);
+ $20 = HEAP32[$19>>2]|0;
+ $21 = ($20|0)==(0);
+ if ($21) {
+ HEAP32[$19>>2] = -12;
+ }
+ $22 = ((($0)) + 8|0);
+ $23 = (Atomics_load(HEAP32,$22>>2)|0);
+ $24 = ($23|0)==(0);
+ $25 = $4 | -2147483648;
+ $$ = $24 ? $4 : $25;
+ $26 = ((($0)) + 16|0);
+ $27 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$27>>2,$26)|0;
+ $$154 = $$;
+ }
+ $28 = ($7|0)!=(0);
+ if ($28) {
+ $29 = $6 & 1073741824;
+ $30 = ($29|0)==(0);
+ $31 = $1 & 4;
+ $32 = ($31|0)==(0);
+ $or$cond57 = $32 | $30;
+ if (!($or$cond57)) {
+ label = 11;
+ }
+ } else {
+ label = 11;
+ }
+ if ((label|0) == 11) {
+ $33 = (Atomics_compareExchange(HEAP32, $5>>2, $6, $$154)|0);
+ $34 = ($33|0)==($6|0);
+ if ($34) {
+ $36 = ((($2)) + 168|0);
+ $37 = (Atomics_load(HEAP32,$36>>2)|0);
+ $38 = ((($0)) + 16|0);
+ HEAP32[$38>>2] = $37;
+ $39 = ((($0)) + 12|0);
+ HEAP32[$39>>2] = $36;
+ $40 = ($37|0)==($36|0);
+ if (!($40)) {
+ $41 = ((($37)) + -4|0);
+ Atomics_store(HEAP32,$41>>2,$38)|0;
+ }
+ Atomics_store(HEAP32,$36>>2,$38)|0;
+ $42 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$42>>2,0)|0;
+ if (!($28)) {
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $43 = ((($0)) + 20|0);
+ HEAP32[$43>>2] = 0;
+ $44 = HEAP32[$0>>2]|0;
+ $45 = $44 | 8;
+ HEAP32[$0>>2] = $45;
+ $$1 = 130;
+ return ($$1|0);
+ }
+ }
+ $35 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$35>>2,0)|0;
+ $$1 = 16;
+ return ($$1|0);
+}
+function _pthread_mutexattr_destroy($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ return 0;
+}
+function _pthread_mutexattr_init($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ HEAP32[$0>>2] = 0;
+ return 0;
+}
+function _pthread_mutex_init($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$sroa$0 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
+ $$sroa$0 = sp;
+ ;HEAP32[$$sroa$0>>2]=0|0;HEAP32[$$sroa$0+4>>2]=0|0;HEAP32[$$sroa$0+8>>2]=0|0;HEAP32[$$sroa$0+12>>2]=0|0;HEAP32[$$sroa$0+16>>2]=0|0;HEAP32[$$sroa$0+20>>2]=0|0;HEAP32[$$sroa$0+24>>2]=0|0;
+ ;HEAP32[$0>>2]=HEAP32[$$sroa$0>>2]|0;HEAP32[$0+4>>2]=HEAP32[$$sroa$0+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[$$sroa$0+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[$$sroa$0+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[$$sroa$0+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[$$sroa$0+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[$$sroa$0+24>>2]|0;
+ $2 = ($1|0)==(0|0);
+ if ($2) {
+ STACKTOP = sp;return 0;
+ }
+ $3 = HEAP32[$1>>2]|0;
+ HEAP32[$0>>2] = $3;
+ STACKTOP = sp;return 0;
+}
+function _malloc($0) {
+ $0 = $0|0;
+ var $$$0192$i = 0, $$$0193$i = 0, $$$4230$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i17$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0198 = 0, $$0200 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
+ var $$0212$i$i = 0, $$024363$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1 = 0, $$1196$i = 0;
+ var $$1198$i = 0, $$124462$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2 = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i202 = 0, $$3229$i = 0, $$3235$i = 0, $$3350$i = 0;
+ var $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0, $$4230$i = 0, $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$7$i = 0, $$7239$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i18$i = 0, $$pre$i211 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i19$iZ2D = 0;
+ var $$pre$phi$i212Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0, $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i205 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0;
+ var $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0;
+ var $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0;
+ var $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0;
+ var $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0;
+ var $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0, $1088 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0;
+ var $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0;
+ var $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0;
+ var $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0;
+ var $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0;
+ var $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0;
+ var $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0;
+ var $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0;
+ var $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0;
+ var $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0;
+ var $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0;
+ var $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0;
+ var $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0;
+ var $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0;
+ var $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0;
+ var $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0;
+ var $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0;
+ var $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0;
+ var $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0;
+ var $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0;
+ var $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0;
+ var $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0;
+ var $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0;
+ var $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0;
+ var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0;
+ var $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0;
+ var $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0;
+ var $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0;
+ var $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0;
+ var $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0;
+ var $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0;
+ var $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0;
+ var $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0;
+ var $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0;
+ var $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0;
+ var $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0;
+ var $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0;
+ var $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0;
+ var $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0;
+ var $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0;
+ var $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0;
+ var $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0;
+ var $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0;
+ var $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0;
+ var $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0;
+ var $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0;
+ var $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0;
+ var $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0;
+ var $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0;
+ var $cond$i$i = 0, $cond$i209 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i21$i = 0, $not$$i210 = 0, $not$1$i = 0, $not$1$i204 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0, $or$cond$i = 0, $or$cond$i213 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond12$i = 0, $or$cond2$i = 0;
+ var $or$cond2$i214 = 0, $or$cond43$i = 0, $or$cond5$i = 0, $or$cond7$i = 0, $or$cond9$i = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $1 = sp + 4|0;
+ $2 = sp;
+ $3 = HEAP32[8849]|0;
+ $4 = ($3|0)==(0);
+ if ($4) {
+ (___pthread_mutex_lock(35420)|0);
+ $5 = HEAP32[8849]|0;
+ $6 = ($5|0)==(0);
+ if ($6) {
+ HEAP32[(35404)>>2] = 4096;
+ HEAP32[(35400)>>2] = 4096;
+ HEAP32[(35408)>>2] = -1;
+ HEAP32[(35412)>>2] = -1;
+ HEAP32[(35416)>>2] = 2;
+ HEAP32[(35892)>>2] = 2;
+ $7 = (_pthread_mutexattr_init($1)|0);
+ $8 = ($7|0)==(0);
+ if ($8) {
+ $9 = (_pthread_mutex_init((35896),$1)|0);
+ $10 = ($9|0)==(0);
+ if ($10) {
+ }
+ }
+ $11 = $2;
+ $12 = $11 & -16;
+ $13 = $12 ^ 1431655768;
+ HEAP32[$2>>2] = $13;
+ Atomics_store(HEAP32,8849,$13)|0;
+ }
+ (___pthread_mutex_unlock(35420)|0);
+ }
+ $14 = HEAP32[(35892)>>2]|0;
+ $15 = $14 & 2;
+ $16 = ($15|0)==(0);
+ if (!($16)) {
+ $17 = (___pthread_mutex_lock((35896))|0);
+ $18 = ($17|0)==(0);
+ if (!($18)) {
+ $$1 = 0;
+ STACKTOP = sp;return ($$1|0);
+ }
+ }
+ $19 = ($0>>>0)<(245);
do {
- if ($2) {
- $3 = ($0>>>0)<(11);
- $4 = (($0) + 11)|0;
- $5 = $4 & -8;
- $6 = $3 ? 16 : $5;
- $7 = $6 >>> 3;
- $8 = HEAP32[8284]|0;
- $9 = $8 >>> $7;
- $10 = $9 & 3;
- $11 = ($10|0)==(0);
- if (!($11)) {
- $12 = $9 & 1;
- $13 = $12 ^ 1;
- $14 = (($13) + ($7))|0;
- $15 = $14 << 1;
- $16 = (33176 + ($15<<2)|0);
- $17 = ((($16)) + 8|0);
- $18 = HEAP32[$17>>2]|0;
- $19 = ((($18)) + 8|0);
- $20 = HEAP32[$19>>2]|0;
- $21 = ($16|0)==($20|0);
+ if ($19) {
+ $20 = ($0>>>0)<(11);
+ $21 = (($0) + 11)|0;
+ $22 = $21 & -8;
+ $23 = $20 ? 16 : $22;
+ $24 = $23 >>> 3;
+ $25 = HEAP32[8862]|0;
+ $26 = $25 >>> $24;
+ $27 = $26 & 3;
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $29 = $26 & 1;
+ $30 = $29 ^ 1;
+ $31 = (($30) + ($24))|0;
+ $32 = $31 << 1;
+ $33 = (35488 + ($32<<2)|0);
+ $34 = ((($33)) + 8|0);
+ $35 = HEAP32[$34>>2]|0;
+ $36 = ((($35)) + 8|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($33|0)==($37|0);
do {
- if ($21) {
- $22 = 1 << $14;
- $23 = $22 ^ -1;
- $24 = $8 & $23;
- HEAP32[8284] = $24;
+ if ($38) {
+ $39 = 1 << $31;
+ $40 = $39 ^ -1;
+ $41 = $25 & $40;
+ HEAP32[8862] = $41;
} else {
- $25 = HEAP32[(33152)>>2]|0;
- $26 = ($20>>>0)<($25>>>0);
- if ($26) {
+ $42 = HEAP32[(35464)>>2]|0;
+ $43 = ($37>>>0)<($42>>>0);
+ if ($43) {
_abort();
// unreachable;
}
- $27 = ((($20)) + 12|0);
- $28 = HEAP32[$27>>2]|0;
- $29 = ($28|0)==($18|0);
- if ($29) {
- HEAP32[$27>>2] = $16;
- HEAP32[$17>>2] = $20;
+ $44 = ((($37)) + 12|0);
+ $45 = HEAP32[$44>>2]|0;
+ $46 = ($45|0)==($35|0);
+ if ($46) {
+ HEAP32[$44>>2] = $33;
+ HEAP32[$34>>2] = $37;
break;
} else {
_abort();
@@ -23873,79 +30170,79 @@ function _malloc($0) {
}
}
} while(0);
- $30 = $14 << 3;
- $31 = $30 | 3;
- $32 = ((($18)) + 4|0);
- HEAP32[$32>>2] = $31;
- $33 = (($18) + ($30)|0);
- $34 = ((($33)) + 4|0);
- $35 = HEAP32[$34>>2]|0;
- $36 = $35 | 1;
- HEAP32[$34>>2] = $36;
- $$0 = $19;
- STACKTOP = sp;return ($$0|0);
+ $47 = $31 << 3;
+ $48 = $47 | 3;
+ $49 = ((($35)) + 4|0);
+ HEAP32[$49>>2] = $48;
+ $50 = (($35) + ($47)|0);
+ $51 = ((($50)) + 4|0);
+ $52 = HEAP32[$51>>2]|0;
+ $53 = $52 | 1;
+ HEAP32[$51>>2] = $53;
+ $$2 = $36;
+ break;
}
- $37 = HEAP32[(33144)>>2]|0;
- $38 = ($6>>>0)>($37>>>0);
- if ($38) {
- $39 = ($9|0)==(0);
- if (!($39)) {
- $40 = $9 << $7;
- $41 = 2 << $7;
- $42 = (0 - ($41))|0;
- $43 = $41 | $42;
- $44 = $40 & $43;
- $45 = (0 - ($44))|0;
- $46 = $44 & $45;
- $47 = (($46) + -1)|0;
- $48 = $47 >>> 12;
- $49 = $48 & 16;
- $50 = $47 >>> $49;
- $51 = $50 >>> 5;
- $52 = $51 & 8;
- $53 = $52 | $49;
- $54 = $50 >>> $52;
- $55 = $54 >>> 2;
- $56 = $55 & 4;
- $57 = $53 | $56;
- $58 = $54 >>> $56;
- $59 = $58 >>> 1;
- $60 = $59 & 2;
- $61 = $57 | $60;
- $62 = $58 >>> $60;
- $63 = $62 >>> 1;
- $64 = $63 & 1;
- $65 = $61 | $64;
- $66 = $62 >>> $64;
- $67 = (($65) + ($66))|0;
- $68 = $67 << 1;
- $69 = (33176 + ($68<<2)|0);
- $70 = ((($69)) + 8|0);
- $71 = HEAP32[$70>>2]|0;
- $72 = ((($71)) + 8|0);
- $73 = HEAP32[$72>>2]|0;
- $74 = ($69|0)==($73|0);
+ $54 = HEAP32[(35456)>>2]|0;
+ $55 = ($23>>>0)>($54>>>0);
+ if ($55) {
+ $56 = ($26|0)==(0);
+ if (!($56)) {
+ $57 = $26 << $24;
+ $58 = 2 << $24;
+ $59 = (0 - ($58))|0;
+ $60 = $58 | $59;
+ $61 = $57 & $60;
+ $62 = (0 - ($61))|0;
+ $63 = $61 & $62;
+ $64 = (($63) + -1)|0;
+ $65 = $64 >>> 12;
+ $66 = $65 & 16;
+ $67 = $64 >>> $66;
+ $68 = $67 >>> 5;
+ $69 = $68 & 8;
+ $70 = $69 | $66;
+ $71 = $67 >>> $69;
+ $72 = $71 >>> 2;
+ $73 = $72 & 4;
+ $74 = $70 | $73;
+ $75 = $71 >>> $73;
+ $76 = $75 >>> 1;
+ $77 = $76 & 2;
+ $78 = $74 | $77;
+ $79 = $75 >>> $77;
+ $80 = $79 >>> 1;
+ $81 = $80 & 1;
+ $82 = $78 | $81;
+ $83 = $79 >>> $81;
+ $84 = (($82) + ($83))|0;
+ $85 = $84 << 1;
+ $86 = (35488 + ($85<<2)|0);
+ $87 = ((($86)) + 8|0);
+ $88 = HEAP32[$87>>2]|0;
+ $89 = ((($88)) + 8|0);
+ $90 = HEAP32[$89>>2]|0;
+ $91 = ($86|0)==($90|0);
do {
- if ($74) {
- $75 = 1 << $67;
- $76 = $75 ^ -1;
- $77 = $8 & $76;
- HEAP32[8284] = $77;
- $98 = $77;
+ if ($91) {
+ $92 = 1 << $84;
+ $93 = $92 ^ -1;
+ $94 = $25 & $93;
+ HEAP32[8862] = $94;
+ $115 = $94;
} else {
- $78 = HEAP32[(33152)>>2]|0;
- $79 = ($73>>>0)<($78>>>0);
- if ($79) {
+ $95 = HEAP32[(35464)>>2]|0;
+ $96 = ($90>>>0)<($95>>>0);
+ if ($96) {
_abort();
// unreachable;
}
- $80 = ((($73)) + 12|0);
- $81 = HEAP32[$80>>2]|0;
- $82 = ($81|0)==($71|0);
- if ($82) {
- HEAP32[$80>>2] = $69;
- HEAP32[$70>>2] = $73;
- $98 = $8;
+ $97 = ((($90)) + 12|0);
+ $98 = HEAP32[$97>>2]|0;
+ $99 = ($98|0)==($88|0);
+ if ($99) {
+ HEAP32[$97>>2] = $86;
+ HEAP32[$87>>2] = $90;
+ $115 = $25;
break;
} else {
_abort();
@@ -23953,178 +30250,179 @@ function _malloc($0) {
}
}
} while(0);
- $83 = $67 << 3;
- $84 = (($83) - ($6))|0;
- $85 = $6 | 3;
- $86 = ((($71)) + 4|0);
- HEAP32[$86>>2] = $85;
- $87 = (($71) + ($6)|0);
- $88 = $84 | 1;
- $89 = ((($87)) + 4|0);
- HEAP32[$89>>2] = $88;
- $90 = (($87) + ($84)|0);
- HEAP32[$90>>2] = $84;
- $91 = ($37|0)==(0);
- if (!($91)) {
- $92 = HEAP32[(33156)>>2]|0;
- $93 = $37 >>> 3;
- $94 = $93 << 1;
- $95 = (33176 + ($94<<2)|0);
- $96 = 1 << $93;
- $97 = $98 & $96;
- $99 = ($97|0)==(0);
- if ($99) {
- $100 = $98 | $96;
- HEAP32[8284] = $100;
- $$pre = ((($95)) + 8|0);
- $$0199 = $95;$$pre$phiZ2D = $$pre;
+ $100 = $84 << 3;
+ $101 = (($100) - ($23))|0;
+ $102 = $23 | 3;
+ $103 = ((($88)) + 4|0);
+ HEAP32[$103>>2] = $102;
+ $104 = (($88) + ($23)|0);
+ $105 = $101 | 1;
+ $106 = ((($104)) + 4|0);
+ HEAP32[$106>>2] = $105;
+ $107 = (($104) + ($101)|0);
+ HEAP32[$107>>2] = $101;
+ $108 = ($54|0)==(0);
+ if (!($108)) {
+ $109 = HEAP32[(35468)>>2]|0;
+ $110 = $54 >>> 3;
+ $111 = $110 << 1;
+ $112 = (35488 + ($111<<2)|0);
+ $113 = 1 << $110;
+ $114 = $115 & $113;
+ $116 = ($114|0)==(0);
+ if ($116) {
+ $117 = $115 | $113;
+ HEAP32[8862] = $117;
+ $$pre = ((($112)) + 8|0);
+ $$0200 = $112;$$pre$phiZ2D = $$pre;
} else {
- $101 = ((($95)) + 8|0);
- $102 = HEAP32[$101>>2]|0;
- $103 = HEAP32[(33152)>>2]|0;
- $104 = ($102>>>0)<($103>>>0);
- if ($104) {
+ $118 = ((($112)) + 8|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = HEAP32[(35464)>>2]|0;
+ $121 = ($119>>>0)<($120>>>0);
+ if ($121) {
_abort();
// unreachable;
} else {
- $$0199 = $102;$$pre$phiZ2D = $101;
+ $$0200 = $119;$$pre$phiZ2D = $118;
}
}
- HEAP32[$$pre$phiZ2D>>2] = $92;
- $105 = ((($$0199)) + 12|0);
- HEAP32[$105>>2] = $92;
- $106 = ((($92)) + 8|0);
- HEAP32[$106>>2] = $$0199;
- $107 = ((($92)) + 12|0);
- HEAP32[$107>>2] = $95;
+ HEAP32[$$pre$phiZ2D>>2] = $109;
+ $122 = ((($$0200)) + 12|0);
+ HEAP32[$122>>2] = $109;
+ $123 = ((($109)) + 8|0);
+ HEAP32[$123>>2] = $$0200;
+ $124 = ((($109)) + 12|0);
+ HEAP32[$124>>2] = $112;
}
- HEAP32[(33144)>>2] = $84;
- HEAP32[(33156)>>2] = $87;
- $$0 = $72;
- STACKTOP = sp;return ($$0|0);
- }
- $108 = HEAP32[(33140)>>2]|0;
- $109 = ($108|0)==(0);
- if ($109) {
- $$0197 = $6;
+ HEAP32[(35456)>>2] = $101;
+ HEAP32[(35468)>>2] = $104;
+ $$2 = $89;
+ break;
+ }
+ $125 = HEAP32[(35452)>>2]|0;
+ $126 = ($125|0)==(0);
+ if ($126) {
+ $$0198 = $23;
+ label = 153;
} else {
- $110 = (0 - ($108))|0;
- $111 = $108 & $110;
- $112 = (($111) + -1)|0;
- $113 = $112 >>> 12;
- $114 = $113 & 16;
- $115 = $112 >>> $114;
- $116 = $115 >>> 5;
- $117 = $116 & 8;
- $118 = $117 | $114;
- $119 = $115 >>> $117;
- $120 = $119 >>> 2;
- $121 = $120 & 4;
- $122 = $118 | $121;
- $123 = $119 >>> $121;
- $124 = $123 >>> 1;
- $125 = $124 & 2;
- $126 = $122 | $125;
- $127 = $123 >>> $125;
- $128 = $127 >>> 1;
- $129 = $128 & 1;
- $130 = $126 | $129;
- $131 = $127 >>> $129;
- $132 = (($130) + ($131))|0;
- $133 = (33440 + ($132<<2)|0);
- $134 = HEAP32[$133>>2]|0;
- $135 = ((($134)) + 4|0);
- $136 = HEAP32[$135>>2]|0;
- $137 = $136 & -8;
- $138 = (($137) - ($6))|0;
- $139 = ((($134)) + 16|0);
- $140 = HEAP32[$139>>2]|0;
- $not$5$i = ($140|0)==(0|0);
+ $127 = (0 - ($125))|0;
+ $128 = $125 & $127;
+ $129 = (($128) + -1)|0;
+ $130 = $129 >>> 12;
+ $131 = $130 & 16;
+ $132 = $129 >>> $131;
+ $133 = $132 >>> 5;
+ $134 = $133 & 8;
+ $135 = $134 | $131;
+ $136 = $132 >>> $134;
+ $137 = $136 >>> 2;
+ $138 = $137 & 4;
+ $139 = $135 | $138;
+ $140 = $136 >>> $138;
+ $141 = $140 >>> 1;
+ $142 = $141 & 2;
+ $143 = $139 | $142;
+ $144 = $140 >>> $142;
+ $145 = $144 >>> 1;
+ $146 = $145 & 1;
+ $147 = $143 | $146;
+ $148 = $144 >>> $146;
+ $149 = (($147) + ($148))|0;
+ $150 = (35752 + ($149<<2)|0);
+ $151 = HEAP32[$150>>2]|0;
+ $152 = ((($151)) + 4|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = $153 & -8;
+ $155 = (($154) - ($23))|0;
+ $156 = ((($151)) + 16|0);
+ $157 = HEAP32[$156>>2]|0;
+ $not$5$i = ($157|0)==(0|0);
$$sink16$i = $not$5$i&1;
- $141 = (((($134)) + 16|0) + ($$sink16$i<<2)|0);
- $142 = HEAP32[$141>>2]|0;
- $143 = ($142|0)==(0|0);
- if ($143) {
- $$0192$lcssa$i = $134;$$0193$lcssa$i = $138;
+ $158 = (((($151)) + 16|0) + ($$sink16$i<<2)|0);
+ $159 = HEAP32[$158>>2]|0;
+ $160 = ($159|0)==(0|0);
+ if ($160) {
+ $$0192$lcssa$i = $151;$$0193$lcssa$i = $155;
} else {
- $$01928$i = $134;$$01937$i = $138;$145 = $142;
+ $$01928$i = $151;$$01937$i = $155;$162 = $159;
while(1) {
- $144 = ((($145)) + 4|0);
- $146 = HEAP32[$144>>2]|0;
- $147 = $146 & -8;
- $148 = (($147) - ($6))|0;
- $149 = ($148>>>0)<($$01937$i>>>0);
- $$$0193$i = $149 ? $148 : $$01937$i;
- $$$0192$i = $149 ? $145 : $$01928$i;
- $150 = ((($145)) + 16|0);
- $151 = HEAP32[$150>>2]|0;
- $not$$i = ($151|0)==(0|0);
+ $161 = ((($162)) + 4|0);
+ $163 = HEAP32[$161>>2]|0;
+ $164 = $163 & -8;
+ $165 = (($164) - ($23))|0;
+ $166 = ($165>>>0)<($$01937$i>>>0);
+ $$$0193$i = $166 ? $165 : $$01937$i;
+ $$$0192$i = $166 ? $162 : $$01928$i;
+ $167 = ((($162)) + 16|0);
+ $168 = HEAP32[$167>>2]|0;
+ $not$$i = ($168|0)==(0|0);
$$sink1$i = $not$$i&1;
- $152 = (((($145)) + 16|0) + ($$sink1$i<<2)|0);
- $153 = HEAP32[$152>>2]|0;
- $154 = ($153|0)==(0|0);
- if ($154) {
+ $169 = (((($162)) + 16|0) + ($$sink1$i<<2)|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==(0|0);
+ if ($171) {
$$0192$lcssa$i = $$$0192$i;$$0193$lcssa$i = $$$0193$i;
break;
} else {
- $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$145 = $153;
+ $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$162 = $170;
}
}
}
- $155 = HEAP32[(33152)>>2]|0;
- $156 = ($$0192$lcssa$i>>>0)<($155>>>0);
- if ($156) {
+ $172 = HEAP32[(35464)>>2]|0;
+ $173 = ($$0192$lcssa$i>>>0)<($172>>>0);
+ if ($173) {
_abort();
// unreachable;
}
- $157 = (($$0192$lcssa$i) + ($6)|0);
- $158 = ($$0192$lcssa$i>>>0)<($157>>>0);
- if (!($158)) {
+ $174 = (($$0192$lcssa$i) + ($23)|0);
+ $175 = ($$0192$lcssa$i>>>0)<($174>>>0);
+ if (!($175)) {
_abort();
// unreachable;
}
- $159 = ((($$0192$lcssa$i)) + 24|0);
- $160 = HEAP32[$159>>2]|0;
- $161 = ((($$0192$lcssa$i)) + 12|0);
- $162 = HEAP32[$161>>2]|0;
- $163 = ($162|0)==($$0192$lcssa$i|0);
+ $176 = ((($$0192$lcssa$i)) + 24|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ((($$0192$lcssa$i)) + 12|0);
+ $179 = HEAP32[$178>>2]|0;
+ $180 = ($179|0)==($$0192$lcssa$i|0);
do {
- if ($163) {
- $173 = ((($$0192$lcssa$i)) + 20|0);
- $174 = HEAP32[$173>>2]|0;
- $175 = ($174|0)==(0|0);
- if ($175) {
- $176 = ((($$0192$lcssa$i)) + 16|0);
- $177 = HEAP32[$176>>2]|0;
- $178 = ($177|0)==(0|0);
- if ($178) {
+ if ($180) {
+ $190 = ((($$0192$lcssa$i)) + 20|0);
+ $191 = HEAP32[$190>>2]|0;
+ $192 = ($191|0)==(0|0);
+ if ($192) {
+ $193 = ((($$0192$lcssa$i)) + 16|0);
+ $194 = HEAP32[$193>>2]|0;
+ $195 = ($194|0)==(0|0);
+ if ($195) {
$$3$i = 0;
break;
} else {
- $$1196$i = $177;$$1198$i = $176;
+ $$1196$i = $194;$$1198$i = $193;
}
} else {
- $$1196$i = $174;$$1198$i = $173;
+ $$1196$i = $191;$$1198$i = $190;
}
while(1) {
- $179 = ((($$1196$i)) + 20|0);
- $180 = HEAP32[$179>>2]|0;
- $181 = ($180|0)==(0|0);
- if (!($181)) {
- $$1196$i = $180;$$1198$i = $179;
+ $196 = ((($$1196$i)) + 20|0);
+ $197 = HEAP32[$196>>2]|0;
+ $198 = ($197|0)==(0|0);
+ if (!($198)) {
+ $$1196$i = $197;$$1198$i = $196;
continue;
}
- $182 = ((($$1196$i)) + 16|0);
- $183 = HEAP32[$182>>2]|0;
- $184 = ($183|0)==(0|0);
- if ($184) {
+ $199 = ((($$1196$i)) + 16|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($200|0)==(0|0);
+ if ($201) {
break;
} else {
- $$1196$i = $183;$$1198$i = $182;
+ $$1196$i = $200;$$1198$i = $199;
}
}
- $185 = ($$1198$i>>>0)<($155>>>0);
- if ($185) {
+ $202 = ($$1198$i>>>0)<($172>>>0);
+ if ($202) {
_abort();
// unreachable;
} else {
@@ -24133,27 +30431,27 @@ function _malloc($0) {
break;
}
} else {
- $164 = ((($$0192$lcssa$i)) + 8|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165>>>0)<($155>>>0);
- if ($166) {
+ $181 = ((($$0192$lcssa$i)) + 8|0);
+ $182 = HEAP32[$181>>2]|0;
+ $183 = ($182>>>0)<($172>>>0);
+ if ($183) {
_abort();
// unreachable;
}
- $167 = ((($165)) + 12|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = ($168|0)==($$0192$lcssa$i|0);
- if (!($169)) {
+ $184 = ((($182)) + 12|0);
+ $185 = HEAP32[$184>>2]|0;
+ $186 = ($185|0)==($$0192$lcssa$i|0);
+ if (!($186)) {
_abort();
// unreachable;
}
- $170 = ((($162)) + 8|0);
- $171 = HEAP32[$170>>2]|0;
- $172 = ($171|0)==($$0192$lcssa$i|0);
- if ($172) {
- HEAP32[$167>>2] = $162;
- HEAP32[$170>>2] = $165;
- $$3$i = $162;
+ $187 = ((($179)) + 8|0);
+ $188 = HEAP32[$187>>2]|0;
+ $189 = ($188|0)==($$0192$lcssa$i|0);
+ if ($189) {
+ HEAP32[$184>>2] = $179;
+ HEAP32[$187>>2] = $182;
+ $$3$i = $179;
break;
} else {
_abort();
@@ -24161,397 +30459,401 @@ function _malloc($0) {
}
}
} while(0);
- $186 = ($160|0)==(0|0);
- L73: do {
- if (!($186)) {
- $187 = ((($$0192$lcssa$i)) + 28|0);
- $188 = HEAP32[$187>>2]|0;
- $189 = (33440 + ($188<<2)|0);
- $190 = HEAP32[$189>>2]|0;
- $191 = ($$0192$lcssa$i|0)==($190|0);
+ $203 = ($177|0)==(0|0);
+ L85: do {
+ if (!($203)) {
+ $204 = ((($$0192$lcssa$i)) + 28|0);
+ $205 = HEAP32[$204>>2]|0;
+ $206 = (35752 + ($205<<2)|0);
+ $207 = HEAP32[$206>>2]|0;
+ $208 = ($$0192$lcssa$i|0)==($207|0);
do {
- if ($191) {
- HEAP32[$189>>2] = $$3$i;
+ if ($208) {
+ HEAP32[$206>>2] = $$3$i;
$cond$i = ($$3$i|0)==(0|0);
if ($cond$i) {
- $192 = 1 << $188;
- $193 = $192 ^ -1;
- $194 = $108 & $193;
- HEAP32[(33140)>>2] = $194;
- break L73;
+ $209 = 1 << $205;
+ $210 = $209 ^ -1;
+ $211 = $125 & $210;
+ HEAP32[(35452)>>2] = $211;
+ break L85;
}
} else {
- $195 = HEAP32[(33152)>>2]|0;
- $196 = ($160>>>0)<($195>>>0);
- if ($196) {
+ $212 = HEAP32[(35464)>>2]|0;
+ $213 = ($177>>>0)<($212>>>0);
+ if ($213) {
_abort();
// unreachable;
} else {
- $197 = ((($160)) + 16|0);
- $198 = HEAP32[$197>>2]|0;
- $not$1$i = ($198|0)!=($$0192$lcssa$i|0);
+ $214 = ((($177)) + 16|0);
+ $215 = HEAP32[$214>>2]|0;
+ $not$1$i = ($215|0)!=($$0192$lcssa$i|0);
$$sink2$i = $not$1$i&1;
- $199 = (((($160)) + 16|0) + ($$sink2$i<<2)|0);
- HEAP32[$199>>2] = $$3$i;
- $200 = ($$3$i|0)==(0|0);
- if ($200) {
- break L73;
+ $216 = (((($177)) + 16|0) + ($$sink2$i<<2)|0);
+ HEAP32[$216>>2] = $$3$i;
+ $217 = ($$3$i|0)==(0|0);
+ if ($217) {
+ break L85;
} else {
break;
}
}
}
} while(0);
- $201 = HEAP32[(33152)>>2]|0;
- $202 = ($$3$i>>>0)<($201>>>0);
- if ($202) {
+ $218 = HEAP32[(35464)>>2]|0;
+ $219 = ($$3$i>>>0)<($218>>>0);
+ if ($219) {
_abort();
// unreachable;
}
- $203 = ((($$3$i)) + 24|0);
- HEAP32[$203>>2] = $160;
- $204 = ((($$0192$lcssa$i)) + 16|0);
- $205 = HEAP32[$204>>2]|0;
- $206 = ($205|0)==(0|0);
+ $220 = ((($$3$i)) + 24|0);
+ HEAP32[$220>>2] = $177;
+ $221 = ((($$0192$lcssa$i)) + 16|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
do {
- if (!($206)) {
- $207 = ($205>>>0)<($201>>>0);
- if ($207) {
+ if (!($223)) {
+ $224 = ($222>>>0)<($218>>>0);
+ if ($224) {
_abort();
// unreachable;
} else {
- $208 = ((($$3$i)) + 16|0);
- HEAP32[$208>>2] = $205;
- $209 = ((($205)) + 24|0);
- HEAP32[$209>>2] = $$3$i;
+ $225 = ((($$3$i)) + 16|0);
+ HEAP32[$225>>2] = $222;
+ $226 = ((($222)) + 24|0);
+ HEAP32[$226>>2] = $$3$i;
break;
}
}
} while(0);
- $210 = ((($$0192$lcssa$i)) + 20|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
- if (!($212)) {
- $213 = HEAP32[(33152)>>2]|0;
- $214 = ($211>>>0)<($213>>>0);
- if ($214) {
+ $227 = ((($$0192$lcssa$i)) + 20|0);
+ $228 = HEAP32[$227>>2]|0;
+ $229 = ($228|0)==(0|0);
+ if (!($229)) {
+ $230 = HEAP32[(35464)>>2]|0;
+ $231 = ($228>>>0)<($230>>>0);
+ if ($231) {
_abort();
// unreachable;
} else {
- $215 = ((($$3$i)) + 20|0);
- HEAP32[$215>>2] = $211;
- $216 = ((($211)) + 24|0);
- HEAP32[$216>>2] = $$3$i;
+ $232 = ((($$3$i)) + 20|0);
+ HEAP32[$232>>2] = $228;
+ $233 = ((($228)) + 24|0);
+ HEAP32[$233>>2] = $$3$i;
break;
}
}
}
} while(0);
- $217 = ($$0193$lcssa$i>>>0)<(16);
- if ($217) {
- $218 = (($$0193$lcssa$i) + ($6))|0;
- $219 = $218 | 3;
- $220 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$220>>2] = $219;
- $221 = (($$0192$lcssa$i) + ($218)|0);
- $222 = ((($221)) + 4|0);
- $223 = HEAP32[$222>>2]|0;
- $224 = $223 | 1;
- HEAP32[$222>>2] = $224;
+ $234 = ($$0193$lcssa$i>>>0)<(16);
+ if ($234) {
+ $235 = (($$0193$lcssa$i) + ($23))|0;
+ $236 = $235 | 3;
+ $237 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$237>>2] = $236;
+ $238 = (($$0192$lcssa$i) + ($235)|0);
+ $239 = ((($238)) + 4|0);
+ $240 = HEAP32[$239>>2]|0;
+ $241 = $240 | 1;
+ HEAP32[$239>>2] = $241;
} else {
- $225 = $6 | 3;
- $226 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$226>>2] = $225;
- $227 = $$0193$lcssa$i | 1;
- $228 = ((($157)) + 4|0);
- HEAP32[$228>>2] = $227;
- $229 = (($157) + ($$0193$lcssa$i)|0);
- HEAP32[$229>>2] = $$0193$lcssa$i;
- $230 = ($37|0)==(0);
- if (!($230)) {
- $231 = HEAP32[(33156)>>2]|0;
- $232 = $37 >>> 3;
- $233 = $232 << 1;
- $234 = (33176 + ($233<<2)|0);
- $235 = 1 << $232;
- $236 = $8 & $235;
- $237 = ($236|0)==(0);
- if ($237) {
- $238 = $8 | $235;
- HEAP32[8284] = $238;
- $$pre$i = ((($234)) + 8|0);
- $$0189$i = $234;$$pre$phi$iZ2D = $$pre$i;
+ $242 = $23 | 3;
+ $243 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$243>>2] = $242;
+ $244 = $$0193$lcssa$i | 1;
+ $245 = ((($174)) + 4|0);
+ HEAP32[$245>>2] = $244;
+ $246 = (($174) + ($$0193$lcssa$i)|0);
+ HEAP32[$246>>2] = $$0193$lcssa$i;
+ $247 = ($54|0)==(0);
+ if (!($247)) {
+ $248 = HEAP32[(35468)>>2]|0;
+ $249 = $54 >>> 3;
+ $250 = $249 << 1;
+ $251 = (35488 + ($250<<2)|0);
+ $252 = 1 << $249;
+ $253 = $25 & $252;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $255 = $25 | $252;
+ HEAP32[8862] = $255;
+ $$pre$i = ((($251)) + 8|0);
+ $$0189$i = $251;$$pre$phi$iZ2D = $$pre$i;
} else {
- $239 = ((($234)) + 8|0);
- $240 = HEAP32[$239>>2]|0;
- $241 = HEAP32[(33152)>>2]|0;
- $242 = ($240>>>0)<($241>>>0);
- if ($242) {
+ $256 = ((($251)) + 8|0);
+ $257 = HEAP32[$256>>2]|0;
+ $258 = HEAP32[(35464)>>2]|0;
+ $259 = ($257>>>0)<($258>>>0);
+ if ($259) {
_abort();
// unreachable;
} else {
- $$0189$i = $240;$$pre$phi$iZ2D = $239;
+ $$0189$i = $257;$$pre$phi$iZ2D = $256;
}
}
- HEAP32[$$pre$phi$iZ2D>>2] = $231;
- $243 = ((($$0189$i)) + 12|0);
- HEAP32[$243>>2] = $231;
- $244 = ((($231)) + 8|0);
- HEAP32[$244>>2] = $$0189$i;
- $245 = ((($231)) + 12|0);
- HEAP32[$245>>2] = $234;
- }
- HEAP32[(33144)>>2] = $$0193$lcssa$i;
- HEAP32[(33156)>>2] = $157;
+ HEAP32[$$pre$phi$iZ2D>>2] = $248;
+ $260 = ((($$0189$i)) + 12|0);
+ HEAP32[$260>>2] = $248;
+ $261 = ((($248)) + 8|0);
+ HEAP32[$261>>2] = $$0189$i;
+ $262 = ((($248)) + 12|0);
+ HEAP32[$262>>2] = $251;
+ }
+ HEAP32[(35456)>>2] = $$0193$lcssa$i;
+ HEAP32[(35468)>>2] = $174;
}
- $246 = ((($$0192$lcssa$i)) + 8|0);
- $$0 = $246;
- STACKTOP = sp;return ($$0|0);
+ $263 = ((($$0192$lcssa$i)) + 8|0);
+ $$2 = $263;
}
} else {
- $$0197 = $6;
+ $$0198 = $23;
+ label = 153;
}
} else {
- $247 = ($0>>>0)>(4294967231);
- if ($247) {
- $$0197 = -1;
+ $264 = ($0>>>0)>(4294967231);
+ if ($264) {
+ $$0198 = -1;
+ label = 153;
} else {
- $248 = (($0) + 11)|0;
- $249 = $248 & -8;
- $250 = HEAP32[(33140)>>2]|0;
- $251 = ($250|0)==(0);
- if ($251) {
- $$0197 = $249;
+ $265 = (($0) + 11)|0;
+ $266 = $265 & -8;
+ $267 = HEAP32[(35452)>>2]|0;
+ $268 = ($267|0)==(0);
+ if ($268) {
+ $$0198 = $266;
+ label = 153;
} else {
- $252 = (0 - ($249))|0;
- $253 = $248 >>> 8;
- $254 = ($253|0)==(0);
- if ($254) {
+ $269 = (0 - ($266))|0;
+ $270 = $265 >>> 8;
+ $271 = ($270|0)==(0);
+ if ($271) {
$$0358$i = 0;
} else {
- $255 = ($249>>>0)>(16777215);
- if ($255) {
+ $272 = ($266>>>0)>(16777215);
+ if ($272) {
$$0358$i = 31;
} else {
- $256 = (($253) + 1048320)|0;
- $257 = $256 >>> 16;
- $258 = $257 & 8;
- $259 = $253 << $258;
- $260 = (($259) + 520192)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 4;
- $263 = $262 | $258;
- $264 = $259 << $262;
- $265 = (($264) + 245760)|0;
- $266 = $265 >>> 16;
- $267 = $266 & 2;
- $268 = $263 | $267;
- $269 = (14 - ($268))|0;
- $270 = $264 << $267;
- $271 = $270 >>> 15;
- $272 = (($269) + ($271))|0;
- $273 = $272 << 1;
- $274 = (($272) + 7)|0;
- $275 = $249 >>> $274;
- $276 = $275 & 1;
- $277 = $276 | $273;
- $$0358$i = $277;
+ $273 = (($270) + 1048320)|0;
+ $274 = $273 >>> 16;
+ $275 = $274 & 8;
+ $276 = $270 << $275;
+ $277 = (($276) + 520192)|0;
+ $278 = $277 >>> 16;
+ $279 = $278 & 4;
+ $280 = $279 | $275;
+ $281 = $276 << $279;
+ $282 = (($281) + 245760)|0;
+ $283 = $282 >>> 16;
+ $284 = $283 & 2;
+ $285 = $280 | $284;
+ $286 = (14 - ($285))|0;
+ $287 = $281 << $284;
+ $288 = $287 >>> 15;
+ $289 = (($286) + ($288))|0;
+ $290 = $289 << 1;
+ $291 = (($289) + 7)|0;
+ $292 = $266 >>> $291;
+ $293 = $292 & 1;
+ $294 = $293 | $290;
+ $$0358$i = $294;
}
}
- $278 = (33440 + ($$0358$i<<2)|0);
- $279 = HEAP32[$278>>2]|0;
- $280 = ($279|0)==(0|0);
- L117: do {
- if ($280) {
- $$2355$i = 0;$$3$i201 = 0;$$3350$i = $252;
- label = 81;
+ $295 = (35752 + ($$0358$i<<2)|0);
+ $296 = HEAP32[$295>>2]|0;
+ $297 = ($296|0)==(0|0);
+ L128: do {
+ if ($297) {
+ $$2355$i = 0;$$3$i202 = 0;$$3350$i = $269;
+ label = 90;
} else {
- $281 = ($$0358$i|0)==(31);
- $282 = $$0358$i >>> 1;
- $283 = (25 - ($282))|0;
- $284 = $281 ? 0 : $283;
- $285 = $249 << $284;
- $$0342$i = 0;$$0347$i = $252;$$0353$i = $279;$$0359$i = $285;$$0362$i = 0;
+ $298 = ($$0358$i|0)==(31);
+ $299 = $$0358$i >>> 1;
+ $300 = (25 - ($299))|0;
+ $301 = $298 ? 0 : $300;
+ $302 = $266 << $301;
+ $$0342$i = 0;$$0347$i = $269;$$0353$i = $296;$$0359$i = $302;$$0362$i = 0;
while(1) {
- $286 = ((($$0353$i)) + 4|0);
- $287 = HEAP32[$286>>2]|0;
- $288 = $287 & -8;
- $289 = (($288) - ($249))|0;
- $290 = ($289>>>0)<($$0347$i>>>0);
- if ($290) {
- $291 = ($289|0)==(0);
- if ($291) {
+ $303 = ((($$0353$i)) + 4|0);
+ $304 = HEAP32[$303>>2]|0;
+ $305 = $304 & -8;
+ $306 = (($305) - ($266))|0;
+ $307 = ($306>>>0)<($$0347$i>>>0);
+ if ($307) {
+ $308 = ($306|0)==(0);
+ if ($308) {
$$415$i = $$0353$i;$$435114$i = 0;$$435713$i = $$0353$i;
- label = 85;
- break L117;
+ label = 94;
+ break L128;
} else {
- $$1343$i = $$0353$i;$$1348$i = $289;
+ $$1343$i = $$0353$i;$$1348$i = $306;
}
} else {
$$1343$i = $$0342$i;$$1348$i = $$0347$i;
}
- $292 = ((($$0353$i)) + 20|0);
- $293 = HEAP32[$292>>2]|0;
- $294 = $$0359$i >>> 31;
- $295 = (((($$0353$i)) + 16|0) + ($294<<2)|0);
- $296 = HEAP32[$295>>2]|0;
- $297 = ($293|0)==(0|0);
- $298 = ($293|0)==($296|0);
- $or$cond2$i = $297 | $298;
- $$1363$i = $or$cond2$i ? $$0362$i : $293;
- $299 = ($296|0)==(0|0);
- $not$8$i = $299 ^ 1;
- $300 = $not$8$i&1;
- $$0359$$i = $$0359$i << $300;
- if ($299) {
- $$2355$i = $$1363$i;$$3$i201 = $$1343$i;$$3350$i = $$1348$i;
- label = 81;
+ $309 = ((($$0353$i)) + 20|0);
+ $310 = HEAP32[$309>>2]|0;
+ $311 = $$0359$i >>> 31;
+ $312 = (((($$0353$i)) + 16|0) + ($311<<2)|0);
+ $313 = HEAP32[$312>>2]|0;
+ $314 = ($310|0)==(0|0);
+ $315 = ($310|0)==($313|0);
+ $or$cond2$i = $314 | $315;
+ $$1363$i = $or$cond2$i ? $$0362$i : $310;
+ $316 = ($313|0)==(0|0);
+ $not$8$i = $316 ^ 1;
+ $317 = $not$8$i&1;
+ $$0359$$i = $$0359$i << $317;
+ if ($316) {
+ $$2355$i = $$1363$i;$$3$i202 = $$1343$i;$$3350$i = $$1348$i;
+ label = 90;
break;
} else {
- $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $296;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
+ $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $313;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
}
}
}
} while(0);
- if ((label|0) == 81) {
- $301 = ($$2355$i|0)==(0|0);
- $302 = ($$3$i201|0)==(0|0);
- $or$cond$i = $301 & $302;
+ if ((label|0) == 90) {
+ $318 = ($$2355$i|0)==(0|0);
+ $319 = ($$3$i202|0)==(0|0);
+ $or$cond$i = $318 & $319;
if ($or$cond$i) {
- $303 = 2 << $$0358$i;
- $304 = (0 - ($303))|0;
- $305 = $303 | $304;
- $306 = $250 & $305;
- $307 = ($306|0)==(0);
- if ($307) {
- $$0197 = $249;
+ $320 = 2 << $$0358$i;
+ $321 = (0 - ($320))|0;
+ $322 = $320 | $321;
+ $323 = $267 & $322;
+ $324 = ($323|0)==(0);
+ if ($324) {
+ $$0198 = $266;
+ label = 153;
break;
}
- $308 = (0 - ($306))|0;
- $309 = $306 & $308;
- $310 = (($309) + -1)|0;
- $311 = $310 >>> 12;
- $312 = $311 & 16;
- $313 = $310 >>> $312;
- $314 = $313 >>> 5;
- $315 = $314 & 8;
- $316 = $315 | $312;
- $317 = $313 >>> $315;
- $318 = $317 >>> 2;
- $319 = $318 & 4;
- $320 = $316 | $319;
- $321 = $317 >>> $319;
- $322 = $321 >>> 1;
- $323 = $322 & 2;
- $324 = $320 | $323;
- $325 = $321 >>> $323;
- $326 = $325 >>> 1;
- $327 = $326 & 1;
- $328 = $324 | $327;
- $329 = $325 >>> $327;
- $330 = (($328) + ($329))|0;
- $331 = (33440 + ($330<<2)|0);
- $332 = HEAP32[$331>>2]|0;
- $$4$ph$i = 0;$$4357$ph$i = $332;
+ $325 = (0 - ($323))|0;
+ $326 = $323 & $325;
+ $327 = (($326) + -1)|0;
+ $328 = $327 >>> 12;
+ $329 = $328 & 16;
+ $330 = $327 >>> $329;
+ $331 = $330 >>> 5;
+ $332 = $331 & 8;
+ $333 = $332 | $329;
+ $334 = $330 >>> $332;
+ $335 = $334 >>> 2;
+ $336 = $335 & 4;
+ $337 = $333 | $336;
+ $338 = $334 >>> $336;
+ $339 = $338 >>> 1;
+ $340 = $339 & 2;
+ $341 = $337 | $340;
+ $342 = $338 >>> $340;
+ $343 = $342 >>> 1;
+ $344 = $343 & 1;
+ $345 = $341 | $344;
+ $346 = $342 >>> $344;
+ $347 = (($345) + ($346))|0;
+ $348 = (35752 + ($347<<2)|0);
+ $349 = HEAP32[$348>>2]|0;
+ $$4$ph$i = 0;$$4357$ph$i = $349;
} else {
- $$4$ph$i = $$3$i201;$$4357$ph$i = $$2355$i;
+ $$4$ph$i = $$3$i202;$$4357$ph$i = $$2355$i;
}
- $333 = ($$4357$ph$i|0)==(0|0);
- if ($333) {
+ $350 = ($$4357$ph$i|0)==(0|0);
+ if ($350) {
$$4$lcssa$i = $$4$ph$i;$$4351$lcssa$i = $$3350$i;
} else {
$$415$i = $$4$ph$i;$$435114$i = $$3350$i;$$435713$i = $$4357$ph$i;
- label = 85;
+ label = 94;
}
}
- if ((label|0) == 85) {
+ if ((label|0) == 94) {
while(1) {
label = 0;
- $334 = ((($$435713$i)) + 4|0);
- $335 = HEAP32[$334>>2]|0;
- $336 = $335 & -8;
- $337 = (($336) - ($249))|0;
- $338 = ($337>>>0)<($$435114$i>>>0);
- $$$4351$i = $338 ? $337 : $$435114$i;
- $$4357$$4$i = $338 ? $$435713$i : $$415$i;
- $339 = ((($$435713$i)) + 16|0);
- $340 = HEAP32[$339>>2]|0;
- $not$1$i203 = ($340|0)==(0|0);
- $$sink2$i204 = $not$1$i203&1;
- $341 = (((($$435713$i)) + 16|0) + ($$sink2$i204<<2)|0);
- $342 = HEAP32[$341>>2]|0;
- $343 = ($342|0)==(0|0);
- if ($343) {
+ $351 = ((($$435713$i)) + 4|0);
+ $352 = HEAP32[$351>>2]|0;
+ $353 = $352 & -8;
+ $354 = (($353) - ($266))|0;
+ $355 = ($354>>>0)<($$435114$i>>>0);
+ $$$4351$i = $355 ? $354 : $$435114$i;
+ $$4357$$4$i = $355 ? $$435713$i : $$415$i;
+ $356 = ((($$435713$i)) + 16|0);
+ $357 = HEAP32[$356>>2]|0;
+ $not$1$i204 = ($357|0)==(0|0);
+ $$sink2$i205 = $not$1$i204&1;
+ $358 = (((($$435713$i)) + 16|0) + ($$sink2$i205<<2)|0);
+ $359 = HEAP32[$358>>2]|0;
+ $360 = ($359|0)==(0|0);
+ if ($360) {
$$4$lcssa$i = $$4357$$4$i;$$4351$lcssa$i = $$$4351$i;
break;
} else {
- $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $342;
- label = 85;
+ $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $359;
+ label = 94;
}
}
}
- $344 = ($$4$lcssa$i|0)==(0|0);
- if ($344) {
- $$0197 = $249;
+ $361 = ($$4$lcssa$i|0)==(0|0);
+ if ($361) {
+ $$0198 = $266;
+ label = 153;
} else {
- $345 = HEAP32[(33144)>>2]|0;
- $346 = (($345) - ($249))|0;
- $347 = ($$4351$lcssa$i>>>0)<($346>>>0);
- if ($347) {
- $348 = HEAP32[(33152)>>2]|0;
- $349 = ($$4$lcssa$i>>>0)<($348>>>0);
- if ($349) {
+ $362 = HEAP32[(35456)>>2]|0;
+ $363 = (($362) - ($266))|0;
+ $364 = ($$4351$lcssa$i>>>0)<($363>>>0);
+ if ($364) {
+ $365 = HEAP32[(35464)>>2]|0;
+ $366 = ($$4$lcssa$i>>>0)<($365>>>0);
+ if ($366) {
_abort();
// unreachable;
}
- $350 = (($$4$lcssa$i) + ($249)|0);
- $351 = ($$4$lcssa$i>>>0)<($350>>>0);
- if (!($351)) {
+ $367 = (($$4$lcssa$i) + ($266)|0);
+ $368 = ($$4$lcssa$i>>>0)<($367>>>0);
+ if (!($368)) {
_abort();
// unreachable;
}
- $352 = ((($$4$lcssa$i)) + 24|0);
- $353 = HEAP32[$352>>2]|0;
- $354 = ((($$4$lcssa$i)) + 12|0);
- $355 = HEAP32[$354>>2]|0;
- $356 = ($355|0)==($$4$lcssa$i|0);
+ $369 = ((($$4$lcssa$i)) + 24|0);
+ $370 = HEAP32[$369>>2]|0;
+ $371 = ((($$4$lcssa$i)) + 12|0);
+ $372 = HEAP32[$371>>2]|0;
+ $373 = ($372|0)==($$4$lcssa$i|0);
do {
- if ($356) {
- $366 = ((($$4$lcssa$i)) + 20|0);
- $367 = HEAP32[$366>>2]|0;
- $368 = ($367|0)==(0|0);
- if ($368) {
- $369 = ((($$4$lcssa$i)) + 16|0);
- $370 = HEAP32[$369>>2]|0;
- $371 = ($370|0)==(0|0);
- if ($371) {
+ if ($373) {
+ $383 = ((($$4$lcssa$i)) + 20|0);
+ $384 = HEAP32[$383>>2]|0;
+ $385 = ($384|0)==(0|0);
+ if ($385) {
+ $386 = ((($$4$lcssa$i)) + 16|0);
+ $387 = HEAP32[$386>>2]|0;
+ $388 = ($387|0)==(0|0);
+ if ($388) {
$$3372$i = 0;
break;
} else {
- $$1370$i = $370;$$1374$i = $369;
+ $$1370$i = $387;$$1374$i = $386;
}
} else {
- $$1370$i = $367;$$1374$i = $366;
+ $$1370$i = $384;$$1374$i = $383;
}
while(1) {
- $372 = ((($$1370$i)) + 20|0);
- $373 = HEAP32[$372>>2]|0;
- $374 = ($373|0)==(0|0);
- if (!($374)) {
- $$1370$i = $373;$$1374$i = $372;
+ $389 = ((($$1370$i)) + 20|0);
+ $390 = HEAP32[$389>>2]|0;
+ $391 = ($390|0)==(0|0);
+ if (!($391)) {
+ $$1370$i = $390;$$1374$i = $389;
continue;
}
- $375 = ((($$1370$i)) + 16|0);
- $376 = HEAP32[$375>>2]|0;
- $377 = ($376|0)==(0|0);
- if ($377) {
+ $392 = ((($$1370$i)) + 16|0);
+ $393 = HEAP32[$392>>2]|0;
+ $394 = ($393|0)==(0|0);
+ if ($394) {
break;
} else {
- $$1370$i = $376;$$1374$i = $375;
+ $$1370$i = $393;$$1374$i = $392;
}
}
- $378 = ($$1374$i>>>0)<($348>>>0);
- if ($378) {
+ $395 = ($$1374$i>>>0)<($365>>>0);
+ if ($395) {
_abort();
// unreachable;
} else {
@@ -24560,27 +30862,27 @@ function _malloc($0) {
break;
}
} else {
- $357 = ((($$4$lcssa$i)) + 8|0);
- $358 = HEAP32[$357>>2]|0;
- $359 = ($358>>>0)<($348>>>0);
- if ($359) {
+ $374 = ((($$4$lcssa$i)) + 8|0);
+ $375 = HEAP32[$374>>2]|0;
+ $376 = ($375>>>0)<($365>>>0);
+ if ($376) {
_abort();
// unreachable;
}
- $360 = ((($358)) + 12|0);
- $361 = HEAP32[$360>>2]|0;
- $362 = ($361|0)==($$4$lcssa$i|0);
- if (!($362)) {
+ $377 = ((($375)) + 12|0);
+ $378 = HEAP32[$377>>2]|0;
+ $379 = ($378|0)==($$4$lcssa$i|0);
+ if (!($379)) {
_abort();
// unreachable;
}
- $363 = ((($355)) + 8|0);
- $364 = HEAP32[$363>>2]|0;
- $365 = ($364|0)==($$4$lcssa$i|0);
- if ($365) {
- HEAP32[$360>>2] = $355;
- HEAP32[$363>>2] = $358;
- $$3372$i = $355;
+ $380 = ((($372)) + 8|0);
+ $381 = HEAP32[$380>>2]|0;
+ $382 = ($381|0)==($$4$lcssa$i|0);
+ if ($382) {
+ HEAP32[$377>>2] = $372;
+ HEAP32[$380>>2] = $375;
+ $$3372$i = $372;
break;
} else {
_abort();
@@ -24588,273 +30890,275 @@ function _malloc($0) {
}
}
} while(0);
- $379 = ($353|0)==(0|0);
- L164: do {
- if ($379) {
- $470 = $250;
+ $396 = ($370|0)==(0|0);
+ L175: do {
+ if ($396) {
+ $487 = $267;
} else {
- $380 = ((($$4$lcssa$i)) + 28|0);
- $381 = HEAP32[$380>>2]|0;
- $382 = (33440 + ($381<<2)|0);
- $383 = HEAP32[$382>>2]|0;
- $384 = ($$4$lcssa$i|0)==($383|0);
+ $397 = ((($$4$lcssa$i)) + 28|0);
+ $398 = HEAP32[$397>>2]|0;
+ $399 = (35752 + ($398<<2)|0);
+ $400 = HEAP32[$399>>2]|0;
+ $401 = ($$4$lcssa$i|0)==($400|0);
do {
- if ($384) {
- HEAP32[$382>>2] = $$3372$i;
- $cond$i208 = ($$3372$i|0)==(0|0);
- if ($cond$i208) {
- $385 = 1 << $381;
- $386 = $385 ^ -1;
- $387 = $250 & $386;
- HEAP32[(33140)>>2] = $387;
- $470 = $387;
- break L164;
+ if ($401) {
+ HEAP32[$399>>2] = $$3372$i;
+ $cond$i209 = ($$3372$i|0)==(0|0);
+ if ($cond$i209) {
+ $402 = 1 << $398;
+ $403 = $402 ^ -1;
+ $404 = $267 & $403;
+ HEAP32[(35452)>>2] = $404;
+ $487 = $404;
+ break L175;
}
} else {
- $388 = HEAP32[(33152)>>2]|0;
- $389 = ($353>>>0)<($388>>>0);
- if ($389) {
+ $405 = HEAP32[(35464)>>2]|0;
+ $406 = ($370>>>0)<($405>>>0);
+ if ($406) {
_abort();
// unreachable;
} else {
- $390 = ((($353)) + 16|0);
- $391 = HEAP32[$390>>2]|0;
- $not$$i209 = ($391|0)!=($$4$lcssa$i|0);
- $$sink3$i = $not$$i209&1;
- $392 = (((($353)) + 16|0) + ($$sink3$i<<2)|0);
- HEAP32[$392>>2] = $$3372$i;
- $393 = ($$3372$i|0)==(0|0);
- if ($393) {
- $470 = $250;
- break L164;
+ $407 = ((($370)) + 16|0);
+ $408 = HEAP32[$407>>2]|0;
+ $not$$i210 = ($408|0)!=($$4$lcssa$i|0);
+ $$sink3$i = $not$$i210&1;
+ $409 = (((($370)) + 16|0) + ($$sink3$i<<2)|0);
+ HEAP32[$409>>2] = $$3372$i;
+ $410 = ($$3372$i|0)==(0|0);
+ if ($410) {
+ $487 = $267;
+ break L175;
} else {
break;
}
}
}
} while(0);
- $394 = HEAP32[(33152)>>2]|0;
- $395 = ($$3372$i>>>0)<($394>>>0);
- if ($395) {
+ $411 = HEAP32[(35464)>>2]|0;
+ $412 = ($$3372$i>>>0)<($411>>>0);
+ if ($412) {
_abort();
// unreachable;
}
- $396 = ((($$3372$i)) + 24|0);
- HEAP32[$396>>2] = $353;
- $397 = ((($$4$lcssa$i)) + 16|0);
- $398 = HEAP32[$397>>2]|0;
- $399 = ($398|0)==(0|0);
+ $413 = ((($$3372$i)) + 24|0);
+ HEAP32[$413>>2] = $370;
+ $414 = ((($$4$lcssa$i)) + 16|0);
+ $415 = HEAP32[$414>>2]|0;
+ $416 = ($415|0)==(0|0);
do {
- if (!($399)) {
- $400 = ($398>>>0)<($394>>>0);
- if ($400) {
+ if (!($416)) {
+ $417 = ($415>>>0)<($411>>>0);
+ if ($417) {
_abort();
// unreachable;
} else {
- $401 = ((($$3372$i)) + 16|0);
- HEAP32[$401>>2] = $398;
- $402 = ((($398)) + 24|0);
- HEAP32[$402>>2] = $$3372$i;
+ $418 = ((($$3372$i)) + 16|0);
+ HEAP32[$418>>2] = $415;
+ $419 = ((($415)) + 24|0);
+ HEAP32[$419>>2] = $$3372$i;
break;
}
}
} while(0);
- $403 = ((($$4$lcssa$i)) + 20|0);
- $404 = HEAP32[$403>>2]|0;
- $405 = ($404|0)==(0|0);
- if ($405) {
- $470 = $250;
+ $420 = ((($$4$lcssa$i)) + 20|0);
+ $421 = HEAP32[$420>>2]|0;
+ $422 = ($421|0)==(0|0);
+ if ($422) {
+ $487 = $267;
} else {
- $406 = HEAP32[(33152)>>2]|0;
- $407 = ($404>>>0)<($406>>>0);
- if ($407) {
+ $423 = HEAP32[(35464)>>2]|0;
+ $424 = ($421>>>0)<($423>>>0);
+ if ($424) {
_abort();
// unreachable;
} else {
- $408 = ((($$3372$i)) + 20|0);
- HEAP32[$408>>2] = $404;
- $409 = ((($404)) + 24|0);
- HEAP32[$409>>2] = $$3372$i;
- $470 = $250;
+ $425 = ((($$3372$i)) + 20|0);
+ HEAP32[$425>>2] = $421;
+ $426 = ((($421)) + 24|0);
+ HEAP32[$426>>2] = $$3372$i;
+ $487 = $267;
break;
}
}
}
} while(0);
- $410 = ($$4351$lcssa$i>>>0)<(16);
+ $427 = ($$4351$lcssa$i>>>0)<(16);
do {
- if ($410) {
- $411 = (($$4351$lcssa$i) + ($249))|0;
- $412 = $411 | 3;
- $413 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$413>>2] = $412;
- $414 = (($$4$lcssa$i) + ($411)|0);
- $415 = ((($414)) + 4|0);
- $416 = HEAP32[$415>>2]|0;
- $417 = $416 | 1;
- HEAP32[$415>>2] = $417;
+ if ($427) {
+ $428 = (($$4351$lcssa$i) + ($266))|0;
+ $429 = $428 | 3;
+ $430 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$430>>2] = $429;
+ $431 = (($$4$lcssa$i) + ($428)|0);
+ $432 = ((($431)) + 4|0);
+ $433 = HEAP32[$432>>2]|0;
+ $434 = $433 | 1;
+ HEAP32[$432>>2] = $434;
} else {
- $418 = $249 | 3;
- $419 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$419>>2] = $418;
- $420 = $$4351$lcssa$i | 1;
- $421 = ((($350)) + 4|0);
- HEAP32[$421>>2] = $420;
- $422 = (($350) + ($$4351$lcssa$i)|0);
- HEAP32[$422>>2] = $$4351$lcssa$i;
- $423 = $$4351$lcssa$i >>> 3;
- $424 = ($$4351$lcssa$i>>>0)<(256);
- if ($424) {
- $425 = $423 << 1;
- $426 = (33176 + ($425<<2)|0);
- $427 = HEAP32[8284]|0;
- $428 = 1 << $423;
- $429 = $427 & $428;
- $430 = ($429|0)==(0);
- if ($430) {
- $431 = $427 | $428;
- HEAP32[8284] = $431;
- $$pre$i210 = ((($426)) + 8|0);
- $$0368$i = $426;$$pre$phi$i211Z2D = $$pre$i210;
- } else {
- $432 = ((($426)) + 8|0);
- $433 = HEAP32[$432>>2]|0;
- $434 = HEAP32[(33152)>>2]|0;
- $435 = ($433>>>0)<($434>>>0);
- if ($435) {
+ $435 = $266 | 3;
+ $436 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$436>>2] = $435;
+ $437 = $$4351$lcssa$i | 1;
+ $438 = ((($367)) + 4|0);
+ HEAP32[$438>>2] = $437;
+ $439 = (($367) + ($$4351$lcssa$i)|0);
+ HEAP32[$439>>2] = $$4351$lcssa$i;
+ $440 = $$4351$lcssa$i >>> 3;
+ $441 = ($$4351$lcssa$i>>>0)<(256);
+ if ($441) {
+ $442 = $440 << 1;
+ $443 = (35488 + ($442<<2)|0);
+ $444 = HEAP32[8862]|0;
+ $445 = 1 << $440;
+ $446 = $444 & $445;
+ $447 = ($446|0)==(0);
+ do {
+ if ($447) {
+ $448 = $444 | $445;
+ HEAP32[8862] = $448;
+ $$pre$i211 = ((($443)) + 8|0);
+ $$0368$i = $443;$$pre$phi$i212Z2D = $$pre$i211;
+ } else {
+ $449 = ((($443)) + 8|0);
+ $450 = HEAP32[$449>>2]|0;
+ $451 = HEAP32[(35464)>>2]|0;
+ $452 = ($450>>>0)<($451>>>0);
+ if (!($452)) {
+ $$0368$i = $450;$$pre$phi$i212Z2D = $449;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $$0368$i = $433;$$pre$phi$i211Z2D = $432;
}
- }
- HEAP32[$$pre$phi$i211Z2D>>2] = $350;
- $436 = ((($$0368$i)) + 12|0);
- HEAP32[$436>>2] = $350;
- $437 = ((($350)) + 8|0);
- HEAP32[$437>>2] = $$0368$i;
- $438 = ((($350)) + 12|0);
- HEAP32[$438>>2] = $426;
+ } while(0);
+ HEAP32[$$pre$phi$i212Z2D>>2] = $367;
+ $453 = ((($$0368$i)) + 12|0);
+ HEAP32[$453>>2] = $367;
+ $454 = ((($367)) + 8|0);
+ HEAP32[$454>>2] = $$0368$i;
+ $455 = ((($367)) + 12|0);
+ HEAP32[$455>>2] = $443;
break;
}
- $439 = $$4351$lcssa$i >>> 8;
- $440 = ($439|0)==(0);
- if ($440) {
+ $456 = $$4351$lcssa$i >>> 8;
+ $457 = ($456|0)==(0);
+ if ($457) {
$$0361$i = 0;
} else {
- $441 = ($$4351$lcssa$i>>>0)>(16777215);
- if ($441) {
+ $458 = ($$4351$lcssa$i>>>0)>(16777215);
+ if ($458) {
$$0361$i = 31;
} else {
- $442 = (($439) + 1048320)|0;
- $443 = $442 >>> 16;
- $444 = $443 & 8;
- $445 = $439 << $444;
- $446 = (($445) + 520192)|0;
- $447 = $446 >>> 16;
- $448 = $447 & 4;
- $449 = $448 | $444;
- $450 = $445 << $448;
- $451 = (($450) + 245760)|0;
- $452 = $451 >>> 16;
- $453 = $452 & 2;
- $454 = $449 | $453;
- $455 = (14 - ($454))|0;
- $456 = $450 << $453;
- $457 = $456 >>> 15;
- $458 = (($455) + ($457))|0;
- $459 = $458 << 1;
- $460 = (($458) + 7)|0;
- $461 = $$4351$lcssa$i >>> $460;
- $462 = $461 & 1;
- $463 = $462 | $459;
- $$0361$i = $463;
+ $459 = (($456) + 1048320)|0;
+ $460 = $459 >>> 16;
+ $461 = $460 & 8;
+ $462 = $456 << $461;
+ $463 = (($462) + 520192)|0;
+ $464 = $463 >>> 16;
+ $465 = $464 & 4;
+ $466 = $465 | $461;
+ $467 = $462 << $465;
+ $468 = (($467) + 245760)|0;
+ $469 = $468 >>> 16;
+ $470 = $469 & 2;
+ $471 = $466 | $470;
+ $472 = (14 - ($471))|0;
+ $473 = $467 << $470;
+ $474 = $473 >>> 15;
+ $475 = (($472) + ($474))|0;
+ $476 = $475 << 1;
+ $477 = (($475) + 7)|0;
+ $478 = $$4351$lcssa$i >>> $477;
+ $479 = $478 & 1;
+ $480 = $479 | $476;
+ $$0361$i = $480;
}
}
- $464 = (33440 + ($$0361$i<<2)|0);
- $465 = ((($350)) + 28|0);
- HEAP32[$465>>2] = $$0361$i;
- $466 = ((($350)) + 16|0);
- $467 = ((($466)) + 4|0);
- HEAP32[$467>>2] = 0;
- HEAP32[$466>>2] = 0;
- $468 = 1 << $$0361$i;
- $469 = $470 & $468;
- $471 = ($469|0)==(0);
- if ($471) {
- $472 = $470 | $468;
- HEAP32[(33140)>>2] = $472;
- HEAP32[$464>>2] = $350;
- $473 = ((($350)) + 24|0);
- HEAP32[$473>>2] = $464;
- $474 = ((($350)) + 12|0);
- HEAP32[$474>>2] = $350;
- $475 = ((($350)) + 8|0);
- HEAP32[$475>>2] = $350;
+ $481 = (35752 + ($$0361$i<<2)|0);
+ $482 = ((($367)) + 28|0);
+ HEAP32[$482>>2] = $$0361$i;
+ $483 = ((($367)) + 16|0);
+ $484 = ((($483)) + 4|0);
+ HEAP32[$484>>2] = 0;
+ HEAP32[$483>>2] = 0;
+ $485 = 1 << $$0361$i;
+ $486 = $487 & $485;
+ $488 = ($486|0)==(0);
+ if ($488) {
+ $489 = $487 | $485;
+ HEAP32[(35452)>>2] = $489;
+ HEAP32[$481>>2] = $367;
+ $490 = ((($367)) + 24|0);
+ HEAP32[$490>>2] = $481;
+ $491 = ((($367)) + 12|0);
+ HEAP32[$491>>2] = $367;
+ $492 = ((($367)) + 8|0);
+ HEAP32[$492>>2] = $367;
break;
}
- $476 = HEAP32[$464>>2]|0;
- $477 = ($$0361$i|0)==(31);
- $478 = $$0361$i >>> 1;
- $479 = (25 - ($478))|0;
- $480 = $477 ? 0 : $479;
- $481 = $$4351$lcssa$i << $480;
- $$0344$i = $481;$$0345$i = $476;
+ $493 = HEAP32[$481>>2]|0;
+ $494 = ($$0361$i|0)==(31);
+ $495 = $$0361$i >>> 1;
+ $496 = (25 - ($495))|0;
+ $497 = $494 ? 0 : $496;
+ $498 = $$4351$lcssa$i << $497;
+ $$0344$i = $498;$$0345$i = $493;
while(1) {
- $482 = ((($$0345$i)) + 4|0);
- $483 = HEAP32[$482>>2]|0;
- $484 = $483 & -8;
- $485 = ($484|0)==($$4351$lcssa$i|0);
- if ($485) {
- label = 139;
+ $499 = ((($$0345$i)) + 4|0);
+ $500 = HEAP32[$499>>2]|0;
+ $501 = $500 & -8;
+ $502 = ($501|0)==($$4351$lcssa$i|0);
+ if ($502) {
+ label = 148;
break;
}
- $486 = $$0344$i >>> 31;
- $487 = (((($$0345$i)) + 16|0) + ($486<<2)|0);
- $488 = $$0344$i << 1;
- $489 = HEAP32[$487>>2]|0;
- $490 = ($489|0)==(0|0);
- if ($490) {
- label = 136;
+ $503 = $$0344$i >>> 31;
+ $504 = (((($$0345$i)) + 16|0) + ($503<<2)|0);
+ $505 = $$0344$i << 1;
+ $506 = HEAP32[$504>>2]|0;
+ $507 = ($506|0)==(0|0);
+ if ($507) {
+ label = 145;
break;
} else {
- $$0344$i = $488;$$0345$i = $489;
+ $$0344$i = $505;$$0345$i = $506;
}
}
- if ((label|0) == 136) {
- $491 = HEAP32[(33152)>>2]|0;
- $492 = ($487>>>0)<($491>>>0);
- if ($492) {
+ if ((label|0) == 145) {
+ $508 = HEAP32[(35464)>>2]|0;
+ $509 = ($504>>>0)<($508>>>0);
+ if ($509) {
_abort();
// unreachable;
} else {
- HEAP32[$487>>2] = $350;
- $493 = ((($350)) + 24|0);
- HEAP32[$493>>2] = $$0345$i;
- $494 = ((($350)) + 12|0);
- HEAP32[$494>>2] = $350;
- $495 = ((($350)) + 8|0);
- HEAP32[$495>>2] = $350;
+ HEAP32[$504>>2] = $367;
+ $510 = ((($367)) + 24|0);
+ HEAP32[$510>>2] = $$0345$i;
+ $511 = ((($367)) + 12|0);
+ HEAP32[$511>>2] = $367;
+ $512 = ((($367)) + 8|0);
+ HEAP32[$512>>2] = $367;
break;
}
}
- else if ((label|0) == 139) {
- $496 = ((($$0345$i)) + 8|0);
- $497 = HEAP32[$496>>2]|0;
- $498 = HEAP32[(33152)>>2]|0;
- $499 = ($497>>>0)>=($498>>>0);
- $not$9$i = ($$0345$i>>>0)>=($498>>>0);
- $500 = $499 & $not$9$i;
- if ($500) {
- $501 = ((($497)) + 12|0);
- HEAP32[$501>>2] = $350;
- HEAP32[$496>>2] = $350;
- $502 = ((($350)) + 8|0);
- HEAP32[$502>>2] = $497;
- $503 = ((($350)) + 12|0);
- HEAP32[$503>>2] = $$0345$i;
- $504 = ((($350)) + 24|0);
- HEAP32[$504>>2] = 0;
+ else if ((label|0) == 148) {
+ $513 = ((($$0345$i)) + 8|0);
+ $514 = HEAP32[$513>>2]|0;
+ $515 = HEAP32[(35464)>>2]|0;
+ $516 = ($514>>>0)>=($515>>>0);
+ $not$9$i = ($$0345$i>>>0)>=($515>>>0);
+ $517 = $516 & $not$9$i;
+ if ($517) {
+ $518 = ((($514)) + 12|0);
+ HEAP32[$518>>2] = $367;
+ HEAP32[$513>>2] = $367;
+ $519 = ((($367)) + 8|0);
+ HEAP32[$519>>2] = $514;
+ $520 = ((($367)) + 12|0);
+ HEAP32[$520>>2] = $$0345$i;
+ $521 = ((($367)) + 24|0);
+ HEAP32[$521>>2] = 0;
break;
} else {
_abort();
@@ -24863,1200 +31167,1238 @@ function _malloc($0) {
}
}
} while(0);
- $505 = ((($$4$lcssa$i)) + 8|0);
- $$0 = $505;
- STACKTOP = sp;return ($$0|0);
+ $522 = ((($$4$lcssa$i)) + 8|0);
+ $$2 = $522;
} else {
- $$0197 = $249;
+ $$0198 = $266;
+ label = 153;
}
}
}
}
}
} while(0);
- $506 = HEAP32[(33144)>>2]|0;
- $507 = ($506>>>0)<($$0197>>>0);
- if (!($507)) {
- $508 = (($506) - ($$0197))|0;
- $509 = HEAP32[(33156)>>2]|0;
- $510 = ($508>>>0)>(15);
- if ($510) {
- $511 = (($509) + ($$0197)|0);
- HEAP32[(33156)>>2] = $511;
- HEAP32[(33144)>>2] = $508;
- $512 = $508 | 1;
- $513 = ((($511)) + 4|0);
- HEAP32[$513>>2] = $512;
- $514 = (($511) + ($508)|0);
- HEAP32[$514>>2] = $508;
- $515 = $$0197 | 3;
- $516 = ((($509)) + 4|0);
- HEAP32[$516>>2] = $515;
- } else {
- HEAP32[(33144)>>2] = 0;
- HEAP32[(33156)>>2] = 0;
- $517 = $506 | 3;
- $518 = ((($509)) + 4|0);
- HEAP32[$518>>2] = $517;
- $519 = (($509) + ($506)|0);
- $520 = ((($519)) + 4|0);
- $521 = HEAP32[$520>>2]|0;
- $522 = $521 | 1;
- HEAP32[$520>>2] = $522;
- }
- $523 = ((($509)) + 8|0);
- $$0 = $523;
- STACKTOP = sp;return ($$0|0);
- }
- $524 = HEAP32[(33148)>>2]|0;
- $525 = ($524>>>0)>($$0197>>>0);
- if ($525) {
- $526 = (($524) - ($$0197))|0;
- HEAP32[(33148)>>2] = $526;
- $527 = HEAP32[(33160)>>2]|0;
- $528 = (($527) + ($$0197)|0);
- HEAP32[(33160)>>2] = $528;
- $529 = $526 | 1;
- $530 = ((($528)) + 4|0);
- HEAP32[$530>>2] = $529;
- $531 = $$0197 | 3;
- $532 = ((($527)) + 4|0);
- HEAP32[$532>>2] = $531;
- $533 = ((($527)) + 8|0);
- $$0 = $533;
- STACKTOP = sp;return ($$0|0);
- }
- $534 = HEAP32[8402]|0;
- $535 = ($534|0)==(0);
- if ($535) {
- HEAP32[(33616)>>2] = 4096;
- HEAP32[(33612)>>2] = 4096;
- HEAP32[(33620)>>2] = -1;
- HEAP32[(33624)>>2] = -1;
- HEAP32[(33628)>>2] = 0;
- HEAP32[(33580)>>2] = 0;
- $536 = $1;
- $537 = $536 & -16;
- $538 = $537 ^ 1431655768;
- HEAP32[$1>>2] = $538;
- HEAP32[8402] = $538;
- $542 = 4096;
- } else {
- $$pre$i212 = HEAP32[(33616)>>2]|0;
- $542 = $$pre$i212;
- }
- $539 = (($$0197) + 48)|0;
- $540 = (($$0197) + 47)|0;
- $541 = (($542) + ($540))|0;
- $543 = (0 - ($542))|0;
- $544 = $541 & $543;
- $545 = ($544>>>0)>($$0197>>>0);
- if (!($545)) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- $546 = HEAP32[(33576)>>2]|0;
- $547 = ($546|0)==(0);
- if (!($547)) {
- $548 = HEAP32[(33568)>>2]|0;
- $549 = (($548) + ($544))|0;
- $550 = ($549>>>0)<=($548>>>0);
- $551 = ($549>>>0)>($546>>>0);
- $or$cond1$i = $550 | $551;
- if ($or$cond1$i) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $552 = HEAP32[(33580)>>2]|0;
- $553 = $552 & 4;
- $554 = ($553|0)==(0);
- L244: do {
- if ($554) {
- $555 = HEAP32[(33160)>>2]|0;
- $556 = ($555|0)==(0|0);
- L246: do {
- if ($556) {
- label = 163;
+ L230: do {
+ if ((label|0) == 153) {
+ $523 = HEAP32[(35456)>>2]|0;
+ $524 = ($523>>>0)<($$0198>>>0);
+ if (!($524)) {
+ $525 = (($523) - ($$0198))|0;
+ $526 = HEAP32[(35468)>>2]|0;
+ $527 = ($525>>>0)>(15);
+ if ($527) {
+ $528 = (($526) + ($$0198)|0);
+ HEAP32[(35468)>>2] = $528;
+ HEAP32[(35456)>>2] = $525;
+ $529 = $525 | 1;
+ $530 = ((($528)) + 4|0);
+ HEAP32[$530>>2] = $529;
+ $531 = (($528) + ($525)|0);
+ HEAP32[$531>>2] = $525;
+ $532 = $$0198 | 3;
+ $533 = ((($526)) + 4|0);
+ HEAP32[$533>>2] = $532;
} else {
- $$0$i$i = (33584);
- while(1) {
- $557 = HEAP32[$$0$i$i>>2]|0;
- $558 = ($557>>>0)>($555>>>0);
- if (!($558)) {
- $559 = ((($$0$i$i)) + 4|0);
- $560 = HEAP32[$559>>2]|0;
- $561 = (($557) + ($560)|0);
- $562 = ($561>>>0)>($555>>>0);
- if ($562) {
- break;
- }
+ HEAP32[(35456)>>2] = 0;
+ HEAP32[(35468)>>2] = 0;
+ $534 = $523 | 3;
+ $535 = ((($526)) + 4|0);
+ HEAP32[$535>>2] = $534;
+ $536 = (($526) + ($523)|0);
+ $537 = ((($536)) + 4|0);
+ $538 = HEAP32[$537>>2]|0;
+ $539 = $538 | 1;
+ HEAP32[$537>>2] = $539;
+ }
+ $540 = ((($526)) + 8|0);
+ $$2 = $540;
+ break;
+ }
+ $541 = HEAP32[(35460)>>2]|0;
+ $542 = ($541>>>0)>($$0198>>>0);
+ if ($542) {
+ $543 = (($541) - ($$0198))|0;
+ HEAP32[(35460)>>2] = $543;
+ $544 = HEAP32[(35472)>>2]|0;
+ $545 = (($544) + ($$0198)|0);
+ HEAP32[(35472)>>2] = $545;
+ $546 = $543 | 1;
+ $547 = ((($545)) + 4|0);
+ HEAP32[$547>>2] = $546;
+ $548 = $$0198 | 3;
+ $549 = ((($544)) + 4|0);
+ HEAP32[$549>>2] = $548;
+ $550 = ((($544)) + 8|0);
+ $$2 = $550;
+ break;
+ }
+ $551 = HEAP32[8849]|0;
+ $552 = ($551|0)==(0);
+ if ($552) {
+ (___pthread_mutex_lock(35420)|0);
+ $553 = HEAP32[8849]|0;
+ $554 = ($553|0)==(0);
+ if ($554) {
+ HEAP32[(35404)>>2] = 4096;
+ HEAP32[(35400)>>2] = 4096;
+ HEAP32[(35408)>>2] = -1;
+ HEAP32[(35412)>>2] = -1;
+ HEAP32[(35416)>>2] = 2;
+ HEAP32[(35892)>>2] = 2;
+ $555 = (_pthread_mutexattr_init($1)|0);
+ $556 = ($555|0)==(0);
+ if ($556) {
+ $557 = (_pthread_mutex_init((35896),$1)|0);
+ $558 = ($557|0)==(0);
+ if ($558) {
}
- $563 = ((($$0$i$i)) + 8|0);
- $564 = HEAP32[$563>>2]|0;
- $565 = ($564|0)==(0|0);
- if ($565) {
- label = 163;
- break L246;
+ }
+ $559 = $2;
+ $560 = $559 & -16;
+ $561 = $560 ^ 1431655768;
+ HEAP32[$2>>2] = $561;
+ Atomics_store(HEAP32,8849,$561)|0;
+ }
+ (___pthread_mutex_unlock(35420)|0);
+ }
+ $562 = (($$0198) + 48)|0;
+ $563 = HEAP32[(35404)>>2]|0;
+ $564 = (($$0198) + 47)|0;
+ $565 = (($563) + ($564))|0;
+ $566 = (0 - ($563))|0;
+ $567 = $565 & $566;
+ $568 = ($567>>>0)>($$0198>>>0);
+ if ($568) {
+ $569 = HEAP32[(35888)>>2]|0;
+ $570 = ($569|0)==(0);
+ if (!($570)) {
+ $571 = HEAP32[(35880)>>2]|0;
+ $572 = (($571) + ($567))|0;
+ $573 = ($572>>>0)<=($571>>>0);
+ $574 = ($572>>>0)>($569>>>0);
+ $or$cond1$i = $573 | $574;
+ if ($or$cond1$i) {
+ $$2 = 0;
+ break;
+ }
+ }
+ $575 = HEAP32[(35892)>>2]|0;
+ $576 = $575 & 4;
+ $577 = ($576|0)==(0);
+ if ($577) {
+ $578 = HEAP32[(35472)>>2]|0;
+ $579 = ($578|0)==(0|0);
+ L258: do {
+ if ($579) {
+ label = 176;
} else {
- $$0$i$i = $564;
+ $$0$i$i = (35924);
+ while(1) {
+ $580 = HEAP32[$$0$i$i>>2]|0;
+ $581 = ($580>>>0)>($578>>>0);
+ if (!($581)) {
+ $582 = ((($$0$i$i)) + 4|0);
+ $583 = HEAP32[$582>>2]|0;
+ $584 = (($580) + ($583)|0);
+ $585 = ($584>>>0)>($578>>>0);
+ if ($585) {
+ break;
+ }
+ }
+ $586 = ((($$0$i$i)) + 8|0);
+ $587 = HEAP32[$586>>2]|0;
+ $588 = ($587|0)==(0|0);
+ if ($588) {
+ label = 176;
+ break L258;
+ } else {
+ $$0$i$i = $587;
+ }
+ }
+ (___pthread_mutex_lock(35420)|0);
+ $611 = HEAP32[(35460)>>2]|0;
+ $612 = HEAP32[(35404)>>2]|0;
+ $613 = (($564) - ($611))|0;
+ $614 = (($613) + ($612))|0;
+ $615 = (0 - ($612))|0;
+ $616 = $614 & $615;
+ $617 = ($616>>>0)<(2147483647);
+ if ($617) {
+ $618 = (_sbrk(($616|0))|0);
+ $619 = HEAP32[$$0$i$i>>2]|0;
+ $620 = HEAP32[$582>>2]|0;
+ $621 = (($619) + ($620)|0);
+ $622 = ($618|0)==($621|0);
+ if ($622) {
+ $623 = ($618|0)==((-1)|0);
+ if ($623) {
+ $$2234253237$i = $616;
+ label = 190;
+ } else {
+ $$3229$i = $618;$$3235$i = $616;
+ }
+ } else {
+ $$2247$ph$i = $618;$$2253$ph$i = $616;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- }
- $588 = (($541) - ($524))|0;
- $589 = $588 & $543;
- $590 = ($589>>>0)<(2147483647);
- if ($590) {
- $591 = (_sbrk(($589|0))|0);
- $592 = HEAP32[$$0$i$i>>2]|0;
- $593 = HEAP32[$559>>2]|0;
- $594 = (($592) + ($593)|0);
- $595 = ($591|0)==($594|0);
- if ($595) {
- $596 = ($591|0)==((-1)|0);
- if ($596) {
- $$2234253237$i = $589;
+ } while(0);
+ do {
+ if ((label|0) == 176) {
+ (___pthread_mutex_lock(35420)|0);
+ $589 = (_sbrk(0)|0);
+ $590 = ($589|0)==((-1)|0);
+ if ($590) {
+ $$2234253237$i = 0;
+ label = 190;
} else {
- $$723948$i = $589;$$749$i = $591;
- label = 180;
- break L244;
+ $591 = $589;
+ $592 = HEAP32[(35400)>>2]|0;
+ $593 = (($592) + -1)|0;
+ $594 = $593 & $591;
+ $595 = ($594|0)==(0);
+ $596 = (($593) + ($591))|0;
+ $597 = (0 - ($592))|0;
+ $598 = $596 & $597;
+ $599 = (($598) - ($591))|0;
+ $600 = $595 ? 0 : $599;
+ $$$i = (($600) + ($567))|0;
+ $601 = HEAP32[(35880)>>2]|0;
+ $602 = (($$$i) + ($601))|0;
+ $603 = ($$$i>>>0)>($$0198>>>0);
+ $604 = ($$$i>>>0)<(2147483647);
+ $or$cond$i213 = $603 & $604;
+ if ($or$cond$i213) {
+ $605 = HEAP32[(35888)>>2]|0;
+ $606 = ($605|0)==(0);
+ if (!($606)) {
+ $607 = ($602>>>0)<=($601>>>0);
+ $608 = ($602>>>0)>($605>>>0);
+ $or$cond2$i214 = $607 | $608;
+ if ($or$cond2$i214) {
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ }
+ }
+ $609 = (_sbrk(($$$i|0))|0);
+ $610 = ($609|0)==($589|0);
+ if ($610) {
+ $$3229$i = $589;$$3235$i = $$$i;
+ } else {
+ $$2247$ph$i = $609;$$2253$ph$i = $$$i;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- } else {
- $$2247$ph$i = $591;$$2253$ph$i = $589;
- label = 171;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- } while(0);
- do {
- if ((label|0) == 163) {
- $566 = (_sbrk(0)|0);
- $567 = ($566|0)==((-1)|0);
- if ($567) {
- $$2234253237$i = 0;
- } else {
- $568 = $566;
- $569 = HEAP32[(33612)>>2]|0;
- $570 = (($569) + -1)|0;
- $571 = $570 & $568;
- $572 = ($571|0)==(0);
- $573 = (($570) + ($568))|0;
- $574 = (0 - ($569))|0;
- $575 = $573 & $574;
- $576 = (($575) - ($568))|0;
- $577 = $572 ? 0 : $576;
- $$$i = (($577) + ($544))|0;
- $578 = HEAP32[(33568)>>2]|0;
- $579 = (($$$i) + ($578))|0;
- $580 = ($$$i>>>0)>($$0197>>>0);
- $581 = ($$$i>>>0)<(2147483647);
- $or$cond$i214 = $580 & $581;
- if ($or$cond$i214) {
- $582 = HEAP32[(33576)>>2]|0;
- $583 = ($582|0)==(0);
- if (!($583)) {
- $584 = ($579>>>0)<=($578>>>0);
- $585 = ($579>>>0)>($582>>>0);
- $or$cond2$i215 = $584 | $585;
- if ($or$cond2$i215) {
+ } while(0);
+ do {
+ if ((label|0) == 184) {
+ $624 = (0 - ($$2253$ph$i))|0;
+ $625 = ($$2247$ph$i|0)!=((-1)|0);
+ $626 = ($$2253$ph$i>>>0)<(2147483647);
+ $or$cond7$i = $626 & $625;
+ $627 = ($562>>>0)>($$2253$ph$i>>>0);
+ $or$cond10$i = $627 & $or$cond7$i;
+ if (!($or$cond10$i)) {
+ $637 = ($$2247$ph$i|0)==((-1)|0);
+ if ($637) {
$$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
break;
}
}
- $586 = (_sbrk(($$$i|0))|0);
- $587 = ($586|0)==($566|0);
- if ($587) {
- $$723948$i = $$$i;$$749$i = $566;
- label = 180;
- break L244;
+ $628 = HEAP32[(35404)>>2]|0;
+ $629 = (($564) - ($$2253$ph$i))|0;
+ $630 = (($629) + ($628))|0;
+ $631 = (0 - ($628))|0;
+ $632 = $630 & $631;
+ $633 = ($632>>>0)<(2147483647);
+ if ($633) {
+ $634 = (_sbrk(($632|0))|0);
+ $635 = ($634|0)==((-1)|0);
+ if ($635) {
+ (_sbrk(($624|0))|0);
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $636 = (($632) + ($$2253$ph$i))|0;
+ $$3229$i = $$2247$ph$i;$$3235$i = $636;
+ break;
+ }
} else {
- $$2247$ph$i = $586;$$2253$ph$i = $$$i;
- label = 171;
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- }
- } while(0);
- do {
- if ((label|0) == 171) {
- $597 = (0 - ($$2253$ph$i))|0;
- $598 = ($$2247$ph$i|0)!=((-1)|0);
- $599 = ($$2253$ph$i>>>0)<(2147483647);
- $or$cond7$i = $599 & $598;
- $600 = ($539>>>0)>($$2253$ph$i>>>0);
- $or$cond10$i = $600 & $or$cond7$i;
- if (!($or$cond10$i)) {
- $610 = ($$2247$ph$i|0)==((-1)|0);
- if ($610) {
- $$2234253237$i = 0;
- break;
- } else {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- $601 = HEAP32[(33616)>>2]|0;
- $602 = (($540) - ($$2253$ph$i))|0;
- $603 = (($602) + ($601))|0;
- $604 = (0 - ($601))|0;
- $605 = $603 & $604;
- $606 = ($605>>>0)<(2147483647);
- if (!($606)) {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- $607 = (_sbrk(($605|0))|0);
- $608 = ($607|0)==((-1)|0);
- if ($608) {
- (_sbrk(($597|0))|0);
- $$2234253237$i = 0;
- break;
- } else {
- $609 = (($605) + ($$2253$ph$i))|0;
- $$723948$i = $609;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- } while(0);
- $611 = HEAP32[(33580)>>2]|0;
- $612 = $611 | 4;
- HEAP32[(33580)>>2] = $612;
- $$4236$i = $$2234253237$i;
- label = 178;
- } else {
- $$4236$i = 0;
- label = 178;
- }
- } while(0);
- if ((label|0) == 178) {
- $613 = ($544>>>0)<(2147483647);
- if ($613) {
- $614 = (_sbrk(($544|0))|0);
- $615 = (_sbrk(0)|0);
- $616 = ($614|0)!=((-1)|0);
- $617 = ($615|0)!=((-1)|0);
- $or$cond5$i = $616 & $617;
- $618 = ($614>>>0)<($615>>>0);
- $or$cond11$i = $618 & $or$cond5$i;
- $619 = $615;
- $620 = $614;
- $621 = (($619) - ($620))|0;
- $622 = (($$0197) + 40)|0;
- $623 = ($621>>>0)>($622>>>0);
- $$$4236$i = $623 ? $621 : $$4236$i;
- $or$cond11$not$i = $or$cond11$i ^ 1;
- $624 = ($614|0)==((-1)|0);
- $not$$i216 = $623 ^ 1;
- $625 = $624 | $not$$i216;
- $or$cond50$i = $625 | $or$cond11$not$i;
- if (!($or$cond50$i)) {
- $$723948$i = $$$4236$i;$$749$i = $614;
- label = 180;
- }
- }
- }
- if ((label|0) == 180) {
- $626 = HEAP32[(33568)>>2]|0;
- $627 = (($626) + ($$723948$i))|0;
- HEAP32[(33568)>>2] = $627;
- $628 = HEAP32[(33572)>>2]|0;
- $629 = ($627>>>0)>($628>>>0);
- if ($629) {
- HEAP32[(33572)>>2] = $627;
- }
- $630 = HEAP32[(33160)>>2]|0;
- $631 = ($630|0)==(0|0);
- do {
- if ($631) {
- $632 = HEAP32[(33152)>>2]|0;
- $633 = ($632|0)==(0|0);
- $634 = ($$749$i>>>0)<($632>>>0);
- $or$cond12$i = $633 | $634;
- if ($or$cond12$i) {
- HEAP32[(33152)>>2] = $$749$i;
- }
- HEAP32[(33584)>>2] = $$749$i;
- HEAP32[(33588)>>2] = $$723948$i;
- HEAP32[(33596)>>2] = 0;
- $635 = HEAP32[8402]|0;
- HEAP32[(33172)>>2] = $635;
- HEAP32[(33168)>>2] = -1;
- $$01$i$i = 0;
- while(1) {
- $636 = $$01$i$i << 1;
- $637 = (33176 + ($636<<2)|0);
- $638 = ((($637)) + 12|0);
- HEAP32[$638>>2] = $637;
- $639 = ((($637)) + 8|0);
- HEAP32[$639>>2] = $637;
- $640 = (($$01$i$i) + 1)|0;
- $exitcond$i$i = ($640|0)==(32);
- if ($exitcond$i$i) {
- break;
- } else {
- $$01$i$i = $640;
- }
- }
- $641 = (($$723948$i) + -40)|0;
- $642 = ((($$749$i)) + 8|0);
- $643 = $642;
- $644 = $643 & 7;
- $645 = ($644|0)==(0);
- $646 = (0 - ($643))|0;
- $647 = $646 & 7;
- $648 = $645 ? 0 : $647;
- $649 = (($$749$i) + ($648)|0);
- $650 = (($641) - ($648))|0;
- HEAP32[(33160)>>2] = $649;
- HEAP32[(33148)>>2] = $650;
- $651 = $650 | 1;
- $652 = ((($649)) + 4|0);
- HEAP32[$652>>2] = $651;
- $653 = (($649) + ($650)|0);
- $654 = ((($653)) + 4|0);
- HEAP32[$654>>2] = 40;
- $655 = HEAP32[(33624)>>2]|0;
- HEAP32[(33164)>>2] = $655;
- } else {
- $$024371$i = (33584);
- while(1) {
- $656 = HEAP32[$$024371$i>>2]|0;
- $657 = ((($$024371$i)) + 4|0);
- $658 = HEAP32[$657>>2]|0;
- $659 = (($656) + ($658)|0);
- $660 = ($$749$i|0)==($659|0);
- if ($660) {
- label = 190;
- break;
- }
- $661 = ((($$024371$i)) + 8|0);
- $662 = HEAP32[$661>>2]|0;
- $663 = ($662|0)==(0|0);
- if ($663) {
- break;
- } else {
- $$024371$i = $662;
- }
- }
- if ((label|0) == 190) {
- $664 = ((($$024371$i)) + 12|0);
- $665 = HEAP32[$664>>2]|0;
- $666 = $665 & 8;
- $667 = ($666|0)==(0);
- if ($667) {
- $668 = ($630>>>0)>=($656>>>0);
- $669 = ($630>>>0)<($$749$i>>>0);
- $or$cond51$i = $669 & $668;
- if ($or$cond51$i) {
- $670 = (($658) + ($$723948$i))|0;
- HEAP32[$657>>2] = $670;
- $671 = HEAP32[(33148)>>2]|0;
- $672 = ((($630)) + 8|0);
- $673 = $672;
- $674 = $673 & 7;
- $675 = ($674|0)==(0);
- $676 = (0 - ($673))|0;
- $677 = $676 & 7;
- $678 = $675 ? 0 : $677;
- $679 = (($630) + ($678)|0);
- $680 = (($$723948$i) - ($678))|0;
- $681 = (($671) + ($680))|0;
- HEAP32[(33160)>>2] = $679;
- HEAP32[(33148)>>2] = $681;
- $682 = $681 | 1;
- $683 = ((($679)) + 4|0);
- HEAP32[$683>>2] = $682;
- $684 = (($679) + ($681)|0);
- $685 = ((($684)) + 4|0);
- HEAP32[$685>>2] = 40;
- $686 = HEAP32[(33624)>>2]|0;
- HEAP32[(33164)>>2] = $686;
- break;
}
+ } while(0);
+ if ((label|0) == 190) {
+ $638 = HEAP32[(35892)>>2]|0;
+ $639 = $638 | 4;
+ HEAP32[(35892)>>2] = $639;
+ $$3229$i = (-1);$$3235$i = $$2234253237$i;
}
- }
- $687 = HEAP32[(33152)>>2]|0;
- $688 = ($$749$i>>>0)<($687>>>0);
- if ($688) {
- HEAP32[(33152)>>2] = $$749$i;
- $752 = $$749$i;
+ (___pthread_mutex_unlock(35420)|0);
+ $$4230$i = $$3229$i;$$4236$i = $$3235$i;
} else {
- $752 = $687;
- }
- $689 = (($$749$i) + ($$723948$i)|0);
- $$124470$i = (33584);
- while(1) {
- $690 = HEAP32[$$124470$i>>2]|0;
- $691 = ($690|0)==($689|0);
- if ($691) {
- label = 198;
- break;
+ $$4230$i = (-1);$$4236$i = 0;
+ }
+ $640 = ($$4230$i|0)==((-1)|0);
+ $641 = ($567>>>0)<(2147483647);
+ $or$cond9$i = $641 & $640;
+ if ($or$cond9$i) {
+ (___pthread_mutex_lock(35420)|0);
+ $642 = (_sbrk(($567|0))|0);
+ $643 = (_sbrk(0)|0);
+ (___pthread_mutex_unlock(35420)|0);
+ $644 = ($642|0)!=((-1)|0);
+ $645 = ($643|0)!=((-1)|0);
+ $or$cond5$i = $644 & $645;
+ $646 = ($642>>>0)<($643>>>0);
+ $or$cond11$i = $646 & $or$cond5$i;
+ $647 = $643;
+ $648 = $642;
+ $649 = (($647) - ($648))|0;
+ $650 = (($$0198) + 40)|0;
+ $651 = ($649>>>0)>($650>>>0);
+ $$$4236$i = $651 ? $649 : $$4236$i;
+ $$$4230$i = $651 ? $642 : (-1);
+ if ($or$cond11$i) {
+ $$7$i = $$$4230$i;$$7239$i = $$$4236$i;
+ label = 194;
}
- $692 = ((($$124470$i)) + 8|0);
- $693 = HEAP32[$692>>2]|0;
- $694 = ($693|0)==(0|0);
- if ($694) {
- break;
- } else {
- $$124470$i = $693;
- }
- }
- if ((label|0) == 198) {
- $695 = ((($$124470$i)) + 12|0);
- $696 = HEAP32[$695>>2]|0;
- $697 = $696 & 8;
- $698 = ($697|0)==(0);
- if ($698) {
- HEAP32[$$124470$i>>2] = $$749$i;
- $699 = ((($$124470$i)) + 4|0);
- $700 = HEAP32[$699>>2]|0;
- $701 = (($700) + ($$723948$i))|0;
- HEAP32[$699>>2] = $701;
- $702 = ((($$749$i)) + 8|0);
- $703 = $702;
- $704 = $703 & 7;
- $705 = ($704|0)==(0);
- $706 = (0 - ($703))|0;
- $707 = $706 & 7;
- $708 = $705 ? 0 : $707;
- $709 = (($$749$i) + ($708)|0);
- $710 = ((($689)) + 8|0);
- $711 = $710;
- $712 = $711 & 7;
- $713 = ($712|0)==(0);
- $714 = (0 - ($711))|0;
- $715 = $714 & 7;
- $716 = $713 ? 0 : $715;
- $717 = (($689) + ($716)|0);
- $718 = $717;
- $719 = $709;
- $720 = (($718) - ($719))|0;
- $721 = (($709) + ($$0197)|0);
- $722 = (($720) - ($$0197))|0;
- $723 = $$0197 | 3;
- $724 = ((($709)) + 4|0);
- HEAP32[$724>>2] = $723;
- $725 = ($717|0)==($630|0);
+ } else {
+ $$7$i = $$4230$i;$$7239$i = $$4236$i;
+ label = 194;
+ }
+ if ((label|0) == 194) {
+ $652 = ($$7$i|0)==((-1)|0);
+ if (!($652)) {
+ $653 = HEAP32[(35880)>>2]|0;
+ $654 = (($653) + ($$7239$i))|0;
+ HEAP32[(35880)>>2] = $654;
+ $655 = HEAP32[(35884)>>2]|0;
+ $656 = ($654>>>0)>($655>>>0);
+ if ($656) {
+ HEAP32[(35884)>>2] = $654;
+ }
+ $657 = HEAP32[(35472)>>2]|0;
+ $658 = ($657|0)==(0|0);
do {
- if ($725) {
- $726 = HEAP32[(33148)>>2]|0;
- $727 = (($726) + ($722))|0;
- HEAP32[(33148)>>2] = $727;
- HEAP32[(33160)>>2] = $721;
- $728 = $727 | 1;
- $729 = ((($721)) + 4|0);
- HEAP32[$729>>2] = $728;
+ if ($658) {
+ $659 = HEAP32[(35464)>>2]|0;
+ $660 = ($659|0)==(0|0);
+ $661 = ($$7$i>>>0)<($659>>>0);
+ $or$cond12$i = $660 | $661;
+ if ($or$cond12$i) {
+ HEAP32[(35464)>>2] = $$7$i;
+ }
+ HEAP32[(35924)>>2] = $$7$i;
+ HEAP32[(35928)>>2] = $$7239$i;
+ HEAP32[(35936)>>2] = 0;
+ $662 = HEAP32[8849]|0;
+ HEAP32[(35484)>>2] = $662;
+ HEAP32[(35480)>>2] = -1;
+ $$01$i$i = 0;
+ while(1) {
+ $663 = $$01$i$i << 1;
+ $664 = (35488 + ($663<<2)|0);
+ $665 = ((($664)) + 12|0);
+ HEAP32[$665>>2] = $664;
+ $666 = ((($664)) + 8|0);
+ HEAP32[$666>>2] = $664;
+ $667 = (($$01$i$i) + 1)|0;
+ $exitcond$i$i = ($667|0)==(32);
+ if ($exitcond$i$i) {
+ break;
+ } else {
+ $$01$i$i = $667;
+ }
+ }
+ $668 = (($$7239$i) + -40)|0;
+ $669 = ((($$7$i)) + 8|0);
+ $670 = $669;
+ $671 = $670 & 7;
+ $672 = ($671|0)==(0);
+ $673 = (0 - ($670))|0;
+ $674 = $673 & 7;
+ $675 = $672 ? 0 : $674;
+ $676 = (($$7$i) + ($675)|0);
+ $677 = (($668) - ($675))|0;
+ HEAP32[(35472)>>2] = $676;
+ HEAP32[(35460)>>2] = $677;
+ $678 = $677 | 1;
+ $679 = ((($676)) + 4|0);
+ HEAP32[$679>>2] = $678;
+ $680 = (($676) + ($677)|0);
+ $681 = ((($680)) + 4|0);
+ HEAP32[$681>>2] = 40;
+ $682 = HEAP32[(35412)>>2]|0;
+ HEAP32[(35476)>>2] = $682;
} else {
- $730 = HEAP32[(33156)>>2]|0;
- $731 = ($717|0)==($730|0);
- if ($731) {
- $732 = HEAP32[(33144)>>2]|0;
- $733 = (($732) + ($722))|0;
- HEAP32[(33144)>>2] = $733;
- HEAP32[(33156)>>2] = $721;
- $734 = $733 | 1;
- $735 = ((($721)) + 4|0);
- HEAP32[$735>>2] = $734;
- $736 = (($721) + ($733)|0);
- HEAP32[$736>>2] = $733;
- break;
+ $$024363$i = (35924);
+ while(1) {
+ $683 = HEAP32[$$024363$i>>2]|0;
+ $684 = ((($$024363$i)) + 4|0);
+ $685 = HEAP32[$684>>2]|0;
+ $686 = (($683) + ($685)|0);
+ $687 = ($$7$i|0)==($686|0);
+ if ($687) {
+ label = 205;
+ break;
+ }
+ $688 = ((($$024363$i)) + 8|0);
+ $689 = HEAP32[$688>>2]|0;
+ $690 = ($689|0)==(0|0);
+ if ($690) {
+ break;
+ } else {
+ $$024363$i = $689;
+ }
}
- $737 = ((($717)) + 4|0);
- $738 = HEAP32[$737>>2]|0;
- $739 = $738 & 3;
- $740 = ($739|0)==(1);
- if ($740) {
- $741 = $738 & -8;
- $742 = $738 >>> 3;
- $743 = ($738>>>0)<(256);
- L314: do {
- if ($743) {
- $744 = ((($717)) + 8|0);
- $745 = HEAP32[$744>>2]|0;
- $746 = ((($717)) + 12|0);
- $747 = HEAP32[$746>>2]|0;
- $748 = $742 << 1;
- $749 = (33176 + ($748<<2)|0);
- $750 = ($745|0)==($749|0);
- do {
- if (!($750)) {
- $751 = ($745>>>0)<($752>>>0);
- if ($751) {
- _abort();
- // unreachable;
- }
- $753 = ((($745)) + 12|0);
- $754 = HEAP32[$753>>2]|0;
- $755 = ($754|0)==($717|0);
- if ($755) {
- break;
- }
- _abort();
- // unreachable;
+ if ((label|0) == 205) {
+ $691 = ((($$024363$i)) + 12|0);
+ $692 = HEAP32[$691>>2]|0;
+ $693 = $692 & 8;
+ $694 = ($693|0)==(0);
+ if ($694) {
+ $695 = ($657>>>0)>=($683>>>0);
+ $696 = ($657>>>0)<($$7$i>>>0);
+ $or$cond43$i = $696 & $695;
+ if ($or$cond43$i) {
+ $697 = (($685) + ($$7239$i))|0;
+ HEAP32[$684>>2] = $697;
+ $698 = HEAP32[(35460)>>2]|0;
+ $699 = ((($657)) + 8|0);
+ $700 = $699;
+ $701 = $700 & 7;
+ $702 = ($701|0)==(0);
+ $703 = (0 - ($700))|0;
+ $704 = $703 & 7;
+ $705 = $702 ? 0 : $704;
+ $706 = (($657) + ($705)|0);
+ $707 = (($$7239$i) - ($705))|0;
+ $708 = (($698) + ($707))|0;
+ HEAP32[(35472)>>2] = $706;
+ HEAP32[(35460)>>2] = $708;
+ $709 = $708 | 1;
+ $710 = ((($706)) + 4|0);
+ HEAP32[$710>>2] = $709;
+ $711 = (($706) + ($708)|0);
+ $712 = ((($711)) + 4|0);
+ HEAP32[$712>>2] = 40;
+ $713 = HEAP32[(35412)>>2]|0;
+ HEAP32[(35476)>>2] = $713;
+ break;
+ }
+ }
+ }
+ $714 = HEAP32[(35464)>>2]|0;
+ $715 = ($$7$i>>>0)<($714>>>0);
+ if ($715) {
+ HEAP32[(35464)>>2] = $$7$i;
+ $779 = $$7$i;
+ } else {
+ $779 = $714;
+ }
+ $716 = (($$7$i) + ($$7239$i)|0);
+ $$124462$i = (35924);
+ while(1) {
+ $717 = HEAP32[$$124462$i>>2]|0;
+ $718 = ($717|0)==($716|0);
+ if ($718) {
+ label = 213;
+ break;
+ }
+ $719 = ((($$124462$i)) + 8|0);
+ $720 = HEAP32[$719>>2]|0;
+ $721 = ($720|0)==(0|0);
+ if ($721) {
+ break;
+ } else {
+ $$124462$i = $720;
+ }
+ }
+ if ((label|0) == 213) {
+ $722 = ((($$124462$i)) + 12|0);
+ $723 = HEAP32[$722>>2]|0;
+ $724 = $723 & 8;
+ $725 = ($724|0)==(0);
+ if ($725) {
+ HEAP32[$$124462$i>>2] = $$7$i;
+ $726 = ((($$124462$i)) + 4|0);
+ $727 = HEAP32[$726>>2]|0;
+ $728 = (($727) + ($$7239$i))|0;
+ HEAP32[$726>>2] = $728;
+ $729 = ((($$7$i)) + 8|0);
+ $730 = $729;
+ $731 = $730 & 7;
+ $732 = ($731|0)==(0);
+ $733 = (0 - ($730))|0;
+ $734 = $733 & 7;
+ $735 = $732 ? 0 : $734;
+ $736 = (($$7$i) + ($735)|0);
+ $737 = ((($716)) + 8|0);
+ $738 = $737;
+ $739 = $738 & 7;
+ $740 = ($739|0)==(0);
+ $741 = (0 - ($738))|0;
+ $742 = $741 & 7;
+ $743 = $740 ? 0 : $742;
+ $744 = (($716) + ($743)|0);
+ $745 = $744;
+ $746 = $736;
+ $747 = (($745) - ($746))|0;
+ $748 = (($736) + ($$0198)|0);
+ $749 = (($747) - ($$0198))|0;
+ $750 = $$0198 | 3;
+ $751 = ((($736)) + 4|0);
+ HEAP32[$751>>2] = $750;
+ $752 = ($744|0)==($657|0);
+ do {
+ if ($752) {
+ $753 = HEAP32[(35460)>>2]|0;
+ $754 = (($753) + ($749))|0;
+ HEAP32[(35460)>>2] = $754;
+ HEAP32[(35472)>>2] = $748;
+ $755 = $754 | 1;
+ $756 = ((($748)) + 4|0);
+ HEAP32[$756>>2] = $755;
+ } else {
+ $757 = HEAP32[(35468)>>2]|0;
+ $758 = ($744|0)==($757|0);
+ if ($758) {
+ $759 = HEAP32[(35456)>>2]|0;
+ $760 = (($759) + ($749))|0;
+ HEAP32[(35456)>>2] = $760;
+ HEAP32[(35468)>>2] = $748;
+ $761 = $760 | 1;
+ $762 = ((($748)) + 4|0);
+ HEAP32[$762>>2] = $761;
+ $763 = (($748) + ($760)|0);
+ HEAP32[$763>>2] = $760;
+ break;
}
- } while(0);
- $756 = ($747|0)==($745|0);
- if ($756) {
- $757 = 1 << $742;
- $758 = $757 ^ -1;
- $759 = HEAP32[8284]|0;
- $760 = $759 & $758;
- HEAP32[8284] = $760;
- break;
- }
- $761 = ($747|0)==($749|0);
- do {
- if ($761) {
- $$pre10$i$i = ((($747)) + 8|0);
- $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ $764 = ((($744)) + 4|0);
+ $765 = HEAP32[$764>>2]|0;
+ $766 = $765 & 3;
+ $767 = ($766|0)==(1);
+ if ($767) {
+ $768 = $765 & -8;
+ $769 = $765 >>> 3;
+ $770 = ($765>>>0)<(256);
+ L329: do {
+ if ($770) {
+ $771 = ((($744)) + 8|0);
+ $772 = HEAP32[$771>>2]|0;
+ $773 = ((($744)) + 12|0);
+ $774 = HEAP32[$773>>2]|0;
+ $775 = $769 << 1;
+ $776 = (35488 + ($775<<2)|0);
+ $777 = ($772|0)==($776|0);
+ do {
+ if (!($777)) {
+ $778 = ($772>>>0)<($779>>>0);
+ if ($778) {
+ _abort();
+ // unreachable;
+ }
+ $780 = ((($772)) + 12|0);
+ $781 = HEAP32[$780>>2]|0;
+ $782 = ($781|0)==($744|0);
+ if ($782) {
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $783 = ($774|0)==($772|0);
+ if ($783) {
+ $784 = 1 << $769;
+ $785 = $784 ^ -1;
+ $786 = HEAP32[8862]|0;
+ $787 = $786 & $785;
+ HEAP32[8862] = $787;
+ break;
+ }
+ $788 = ($774|0)==($776|0);
+ do {
+ if ($788) {
+ $$pre10$i$i = ((($774)) + 8|0);
+ $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ } else {
+ $789 = ($774>>>0)<($779>>>0);
+ if ($789) {
+ _abort();
+ // unreachable;
+ }
+ $790 = ((($774)) + 8|0);
+ $791 = HEAP32[$790>>2]|0;
+ $792 = ($791|0)==($744|0);
+ if ($792) {
+ $$pre$phi11$i$iZ2D = $790;
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $793 = ((($772)) + 12|0);
+ HEAP32[$793>>2] = $774;
+ HEAP32[$$pre$phi11$i$iZ2D>>2] = $772;
+ } else {
+ $794 = ((($744)) + 24|0);
+ $795 = HEAP32[$794>>2]|0;
+ $796 = ((($744)) + 12|0);
+ $797 = HEAP32[$796>>2]|0;
+ $798 = ($797|0)==($744|0);
+ do {
+ if ($798) {
+ $808 = ((($744)) + 16|0);
+ $809 = ((($808)) + 4|0);
+ $810 = HEAP32[$809>>2]|0;
+ $811 = ($810|0)==(0|0);
+ if ($811) {
+ $812 = HEAP32[$808>>2]|0;
+ $813 = ($812|0)==(0|0);
+ if ($813) {
+ $$3$i$i = 0;
+ break;
+ } else {
+ $$1291$i$i = $812;$$1293$i$i = $808;
+ }
+ } else {
+ $$1291$i$i = $810;$$1293$i$i = $809;
+ }
+ while(1) {
+ $814 = ((($$1291$i$i)) + 20|0);
+ $815 = HEAP32[$814>>2]|0;
+ $816 = ($815|0)==(0|0);
+ if (!($816)) {
+ $$1291$i$i = $815;$$1293$i$i = $814;
+ continue;
+ }
+ $817 = ((($$1291$i$i)) + 16|0);
+ $818 = HEAP32[$817>>2]|0;
+ $819 = ($818|0)==(0|0);
+ if ($819) {
+ break;
+ } else {
+ $$1291$i$i = $818;$$1293$i$i = $817;
+ }
+ }
+ $820 = ($$1293$i$i>>>0)<($779>>>0);
+ if ($820) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1293$i$i>>2] = 0;
+ $$3$i$i = $$1291$i$i;
+ break;
+ }
+ } else {
+ $799 = ((($744)) + 8|0);
+ $800 = HEAP32[$799>>2]|0;
+ $801 = ($800>>>0)<($779>>>0);
+ if ($801) {
+ _abort();
+ // unreachable;
+ }
+ $802 = ((($800)) + 12|0);
+ $803 = HEAP32[$802>>2]|0;
+ $804 = ($803|0)==($744|0);
+ if (!($804)) {
+ _abort();
+ // unreachable;
+ }
+ $805 = ((($797)) + 8|0);
+ $806 = HEAP32[$805>>2]|0;
+ $807 = ($806|0)==($744|0);
+ if ($807) {
+ HEAP32[$802>>2] = $797;
+ HEAP32[$805>>2] = $800;
+ $$3$i$i = $797;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $821 = ($795|0)==(0|0);
+ if ($821) {
+ break;
+ }
+ $822 = ((($744)) + 28|0);
+ $823 = HEAP32[$822>>2]|0;
+ $824 = (35752 + ($823<<2)|0);
+ $825 = HEAP32[$824>>2]|0;
+ $826 = ($744|0)==($825|0);
+ do {
+ if ($826) {
+ HEAP32[$824>>2] = $$3$i$i;
+ $cond$i$i = ($$3$i$i|0)==(0|0);
+ if (!($cond$i$i)) {
+ break;
+ }
+ $827 = 1 << $823;
+ $828 = $827 ^ -1;
+ $829 = HEAP32[(35452)>>2]|0;
+ $830 = $829 & $828;
+ HEAP32[(35452)>>2] = $830;
+ break L329;
+ } else {
+ $831 = HEAP32[(35464)>>2]|0;
+ $832 = ($795>>>0)<($831>>>0);
+ if ($832) {
+ _abort();
+ // unreachable;
+ } else {
+ $833 = ((($795)) + 16|0);
+ $834 = HEAP32[$833>>2]|0;
+ $not$$i$i = ($834|0)!=($744|0);
+ $$sink1$i$i = $not$$i$i&1;
+ $835 = (((($795)) + 16|0) + ($$sink1$i$i<<2)|0);
+ HEAP32[$835>>2] = $$3$i$i;
+ $836 = ($$3$i$i|0)==(0|0);
+ if ($836) {
+ break L329;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $837 = HEAP32[(35464)>>2]|0;
+ $838 = ($$3$i$i>>>0)<($837>>>0);
+ if ($838) {
+ _abort();
+ // unreachable;
+ }
+ $839 = ((($$3$i$i)) + 24|0);
+ HEAP32[$839>>2] = $795;
+ $840 = ((($744)) + 16|0);
+ $841 = HEAP32[$840>>2]|0;
+ $842 = ($841|0)==(0|0);
+ do {
+ if (!($842)) {
+ $843 = ($841>>>0)<($837>>>0);
+ if ($843) {
+ _abort();
+ // unreachable;
+ } else {
+ $844 = ((($$3$i$i)) + 16|0);
+ HEAP32[$844>>2] = $841;
+ $845 = ((($841)) + 24|0);
+ HEAP32[$845>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $846 = ((($840)) + 4|0);
+ $847 = HEAP32[$846>>2]|0;
+ $848 = ($847|0)==(0|0);
+ if ($848) {
+ break;
+ }
+ $849 = HEAP32[(35464)>>2]|0;
+ $850 = ($847>>>0)<($849>>>0);
+ if ($850) {
+ _abort();
+ // unreachable;
+ } else {
+ $851 = ((($$3$i$i)) + 20|0);
+ HEAP32[$851>>2] = $847;
+ $852 = ((($847)) + 24|0);
+ HEAP32[$852>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $853 = (($744) + ($768)|0);
+ $854 = (($768) + ($749))|0;
+ $$0$i17$i = $853;$$0287$i$i = $854;
} else {
- $762 = ($747>>>0)<($752>>>0);
- if ($762) {
- _abort();
- // unreachable;
- }
- $763 = ((($747)) + 8|0);
- $764 = HEAP32[$763>>2]|0;
- $765 = ($764|0)==($717|0);
- if ($765) {
- $$pre$phi11$i$iZ2D = $763;
- break;
- }
- _abort();
- // unreachable;
+ $$0$i17$i = $744;$$0287$i$i = $749;
}
- } while(0);
- $766 = ((($745)) + 12|0);
- HEAP32[$766>>2] = $747;
- HEAP32[$$pre$phi11$i$iZ2D>>2] = $745;
- } else {
- $767 = ((($717)) + 24|0);
- $768 = HEAP32[$767>>2]|0;
- $769 = ((($717)) + 12|0);
- $770 = HEAP32[$769>>2]|0;
- $771 = ($770|0)==($717|0);
- do {
- if ($771) {
- $781 = ((($717)) + 16|0);
- $782 = ((($781)) + 4|0);
- $783 = HEAP32[$782>>2]|0;
- $784 = ($783|0)==(0|0);
- if ($784) {
- $785 = HEAP32[$781>>2]|0;
- $786 = ($785|0)==(0|0);
- if ($786) {
- $$3$i$i = 0;
- break;
+ $855 = ((($$0$i17$i)) + 4|0);
+ $856 = HEAP32[$855>>2]|0;
+ $857 = $856 & -2;
+ HEAP32[$855>>2] = $857;
+ $858 = $$0287$i$i | 1;
+ $859 = ((($748)) + 4|0);
+ HEAP32[$859>>2] = $858;
+ $860 = (($748) + ($$0287$i$i)|0);
+ HEAP32[$860>>2] = $$0287$i$i;
+ $861 = $$0287$i$i >>> 3;
+ $862 = ($$0287$i$i>>>0)<(256);
+ if ($862) {
+ $863 = $861 << 1;
+ $864 = (35488 + ($863<<2)|0);
+ $865 = HEAP32[8862]|0;
+ $866 = 1 << $861;
+ $867 = $865 & $866;
+ $868 = ($867|0)==(0);
+ do {
+ if ($868) {
+ $869 = $865 | $866;
+ HEAP32[8862] = $869;
+ $$pre$i$i = ((($864)) + 8|0);
+ $$0295$i$i = $864;$$pre$phi$i$iZ2D = $$pre$i$i;
} else {
- $$1291$i$i = $785;$$1293$i$i = $781;
+ $870 = ((($864)) + 8|0);
+ $871 = HEAP32[$870>>2]|0;
+ $872 = HEAP32[(35464)>>2]|0;
+ $873 = ($871>>>0)<($872>>>0);
+ if (!($873)) {
+ $$0295$i$i = $871;$$pre$phi$i$iZ2D = $870;
+ break;
+ }
+ _abort();
+ // unreachable;
}
+ } while(0);
+ HEAP32[$$pre$phi$i$iZ2D>>2] = $748;
+ $874 = ((($$0295$i$i)) + 12|0);
+ HEAP32[$874>>2] = $748;
+ $875 = ((($748)) + 8|0);
+ HEAP32[$875>>2] = $$0295$i$i;
+ $876 = ((($748)) + 12|0);
+ HEAP32[$876>>2] = $864;
+ break;
+ }
+ $877 = $$0287$i$i >>> 8;
+ $878 = ($877|0)==(0);
+ do {
+ if ($878) {
+ $$0296$i$i = 0;
} else {
- $$1291$i$i = $783;$$1293$i$i = $782;
- }
- while(1) {
- $787 = ((($$1291$i$i)) + 20|0);
- $788 = HEAP32[$787>>2]|0;
- $789 = ($788|0)==(0|0);
- if (!($789)) {
- $$1291$i$i = $788;$$1293$i$i = $787;
- continue;
- }
- $790 = ((($$1291$i$i)) + 16|0);
- $791 = HEAP32[$790>>2]|0;
- $792 = ($791|0)==(0|0);
- if ($792) {
+ $879 = ($$0287$i$i>>>0)>(16777215);
+ if ($879) {
+ $$0296$i$i = 31;
break;
- } else {
- $$1291$i$i = $791;$$1293$i$i = $790;
}
+ $880 = (($877) + 1048320)|0;
+ $881 = $880 >>> 16;
+ $882 = $881 & 8;
+ $883 = $877 << $882;
+ $884 = (($883) + 520192)|0;
+ $885 = $884 >>> 16;
+ $886 = $885 & 4;
+ $887 = $886 | $882;
+ $888 = $883 << $886;
+ $889 = (($888) + 245760)|0;
+ $890 = $889 >>> 16;
+ $891 = $890 & 2;
+ $892 = $887 | $891;
+ $893 = (14 - ($892))|0;
+ $894 = $888 << $891;
+ $895 = $894 >>> 15;
+ $896 = (($893) + ($895))|0;
+ $897 = $896 << 1;
+ $898 = (($896) + 7)|0;
+ $899 = $$0287$i$i >>> $898;
+ $900 = $899 & 1;
+ $901 = $900 | $897;
+ $$0296$i$i = $901;
}
- $793 = ($$1293$i$i>>>0)<($752>>>0);
- if ($793) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1293$i$i>>2] = 0;
- $$3$i$i = $$1291$i$i;
+ } while(0);
+ $902 = (35752 + ($$0296$i$i<<2)|0);
+ $903 = ((($748)) + 28|0);
+ HEAP32[$903>>2] = $$0296$i$i;
+ $904 = ((($748)) + 16|0);
+ $905 = ((($904)) + 4|0);
+ HEAP32[$905>>2] = 0;
+ HEAP32[$904>>2] = 0;
+ $906 = HEAP32[(35452)>>2]|0;
+ $907 = 1 << $$0296$i$i;
+ $908 = $906 & $907;
+ $909 = ($908|0)==(0);
+ if ($909) {
+ $910 = $906 | $907;
+ HEAP32[(35452)>>2] = $910;
+ HEAP32[$902>>2] = $748;
+ $911 = ((($748)) + 24|0);
+ HEAP32[$911>>2] = $902;
+ $912 = ((($748)) + 12|0);
+ HEAP32[$912>>2] = $748;
+ $913 = ((($748)) + 8|0);
+ HEAP32[$913>>2] = $748;
+ break;
+ }
+ $914 = HEAP32[$902>>2]|0;
+ $915 = ($$0296$i$i|0)==(31);
+ $916 = $$0296$i$i >>> 1;
+ $917 = (25 - ($916))|0;
+ $918 = $915 ? 0 : $917;
+ $919 = $$0287$i$i << $918;
+ $$0288$i$i = $919;$$0289$i$i = $914;
+ while(1) {
+ $920 = ((($$0289$i$i)) + 4|0);
+ $921 = HEAP32[$920>>2]|0;
+ $922 = $921 & -8;
+ $923 = ($922|0)==($$0287$i$i|0);
+ if ($923) {
+ label = 280;
break;
}
- } else {
- $772 = ((($717)) + 8|0);
- $773 = HEAP32[$772>>2]|0;
- $774 = ($773>>>0)<($752>>>0);
- if ($774) {
- _abort();
- // unreachable;
- }
- $775 = ((($773)) + 12|0);
- $776 = HEAP32[$775>>2]|0;
- $777 = ($776|0)==($717|0);
- if (!($777)) {
- _abort();
- // unreachable;
- }
- $778 = ((($770)) + 8|0);
- $779 = HEAP32[$778>>2]|0;
- $780 = ($779|0)==($717|0);
- if ($780) {
- HEAP32[$775>>2] = $770;
- HEAP32[$778>>2] = $773;
- $$3$i$i = $770;
+ $924 = $$0288$i$i >>> 31;
+ $925 = (((($$0289$i$i)) + 16|0) + ($924<<2)|0);
+ $926 = $$0288$i$i << 1;
+ $927 = HEAP32[$925>>2]|0;
+ $928 = ($927|0)==(0|0);
+ if ($928) {
+ label = 277;
break;
} else {
- _abort();
- // unreachable;
+ $$0288$i$i = $926;$$0289$i$i = $927;
}
}
- } while(0);
- $794 = ($768|0)==(0|0);
- if ($794) {
- break;
- }
- $795 = ((($717)) + 28|0);
- $796 = HEAP32[$795>>2]|0;
- $797 = (33440 + ($796<<2)|0);
- $798 = HEAP32[$797>>2]|0;
- $799 = ($717|0)==($798|0);
- do {
- if ($799) {
- HEAP32[$797>>2] = $$3$i$i;
- $cond$i$i = ($$3$i$i|0)==(0|0);
- if (!($cond$i$i)) {
- break;
- }
- $800 = 1 << $796;
- $801 = $800 ^ -1;
- $802 = HEAP32[(33140)>>2]|0;
- $803 = $802 & $801;
- HEAP32[(33140)>>2] = $803;
- break L314;
- } else {
- $804 = HEAP32[(33152)>>2]|0;
- $805 = ($768>>>0)<($804>>>0);
- if ($805) {
+ if ((label|0) == 277) {
+ $929 = HEAP32[(35464)>>2]|0;
+ $930 = ($925>>>0)<($929>>>0);
+ if ($930) {
_abort();
// unreachable;
} else {
- $806 = ((($768)) + 16|0);
- $807 = HEAP32[$806>>2]|0;
- $not$$i17$i = ($807|0)!=($717|0);
- $$sink1$i$i = $not$$i17$i&1;
- $808 = (((($768)) + 16|0) + ($$sink1$i$i<<2)|0);
- HEAP32[$808>>2] = $$3$i$i;
- $809 = ($$3$i$i|0)==(0|0);
- if ($809) {
- break L314;
- } else {
- break;
- }
+ HEAP32[$925>>2] = $748;
+ $931 = ((($748)) + 24|0);
+ HEAP32[$931>>2] = $$0289$i$i;
+ $932 = ((($748)) + 12|0);
+ HEAP32[$932>>2] = $748;
+ $933 = ((($748)) + 8|0);
+ HEAP32[$933>>2] = $748;
+ break;
}
}
- } while(0);
- $810 = HEAP32[(33152)>>2]|0;
- $811 = ($$3$i$i>>>0)<($810>>>0);
- if ($811) {
- _abort();
- // unreachable;
- }
- $812 = ((($$3$i$i)) + 24|0);
- HEAP32[$812>>2] = $768;
- $813 = ((($717)) + 16|0);
- $814 = HEAP32[$813>>2]|0;
- $815 = ($814|0)==(0|0);
- do {
- if (!($815)) {
- $816 = ($814>>>0)<($810>>>0);
- if ($816) {
+ else if ((label|0) == 280) {
+ $934 = ((($$0289$i$i)) + 8|0);
+ $935 = HEAP32[$934>>2]|0;
+ $936 = HEAP32[(35464)>>2]|0;
+ $937 = ($935>>>0)>=($936>>>0);
+ $not$7$i$i = ($$0289$i$i>>>0)>=($936>>>0);
+ $938 = $937 & $not$7$i$i;
+ if ($938) {
+ $939 = ((($935)) + 12|0);
+ HEAP32[$939>>2] = $748;
+ HEAP32[$934>>2] = $748;
+ $940 = ((($748)) + 8|0);
+ HEAP32[$940>>2] = $935;
+ $941 = ((($748)) + 12|0);
+ HEAP32[$941>>2] = $$0289$i$i;
+ $942 = ((($748)) + 24|0);
+ HEAP32[$942>>2] = 0;
+ break;
+ } else {
_abort();
// unreachable;
- } else {
- $817 = ((($$3$i$i)) + 16|0);
- HEAP32[$817>>2] = $814;
- $818 = ((($814)) + 24|0);
- HEAP32[$818>>2] = $$3$i$i;
- break;
}
}
- } while(0);
- $819 = ((($813)) + 4|0);
- $820 = HEAP32[$819>>2]|0;
- $821 = ($820|0)==(0|0);
- if ($821) {
- break;
}
- $822 = HEAP32[(33152)>>2]|0;
- $823 = ($820>>>0)<($822>>>0);
- if ($823) {
+ } while(0);
+ $1074 = ((($736)) + 8|0);
+ $$2 = $1074;
+ break L230;
+ }
+ }
+ $$0$i$i$i = (35924);
+ while(1) {
+ $943 = HEAP32[$$0$i$i$i>>2]|0;
+ $944 = ($943>>>0)>($657>>>0);
+ if (!($944)) {
+ $945 = ((($$0$i$i$i)) + 4|0);
+ $946 = HEAP32[$945>>2]|0;
+ $947 = (($943) + ($946)|0);
+ $948 = ($947>>>0)>($657>>>0);
+ if ($948) {
+ break;
+ }
+ }
+ $949 = ((($$0$i$i$i)) + 8|0);
+ $950 = HEAP32[$949>>2]|0;
+ $$0$i$i$i = $950;
+ }
+ $951 = ((($947)) + -47|0);
+ $952 = ((($951)) + 8|0);
+ $953 = $952;
+ $954 = $953 & 7;
+ $955 = ($954|0)==(0);
+ $956 = (0 - ($953))|0;
+ $957 = $956 & 7;
+ $958 = $955 ? 0 : $957;
+ $959 = (($951) + ($958)|0);
+ $960 = ((($657)) + 16|0);
+ $961 = ($959>>>0)<($960>>>0);
+ $962 = $961 ? $657 : $959;
+ $963 = ((($962)) + 8|0);
+ $964 = ((($962)) + 24|0);
+ $965 = (($$7239$i) + -40)|0;
+ $966 = ((($$7$i)) + 8|0);
+ $967 = $966;
+ $968 = $967 & 7;
+ $969 = ($968|0)==(0);
+ $970 = (0 - ($967))|0;
+ $971 = $970 & 7;
+ $972 = $969 ? 0 : $971;
+ $973 = (($$7$i) + ($972)|0);
+ $974 = (($965) - ($972))|0;
+ HEAP32[(35472)>>2] = $973;
+ HEAP32[(35460)>>2] = $974;
+ $975 = $974 | 1;
+ $976 = ((($973)) + 4|0);
+ HEAP32[$976>>2] = $975;
+ $977 = (($973) + ($974)|0);
+ $978 = ((($977)) + 4|0);
+ HEAP32[$978>>2] = 40;
+ $979 = HEAP32[(35412)>>2]|0;
+ HEAP32[(35476)>>2] = $979;
+ $980 = ((($962)) + 4|0);
+ HEAP32[$980>>2] = 27;
+ ;HEAP32[$963>>2]=HEAP32[(35924)>>2]|0;HEAP32[$963+4>>2]=HEAP32[(35924)+4>>2]|0;HEAP32[$963+8>>2]=HEAP32[(35924)+8>>2]|0;HEAP32[$963+12>>2]=HEAP32[(35924)+12>>2]|0;
+ HEAP32[(35924)>>2] = $$7$i;
+ HEAP32[(35928)>>2] = $$7239$i;
+ HEAP32[(35936)>>2] = 0;
+ HEAP32[(35932)>>2] = $963;
+ $982 = $964;
+ while(1) {
+ $981 = ((($982)) + 4|0);
+ HEAP32[$981>>2] = 7;
+ $983 = ((($982)) + 8|0);
+ $984 = ($983>>>0)<($947>>>0);
+ if ($984) {
+ $982 = $981;
+ } else {
+ break;
+ }
+ }
+ $985 = ($962|0)==($657|0);
+ if (!($985)) {
+ $986 = $962;
+ $987 = $657;
+ $988 = (($986) - ($987))|0;
+ $989 = HEAP32[$980>>2]|0;
+ $990 = $989 & -2;
+ HEAP32[$980>>2] = $990;
+ $991 = $988 | 1;
+ $992 = ((($657)) + 4|0);
+ HEAP32[$992>>2] = $991;
+ HEAP32[$962>>2] = $988;
+ $993 = $988 >>> 3;
+ $994 = ($988>>>0)<(256);
+ if ($994) {
+ $995 = $993 << 1;
+ $996 = (35488 + ($995<<2)|0);
+ $997 = HEAP32[8862]|0;
+ $998 = 1 << $993;
+ $999 = $997 & $998;
+ $1000 = ($999|0)==(0);
+ do {
+ if ($1000) {
+ $1001 = $997 | $998;
+ HEAP32[8862] = $1001;
+ $$pre$i18$i = ((($996)) + 8|0);
+ $$0211$i$i = $996;$$pre$phi$i19$iZ2D = $$pre$i18$i;
+ } else {
+ $1002 = ((($996)) + 8|0);
+ $1003 = HEAP32[$1002>>2]|0;
+ $1004 = HEAP32[(35464)>>2]|0;
+ $1005 = ($1003>>>0)<($1004>>>0);
+ if (!($1005)) {
+ $$0211$i$i = $1003;$$pre$phi$i19$iZ2D = $1002;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $824 = ((($$3$i$i)) + 20|0);
- HEAP32[$824>>2] = $820;
- $825 = ((($820)) + 24|0);
- HEAP32[$825>>2] = $$3$i$i;
- break;
}
- }
- } while(0);
- $826 = (($717) + ($741)|0);
- $827 = (($741) + ($722))|0;
- $$0$i18$i = $826;$$0287$i$i = $827;
- } else {
- $$0$i18$i = $717;$$0287$i$i = $722;
- }
- $828 = ((($$0$i18$i)) + 4|0);
- $829 = HEAP32[$828>>2]|0;
- $830 = $829 & -2;
- HEAP32[$828>>2] = $830;
- $831 = $$0287$i$i | 1;
- $832 = ((($721)) + 4|0);
- HEAP32[$832>>2] = $831;
- $833 = (($721) + ($$0287$i$i)|0);
- HEAP32[$833>>2] = $$0287$i$i;
- $834 = $$0287$i$i >>> 3;
- $835 = ($$0287$i$i>>>0)<(256);
- if ($835) {
- $836 = $834 << 1;
- $837 = (33176 + ($836<<2)|0);
- $838 = HEAP32[8284]|0;
- $839 = 1 << $834;
- $840 = $838 & $839;
- $841 = ($840|0)==(0);
+ } while(0);
+ HEAP32[$$pre$phi$i19$iZ2D>>2] = $657;
+ $1006 = ((($$0211$i$i)) + 12|0);
+ HEAP32[$1006>>2] = $657;
+ $1007 = ((($657)) + 8|0);
+ HEAP32[$1007>>2] = $$0211$i$i;
+ $1008 = ((($657)) + 12|0);
+ HEAP32[$1008>>2] = $996;
+ break;
+ }
+ $1009 = $988 >>> 8;
+ $1010 = ($1009|0)==(0);
do {
- if ($841) {
- $842 = $838 | $839;
- HEAP32[8284] = $842;
- $$pre$i19$i = ((($837)) + 8|0);
- $$0295$i$i = $837;$$pre$phi$i20$iZ2D = $$pre$i19$i;
+ if ($1010) {
+ $$0212$i$i = 0;
} else {
- $843 = ((($837)) + 8|0);
- $844 = HEAP32[$843>>2]|0;
- $845 = HEAP32[(33152)>>2]|0;
- $846 = ($844>>>0)<($845>>>0);
- if (!($846)) {
- $$0295$i$i = $844;$$pre$phi$i20$iZ2D = $843;
+ $1011 = ($988>>>0)>(16777215);
+ if ($1011) {
+ $$0212$i$i = 31;
break;
}
- _abort();
- // unreachable;
+ $1012 = (($1009) + 1048320)|0;
+ $1013 = $1012 >>> 16;
+ $1014 = $1013 & 8;
+ $1015 = $1009 << $1014;
+ $1016 = (($1015) + 520192)|0;
+ $1017 = $1016 >>> 16;
+ $1018 = $1017 & 4;
+ $1019 = $1018 | $1014;
+ $1020 = $1015 << $1018;
+ $1021 = (($1020) + 245760)|0;
+ $1022 = $1021 >>> 16;
+ $1023 = $1022 & 2;
+ $1024 = $1019 | $1023;
+ $1025 = (14 - ($1024))|0;
+ $1026 = $1020 << $1023;
+ $1027 = $1026 >>> 15;
+ $1028 = (($1025) + ($1027))|0;
+ $1029 = $1028 << 1;
+ $1030 = (($1028) + 7)|0;
+ $1031 = $988 >>> $1030;
+ $1032 = $1031 & 1;
+ $1033 = $1032 | $1029;
+ $$0212$i$i = $1033;
}
} while(0);
- HEAP32[$$pre$phi$i20$iZ2D>>2] = $721;
- $847 = ((($$0295$i$i)) + 12|0);
- HEAP32[$847>>2] = $721;
- $848 = ((($721)) + 8|0);
- HEAP32[$848>>2] = $$0295$i$i;
- $849 = ((($721)) + 12|0);
- HEAP32[$849>>2] = $837;
- break;
- }
- $850 = $$0287$i$i >>> 8;
- $851 = ($850|0)==(0);
- do {
- if ($851) {
- $$0296$i$i = 0;
- } else {
- $852 = ($$0287$i$i>>>0)>(16777215);
- if ($852) {
- $$0296$i$i = 31;
- break;
- }
- $853 = (($850) + 1048320)|0;
- $854 = $853 >>> 16;
- $855 = $854 & 8;
- $856 = $850 << $855;
- $857 = (($856) + 520192)|0;
- $858 = $857 >>> 16;
- $859 = $858 & 4;
- $860 = $859 | $855;
- $861 = $856 << $859;
- $862 = (($861) + 245760)|0;
- $863 = $862 >>> 16;
- $864 = $863 & 2;
- $865 = $860 | $864;
- $866 = (14 - ($865))|0;
- $867 = $861 << $864;
- $868 = $867 >>> 15;
- $869 = (($866) + ($868))|0;
- $870 = $869 << 1;
- $871 = (($869) + 7)|0;
- $872 = $$0287$i$i >>> $871;
- $873 = $872 & 1;
- $874 = $873 | $870;
- $$0296$i$i = $874;
- }
- } while(0);
- $875 = (33440 + ($$0296$i$i<<2)|0);
- $876 = ((($721)) + 28|0);
- HEAP32[$876>>2] = $$0296$i$i;
- $877 = ((($721)) + 16|0);
- $878 = ((($877)) + 4|0);
- HEAP32[$878>>2] = 0;
- HEAP32[$877>>2] = 0;
- $879 = HEAP32[(33140)>>2]|0;
- $880 = 1 << $$0296$i$i;
- $881 = $879 & $880;
- $882 = ($881|0)==(0);
- if ($882) {
- $883 = $879 | $880;
- HEAP32[(33140)>>2] = $883;
- HEAP32[$875>>2] = $721;
- $884 = ((($721)) + 24|0);
- HEAP32[$884>>2] = $875;
- $885 = ((($721)) + 12|0);
- HEAP32[$885>>2] = $721;
- $886 = ((($721)) + 8|0);
- HEAP32[$886>>2] = $721;
- break;
- }
- $887 = HEAP32[$875>>2]|0;
- $888 = ($$0296$i$i|0)==(31);
- $889 = $$0296$i$i >>> 1;
- $890 = (25 - ($889))|0;
- $891 = $888 ? 0 : $890;
- $892 = $$0287$i$i << $891;
- $$0288$i$i = $892;$$0289$i$i = $887;
- while(1) {
- $893 = ((($$0289$i$i)) + 4|0);
- $894 = HEAP32[$893>>2]|0;
- $895 = $894 & -8;
- $896 = ($895|0)==($$0287$i$i|0);
- if ($896) {
- label = 265;
+ $1034 = (35752 + ($$0212$i$i<<2)|0);
+ $1035 = ((($657)) + 28|0);
+ HEAP32[$1035>>2] = $$0212$i$i;
+ $1036 = ((($657)) + 20|0);
+ HEAP32[$1036>>2] = 0;
+ HEAP32[$960>>2] = 0;
+ $1037 = HEAP32[(35452)>>2]|0;
+ $1038 = 1 << $$0212$i$i;
+ $1039 = $1037 & $1038;
+ $1040 = ($1039|0)==(0);
+ if ($1040) {
+ $1041 = $1037 | $1038;
+ HEAP32[(35452)>>2] = $1041;
+ HEAP32[$1034>>2] = $657;
+ $1042 = ((($657)) + 24|0);
+ HEAP32[$1042>>2] = $1034;
+ $1043 = ((($657)) + 12|0);
+ HEAP32[$1043>>2] = $657;
+ $1044 = ((($657)) + 8|0);
+ HEAP32[$1044>>2] = $657;
break;
}
- $897 = $$0288$i$i >>> 31;
- $898 = (((($$0289$i$i)) + 16|0) + ($897<<2)|0);
- $899 = $$0288$i$i << 1;
- $900 = HEAP32[$898>>2]|0;
- $901 = ($900|0)==(0|0);
- if ($901) {
- label = 262;
- break;
- } else {
- $$0288$i$i = $899;$$0289$i$i = $900;
+ $1045 = HEAP32[$1034>>2]|0;
+ $1046 = ($$0212$i$i|0)==(31);
+ $1047 = $$0212$i$i >>> 1;
+ $1048 = (25 - ($1047))|0;
+ $1049 = $1046 ? 0 : $1048;
+ $1050 = $988 << $1049;
+ $$0206$i$i = $1050;$$0207$i$i = $1045;
+ while(1) {
+ $1051 = ((($$0207$i$i)) + 4|0);
+ $1052 = HEAP32[$1051>>2]|0;
+ $1053 = $1052 & -8;
+ $1054 = ($1053|0)==($988|0);
+ if ($1054) {
+ label = 307;
+ break;
+ }
+ $1055 = $$0206$i$i >>> 31;
+ $1056 = (((($$0207$i$i)) + 16|0) + ($1055<<2)|0);
+ $1057 = $$0206$i$i << 1;
+ $1058 = HEAP32[$1056>>2]|0;
+ $1059 = ($1058|0)==(0|0);
+ if ($1059) {
+ label = 304;
+ break;
+ } else {
+ $$0206$i$i = $1057;$$0207$i$i = $1058;
+ }
}
- }
- if ((label|0) == 262) {
- $902 = HEAP32[(33152)>>2]|0;
- $903 = ($898>>>0)<($902>>>0);
- if ($903) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$898>>2] = $721;
- $904 = ((($721)) + 24|0);
- HEAP32[$904>>2] = $$0289$i$i;
- $905 = ((($721)) + 12|0);
- HEAP32[$905>>2] = $721;
- $906 = ((($721)) + 8|0);
- HEAP32[$906>>2] = $721;
- break;
+ if ((label|0) == 304) {
+ $1060 = HEAP32[(35464)>>2]|0;
+ $1061 = ($1056>>>0)<($1060>>>0);
+ if ($1061) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$1056>>2] = $657;
+ $1062 = ((($657)) + 24|0);
+ HEAP32[$1062>>2] = $$0207$i$i;
+ $1063 = ((($657)) + 12|0);
+ HEAP32[$1063>>2] = $657;
+ $1064 = ((($657)) + 8|0);
+ HEAP32[$1064>>2] = $657;
+ break;
+ }
}
- }
- else if ((label|0) == 265) {
- $907 = ((($$0289$i$i)) + 8|0);
- $908 = HEAP32[$907>>2]|0;
- $909 = HEAP32[(33152)>>2]|0;
- $910 = ($908>>>0)>=($909>>>0);
- $not$7$i$i = ($$0289$i$i>>>0)>=($909>>>0);
- $911 = $910 & $not$7$i$i;
- if ($911) {
- $912 = ((($908)) + 12|0);
- HEAP32[$912>>2] = $721;
- HEAP32[$907>>2] = $721;
- $913 = ((($721)) + 8|0);
- HEAP32[$913>>2] = $908;
- $914 = ((($721)) + 12|0);
- HEAP32[$914>>2] = $$0289$i$i;
- $915 = ((($721)) + 24|0);
- HEAP32[$915>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
+ else if ((label|0) == 307) {
+ $1065 = ((($$0207$i$i)) + 8|0);
+ $1066 = HEAP32[$1065>>2]|0;
+ $1067 = HEAP32[(35464)>>2]|0;
+ $1068 = ($1066>>>0)>=($1067>>>0);
+ $not$$i21$i = ($$0207$i$i>>>0)>=($1067>>>0);
+ $1069 = $1068 & $not$$i21$i;
+ if ($1069) {
+ $1070 = ((($1066)) + 12|0);
+ HEAP32[$1070>>2] = $657;
+ HEAP32[$1065>>2] = $657;
+ $1071 = ((($657)) + 8|0);
+ HEAP32[$1071>>2] = $1066;
+ $1072 = ((($657)) + 12|0);
+ HEAP32[$1072>>2] = $$0207$i$i;
+ $1073 = ((($657)) + 24|0);
+ HEAP32[$1073>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
}
}
}
} while(0);
- $1047 = ((($709)) + 8|0);
- $$0 = $1047;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $$0$i$i$i = (33584);
- while(1) {
- $916 = HEAP32[$$0$i$i$i>>2]|0;
- $917 = ($916>>>0)>($630>>>0);
- if (!($917)) {
- $918 = ((($$0$i$i$i)) + 4|0);
- $919 = HEAP32[$918>>2]|0;
- $920 = (($916) + ($919)|0);
- $921 = ($920>>>0)>($630>>>0);
- if ($921) {
+ $1075 = HEAP32[(35460)>>2]|0;
+ $1076 = ($1075>>>0)>($$0198>>>0);
+ if ($1076) {
+ $1077 = (($1075) - ($$0198))|0;
+ HEAP32[(35460)>>2] = $1077;
+ $1078 = HEAP32[(35472)>>2]|0;
+ $1079 = (($1078) + ($$0198)|0);
+ HEAP32[(35472)>>2] = $1079;
+ $1080 = $1077 | 1;
+ $1081 = ((($1079)) + 4|0);
+ HEAP32[$1081>>2] = $1080;
+ $1082 = $$0198 | 3;
+ $1083 = ((($1078)) + 4|0);
+ HEAP32[$1083>>2] = $1082;
+ $1084 = ((($1078)) + 8|0);
+ $$2 = $1084;
break;
}
}
- $922 = ((($$0$i$i$i)) + 8|0);
- $923 = HEAP32[$922>>2]|0;
- $$0$i$i$i = $923;
- }
- $924 = ((($920)) + -47|0);
- $925 = ((($924)) + 8|0);
- $926 = $925;
- $927 = $926 & 7;
- $928 = ($927|0)==(0);
- $929 = (0 - ($926))|0;
- $930 = $929 & 7;
- $931 = $928 ? 0 : $930;
- $932 = (($924) + ($931)|0);
- $933 = ((($630)) + 16|0);
- $934 = ($932>>>0)<($933>>>0);
- $935 = $934 ? $630 : $932;
- $936 = ((($935)) + 8|0);
- $937 = ((($935)) + 24|0);
- $938 = (($$723948$i) + -40)|0;
- $939 = ((($$749$i)) + 8|0);
- $940 = $939;
- $941 = $940 & 7;
- $942 = ($941|0)==(0);
- $943 = (0 - ($940))|0;
- $944 = $943 & 7;
- $945 = $942 ? 0 : $944;
- $946 = (($$749$i) + ($945)|0);
- $947 = (($938) - ($945))|0;
- HEAP32[(33160)>>2] = $946;
- HEAP32[(33148)>>2] = $947;
- $948 = $947 | 1;
- $949 = ((($946)) + 4|0);
- HEAP32[$949>>2] = $948;
- $950 = (($946) + ($947)|0);
- $951 = ((($950)) + 4|0);
- HEAP32[$951>>2] = 40;
- $952 = HEAP32[(33624)>>2]|0;
- HEAP32[(33164)>>2] = $952;
- $953 = ((($935)) + 4|0);
- HEAP32[$953>>2] = 27;
- ;HEAP32[$936>>2]=HEAP32[(33584)>>2]|0;HEAP32[$936+4>>2]=HEAP32[(33584)+4>>2]|0;HEAP32[$936+8>>2]=HEAP32[(33584)+8>>2]|0;HEAP32[$936+12>>2]=HEAP32[(33584)+12>>2]|0;
- HEAP32[(33584)>>2] = $$749$i;
- HEAP32[(33588)>>2] = $$723948$i;
- HEAP32[(33596)>>2] = 0;
- HEAP32[(33592)>>2] = $936;
- $955 = $937;
- while(1) {
- $954 = ((($955)) + 4|0);
- HEAP32[$954>>2] = 7;
- $956 = ((($955)) + 8|0);
- $957 = ($956>>>0)<($920>>>0);
- if ($957) {
- $955 = $954;
- } else {
- break;
- }
- }
- $958 = ($935|0)==($630|0);
- if (!($958)) {
- $959 = $935;
- $960 = $630;
- $961 = (($959) - ($960))|0;
- $962 = HEAP32[$953>>2]|0;
- $963 = $962 & -2;
- HEAP32[$953>>2] = $963;
- $964 = $961 | 1;
- $965 = ((($630)) + 4|0);
- HEAP32[$965>>2] = $964;
- HEAP32[$935>>2] = $961;
- $966 = $961 >>> 3;
- $967 = ($961>>>0)<(256);
- if ($967) {
- $968 = $966 << 1;
- $969 = (33176 + ($968<<2)|0);
- $970 = HEAP32[8284]|0;
- $971 = 1 << $966;
- $972 = $970 & $971;
- $973 = ($972|0)==(0);
- if ($973) {
- $974 = $970 | $971;
- HEAP32[8284] = $974;
- $$pre$i$i = ((($969)) + 8|0);
- $$0211$i$i = $969;$$pre$phi$i$iZ2D = $$pre$i$i;
- } else {
- $975 = ((($969)) + 8|0);
- $976 = HEAP32[$975>>2]|0;
- $977 = HEAP32[(33152)>>2]|0;
- $978 = ($976>>>0)<($977>>>0);
- if ($978) {
- _abort();
- // unreachable;
- } else {
- $$0211$i$i = $976;$$pre$phi$i$iZ2D = $975;
- }
- }
- HEAP32[$$pre$phi$i$iZ2D>>2] = $630;
- $979 = ((($$0211$i$i)) + 12|0);
- HEAP32[$979>>2] = $630;
- $980 = ((($630)) + 8|0);
- HEAP32[$980>>2] = $$0211$i$i;
- $981 = ((($630)) + 12|0);
- HEAP32[$981>>2] = $969;
- break;
- }
- $982 = $961 >>> 8;
- $983 = ($982|0)==(0);
- if ($983) {
- $$0212$i$i = 0;
- } else {
- $984 = ($961>>>0)>(16777215);
- if ($984) {
- $$0212$i$i = 31;
- } else {
- $985 = (($982) + 1048320)|0;
- $986 = $985 >>> 16;
- $987 = $986 & 8;
- $988 = $982 << $987;
- $989 = (($988) + 520192)|0;
- $990 = $989 >>> 16;
- $991 = $990 & 4;
- $992 = $991 | $987;
- $993 = $988 << $991;
- $994 = (($993) + 245760)|0;
- $995 = $994 >>> 16;
- $996 = $995 & 2;
- $997 = $992 | $996;
- $998 = (14 - ($997))|0;
- $999 = $993 << $996;
- $1000 = $999 >>> 15;
- $1001 = (($998) + ($1000))|0;
- $1002 = $1001 << 1;
- $1003 = (($1001) + 7)|0;
- $1004 = $961 >>> $1003;
- $1005 = $1004 & 1;
- $1006 = $1005 | $1002;
- $$0212$i$i = $1006;
- }
- }
- $1007 = (33440 + ($$0212$i$i<<2)|0);
- $1008 = ((($630)) + 28|0);
- HEAP32[$1008>>2] = $$0212$i$i;
- $1009 = ((($630)) + 20|0);
- HEAP32[$1009>>2] = 0;
- HEAP32[$933>>2] = 0;
- $1010 = HEAP32[(33140)>>2]|0;
- $1011 = 1 << $$0212$i$i;
- $1012 = $1010 & $1011;
- $1013 = ($1012|0)==(0);
- if ($1013) {
- $1014 = $1010 | $1011;
- HEAP32[(33140)>>2] = $1014;
- HEAP32[$1007>>2] = $630;
- $1015 = ((($630)) + 24|0);
- HEAP32[$1015>>2] = $1007;
- $1016 = ((($630)) + 12|0);
- HEAP32[$1016>>2] = $630;
- $1017 = ((($630)) + 8|0);
- HEAP32[$1017>>2] = $630;
- break;
- }
- $1018 = HEAP32[$1007>>2]|0;
- $1019 = ($$0212$i$i|0)==(31);
- $1020 = $$0212$i$i >>> 1;
- $1021 = (25 - ($1020))|0;
- $1022 = $1019 ? 0 : $1021;
- $1023 = $961 << $1022;
- $$0206$i$i = $1023;$$0207$i$i = $1018;
- while(1) {
- $1024 = ((($$0207$i$i)) + 4|0);
- $1025 = HEAP32[$1024>>2]|0;
- $1026 = $1025 & -8;
- $1027 = ($1026|0)==($961|0);
- if ($1027) {
- label = 292;
- break;
- }
- $1028 = $$0206$i$i >>> 31;
- $1029 = (((($$0207$i$i)) + 16|0) + ($1028<<2)|0);
- $1030 = $$0206$i$i << 1;
- $1031 = HEAP32[$1029>>2]|0;
- $1032 = ($1031|0)==(0|0);
- if ($1032) {
- label = 289;
- break;
- } else {
- $$0206$i$i = $1030;$$0207$i$i = $1031;
- }
- }
- if ((label|0) == 289) {
- $1033 = HEAP32[(33152)>>2]|0;
- $1034 = ($1029>>>0)<($1033>>>0);
- if ($1034) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$1029>>2] = $630;
- $1035 = ((($630)) + 24|0);
- HEAP32[$1035>>2] = $$0207$i$i;
- $1036 = ((($630)) + 12|0);
- HEAP32[$1036>>2] = $630;
- $1037 = ((($630)) + 8|0);
- HEAP32[$1037>>2] = $630;
- break;
- }
- }
- else if ((label|0) == 292) {
- $1038 = ((($$0207$i$i)) + 8|0);
- $1039 = HEAP32[$1038>>2]|0;
- $1040 = HEAP32[(33152)>>2]|0;
- $1041 = ($1039>>>0)>=($1040>>>0);
- $not$$i$i = ($$0207$i$i>>>0)>=($1040>>>0);
- $1042 = $1041 & $not$$i$i;
- if ($1042) {
- $1043 = ((($1039)) + 12|0);
- HEAP32[$1043>>2] = $630;
- HEAP32[$1038>>2] = $630;
- $1044 = ((($630)) + 8|0);
- HEAP32[$1044>>2] = $1039;
- $1045 = ((($630)) + 12|0);
- HEAP32[$1045>>2] = $$0207$i$i;
- $1046 = ((($630)) + 24|0);
- HEAP32[$1046>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
}
+ $1085 = (___errno_location()|0);
+ HEAP32[$1085>>2] = 12;
+ $$2 = 0;
+ } else {
+ $$2 = 0;
}
- } while(0);
- $1048 = HEAP32[(33148)>>2]|0;
- $1049 = ($1048>>>0)>($$0197>>>0);
- if ($1049) {
- $1050 = (($1048) - ($$0197))|0;
- HEAP32[(33148)>>2] = $1050;
- $1051 = HEAP32[(33160)>>2]|0;
- $1052 = (($1051) + ($$0197)|0);
- HEAP32[(33160)>>2] = $1052;
- $1053 = $1050 | 1;
- $1054 = ((($1052)) + 4|0);
- HEAP32[$1054>>2] = $1053;
- $1055 = $$0197 | 3;
- $1056 = ((($1051)) + 4|0);
- HEAP32[$1056>>2] = $1055;
- $1057 = ((($1051)) + 8|0);
- $$0 = $1057;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $1058 = (___errno_location()|0);
- HEAP32[$1058>>2] = 12;
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
+ }
+ } while(0);
+ $1086 = HEAP32[(35892)>>2]|0;
+ $1087 = $1086 & 2;
+ $1088 = ($1087|0)==(0);
+ if ($1088) {
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
+ }
+ (___pthread_mutex_unlock((35896))|0);
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
}
function _free($0) {
$0 = $0|0;
@@ -26073,488 +32415,213 @@ function _free($0) {
var $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0;
var $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0;
var $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0;
- var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
- var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0;
- var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0;
- var $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0;
- var $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
+ var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = ($0|0)==(0|0);
if ($1) {
return;
}
$2 = ((($0)) + -8|0);
- $3 = HEAP32[(33152)>>2]|0;
- $4 = ($2>>>0)<($3>>>0);
- if ($4) {
+ $3 = HEAP32[(35892)>>2]|0;
+ $4 = $3 & 2;
+ $5 = ($4|0)==(0);
+ if (!($5)) {
+ $6 = (___pthread_mutex_lock((35896))|0);
+ $7 = ($6|0)==(0);
+ if (!($7)) {
+ return;
+ }
+ }
+ $8 = HEAP32[(35464)>>2]|0;
+ $9 = ($2>>>0)<($8>>>0);
+ if ($9) {
_abort();
// unreachable;
}
- $5 = ((($0)) + -4|0);
- $6 = HEAP32[$5>>2]|0;
- $7 = $6 & 3;
- $8 = ($7|0)==(1);
- if ($8) {
+ $10 = ((($0)) + -4|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = $11 & 3;
+ $13 = ($12|0)==(1);
+ if ($13) {
_abort();
// unreachable;
}
- $9 = $6 & -8;
- $10 = (($2) + ($9)|0);
- $11 = $6 & 1;
- $12 = ($11|0)==(0);
- L10: do {
- if ($12) {
- $13 = HEAP32[$2>>2]|0;
- $14 = ($7|0)==(0);
- if ($14) {
- return;
- }
- $15 = (0 - ($13))|0;
- $16 = (($2) + ($15)|0);
- $17 = (($13) + ($9))|0;
- $18 = ($16>>>0)<($3>>>0);
- if ($18) {
- _abort();
- // unreachable;
- }
- $19 = HEAP32[(33156)>>2]|0;
- $20 = ($16|0)==($19|0);
- if ($20) {
- $104 = ((($10)) + 4|0);
- $105 = HEAP32[$104>>2]|0;
- $106 = $105 & 3;
- $107 = ($106|0)==(3);
- if (!($107)) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
+ $14 = $11 & -8;
+ $15 = (($2) + ($14)|0);
+ $16 = $11 & 1;
+ $17 = ($16|0)==(0);
+ L14: do {
+ if ($17) {
+ $18 = HEAP32[$2>>2]|0;
+ $19 = ($12|0)==(0);
+ if (!($19)) {
+ $20 = (0 - ($18))|0;
+ $21 = (($2) + ($20)|0);
+ $22 = (($18) + ($14))|0;
+ $23 = ($21>>>0)<($8>>>0);
+ if ($23) {
+ _abort();
+ // unreachable;
}
- $108 = (($16) + ($17)|0);
- $109 = ((($16)) + 4|0);
- $110 = $17 | 1;
- $111 = $105 & -2;
- HEAP32[(33144)>>2] = $17;
- HEAP32[$104>>2] = $111;
- HEAP32[$109>>2] = $110;
- HEAP32[$108>>2] = $17;
- return;
- }
- $21 = $13 >>> 3;
- $22 = ($13>>>0)<(256);
- if ($22) {
- $23 = ((($16)) + 8|0);
- $24 = HEAP32[$23>>2]|0;
- $25 = ((($16)) + 12|0);
- $26 = HEAP32[$25>>2]|0;
- $27 = $21 << 1;
- $28 = (33176 + ($27<<2)|0);
- $29 = ($24|0)==($28|0);
- if (!($29)) {
- $30 = ($24>>>0)<($3>>>0);
- if ($30) {
- _abort();
- // unreachable;
- }
- $31 = ((($24)) + 12|0);
- $32 = HEAP32[$31>>2]|0;
- $33 = ($32|0)==($16|0);
- if (!($33)) {
- _abort();
- // unreachable;
+ $24 = HEAP32[(35468)>>2]|0;
+ $25 = ($21|0)==($24|0);
+ if ($25) {
+ $109 = ((($15)) + 4|0);
+ $110 = HEAP32[$109>>2]|0;
+ $111 = $110 & 3;
+ $112 = ($111|0)==(3);
+ if (!($112)) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break;
}
- }
- $34 = ($26|0)==($24|0);
- if ($34) {
- $35 = 1 << $21;
- $36 = $35 ^ -1;
- $37 = HEAP32[8284]|0;
- $38 = $37 & $36;
- HEAP32[8284] = $38;
- $$1 = $16;$$1382 = $17;$113 = $16;
+ $113 = (($21) + ($22)|0);
+ $114 = ((($21)) + 4|0);
+ $115 = $22 | 1;
+ $116 = $110 & -2;
+ HEAP32[(35456)>>2] = $22;
+ HEAP32[$109>>2] = $116;
+ HEAP32[$114>>2] = $115;
+ HEAP32[$113>>2] = $22;
break;
}
- $39 = ($26|0)==($28|0);
- if ($39) {
- $$pre444 = ((($26)) + 8|0);
- $$pre$phi445Z2D = $$pre444;
- } else {
- $40 = ($26>>>0)<($3>>>0);
- if ($40) {
- _abort();
- // unreachable;
- }
- $41 = ((($26)) + 8|0);
- $42 = HEAP32[$41>>2]|0;
- $43 = ($42|0)==($16|0);
- if ($43) {
- $$pre$phi445Z2D = $41;
- } else {
- _abort();
- // unreachable;
- }
- }
- $44 = ((($24)) + 12|0);
- HEAP32[$44>>2] = $26;
- HEAP32[$$pre$phi445Z2D>>2] = $24;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- $45 = ((($16)) + 24|0);
- $46 = HEAP32[$45>>2]|0;
- $47 = ((($16)) + 12|0);
- $48 = HEAP32[$47>>2]|0;
- $49 = ($48|0)==($16|0);
- do {
- if ($49) {
- $59 = ((($16)) + 16|0);
- $60 = ((($59)) + 4|0);
- $61 = HEAP32[$60>>2]|0;
- $62 = ($61|0)==(0|0);
- if ($62) {
- $63 = HEAP32[$59>>2]|0;
- $64 = ($63|0)==(0|0);
- if ($64) {
- $$3 = 0;
- break;
- } else {
- $$1387 = $63;$$1390 = $59;
- }
- } else {
- $$1387 = $61;$$1390 = $60;
- }
- while(1) {
- $65 = ((($$1387)) + 20|0);
- $66 = HEAP32[$65>>2]|0;
- $67 = ($66|0)==(0|0);
- if (!($67)) {
- $$1387 = $66;$$1390 = $65;
- continue;
+ $26 = $18 >>> 3;
+ $27 = ($18>>>0)<(256);
+ if ($27) {
+ $28 = ((($21)) + 8|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = ((($21)) + 12|0);
+ $31 = HEAP32[$30>>2]|0;
+ $32 = $26 << 1;
+ $33 = (35488 + ($32<<2)|0);
+ $34 = ($29|0)==($33|0);
+ if (!($34)) {
+ $35 = ($29>>>0)<($8>>>0);
+ if ($35) {
+ _abort();
+ // unreachable;
}
- $68 = ((($$1387)) + 16|0);
- $69 = HEAP32[$68>>2]|0;
- $70 = ($69|0)==(0|0);
- if ($70) {
- break;
- } else {
- $$1387 = $69;$$1390 = $68;
+ $36 = ((($29)) + 12|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($37|0)==($21|0);
+ if (!($38)) {
+ _abort();
+ // unreachable;
}
}
- $71 = ($$1390>>>0)<($3>>>0);
- if ($71) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1390>>2] = 0;
- $$3 = $$1387;
+ $39 = ($31|0)==($29|0);
+ if ($39) {
+ $40 = 1 << $26;
+ $41 = $40 ^ -1;
+ $42 = HEAP32[8862]|0;
+ $43 = $42 & $41;
+ HEAP32[8862] = $43;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- } else {
- $50 = ((($16)) + 8|0);
- $51 = HEAP32[$50>>2]|0;
- $52 = ($51>>>0)<($3>>>0);
- if ($52) {
- _abort();
- // unreachable;
- }
- $53 = ((($51)) + 12|0);
- $54 = HEAP32[$53>>2]|0;
- $55 = ($54|0)==($16|0);
- if (!($55)) {
- _abort();
- // unreachable;
- }
- $56 = ((($48)) + 8|0);
- $57 = HEAP32[$56>>2]|0;
- $58 = ($57|0)==($16|0);
- if ($58) {
- HEAP32[$53>>2] = $48;
- HEAP32[$56>>2] = $51;
- $$3 = $48;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
- } while(0);
- $72 = ($46|0)==(0|0);
- if ($72) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $73 = ((($16)) + 28|0);
- $74 = HEAP32[$73>>2]|0;
- $75 = (33440 + ($74<<2)|0);
- $76 = HEAP32[$75>>2]|0;
- $77 = ($16|0)==($76|0);
- do {
- if ($77) {
- HEAP32[$75>>2] = $$3;
- $cond421 = ($$3|0)==(0|0);
- if ($cond421) {
- $78 = 1 << $74;
- $79 = $78 ^ -1;
- $80 = HEAP32[(33140)>>2]|0;
- $81 = $80 & $79;
- HEAP32[(33140)>>2] = $81;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- }
+ $44 = ($31|0)==($33|0);
+ if ($44) {
+ $$pre444 = ((($31)) + 8|0);
+ $$pre$phi445Z2D = $$pre444;
} else {
- $82 = HEAP32[(33152)>>2]|0;
- $83 = ($46>>>0)<($82>>>0);
- if ($83) {
+ $45 = ($31>>>0)<($8>>>0);
+ if ($45) {
_abort();
// unreachable;
- } else {
- $84 = ((($46)) + 16|0);
- $85 = HEAP32[$84>>2]|0;
- $not$405 = ($85|0)!=($16|0);
- $$sink3 = $not$405&1;
- $86 = (((($46)) + 16|0) + ($$sink3<<2)|0);
- HEAP32[$86>>2] = $$3;
- $87 = ($$3|0)==(0|0);
- if ($87) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- } else {
- break;
- }
}
- }
- } while(0);
- $88 = HEAP32[(33152)>>2]|0;
- $89 = ($$3>>>0)<($88>>>0);
- if ($89) {
- _abort();
- // unreachable;
- }
- $90 = ((($$3)) + 24|0);
- HEAP32[$90>>2] = $46;
- $91 = ((($16)) + 16|0);
- $92 = HEAP32[$91>>2]|0;
- $93 = ($92|0)==(0|0);
- do {
- if (!($93)) {
- $94 = ($92>>>0)<($88>>>0);
- if ($94) {
+ $46 = ((($31)) + 8|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ($47|0)==($21|0);
+ if ($48) {
+ $$pre$phi445Z2D = $46;
+ } else {
_abort();
// unreachable;
- } else {
- $95 = ((($$3)) + 16|0);
- HEAP32[$95>>2] = $92;
- $96 = ((($92)) + 24|0);
- HEAP32[$96>>2] = $$3;
- break;
}
}
- } while(0);
- $97 = ((($91)) + 4|0);
- $98 = HEAP32[$97>>2]|0;
- $99 = ($98|0)==(0|0);
- if ($99) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $100 = HEAP32[(33152)>>2]|0;
- $101 = ($98>>>0)<($100>>>0);
- if ($101) {
- _abort();
- // unreachable;
- } else {
- $102 = ((($$3)) + 20|0);
- HEAP32[$102>>2] = $98;
- $103 = ((($98)) + 24|0);
- HEAP32[$103>>2] = $$3;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- }
- }
- } else {
- $$1 = $2;$$1382 = $9;$113 = $2;
- }
- } while(0);
- $112 = ($113>>>0)<($10>>>0);
- if (!($112)) {
- _abort();
- // unreachable;
- }
- $114 = ((($10)) + 4|0);
- $115 = HEAP32[$114>>2]|0;
- $116 = $115 & 1;
- $117 = ($116|0)==(0);
- if ($117) {
- _abort();
- // unreachable;
- }
- $118 = $115 & 2;
- $119 = ($118|0)==(0);
- if ($119) {
- $120 = HEAP32[(33160)>>2]|0;
- $121 = ($10|0)==($120|0);
- $122 = HEAP32[(33156)>>2]|0;
- if ($121) {
- $123 = HEAP32[(33148)>>2]|0;
- $124 = (($123) + ($$1382))|0;
- HEAP32[(33148)>>2] = $124;
- HEAP32[(33160)>>2] = $$1;
- $125 = $124 | 1;
- $126 = ((($$1)) + 4|0);
- HEAP32[$126>>2] = $125;
- $127 = ($$1|0)==($122|0);
- if (!($127)) {
- return;
- }
- HEAP32[(33156)>>2] = 0;
- HEAP32[(33144)>>2] = 0;
- return;
- }
- $128 = ($10|0)==($122|0);
- if ($128) {
- $129 = HEAP32[(33144)>>2]|0;
- $130 = (($129) + ($$1382))|0;
- HEAP32[(33144)>>2] = $130;
- HEAP32[(33156)>>2] = $113;
- $131 = $130 | 1;
- $132 = ((($$1)) + 4|0);
- HEAP32[$132>>2] = $131;
- $133 = (($113) + ($130)|0);
- HEAP32[$133>>2] = $130;
- return;
- }
- $134 = $115 & -8;
- $135 = (($134) + ($$1382))|0;
- $136 = $115 >>> 3;
- $137 = ($115>>>0)<(256);
- L108: do {
- if ($137) {
- $138 = ((($10)) + 8|0);
- $139 = HEAP32[$138>>2]|0;
- $140 = ((($10)) + 12|0);
- $141 = HEAP32[$140>>2]|0;
- $142 = $136 << 1;
- $143 = (33176 + ($142<<2)|0);
- $144 = ($139|0)==($143|0);
- if (!($144)) {
- $145 = HEAP32[(33152)>>2]|0;
- $146 = ($139>>>0)<($145>>>0);
- if ($146) {
- _abort();
- // unreachable;
- }
- $147 = ((($139)) + 12|0);
- $148 = HEAP32[$147>>2]|0;
- $149 = ($148|0)==($10|0);
- if (!($149)) {
- _abort();
- // unreachable;
- }
- }
- $150 = ($141|0)==($139|0);
- if ($150) {
- $151 = 1 << $136;
- $152 = $151 ^ -1;
- $153 = HEAP32[8284]|0;
- $154 = $153 & $152;
- HEAP32[8284] = $154;
+ $49 = ((($29)) + 12|0);
+ HEAP32[$49>>2] = $31;
+ HEAP32[$$pre$phi445Z2D>>2] = $29;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- $155 = ($141|0)==($143|0);
- if ($155) {
- $$pre442 = ((($141)) + 8|0);
- $$pre$phi443Z2D = $$pre442;
- } else {
- $156 = HEAP32[(33152)>>2]|0;
- $157 = ($141>>>0)<($156>>>0);
- if ($157) {
- _abort();
- // unreachable;
- }
- $158 = ((($141)) + 8|0);
- $159 = HEAP32[$158>>2]|0;
- $160 = ($159|0)==($10|0);
- if ($160) {
- $$pre$phi443Z2D = $158;
- } else {
- _abort();
- // unreachable;
- }
- }
- $161 = ((($139)) + 12|0);
- HEAP32[$161>>2] = $141;
- HEAP32[$$pre$phi443Z2D>>2] = $139;
- } else {
- $162 = ((($10)) + 24|0);
- $163 = HEAP32[$162>>2]|0;
- $164 = ((($10)) + 12|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165|0)==($10|0);
+ $50 = ((($21)) + 24|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = ((($21)) + 12|0);
+ $53 = HEAP32[$52>>2]|0;
+ $54 = ($53|0)==($21|0);
do {
- if ($166) {
- $177 = ((($10)) + 16|0);
- $178 = ((($177)) + 4|0);
- $179 = HEAP32[$178>>2]|0;
- $180 = ($179|0)==(0|0);
- if ($180) {
- $181 = HEAP32[$177>>2]|0;
- $182 = ($181|0)==(0|0);
- if ($182) {
- $$3400 = 0;
+ if ($54) {
+ $64 = ((($21)) + 16|0);
+ $65 = ((($64)) + 4|0);
+ $66 = HEAP32[$65>>2]|0;
+ $67 = ($66|0)==(0|0);
+ if ($67) {
+ $68 = HEAP32[$64>>2]|0;
+ $69 = ($68|0)==(0|0);
+ if ($69) {
+ $$3 = 0;
break;
} else {
- $$1398 = $181;$$1402 = $177;
+ $$1387 = $68;$$1390 = $64;
}
} else {
- $$1398 = $179;$$1402 = $178;
+ $$1387 = $66;$$1390 = $65;
}
while(1) {
- $183 = ((($$1398)) + 20|0);
- $184 = HEAP32[$183>>2]|0;
- $185 = ($184|0)==(0|0);
- if (!($185)) {
- $$1398 = $184;$$1402 = $183;
+ $70 = ((($$1387)) + 20|0);
+ $71 = HEAP32[$70>>2]|0;
+ $72 = ($71|0)==(0|0);
+ if (!($72)) {
+ $$1387 = $71;$$1390 = $70;
continue;
}
- $186 = ((($$1398)) + 16|0);
- $187 = HEAP32[$186>>2]|0;
- $188 = ($187|0)==(0|0);
- if ($188) {
+ $73 = ((($$1387)) + 16|0);
+ $74 = HEAP32[$73>>2]|0;
+ $75 = ($74|0)==(0|0);
+ if ($75) {
break;
} else {
- $$1398 = $187;$$1402 = $186;
+ $$1387 = $74;$$1390 = $73;
}
}
- $189 = HEAP32[(33152)>>2]|0;
- $190 = ($$1402>>>0)<($189>>>0);
- if ($190) {
+ $76 = ($$1390>>>0)<($8>>>0);
+ if ($76) {
_abort();
// unreachable;
} else {
- HEAP32[$$1402>>2] = 0;
- $$3400 = $$1398;
+ HEAP32[$$1390>>2] = 0;
+ $$3 = $$1387;
break;
}
} else {
- $167 = ((($10)) + 8|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = HEAP32[(33152)>>2]|0;
- $170 = ($168>>>0)<($169>>>0);
- if ($170) {
+ $55 = ((($21)) + 8|0);
+ $56 = HEAP32[$55>>2]|0;
+ $57 = ($56>>>0)<($8>>>0);
+ if ($57) {
_abort();
// unreachable;
}
- $171 = ((($168)) + 12|0);
- $172 = HEAP32[$171>>2]|0;
- $173 = ($172|0)==($10|0);
- if (!($173)) {
+ $58 = ((($56)) + 12|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = ($59|0)==($21|0);
+ if (!($60)) {
_abort();
// unreachable;
}
- $174 = ((($165)) + 8|0);
- $175 = HEAP32[$174>>2]|0;
- $176 = ($175|0)==($10|0);
- if ($176) {
- HEAP32[$171>>2] = $165;
- HEAP32[$174>>2] = $168;
- $$3400 = $165;
+ $61 = ((($53)) + 8|0);
+ $62 = HEAP32[$61>>2]|0;
+ $63 = ($62|0)==($21|0);
+ if ($63) {
+ HEAP32[$58>>2] = $53;
+ HEAP32[$61>>2] = $56;
+ $$3 = $53;
break;
} else {
_abort();
@@ -26562,298 +32629,600 @@ function _free($0) {
}
}
} while(0);
- $191 = ($163|0)==(0|0);
- if (!($191)) {
- $192 = ((($10)) + 28|0);
- $193 = HEAP32[$192>>2]|0;
- $194 = (33440 + ($193<<2)|0);
- $195 = HEAP32[$194>>2]|0;
- $196 = ($10|0)==($195|0);
+ $77 = ($51|0)==(0|0);
+ if ($77) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $78 = ((($21)) + 28|0);
+ $79 = HEAP32[$78>>2]|0;
+ $80 = (35752 + ($79<<2)|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ($21|0)==($81|0);
do {
- if ($196) {
- HEAP32[$194>>2] = $$3400;
- $cond422 = ($$3400|0)==(0|0);
- if ($cond422) {
- $197 = 1 << $193;
- $198 = $197 ^ -1;
- $199 = HEAP32[(33140)>>2]|0;
- $200 = $199 & $198;
- HEAP32[(33140)>>2] = $200;
- break L108;
+ if ($82) {
+ HEAP32[$80>>2] = $$3;
+ $cond421 = ($$3|0)==(0|0);
+ if ($cond421) {
+ $83 = 1 << $79;
+ $84 = $83 ^ -1;
+ $85 = HEAP32[(35452)>>2]|0;
+ $86 = $85 & $84;
+ HEAP32[(35452)>>2] = $86;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
}
} else {
- $201 = HEAP32[(33152)>>2]|0;
- $202 = ($163>>>0)<($201>>>0);
- if ($202) {
+ $87 = HEAP32[(35464)>>2]|0;
+ $88 = ($51>>>0)<($87>>>0);
+ if ($88) {
_abort();
// unreachable;
} else {
- $203 = ((($163)) + 16|0);
- $204 = HEAP32[$203>>2]|0;
- $not$ = ($204|0)!=($10|0);
- $$sink5 = $not$&1;
- $205 = (((($163)) + 16|0) + ($$sink5<<2)|0);
- HEAP32[$205>>2] = $$3400;
- $206 = ($$3400|0)==(0|0);
- if ($206) {
- break L108;
+ $89 = ((($51)) + 16|0);
+ $90 = HEAP32[$89>>2]|0;
+ $not$405 = ($90|0)!=($21|0);
+ $$sink3 = $not$405&1;
+ $91 = (((($51)) + 16|0) + ($$sink3<<2)|0);
+ HEAP32[$91>>2] = $$3;
+ $92 = ($$3|0)==(0|0);
+ if ($92) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
} else {
break;
}
}
}
} while(0);
- $207 = HEAP32[(33152)>>2]|0;
- $208 = ($$3400>>>0)<($207>>>0);
- if ($208) {
+ $93 = HEAP32[(35464)>>2]|0;
+ $94 = ($$3>>>0)<($93>>>0);
+ if ($94) {
_abort();
// unreachable;
}
- $209 = ((($$3400)) + 24|0);
- HEAP32[$209>>2] = $163;
- $210 = ((($10)) + 16|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
+ $95 = ((($$3)) + 24|0);
+ HEAP32[$95>>2] = $51;
+ $96 = ((($21)) + 16|0);
+ $97 = HEAP32[$96>>2]|0;
+ $98 = ($97|0)==(0|0);
do {
- if (!($212)) {
- $213 = ($211>>>0)<($207>>>0);
- if ($213) {
+ if (!($98)) {
+ $99 = ($97>>>0)<($93>>>0);
+ if ($99) {
_abort();
// unreachable;
} else {
- $214 = ((($$3400)) + 16|0);
- HEAP32[$214>>2] = $211;
- $215 = ((($211)) + 24|0);
- HEAP32[$215>>2] = $$3400;
+ $100 = ((($$3)) + 16|0);
+ HEAP32[$100>>2] = $97;
+ $101 = ((($97)) + 24|0);
+ HEAP32[$101>>2] = $$3;
break;
}
}
} while(0);
- $216 = ((($210)) + 4|0);
- $217 = HEAP32[$216>>2]|0;
- $218 = ($217|0)==(0|0);
- if (!($218)) {
- $219 = HEAP32[(33152)>>2]|0;
- $220 = ($217>>>0)<($219>>>0);
- if ($220) {
+ $102 = ((($96)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ($103|0)==(0|0);
+ if ($104) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $105 = HEAP32[(35464)>>2]|0;
+ $106 = ($103>>>0)<($105>>>0);
+ if ($106) {
_abort();
// unreachable;
} else {
- $221 = ((($$3400)) + 20|0);
- HEAP32[$221>>2] = $217;
- $222 = ((($217)) + 24|0);
- HEAP32[$222>>2] = $$3400;
+ $107 = ((($$3)) + 20|0);
+ HEAP32[$107>>2] = $103;
+ $108 = ((($103)) + 24|0);
+ HEAP32[$108>>2] = $$3;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
}
}
}
- } while(0);
- $223 = $135 | 1;
- $224 = ((($$1)) + 4|0);
- HEAP32[$224>>2] = $223;
- $225 = (($113) + ($135)|0);
- HEAP32[$225>>2] = $135;
- $226 = HEAP32[(33156)>>2]|0;
- $227 = ($$1|0)==($226|0);
- if ($227) {
- HEAP32[(33144)>>2] = $135;
- return;
} else {
- $$2 = $135;
+ $$1 = $2;$$1382 = $14;$118 = $2;
+ label = 55;
}
- } else {
- $228 = $115 & -2;
- HEAP32[$114>>2] = $228;
- $229 = $$1382 | 1;
- $230 = ((($$1)) + 4|0);
- HEAP32[$230>>2] = $229;
- $231 = (($113) + ($$1382)|0);
- HEAP32[$231>>2] = $$1382;
- $$2 = $$1382;
- }
- $232 = $$2 >>> 3;
- $233 = ($$2>>>0)<(256);
- if ($233) {
- $234 = $232 << 1;
- $235 = (33176 + ($234<<2)|0);
- $236 = HEAP32[8284]|0;
- $237 = 1 << $232;
- $238 = $236 & $237;
- $239 = ($238|0)==(0);
- if ($239) {
- $240 = $236 | $237;
- HEAP32[8284] = $240;
- $$pre = ((($235)) + 8|0);
- $$0403 = $235;$$pre$phiZ2D = $$pre;
- } else {
- $241 = ((($235)) + 8|0);
- $242 = HEAP32[$241>>2]|0;
- $243 = HEAP32[(33152)>>2]|0;
- $244 = ($242>>>0)<($243>>>0);
- if ($244) {
+ } while(0);
+ do {
+ if ((label|0) == 55) {
+ $117 = ($118>>>0)<($15>>>0);
+ if (!($117)) {
_abort();
// unreachable;
- } else {
- $$0403 = $242;$$pre$phiZ2D = $241;
}
- }
- HEAP32[$$pre$phiZ2D>>2] = $$1;
- $245 = ((($$0403)) + 12|0);
- HEAP32[$245>>2] = $$1;
- $246 = ((($$1)) + 8|0);
- HEAP32[$246>>2] = $$0403;
- $247 = ((($$1)) + 12|0);
- HEAP32[$247>>2] = $235;
- return;
- }
- $248 = $$2 >>> 8;
- $249 = ($248|0)==(0);
- if ($249) {
- $$0396 = 0;
- } else {
- $250 = ($$2>>>0)>(16777215);
- if ($250) {
- $$0396 = 31;
- } else {
- $251 = (($248) + 1048320)|0;
- $252 = $251 >>> 16;
- $253 = $252 & 8;
- $254 = $248 << $253;
- $255 = (($254) + 520192)|0;
- $256 = $255 >>> 16;
- $257 = $256 & 4;
- $258 = $257 | $253;
- $259 = $254 << $257;
- $260 = (($259) + 245760)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 2;
- $263 = $258 | $262;
- $264 = (14 - ($263))|0;
- $265 = $259 << $262;
- $266 = $265 >>> 15;
- $267 = (($264) + ($266))|0;
- $268 = $267 << 1;
- $269 = (($267) + 7)|0;
- $270 = $$2 >>> $269;
- $271 = $270 & 1;
- $272 = $271 | $268;
- $$0396 = $272;
- }
- }
- $273 = (33440 + ($$0396<<2)|0);
- $274 = ((($$1)) + 28|0);
- HEAP32[$274>>2] = $$0396;
- $275 = ((($$1)) + 16|0);
- $276 = ((($$1)) + 20|0);
- HEAP32[$276>>2] = 0;
- HEAP32[$275>>2] = 0;
- $277 = HEAP32[(33140)>>2]|0;
- $278 = 1 << $$0396;
- $279 = $277 & $278;
- $280 = ($279|0)==(0);
- do {
- if ($280) {
- $281 = $277 | $278;
- HEAP32[(33140)>>2] = $281;
- HEAP32[$273>>2] = $$1;
- $282 = ((($$1)) + 24|0);
- HEAP32[$282>>2] = $273;
- $283 = ((($$1)) + 12|0);
- HEAP32[$283>>2] = $$1;
- $284 = ((($$1)) + 8|0);
- HEAP32[$284>>2] = $$1;
- } else {
- $285 = HEAP32[$273>>2]|0;
- $286 = ($$0396|0)==(31);
- $287 = $$0396 >>> 1;
- $288 = (25 - ($287))|0;
- $289 = $286 ? 0 : $288;
- $290 = $$2 << $289;
- $$0383 = $290;$$0384 = $285;
- while(1) {
- $291 = ((($$0384)) + 4|0);
- $292 = HEAP32[$291>>2]|0;
- $293 = $292 & -8;
- $294 = ($293|0)==($$2|0);
- if ($294) {
- label = 124;
+ $119 = ((($15)) + 4|0);
+ $120 = HEAP32[$119>>2]|0;
+ $121 = $120 & 1;
+ $122 = ($121|0)==(0);
+ if ($122) {
+ _abort();
+ // unreachable;
+ }
+ $123 = $120 & 2;
+ $124 = ($123|0)==(0);
+ if ($124) {
+ $125 = HEAP32[(35472)>>2]|0;
+ $126 = ($15|0)==($125|0);
+ $127 = HEAP32[(35468)>>2]|0;
+ if ($126) {
+ $128 = HEAP32[(35460)>>2]|0;
+ $129 = (($128) + ($$1382))|0;
+ HEAP32[(35460)>>2] = $129;
+ HEAP32[(35472)>>2] = $$1;
+ $130 = $129 | 1;
+ $131 = ((($$1)) + 4|0);
+ HEAP32[$131>>2] = $130;
+ $132 = ($$1|0)==($127|0);
+ if (!($132)) {
+ break;
+ }
+ HEAP32[(35468)>>2] = 0;
+ HEAP32[(35456)>>2] = 0;
+ break;
+ }
+ $133 = ($15|0)==($127|0);
+ if ($133) {
+ $134 = HEAP32[(35456)>>2]|0;
+ $135 = (($134) + ($$1382))|0;
+ HEAP32[(35456)>>2] = $135;
+ HEAP32[(35468)>>2] = $118;
+ $136 = $135 | 1;
+ $137 = ((($$1)) + 4|0);
+ HEAP32[$137>>2] = $136;
+ $138 = (($118) + ($135)|0);
+ HEAP32[$138>>2] = $135;
break;
}
- $295 = $$0383 >>> 31;
- $296 = (((($$0384)) + 16|0) + ($295<<2)|0);
- $297 = $$0383 << 1;
- $298 = HEAP32[$296>>2]|0;
- $299 = ($298|0)==(0|0);
- if ($299) {
- label = 121;
+ $139 = $120 & -8;
+ $140 = (($139) + ($$1382))|0;
+ $141 = $120 >>> 3;
+ $142 = ($120>>>0)<(256);
+ L106: do {
+ if ($142) {
+ $143 = ((($15)) + 8|0);
+ $144 = HEAP32[$143>>2]|0;
+ $145 = ((($15)) + 12|0);
+ $146 = HEAP32[$145>>2]|0;
+ $147 = $141 << 1;
+ $148 = (35488 + ($147<<2)|0);
+ $149 = ($144|0)==($148|0);
+ if (!($149)) {
+ $150 = HEAP32[(35464)>>2]|0;
+ $151 = ($144>>>0)<($150>>>0);
+ if ($151) {
+ _abort();
+ // unreachable;
+ }
+ $152 = ((($144)) + 12|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = ($153|0)==($15|0);
+ if (!($154)) {
+ _abort();
+ // unreachable;
+ }
+ }
+ $155 = ($146|0)==($144|0);
+ if ($155) {
+ $156 = 1 << $141;
+ $157 = $156 ^ -1;
+ $158 = HEAP32[8862]|0;
+ $159 = $158 & $157;
+ HEAP32[8862] = $159;
+ break;
+ }
+ $160 = ($146|0)==($148|0);
+ if ($160) {
+ $$pre442 = ((($146)) + 8|0);
+ $$pre$phi443Z2D = $$pre442;
+ } else {
+ $161 = HEAP32[(35464)>>2]|0;
+ $162 = ($146>>>0)<($161>>>0);
+ if ($162) {
+ _abort();
+ // unreachable;
+ }
+ $163 = ((($146)) + 8|0);
+ $164 = HEAP32[$163>>2]|0;
+ $165 = ($164|0)==($15|0);
+ if ($165) {
+ $$pre$phi443Z2D = $163;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ $166 = ((($144)) + 12|0);
+ HEAP32[$166>>2] = $146;
+ HEAP32[$$pre$phi443Z2D>>2] = $144;
+ } else {
+ $167 = ((($15)) + 24|0);
+ $168 = HEAP32[$167>>2]|0;
+ $169 = ((($15)) + 12|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==($15|0);
+ do {
+ if ($171) {
+ $182 = ((($15)) + 16|0);
+ $183 = ((($182)) + 4|0);
+ $184 = HEAP32[$183>>2]|0;
+ $185 = ($184|0)==(0|0);
+ if ($185) {
+ $186 = HEAP32[$182>>2]|0;
+ $187 = ($186|0)==(0|0);
+ if ($187) {
+ $$3400 = 0;
+ break;
+ } else {
+ $$1398 = $186;$$1402 = $182;
+ }
+ } else {
+ $$1398 = $184;$$1402 = $183;
+ }
+ while(1) {
+ $188 = ((($$1398)) + 20|0);
+ $189 = HEAP32[$188>>2]|0;
+ $190 = ($189|0)==(0|0);
+ if (!($190)) {
+ $$1398 = $189;$$1402 = $188;
+ continue;
+ }
+ $191 = ((($$1398)) + 16|0);
+ $192 = HEAP32[$191>>2]|0;
+ $193 = ($192|0)==(0|0);
+ if ($193) {
+ break;
+ } else {
+ $$1398 = $192;$$1402 = $191;
+ }
+ }
+ $194 = HEAP32[(35464)>>2]|0;
+ $195 = ($$1402>>>0)<($194>>>0);
+ if ($195) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1402>>2] = 0;
+ $$3400 = $$1398;
+ break;
+ }
+ } else {
+ $172 = ((($15)) + 8|0);
+ $173 = HEAP32[$172>>2]|0;
+ $174 = HEAP32[(35464)>>2]|0;
+ $175 = ($173>>>0)<($174>>>0);
+ if ($175) {
+ _abort();
+ // unreachable;
+ }
+ $176 = ((($173)) + 12|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ($177|0)==($15|0);
+ if (!($178)) {
+ _abort();
+ // unreachable;
+ }
+ $179 = ((($170)) + 8|0);
+ $180 = HEAP32[$179>>2]|0;
+ $181 = ($180|0)==($15|0);
+ if ($181) {
+ HEAP32[$176>>2] = $170;
+ HEAP32[$179>>2] = $173;
+ $$3400 = $170;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $196 = ($168|0)==(0|0);
+ if (!($196)) {
+ $197 = ((($15)) + 28|0);
+ $198 = HEAP32[$197>>2]|0;
+ $199 = (35752 + ($198<<2)|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($15|0)==($200|0);
+ do {
+ if ($201) {
+ HEAP32[$199>>2] = $$3400;
+ $cond422 = ($$3400|0)==(0|0);
+ if ($cond422) {
+ $202 = 1 << $198;
+ $203 = $202 ^ -1;
+ $204 = HEAP32[(35452)>>2]|0;
+ $205 = $204 & $203;
+ HEAP32[(35452)>>2] = $205;
+ break L106;
+ }
+ } else {
+ $206 = HEAP32[(35464)>>2]|0;
+ $207 = ($168>>>0)<($206>>>0);
+ if ($207) {
+ _abort();
+ // unreachable;
+ } else {
+ $208 = ((($168)) + 16|0);
+ $209 = HEAP32[$208>>2]|0;
+ $not$ = ($209|0)!=($15|0);
+ $$sink5 = $not$&1;
+ $210 = (((($168)) + 16|0) + ($$sink5<<2)|0);
+ HEAP32[$210>>2] = $$3400;
+ $211 = ($$3400|0)==(0|0);
+ if ($211) {
+ break L106;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $212 = HEAP32[(35464)>>2]|0;
+ $213 = ($$3400>>>0)<($212>>>0);
+ if ($213) {
+ _abort();
+ // unreachable;
+ }
+ $214 = ((($$3400)) + 24|0);
+ HEAP32[$214>>2] = $168;
+ $215 = ((($15)) + 16|0);
+ $216 = HEAP32[$215>>2]|0;
+ $217 = ($216|0)==(0|0);
+ do {
+ if (!($217)) {
+ $218 = ($216>>>0)<($212>>>0);
+ if ($218) {
+ _abort();
+ // unreachable;
+ } else {
+ $219 = ((($$3400)) + 16|0);
+ HEAP32[$219>>2] = $216;
+ $220 = ((($216)) + 24|0);
+ HEAP32[$220>>2] = $$3400;
+ break;
+ }
+ }
+ } while(0);
+ $221 = ((($215)) + 4|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
+ if (!($223)) {
+ $224 = HEAP32[(35464)>>2]|0;
+ $225 = ($222>>>0)<($224>>>0);
+ if ($225) {
+ _abort();
+ // unreachable;
+ } else {
+ $226 = ((($$3400)) + 20|0);
+ HEAP32[$226>>2] = $222;
+ $227 = ((($222)) + 24|0);
+ HEAP32[$227>>2] = $$3400;
+ break;
+ }
+ }
+ }
+ }
+ } while(0);
+ $228 = $140 | 1;
+ $229 = ((($$1)) + 4|0);
+ HEAP32[$229>>2] = $228;
+ $230 = (($118) + ($140)|0);
+ HEAP32[$230>>2] = $140;
+ $231 = HEAP32[(35468)>>2]|0;
+ $232 = ($$1|0)==($231|0);
+ if ($232) {
+ HEAP32[(35456)>>2] = $140;
break;
} else {
- $$0383 = $297;$$0384 = $298;
+ $$2 = $140;
}
- }
- if ((label|0) == 121) {
- $300 = HEAP32[(33152)>>2]|0;
- $301 = ($296>>>0)<($300>>>0);
- if ($301) {
- _abort();
- // unreachable;
+ } else {
+ $233 = $120 & -2;
+ HEAP32[$119>>2] = $233;
+ $234 = $$1382 | 1;
+ $235 = ((($$1)) + 4|0);
+ HEAP32[$235>>2] = $234;
+ $236 = (($118) + ($$1382)|0);
+ HEAP32[$236>>2] = $$1382;
+ $$2 = $$1382;
+ }
+ $237 = $$2 >>> 3;
+ $238 = ($$2>>>0)<(256);
+ if ($238) {
+ $239 = $237 << 1;
+ $240 = (35488 + ($239<<2)|0);
+ $241 = HEAP32[8862]|0;
+ $242 = 1 << $237;
+ $243 = $241 & $242;
+ $244 = ($243|0)==(0);
+ if ($244) {
+ $245 = $241 | $242;
+ HEAP32[8862] = $245;
+ $$pre = ((($240)) + 8|0);
+ $$0403 = $240;$$pre$phiZ2D = $$pre;
} else {
- HEAP32[$296>>2] = $$1;
- $302 = ((($$1)) + 24|0);
- HEAP32[$302>>2] = $$0384;
- $303 = ((($$1)) + 12|0);
- HEAP32[$303>>2] = $$1;
- $304 = ((($$1)) + 8|0);
- HEAP32[$304>>2] = $$1;
- break;
+ $246 = ((($240)) + 8|0);
+ $247 = HEAP32[$246>>2]|0;
+ $248 = HEAP32[(35464)>>2]|0;
+ $249 = ($247>>>0)<($248>>>0);
+ if ($249) {
+ _abort();
+ // unreachable;
+ } else {
+ $$0403 = $247;$$pre$phiZ2D = $246;
+ }
}
+ HEAP32[$$pre$phiZ2D>>2] = $$1;
+ $250 = ((($$0403)) + 12|0);
+ HEAP32[$250>>2] = $$1;
+ $251 = ((($$1)) + 8|0);
+ HEAP32[$251>>2] = $$0403;
+ $252 = ((($$1)) + 12|0);
+ HEAP32[$252>>2] = $240;
+ break;
}
- else if ((label|0) == 124) {
- $305 = ((($$0384)) + 8|0);
- $306 = HEAP32[$305>>2]|0;
- $307 = HEAP32[(33152)>>2]|0;
- $308 = ($306>>>0)>=($307>>>0);
- $not$437 = ($$0384>>>0)>=($307>>>0);
- $309 = $308 & $not$437;
- if ($309) {
- $310 = ((($306)) + 12|0);
- HEAP32[$310>>2] = $$1;
- HEAP32[$305>>2] = $$1;
- $311 = ((($$1)) + 8|0);
- HEAP32[$311>>2] = $306;
- $312 = ((($$1)) + 12|0);
- HEAP32[$312>>2] = $$0384;
- $313 = ((($$1)) + 24|0);
- HEAP32[$313>>2] = 0;
- break;
+ $253 = $$2 >>> 8;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $$0396 = 0;
+ } else {
+ $255 = ($$2>>>0)>(16777215);
+ if ($255) {
+ $$0396 = 31;
} else {
- _abort();
- // unreachable;
+ $256 = (($253) + 1048320)|0;
+ $257 = $256 >>> 16;
+ $258 = $257 & 8;
+ $259 = $253 << $258;
+ $260 = (($259) + 520192)|0;
+ $261 = $260 >>> 16;
+ $262 = $261 & 4;
+ $263 = $262 | $258;
+ $264 = $259 << $262;
+ $265 = (($264) + 245760)|0;
+ $266 = $265 >>> 16;
+ $267 = $266 & 2;
+ $268 = $263 | $267;
+ $269 = (14 - ($268))|0;
+ $270 = $264 << $267;
+ $271 = $270 >>> 15;
+ $272 = (($269) + ($271))|0;
+ $273 = $272 << 1;
+ $274 = (($272) + 7)|0;
+ $275 = $$2 >>> $274;
+ $276 = $275 & 1;
+ $277 = $276 | $273;
+ $$0396 = $277;
+ }
+ }
+ $278 = (35752 + ($$0396<<2)|0);
+ $279 = ((($$1)) + 28|0);
+ HEAP32[$279>>2] = $$0396;
+ $280 = ((($$1)) + 16|0);
+ $281 = ((($$1)) + 20|0);
+ HEAP32[$281>>2] = 0;
+ HEAP32[$280>>2] = 0;
+ $282 = HEAP32[(35452)>>2]|0;
+ $283 = 1 << $$0396;
+ $284 = $282 & $283;
+ $285 = ($284|0)==(0);
+ do {
+ if ($285) {
+ $286 = $282 | $283;
+ HEAP32[(35452)>>2] = $286;
+ HEAP32[$278>>2] = $$1;
+ $287 = ((($$1)) + 24|0);
+ HEAP32[$287>>2] = $278;
+ $288 = ((($$1)) + 12|0);
+ HEAP32[$288>>2] = $$1;
+ $289 = ((($$1)) + 8|0);
+ HEAP32[$289>>2] = $$1;
+ } else {
+ $290 = HEAP32[$278>>2]|0;
+ $291 = ($$0396|0)==(31);
+ $292 = $$0396 >>> 1;
+ $293 = (25 - ($292))|0;
+ $294 = $291 ? 0 : $293;
+ $295 = $$2 << $294;
+ $$0383 = $295;$$0384 = $290;
+ while(1) {
+ $296 = ((($$0384)) + 4|0);
+ $297 = HEAP32[$296>>2]|0;
+ $298 = $297 & -8;
+ $299 = ($298|0)==($$2|0);
+ if ($299) {
+ label = 126;
+ break;
+ }
+ $300 = $$0383 >>> 31;
+ $301 = (((($$0384)) + 16|0) + ($300<<2)|0);
+ $302 = $$0383 << 1;
+ $303 = HEAP32[$301>>2]|0;
+ $304 = ($303|0)==(0|0);
+ if ($304) {
+ label = 123;
+ break;
+ } else {
+ $$0383 = $302;$$0384 = $303;
+ }
+ }
+ if ((label|0) == 123) {
+ $305 = HEAP32[(35464)>>2]|0;
+ $306 = ($301>>>0)<($305>>>0);
+ if ($306) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$301>>2] = $$1;
+ $307 = ((($$1)) + 24|0);
+ HEAP32[$307>>2] = $$0384;
+ $308 = ((($$1)) + 12|0);
+ HEAP32[$308>>2] = $$1;
+ $309 = ((($$1)) + 8|0);
+ HEAP32[$309>>2] = $$1;
+ break;
+ }
+ }
+ else if ((label|0) == 126) {
+ $310 = ((($$0384)) + 8|0);
+ $311 = HEAP32[$310>>2]|0;
+ $312 = HEAP32[(35464)>>2]|0;
+ $313 = ($311>>>0)>=($312>>>0);
+ $not$437 = ($$0384>>>0)>=($312>>>0);
+ $314 = $313 & $not$437;
+ if ($314) {
+ $315 = ((($311)) + 12|0);
+ HEAP32[$315>>2] = $$1;
+ HEAP32[$310>>2] = $$1;
+ $316 = ((($$1)) + 8|0);
+ HEAP32[$316>>2] = $311;
+ $317 = ((($$1)) + 12|0);
+ HEAP32[$317>>2] = $$0384;
+ $318 = ((($$1)) + 24|0);
+ HEAP32[$318>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ }
+ } while(0);
+ $319 = HEAP32[(35480)>>2]|0;
+ $320 = (($319) + -1)|0;
+ HEAP32[(35480)>>2] = $320;
+ $321 = ($320|0)==(0);
+ if ($321) {
+ $$0212$in$i = (35932);
+ while(1) {
+ $$0212$i = HEAP32[$$0212$in$i>>2]|0;
+ $322 = ($$0212$i|0)==(0|0);
+ $323 = ((($$0212$i)) + 8|0);
+ if ($322) {
+ break;
+ } else {
+ $$0212$in$i = $323;
+ }
}
+ HEAP32[(35480)>>2] = -1;
}
}
} while(0);
- $314 = HEAP32[(33168)>>2]|0;
- $315 = (($314) + -1)|0;
- HEAP32[(33168)>>2] = $315;
- $316 = ($315|0)==(0);
- if ($316) {
- $$0212$in$i = (33592);
- } else {
+ $324 = HEAP32[(35892)>>2]|0;
+ $325 = $324 & 2;
+ $326 = ($325|0)==(0);
+ if ($326) {
return;
}
- while(1) {
- $$0212$i = HEAP32[$$0212$in$i>>2]|0;
- $317 = ($$0212$i|0)==(0|0);
- $318 = ((($$0212$i)) + 8|0);
- if ($317) {
- break;
- } else {
- $$0212$in$i = $318;
- }
- }
- HEAP32[(33168)>>2] = -1;
+ (___pthread_mutex_unlock((35896))|0);
return;
}
function runPostSets() {
@@ -27287,6 +33656,9 @@ function _roundf(f) {
f = +f;
return f >= +0 ? +Math_floor(f + +0.5) : +Math_ceil(f - +0.5); // TODO: use fround?
}
+function _emscripten_set_current_thread_status(newStatus) {
+ newStatus = newStatus|0;
+}
function _bitshift64Lshr(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
@@ -27298,6 +33670,10 @@ function _bitshift64Lshr(low, high, bits) {
tempRet0 = 0;
return (high >>> (bits - 32))|0;
}
+function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) {
+ expectedStatus = expectedStatus|0;
+ newStatus = newStatus|0;
+}
function _sbrk(increment) {
increment = increment|0;
var oldDynamicTop = 0;
@@ -27305,25 +33681,24 @@ function _sbrk(increment) {
var newDynamicTop = 0;
var totalMemory = 0;
increment = ((increment + 15) & -16)|0;
- oldDynamicTop = HEAP32[DYNAMICTOP_PTR>>2]|0;
- newDynamicTop = oldDynamicTop + increment | 0;
-
- if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
- | (newDynamicTop|0) < 0) { // Also underflow, sbrk() should be able to be used to subtract.
- abortOnCannotGrowMemory()|0;
- ___setErrNo(12);
- return -1;
- }
-
- HEAP32[DYNAMICTOP_PTR>>2] = newDynamicTop;
totalMemory = getTotalMemory()|0;
- if ((newDynamicTop|0) > (totalMemory|0)) {
- if ((enlargeMemory()|0) == 0) {
- ___setErrNo(12);
- HEAP32[DYNAMICTOP_PTR>>2] = oldDynamicTop;
- return -1;
+
+ // Perform a compare-and-swap loop to update the new dynamic top value. This is because
+ // this function can becalled simultaneously in multiple threads.
+ do {
+ oldDynamicTop = Atomics_load(HEAP32, DYNAMICTOP_PTR>>2)|0;
+ newDynamicTop = oldDynamicTop + increment | 0;
+ // Asking to increase dynamic top to a too high value? In pthreads builds we cannot
+ // enlarge memory, so this needs to fail.
+ if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
+ | (newDynamicTop|0) < 0 // Also underflow, sbrk() should be able to be used to subtract.
+ | (newDynamicTop|0) > (totalMemory|0)) {
+ abortOnCannotGrowMemory()|0;
}
- }
+ // Attempt to update the dynamic top to new value. Another thread may have beat this thread to the update,
+ // in which case we will need to start over by iterating the loop body again.
+ oldDynamicTopOnChange = Atomics_compareExchange(HEAP32, DYNAMICTOP_PTR>>2, oldDynamicTop|0, newDynamicTop|0)|0;
+ } while((oldDynamicTopOnChange|0) != (oldDynamicTop|0));
return oldDynamicTop|0;
}
function _bitshift64Shl(low, high, bits) {
@@ -28111,25 +34486,43 @@ var FUNCTION_TABLE_i = [b17,_emscripten_glCreateProgram__wrapper,_emscripten_glG
var FUNCTION_TABLE_vdddddd = [b18,_emscripten_glFrustum__wrapper];
var FUNCTION_TABLE_vdddd = [b19,_emscripten_glRotatef__wrapper,_emscripten_glClearColor__wrapper,_emscripten_glBlendColor__wrapper];
var FUNCTION_TABLE_vdd = [b20,_emscripten_glDepthRange__wrapper,_emscripten_glDepthRangef__wrapper,_emscripten_glPolygonOffset__wrapper];
-var FUNCTION_TABLE_v = [b21,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21,b21];
+var FUNCTION_TABLE_v = [b21,_UpdateDrawFrame,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21];
var FUNCTION_TABLE_viid = [b22,_emscripten_glTexParameterf__wrapper];
var FUNCTION_TABLE_viiii = [b23,_MouseButtonCallback,_emscripten_glBufferData__wrapper,_emscripten_glBufferSubData__wrapper,_emscripten_glUniform3i__wrapper,_emscripten_glUniformMatrix2fv__wrapper,_emscripten_glUniformMatrix3fv__wrapper,_emscripten_glUniformMatrix4fv__wrapper,_emscripten_glGetAttachedShaders__wrapper,_emscripten_glShaderSource__wrapper,_emscripten_glGetShaderSource__wrapper,_emscripten_glGetShaderInfoLog__wrapper,_emscripten_glGetShaderPrecisionFormat__wrapper,_emscripten_glGetProgramInfoLog__wrapper,_emscripten_glFramebufferRenderbuffer__wrapper,_emscripten_glGetFramebufferAttachmentParameteriv__wrapper,_emscripten_glGetInfoLogARB__wrapper,_emscripten_glVertexPointer__wrapper,_emscripten_glTexCoordPointer__wrapper,_emscripten_glColorPointer__wrapper,_emscripten_glDrawElements__wrapper,_emscripten_glDrawArraysInstanced__wrapper,_emscripten_glViewport__wrapper,_emscripten_glScissor__wrapper,_emscripten_glColorMask__wrapper,_emscripten_glRenderbufferStorage__wrapper,_emscripten_glBlendFuncSeparate__wrapper,_emscripten_glStencilFuncSeparate__wrapper,_emscripten_glStencilOpSeparate__wrapper,b23,b23,b23];
- return { _roundf: _roundf, _main: _main, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _fflush: _fflush, _memset: _memset, _sbrk: _sbrk, _memcpy: _memcpy, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, ___uremdi3: ___uremdi3, _i64Subtract: _i64Subtract, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_get_global_libc: _emscripten_get_global_libc, _emscripten_GetProcAddress: _emscripten_GetProcAddress, ___udivdi3: ___udivdi3, ___errno_location: ___errno_location, ___muldsi3: ___muldsi3, _free: _free, _memmove: _memmove, _strstr: _strstr, _malloc: _malloc, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
+ return { _emscripten_sync_run_in_main_thread_3: _emscripten_sync_run_in_main_thread_3, _roundf: _roundf, _bitshift64Shl: _bitshift64Shl, _emscripten_atomic_load_f32: _emscripten_atomic_load_f32, ___uremdi3: ___uremdi3, ___udivdi3: ___udivdi3, _emscripten_atomic_xor_u64: _emscripten_atomic_xor_u64, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _emscripten_atomic_and_u64: _emscripten_atomic_and_u64, _emscripten_sync_run_in_main_thread: _emscripten_sync_run_in_main_thread, _emscripten_sync_run_in_main_thread_4: _emscripten_sync_run_in_main_thread_4, _emscripten_sync_run_in_main_thread_5: _emscripten_sync_run_in_main_thread_5, _emscripten_sync_run_in_main_thread_6: _emscripten_sync_run_in_main_thread_6, _emscripten_sync_run_in_main_thread_7: _emscripten_sync_run_in_main_thread_7, _emscripten_sync_run_in_main_thread_0: _emscripten_sync_run_in_main_thread_0, _emscripten_sync_run_in_main_thread_1: _emscripten_sync_run_in_main_thread_1, _emscripten_sync_run_in_main_thread_2: _emscripten_sync_run_in_main_thread_2, __emscripten_atomic_fetch_and_sub_u64: __emscripten_atomic_fetch_and_sub_u64, _emscripten_atomic_exchange_u32: _emscripten_atomic_exchange_u32, _fflush: _fflush, _emscripten_set_current_thread_status: _emscripten_set_current_thread_status, _emscripten_atomic_cas_u64: _emscripten_atomic_cas_u64, _memset: _memset, _emscripten_atomic_sub_u64: _emscripten_atomic_sub_u64, _emscripten_sync_run_in_main_thread_xprintf_varargs: _emscripten_sync_run_in_main_thread_xprintf_varargs, _i64Subtract: _i64Subtract, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, __emscripten_atomic_fetch_and_and_u64: __emscripten_atomic_fetch_and_and_u64, _emscripten_atomic_add_u64: _emscripten_atomic_add_u64, _emscripten_atomic_store_f64: _emscripten_atomic_store_f64, ___muldsi3: ___muldsi3, __emscripten_atomic_fetch_and_xor_u64: __emscripten_atomic_fetch_and_xor_u64, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_atomic_store_u64: _emscripten_atomic_store_u64, _emscripten_atomic_load_f64: _emscripten_atomic_load_f64, _emscripten_get_global_libc: _emscripten_get_global_libc, __emscripten_atomic_fetch_and_add_u64: __emscripten_atomic_fetch_and_add_u64, __emscripten_atomic_fetch_and_or_u64: __emscripten_atomic_fetch_and_or_u64, _emscripten_GetProcAddress: _emscripten_GetProcAddress, _emscripten_async_run_in_main_thread: _emscripten_async_run_in_main_thread, ___errno_location: ___errno_location, _main: _main, _emscripten_main_thread_process_queued_calls: _emscripten_main_thread_process_queued_calls, _emscripten_atomic_load_u64: _emscripten_atomic_load_u64, _free: _free, _emscripten_atomic_store_f32: _emscripten_atomic_store_f32, _emscripten_atomic_exchange_u64: _emscripten_atomic_exchange_u64, _memmove: _memmove, ___pthread_tsd_run_dtors: ___pthread_tsd_run_dtors, _malloc: _malloc, _memcpy: _memcpy, _emscripten_conditional_set_current_thread_status: _emscripten_conditional_set_current_thread_status, _sbrk: _sbrk, _emscripten_atomic_or_u64: _emscripten_atomic_or_u64, _strstr: _strstr, ___emscripten_pthread_data_constructor: ___emscripten_pthread_data_constructor, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
+var real___emscripten_atomic_fetch_and_xor_u64 = asm["__emscripten_atomic_fetch_and_xor_u64"]; asm["__emscripten_atomic_fetch_and_xor_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_xor_u64.apply(null, arguments);
+};
+
var real__roundf = asm["_roundf"]; asm["_roundf"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__roundf.apply(null, arguments);
};
-var real__main = asm["_main"]; asm["_main"] = function() {
+var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__main.apply(null, arguments);
+return real__bitshift64Shl.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f32 = asm["_emscripten_atomic_load_f32"]; asm["_emscripten_atomic_load_f32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f32.apply(null, arguments);
+};
+
+var real____emscripten_pthread_data_constructor = asm["___emscripten_pthread_data_constructor"]; asm["___emscripten_pthread_data_constructor"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____emscripten_pthread_data_constructor.apply(null, arguments);
};
var real_stackSave = asm["stackSave"]; asm["stackSave"] = function() {
@@ -28138,16 +34531,22 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackSave.apply(null, arguments);
};
-var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
+var real__emscripten_atomic_xor_u64 = asm["_emscripten_atomic_xor_u64"]; asm["_emscripten_atomic_xor_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_getTempRet0.apply(null, arguments);
+return real__emscripten_atomic_xor_u64.apply(null, arguments);
};
-var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
+var real__emscripten_atomic_load_u64 = asm["_emscripten_atomic_load_u64"]; asm["_emscripten_atomic_load_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_setThrew.apply(null, arguments);
+return real__emscripten_atomic_load_u64.apply(null, arguments);
+};
+
+var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivdi3.apply(null, arguments);
};
var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() {
@@ -28156,10 +34555,76 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__bitshift64Lshr.apply(null, arguments);
};
-var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
+var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__bitshift64Shl.apply(null, arguments);
+return real_getTempRet0.apply(null, arguments);
+};
+
+var real__emscripten_atomic_and_u64 = asm["_emscripten_atomic_and_u64"]; asm["_emscripten_atomic_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread = asm["_emscripten_sync_run_in_main_thread"]; asm["_emscripten_sync_run_in_main_thread"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_4 = asm["_emscripten_sync_run_in_main_thread_4"]; asm["_emscripten_sync_run_in_main_thread_4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_4.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_5 = asm["_emscripten_sync_run_in_main_thread_5"]; asm["_emscripten_sync_run_in_main_thread_5"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_5.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_6 = asm["_emscripten_sync_run_in_main_thread_6"]; asm["_emscripten_sync_run_in_main_thread_6"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_6.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_7 = asm["_emscripten_sync_run_in_main_thread_7"]; asm["_emscripten_sync_run_in_main_thread_7"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_7.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_0 = asm["_emscripten_sync_run_in_main_thread_0"]; asm["_emscripten_sync_run_in_main_thread_0"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_0.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_1 = asm["_emscripten_sync_run_in_main_thread_1"]; asm["_emscripten_sync_run_in_main_thread_1"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_1.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_2 = asm["_emscripten_sync_run_in_main_thread_2"]; asm["_emscripten_sync_run_in_main_thread_2"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_2.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_sub_u64 = asm["__emscripten_atomic_fetch_and_sub_u64"]; asm["__emscripten_atomic_fetch_and_sub_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_sub_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_exchange_u32 = asm["_emscripten_atomic_exchange_u32"]; asm["_emscripten_atomic_exchange_u32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_exchange_u32.apply(null, arguments);
};
var real__fflush = asm["_fflush"]; asm["_fflush"] = function() {
@@ -28168,22 +34633,46 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__fflush.apply(null, arguments);
};
+var real__emscripten_set_current_thread_status = asm["_emscripten_set_current_thread_status"]; asm["_emscripten_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_set_current_thread_status.apply(null, arguments);
+};
+
+var real__emscripten_atomic_cas_u64 = asm["_emscripten_atomic_cas_u64"]; asm["_emscripten_atomic_cas_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_cas_u64.apply(null, arguments);
+};
+
var real__llvm_cttz_i32 = asm["_llvm_cttz_i32"]; asm["_llvm_cttz_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__llvm_cttz_i32.apply(null, arguments);
};
-var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+var real__emscripten_atomic_sub_u64 = asm["_emscripten_atomic_sub_u64"]; asm["_emscripten_atomic_sub_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__sbrk.apply(null, arguments);
+return real__emscripten_atomic_sub_u64.apply(null, arguments);
};
-var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
+var real__main = asm["_main"]; asm["_main"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__llvm_bswap_i32.apply(null, arguments);
+return real__main.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_xprintf_varargs = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"]; asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_xprintf_varargs.apply(null, arguments);
+};
+
+var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____errno_location.apply(null, arguments);
};
var real____muldi3 = asm["___muldi3"]; asm["___muldi3"] = function() {
@@ -28192,6 +34681,18 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldi3.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_and_u64 = asm["__emscripten_atomic_fetch_and_and_u64"]; asm["__emscripten_atomic_fetch_and_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_3 = asm["_emscripten_sync_run_in_main_thread_3"]; asm["_emscripten_sync_run_in_main_thread_3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_3.apply(null, arguments);
+};
+
var real____uremdi3 = asm["___uremdi3"]; asm["___uremdi3"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28210,12 +34711,6 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Subtract.apply(null, arguments);
};
-var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
-assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
-assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivmoddi4.apply(null, arguments);
-};
-
var real_setTempRet0 = asm["setTempRet0"]; asm["setTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28228,28 +34723,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Add.apply(null, arguments);
};
+var real__emscripten_atomic_store_u64 = asm["_emscripten_atomic_store_u64"]; asm["_emscripten_atomic_store_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f64 = asm["_emscripten_atomic_load_f64"]; asm["_emscripten_atomic_load_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f64.apply(null, arguments);
+};
+
var real__emscripten_get_global_libc = asm["_emscripten_get_global_libc"]; asm["_emscripten_get_global_libc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_get_global_libc.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_add_u64 = asm["__emscripten_atomic_fetch_and_add_u64"]; asm["__emscripten_atomic_fetch_and_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_add_u64.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_or_u64 = asm["__emscripten_atomic_fetch_and_or_u64"]; asm["__emscripten_atomic_fetch_and_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_or_u64.apply(null, arguments);
+};
+
var real__emscripten_GetProcAddress = asm["_emscripten_GetProcAddress"]; asm["_emscripten_GetProcAddress"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_GetProcAddress.apply(null, arguments);
};
-var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+var real__emscripten_async_run_in_main_thread = asm["_emscripten_async_run_in_main_thread"]; asm["_emscripten_async_run_in_main_thread"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivdi3.apply(null, arguments);
+return real__emscripten_async_run_in_main_thread.apply(null, arguments);
};
-var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____errno_location.apply(null, arguments);
+return real__llvm_bswap_i32.apply(null, arguments);
};
var real____muldsi3 = asm["___muldsi3"]; asm["___muldsi3"] = function() {
@@ -28258,28 +34777,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldsi3.apply(null, arguments);
};
+var real__emscripten_main_thread_process_queued_calls = asm["_emscripten_main_thread_process_queued_calls"]; asm["_emscripten_main_thread_process_queued_calls"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_main_thread_process_queued_calls.apply(null, arguments);
+};
+
+var real__emscripten_atomic_add_u64 = asm["_emscripten_atomic_add_u64"]; asm["_emscripten_atomic_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_add_u64.apply(null, arguments);
+};
+
var real__free = asm["_free"]; asm["_free"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__free.apply(null, arguments);
};
-var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+var real__emscripten_atomic_store_f32 = asm["_emscripten_atomic_store_f32"]; asm["_emscripten_atomic_store_f32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_establishStackSpace.apply(null, arguments);
+return real__emscripten_atomic_store_f32.apply(null, arguments);
};
-var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__memmove.apply(null, arguments);
+return real_setThrew.apply(null, arguments);
};
-var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+var real__emscripten_atomic_exchange_u64 = asm["_emscripten_atomic_exchange_u64"]; asm["_emscripten_atomic_exchange_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__strstr.apply(null, arguments);
+return real__emscripten_atomic_exchange_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_store_f64 = asm["_emscripten_atomic_store_f64"]; asm["_emscripten_atomic_store_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_f64.apply(null, arguments);
+};
+
+var real____pthread_tsd_run_dtors = asm["___pthread_tsd_run_dtors"]; asm["___pthread_tsd_run_dtors"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____pthread_tsd_run_dtors.apply(null, arguments);
};
var real_stackRestore = asm["stackRestore"]; asm["stackRestore"] = function() {
@@ -28288,43 +34831,120 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackRestore.apply(null, arguments);
};
+var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivmoddi4.apply(null, arguments);
+};
+
var real__malloc = asm["_malloc"]; asm["_malloc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__malloc.apply(null, arguments);
};
+
+var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real_establishStackSpace.apply(null, arguments);
+};
+
+var real__emscripten_conditional_set_current_thread_status = asm["_emscripten_conditional_set_current_thread_status"]; asm["_emscripten_conditional_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_conditional_set_current_thread_status.apply(null, arguments);
+};
+
+var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__sbrk.apply(null, arguments);
+};
+
+var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__memmove.apply(null, arguments);
+};
+
+var real__emscripten_atomic_or_u64 = asm["_emscripten_atomic_or_u64"]; asm["_emscripten_atomic_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_or_u64.apply(null, arguments);
+};
+
+var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__strstr.apply(null, arguments);
+};
+var __emscripten_atomic_fetch_and_xor_u64 = Module["__emscripten_atomic_fetch_and_xor_u64"] = asm["__emscripten_atomic_fetch_and_xor_u64"];
var _roundf = Module["_roundf"] = asm["_roundf"];
-var _main = Module["_main"] = asm["_main"];
+var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var _emscripten_atomic_load_f32 = Module["_emscripten_atomic_load_f32"] = asm["_emscripten_atomic_load_f32"];
+var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = asm["___emscripten_pthread_data_constructor"];
var stackSave = Module["stackSave"] = asm["stackSave"];
-var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
-var _memset = Module["_memset"] = asm["_memset"];
-var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_xor_u64 = Module["_emscripten_atomic_xor_u64"] = asm["_emscripten_atomic_xor_u64"];
+var _emscripten_atomic_load_u64 = Module["_emscripten_atomic_load_u64"] = asm["_emscripten_atomic_load_u64"];
+var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
-var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
+var _emscripten_atomic_and_u64 = Module["_emscripten_atomic_and_u64"] = asm["_emscripten_atomic_and_u64"];
+var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = asm["_emscripten_sync_run_in_main_thread"];
+var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = asm["_emscripten_sync_run_in_main_thread_4"];
+var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = asm["_emscripten_sync_run_in_main_thread_5"];
+var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = asm["_emscripten_sync_run_in_main_thread_6"];
+var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = asm["_emscripten_sync_run_in_main_thread_7"];
+var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = asm["_emscripten_sync_run_in_main_thread_0"];
+var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = asm["_emscripten_sync_run_in_main_thread_1"];
+var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = asm["_emscripten_sync_run_in_main_thread_2"];
+var __emscripten_atomic_fetch_and_sub_u64 = Module["__emscripten_atomic_fetch_and_sub_u64"] = asm["__emscripten_atomic_fetch_and_sub_u64"];
+var _emscripten_atomic_exchange_u32 = Module["_emscripten_atomic_exchange_u32"] = asm["_emscripten_atomic_exchange_u32"];
var _fflush = Module["_fflush"] = asm["_fflush"];
+var _emscripten_set_current_thread_status = Module["_emscripten_set_current_thread_status"] = asm["_emscripten_set_current_thread_status"];
+var _emscripten_atomic_cas_u64 = Module["_emscripten_atomic_cas_u64"] = asm["_emscripten_atomic_cas_u64"];
var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"];
-var _sbrk = Module["_sbrk"] = asm["_sbrk"];
+var _emscripten_atomic_sub_u64 = Module["_emscripten_atomic_sub_u64"] = asm["_emscripten_atomic_sub_u64"];
+var _main = Module["_main"] = asm["_main"];
+var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
-var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
var ___muldi3 = Module["___muldi3"] = asm["___muldi3"];
+var __emscripten_atomic_fetch_and_and_u64 = Module["__emscripten_atomic_fetch_and_and_u64"] = asm["__emscripten_atomic_fetch_and_and_u64"];
+var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = asm["_emscripten_sync_run_in_main_thread_3"];
var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"];
var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
-var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _memset = Module["_memset"] = asm["_memset"];
var setTempRet0 = Module["setTempRet0"] = asm["setTempRet0"];
var _i64Add = Module["_i64Add"] = asm["_i64Add"];
+var _emscripten_atomic_store_u64 = Module["_emscripten_atomic_store_u64"] = asm["_emscripten_atomic_store_u64"];
+var _emscripten_atomic_load_f64 = Module["_emscripten_atomic_load_f64"] = asm["_emscripten_atomic_load_f64"];
var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = asm["_emscripten_get_global_libc"];
+var __emscripten_atomic_fetch_and_add_u64 = Module["__emscripten_atomic_fetch_and_add_u64"] = asm["__emscripten_atomic_fetch_and_add_u64"];
+var __emscripten_atomic_fetch_and_or_u64 = Module["__emscripten_atomic_fetch_and_or_u64"] = asm["__emscripten_atomic_fetch_and_or_u64"];
var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = asm["_emscripten_GetProcAddress"];
-var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
-var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
+var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = asm["_emscripten_async_run_in_main_thread"];
+var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var ___muldsi3 = Module["___muldsi3"] = asm["___muldsi3"];
+var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = asm["_emscripten_main_thread_process_queued_calls"];
+var _emscripten_atomic_add_u64 = Module["_emscripten_atomic_add_u64"] = asm["_emscripten_atomic_add_u64"];
var _free = Module["_free"] = asm["_free"];
-var runPostSets = Module["runPostSets"] = asm["runPostSets"];
+var _emscripten_atomic_store_f32 = Module["_emscripten_atomic_store_f32"] = asm["_emscripten_atomic_store_f32"];
+var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_exchange_u64 = Module["_emscripten_atomic_exchange_u64"] = asm["_emscripten_atomic_exchange_u64"];
+var _emscripten_atomic_store_f64 = Module["_emscripten_atomic_store_f64"] = asm["_emscripten_atomic_store_f64"];
+var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = asm["___pthread_tsd_run_dtors"];
+var stackRestore = Module["stackRestore"] = asm["stackRestore"];
+var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _malloc = Module["_malloc"] = asm["_malloc"];
var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"];
+var _emscripten_conditional_set_current_thread_status = Module["_emscripten_conditional_set_current_thread_status"] = asm["_emscripten_conditional_set_current_thread_status"];
+var _sbrk = Module["_sbrk"] = asm["_sbrk"];
var _memmove = Module["_memmove"] = asm["_memmove"];
+var _emscripten_atomic_or_u64 = Module["_emscripten_atomic_or_u64"] = asm["_emscripten_atomic_or_u64"];
var _strstr = Module["_strstr"] = asm["_strstr"];
-var stackRestore = Module["stackRestore"] = asm["stackRestore"];
-var _malloc = Module["_malloc"] = asm["_malloc"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_vd = Module["dynCall_vd"] = asm["dynCall_vd"];
var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"];
@@ -28506,6 +35126,7 @@ function exit(status, implicit) {
if (Module['noExitRuntime']) {
Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');
} else {
+ PThread.terminateAllThreads();
ABORT = true;
EXITSTATUS = status;
@@ -28526,6 +35147,7 @@ Module['exit'] = Module.exit = exit;
var abortDecorators = [];
function abort(what) {
+ if (ENVIRONMENT_IS_PTHREAD) console.error('Pthread aborting at ' + new Error().stack);
if (what !== undefined) {
Module.print(what);
Module.printErr(what);
@@ -28565,7 +35187,7 @@ if (Module['noInitialRun']) {
}
-run();
+if (!ENVIRONMENT_IS_PTHREAD) run();
// {{POST_RUN_ADDITIONS}}
diff --git a/docs/examples/web/physac/physics_movement.c b/docs/examples/web/physac/physics_movement.c
index 3345404d..70078b0c 100644
--- a/docs/examples/web/physac/physics_movement.c
+++ b/docs/examples/web/physac/physics_movement.c
@@ -2,9 +2,11 @@
*
* Physac - Physics movement
*
-* NOTE: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 1: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 2: Physac requires static C library linkage to avoid dependency on MinGW DLL (-static -lpthread)
+*
+* Use the following line to compile:
*
-* Use the following code to compile (-static -lpthread):
* gcc -o $(NAME_PART).exe $(FILE_NAME) -s $(RAYLIB_DIR)\raylib\raylib_icon -static -lraylib -lpthread
* -lglfw3 -lopengl32 -lgdi32 -lopenal32 -lwinmm -std=c99 -Wl,--subsystem,windows -Wl,-allow-multiple-definition
*
@@ -15,111 +17,147 @@
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
-#include "../src/physac.h"
+#include "physac.h"
+
+#if defined(PLATFORM_WEB)
+ #include <emscripten/emscripten.h>
+#endif
+
+#define VELOCITY 0.5f
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+int screenWidth = 800;
+int screenHeight = 450;
+
+// Physac logo drawing position
+int logoX = 0;
+int logoY = 15;
-#define VELOCITY 0.5f
+PhysicsBody body;
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void); // Update and Draw one frame
+
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 450;
-
SetConfigFlags(FLAG_MSAA_4X_HINT);
InitWindow(screenWidth, screenHeight, "Physac [raylib] - Physics movement");
- SetTargetFPS(60);
// Physac logo drawing position
- int logoX = screenWidth - MeasureText("Physac", 30) - 10;
- int logoY = 15;
+ logoX = screenWidth - MeasureText("Physac", 30) - 10;
// Initialize physics and default physics bodies
InitPhysics();
- // Create floor and walls rectangle physics body
- PhysicsBody floor = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, screenWidth, 100, 10);
+ // Create ground and walls rectangle physics body
+ PhysicsBody ground = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, screenWidth, 100, 10);
PhysicsBody platformLeft = CreatePhysicsBodyRectangle((Vector2){ screenWidth*0.25f, screenHeight*0.6f }, screenWidth*0.25f, 10, 10);
PhysicsBody platformRight = CreatePhysicsBodyRectangle((Vector2){ screenWidth*0.75f, screenHeight*0.6f }, screenWidth*0.25f, 10, 10);
PhysicsBody wallLeft = CreatePhysicsBodyRectangle((Vector2){ -5, screenHeight/2 }, 10, screenHeight, 10);
PhysicsBody wallRight = CreatePhysicsBodyRectangle((Vector2){ screenWidth + 5, screenHeight/2 }, 10, screenHeight, 10);
- // Disable dynamics to floor and walls physics bodies
- floor->enabled = false;
+ // Disable dynamics to ground and walls physics bodies
+ ground->enabled = false;
platformLeft->enabled = false;
platformRight->enabled = false;
wallLeft->enabled = false;
wallRight->enabled = false;
// Create movement physics body
- PhysicsBody body = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight/2 }, 50, 50, 1);
+ body = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight/2 }, 50, 50, 1);
body->freezeOrient = true; // Constrain body rotation to avoid little collision torque amounts
- //--------------------------------------------------------------------------------------
+
+#if defined(PLATFORM_WEB)
+ emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
- // Update
- //----------------------------------------------------------------------------------
- if (IsKeyPressed('R')) // Reset physics input
- {
- // Reset movement physics body position, velocity and rotation
- body->position = (Vector2){ screenWidth/2, screenHeight/2 };
- body->velocity = (Vector2){ 0, 0 };
- SetPhysicsBodyRotation(body, 0);
- }
+ UpdateDrawFrame();
+ }
+#endif
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ ClosePhysics(); // Uninitialize physics
+
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
- // Horizontal movement input
- if (IsKeyDown(KEY_RIGHT)) body->velocity.x = VELOCITY;
- else if (IsKeyDown(KEY_LEFT)) body->velocity.x = -VELOCITY;
+ return 0;
+}
- // Vertical movement input checking if player physics body is grounded
- if (IsKeyDown(KEY_UP) && body->isGrounded) body->velocity.y = -VELOCITY*4;
- //----------------------------------------------------------------------------------
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+ // Update
+ //----------------------------------------------------------------------------------
+ if (IsKeyPressed('R')) // Reset physics input
+ {
+ // Reset movement physics body position, velocity and rotation
+ body->position = (Vector2){ screenWidth/2, screenHeight/2 };
+ body->velocity = (Vector2){ 0, 0 };
+ SetPhysicsBodyRotation(body, 0);
+ }
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
+ // Horizontal movement input
+ if (IsKeyDown(KEY_RIGHT)) body->velocity.x = VELOCITY;
+ else if (IsKeyDown(KEY_LEFT)) body->velocity.x = -VELOCITY;
- ClearBackground(BLACK);
+ // Vertical movement input checking if player physics body is grounded
+ if (IsKeyDown(KEY_UP) && body->isGrounded) body->velocity.y = -VELOCITY*4;
+ //----------------------------------------------------------------------------------
- DrawFPS(screenWidth - 90, screenHeight - 30);
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
- // Draw created physics bodies
- int bodiesCount = GetPhysicsBodiesCount();
- for (int i = 0; i < bodiesCount; i++)
- {
- PhysicsBody body = GetPhysicsBody(i);
+ ClearBackground(BLACK);
- int vertexCount = GetPhysicsShapeVerticesCount(i);
- for (int j = 0; j < vertexCount; j++)
- {
- // Get physics bodies shape vertices to draw lines
- // Note: GetPhysicsShapeVertex() already calculates rotation transformations
- Vector2 vertexA = GetPhysicsShapeVertex(body, j);
+ DrawFPS(screenWidth - 90, screenHeight - 30);
- int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
- Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
+ // Draw created physics bodies
+ int bodiesCount = GetPhysicsBodiesCount();
+ for (int i = 0; i < bodiesCount; i++)
+ {
+ PhysicsBody body = GetPhysicsBody(i);
- DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
- }
- }
+ int vertexCount = GetPhysicsShapeVerticesCount(i);
+ for (int j = 0; j < vertexCount; j++)
+ {
+ // Get physics bodies shape vertices to draw lines
+ // Note: GetPhysicsShapeVertex() already calculates rotation transformations
+ Vector2 vertexA = GetPhysicsShapeVertex(body, j);
- DrawText("Use 'ARROWS' to move player", 10, 10, 10, WHITE);
- DrawText("Press 'R' to reset example", 10, 30, 10, WHITE);
+ int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
+ Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
- DrawText("Physac", logoX, logoY, 30, WHITE);
- DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
+ DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
+ }
+ }
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
+ DrawText("Use 'ARROWS' to move player", 10, 10, 10, WHITE);
+ DrawText("Press 'R' to reset example", 10, 30, 10, WHITE);
- // De-Initialization
- //--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
+ DrawText("Physac", logoX, logoY, 30, WHITE);
+ DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
- return 0;
+ EndDrawing();
+ //----------------------------------------------------------------------------------
}
+
diff --git a/docs/examples/web/physac/physics_movement.js b/docs/examples/web/physac/physics_movement.js
index 7555a22a..5bc965ef 100644
--- a/docs/examples/web/physac/physics_movement.js
+++ b/docs/examples/web/physac/physics_movement.js
@@ -59,6 +59,11 @@ if (Module['ENVIRONMENT']) {
ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
}
+var ENVIRONMENT_IS_PTHREAD;
+if (!ENVIRONMENT_IS_PTHREAD) ENVIRONMENT_IS_PTHREAD = false; // ENVIRONMENT_IS_PTHREAD=true will have been preset in pthread-main.js. Make it false in the main runtime thread.
+var PthreadWorkerInit; // Collects together variables that are needed at initialization time for the web workers that host pthreads.
+if (!ENVIRONMENT_IS_PTHREAD) PthreadWorkerInit = {};
+var currentScriptUrl = ENVIRONMENT_IS_WORKER ? undefined : document.currentScript.src;
if (ENVIRONMENT_IS_NODE) {
// Expose functionality in the same simple way that the shells work
@@ -1178,9 +1183,14 @@ var STATIC_BASE, STATICTOP, staticSealed; // static area
var STACK_BASE, STACKTOP, STACK_MAX; // stack area
var DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk
+if (!ENVIRONMENT_IS_PTHREAD) { // Pthreads have already initialized these variables in src/pthread-main.js, where they were passed to the thread worker at startup time
STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;
staticSealed = false;
+}
+if (ENVIRONMENT_IS_PTHREAD) {
+ staticSealed = true; // The static memory area has been initialized already in the main thread, pthreads skip this.
+}
// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode.
function writeStackCookie() {
@@ -1207,7 +1217,7 @@ function abortOnCannotGrowMemory() {
function enlargeMemory() {
- abortOnCannotGrowMemory();
+ abort('Cannot enlarge memory arrays, since compiling with pthreads support enabled (-s USE_PTHREADS=1).');
}
@@ -1221,27 +1231,69 @@ assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined'
'JS engine does not provide full typed array support');
-
-// Use a provided buffer, if there is one, or else allocate a new one
-if (Module['buffer']) {
- buffer = Module['buffer'];
- assert(buffer.byteLength === TOTAL_MEMORY, 'provided buffer should be ' + TOTAL_MEMORY + ' bytes, but it is ' + buffer.byteLength);
+if (typeof SharedArrayBuffer !== 'undefined') {
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new SharedArrayBuffer(TOTAL_MEMORY);
+ // Currently SharedArrayBuffer does not have a slice() operation, so polyfill it in.
+ // Adapted from https://github.com/ttaubert/node-arraybuffer-slice, (c) 2014 Tim Taubert <[email protected]>
+ // arraybuffer-slice may be freely distributed under the MIT license.
+ (function (undefined) {
+ "use strict";
+ function clamp(val, length) {
+ val = (val|0) || 0;
+ if (val < 0) return Math.max(val + length, 0);
+ return Math.min(val, length);
+ }
+ if (typeof SharedArrayBuffer !== 'undefined' && !SharedArrayBuffer.prototype.slice) {
+ SharedArrayBuffer.prototype.slice = function (from, to) {
+ var length = this.byteLength;
+ var begin = clamp(from, length);
+ var end = length;
+ if (to !== undefined) end = clamp(to, length);
+ if (begin > end) return new ArrayBuffer(0);
+ var num = end - begin;
+ var target = new ArrayBuffer(num);
+ var targetArray = new Uint8Array(target);
+ var sourceArray = new Uint8Array(this, begin, num);
+ targetArray.set(sourceArray);
+ return target;
+ };
+ }
+ })();
} else {
- // Use a WebAssembly memory where available
- {
- buffer = new ArrayBuffer(TOTAL_MEMORY);
- }
- assert(buffer.byteLength === TOTAL_MEMORY);
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new ArrayBuffer(TOTAL_MEMORY);
}
updateGlobalBufferViews();
+if (typeof Atomics === 'undefined') {
+ // Polyfill singlethreaded atomics ops from http://lars-t-hansen.github.io/ecmascript_sharedmem/shmem.html#Atomics.add
+ // No thread-safety needed since we don't have multithreading support.
+ Atomics = {};
+ Atomics['add'] = function(t, i, v) { var w = t[i]; t[i] += v; return w; }
+ Atomics['and'] = function(t, i, v) { var w = t[i]; t[i] &= v; return w; }
+ Atomics['compareExchange'] = function(t, i, e, r) { var w = t[i]; if (w == e) t[i] = r; return w; }
+ Atomics['exchange'] = function(t, i, v) { var w = t[i]; t[i] = v; return w; }
+ Atomics['wait'] = function(t, i, v, o) { if (t[i] != v) return 'not-equal'; else return 'timed-out'; }
+ Atomics['wake'] = function(t, i, c) { return 0; }
+ Atomics['wakeOrRequeue'] = function(t, i1, c, i2, v) { return 0; }
+ Atomics['isLockFree'] = function(s) { return true; }
+ Atomics['load'] = function(t, i) { return t[i]; }
+ Atomics['or'] = function(t, i, v) { var w = t[i]; t[i] |= v; return w; }
+ Atomics['store'] = function(t, i, v) { t[i] = v; return v; }
+ Atomics['sub'] = function(t, i, v) { var w = t[i]; t[i] -= v; return w; }
+ Atomics['xor'] = function(t, i, v) { var w = t[i]; t[i] ^= v; return w; }
+}
+
function getTotalMemory() {
return TOTAL_MEMORY;
}
// Endianness check (note: assumes compiler arch was little-endian)
+if (!ENVIRONMENT_IS_PTHREAD) {
HEAP32[0] = 0x63736d65; /* 'emsc' */
+} else {
+ if (HEAP32[0] !== 0x63736d65) throw 'Runtime error: The application has corrupted its heap memory area (address zero)!';
+}
HEAP16[1] = 0x6373;
if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!';
@@ -1285,8 +1337,10 @@ var __ATPOSTRUN__ = []; // functions called after the runtime has exited
var runtimeInitialized = false;
var runtimeExited = false;
+if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true; // The runtime is hosted in the main thread, and bits shared to pthreads via SharedArrayBuffer. No need to init again in pthread.
function preRun() {
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['preRun'] at this time
if (Module['preRun']) {
if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
@@ -1299,6 +1353,7 @@ function preRun() {
function ensureInitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
@@ -1306,17 +1361,20 @@ function ensureInitRuntime() {
function preMain() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATEXIT__);
runtimeExited = true;
}
function postRun() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['postRun'] at this time
if (Module['postRun']) {
if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
@@ -1435,6 +1493,18 @@ function reSign(value, bits, ignore) {
return value;
}
+// Atomics.exchange is not yet implemented in the spec, so polyfill that in via compareExchange in the meanwhile.
+// TODO: Keep an eye out for the opportunity to remove this once Atomics.exchange is available.
+if (typeof Atomics !== 'undefined' && !Atomics['exchange']) {
+ Atomics['exchange'] = function(heap, index, val) {
+ var oldVal, oldVal2;
+ do {
+ oldVal = Atomics['load'](heap, index);
+ oldVal2 = Atomics['compareExchange'](heap, index, oldVal, val);
+ } while(oldVal != oldVal2);
+ return oldVal;
+ }
+}
// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
@@ -1504,6 +1574,9 @@ function getUniqueRunDependency(id) {
}
function addRunDependency(id) {
+ // We should never get here in pthreads (could no-op this out if called in pthreads, but that might indicate a bug in caller side,
+ // so good to be very explicit)
+ assert(!ENVIRONMENT_IS_PTHREAD);
runDependencies++;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
@@ -1572,52 +1645,43 @@ var memoryInitializer = null;
-var /* show errors on likely calls to FS when it was not included */ FS = {
- error: function() {
- abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1');
- },
- init: function() { FS.error() },
- createDataFile: function() { FS.error() },
- createPreloadedFile: function() { FS.error() },
- createLazyFile: function() { FS.error() },
- open: function() { FS.error() },
- mkdev: function() { FS.error() },
- registerDevice: function() { FS.error() },
- analyzePath: function() { FS.error() },
- loadFilesFromDB: function() { FS.error() },
-
- ErrnoError: function ErrnoError() { FS.error() },
-};
-Module['FS_createDataFile'] = FS.createDataFile;
-Module['FS_createPreloadedFile'] = FS.createPreloadedFile;
// === Body ===
-var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } }];
+var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } },
+ function() { postMessage({ cmd: 'processQueuedMainThreadWork' }) }];
function _emscripten_asm_const_iii(code, a0, a1) {
return ASM_CONSTS[code](a0, a1);
}
+function _emscripten_asm_const_v(code) {
+ return ASM_CONSTS[code]();
+}
+
STATIC_BASE = 8;
-STATICTOP = STATIC_BASE + 36032;
- /* global initializers */ __ATINIT__.push();
+STATICTOP = STATIC_BASE + 38336;
+ /* global initializers */ if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({ func: function() { ___emscripten_pthread_data_constructor() } });
-/* memory initializer */ allocate([32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,12,0,0,5,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,1,0,0,0,2,0,0,0,183,136,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,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,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,109,111,118,101,109,101,110,116,0,80,104,121,115,97,99,0,85,115,101,32,39,65,82,82,79,87,83,39,32,116,111,32,109,111,118,101,32,112,108,97,121,101,114,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
-/* memory initializer */ allocate([120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+if (!ENVIRONMENT_IS_PTHREAD) {
+/* memory initializer */ allocate([32,3,0,0,194,1,0,0,15,0,0,0,32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,180,11,0,0,5,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,1,0,0,0,2,0,0,0,191,145,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,109,111,118,101,109,101,110,116,0,80,104,121,115,97,99,0,85,115,101,32,39,65,82,82,79,87,83,39,32,116,111,32,109,111,118,101,32,112,108,97,121,101,114,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
+/* memory initializer */ allocate([97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,101,109,115,99,114,105,112,116,101,110,95,105,115,95,109,97,105,110,95,114,117,110,116,105,109,101,95,116,104,114,101,97,100,40,41,32,38,38,32,34,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,32,109,117,115,116,32,98,101,32,99,97,108,108,101,100,32,102,114,111,109,32,116,104,101,32,109,97,105,110,32,116,104,114,101,97,100,33,34,0,67,58,92,101,109,115,100,107,92,101,109,115,99,114,105,112,116,101,110,92,49,46,51,55,46,57,92,115,121,115,116,101,109,92,108,105,98,92,112,116,104,114,101,97,100,92,108,105,98,114,97,114,121,95,112,116,104,114,101,97,100,46,99,0,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,0,48,32,38,38,32,34,73,110,118,97,108,105,100,32,69,109,115,99,114,105,112,116,101,110,32,112,116,104,114,101,97,100,32,95,100,111,95,99,97,108,108,32,111,112,99,111,100,101,33,34,0,95,100,111,95,99,97,108,108,0,99,97,108,108,0,101,109,115,99,114,105,112,116,101,110,95,97,115,121,110,99,95,114,117,110,95,105,110,95,109,97,105,110,95,116,104,114,101,97,100,0,112,111,115,116,77,101,115,115,97,103,101,40,123,32,99,109,100,58,32,39,112,114,111,99,101,115,115,81,117,101,117,101,100,77,97,105,110,84,104,114,101,97,100,87,111,114,107,39,32,125,41,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+}
/* no memory initializer */
-var tempDoublePtr = STATICTOP; STATICTOP += 16;
+var tempDoublePtr;
+
+if (!ENVIRONMENT_IS_PTHREAD) tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
@@ -1880,6 +1944,8 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilMaskSeparate(x0, x1) { GLctx['stencilMaskSeparate'](x0, x1) }
+ function ___pthread_setcancelstate() { return 0 }
+
function _emscripten_get_now() { abort() }
@@ -3360,13 +3426,3061 @@ function copyTempDouble(ptr) {
}
- var SYSCALLS={varargs:0,get:function (varargs) {
+
+
+ var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
+
+ var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
+
+ function ___setErrNo(value) {
+ if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
+ else Module.printErr('failed to set errno from JS');
+ return value;
+ }
+
+ var PATH={splitPath:function (filename) {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1);
+ },normalizeArray:function (parts, allowAboveRoot) {
+ // if the path tries to go above the root, `up` ends up > 0
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === '.') {
+ parts.splice(i, 1);
+ } else if (last === '..') {
+ parts.splice(i, 1);
+ up++;
+ } else if (up) {
+ parts.splice(i, 1);
+ up--;
+ }
+ }
+ // if the path is allowed to go above the root, restore leading ..s
+ if (allowAboveRoot) {
+ for (; up--; up) {
+ parts.unshift('..');
+ }
+ }
+ return parts;
+ },normalize:function (path) {
+ var isAbsolute = path.charAt(0) === '/',
+ trailingSlash = path.substr(-1) === '/';
+ // Normalize the path
+ path = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), !isAbsolute).join('/');
+ if (!path && !isAbsolute) {
+ path = '.';
+ }
+ if (path && trailingSlash) {
+ path += '/';
+ }
+ return (isAbsolute ? '/' : '') + path;
+ },dirname:function (path) {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ // No dirname whatsoever
+ return '.';
+ }
+ if (dir) {
+ // It has a dirname, strip trailing slash
+ dir = dir.substr(0, dir.length - 1);
+ }
+ return root + dir;
+ },basename:function (path) {
+ // EMSCRIPTEN return '/'' for '/', not an empty string
+ if (path === '/') return '/';
+ var lastSlash = path.lastIndexOf('/');
+ if (lastSlash === -1) return path;
+ return path.substr(lastSlash+1);
+ },extname:function (path) {
+ return PATH.splitPath(path)[3];
+ },join:function () {
+ var paths = Array.prototype.slice.call(arguments, 0);
+ return PATH.normalize(paths.join('/'));
+ },join2:function (l, r) {
+ return PATH.normalize(l + '/' + r);
+ },resolve:function () {
+ var resolvedPath = '',
+ resolvedAbsolute = false;
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = (i >= 0) ? arguments[i] : FS.cwd();
+ // Skip empty and invalid entries
+ if (typeof path !== 'string') {
+ throw new TypeError('Arguments to path.resolve must be strings');
+ } else if (!path) {
+ return ''; // an invalid portion invalidates the whole thing
+ }
+ resolvedPath = path + '/' + resolvedPath;
+ resolvedAbsolute = path.charAt(0) === '/';
+ }
+ // At this point the path should be resolved to a full absolute path, but
+ // handle relative paths to be safe (might happen when process.cwd() fails)
+ resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
+ return !!p;
+ }), !resolvedAbsolute).join('/');
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+ },relative:function (from, to) {
+ from = PATH.resolve(from).substr(1);
+ to = PATH.resolve(to).substr(1);
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== '') break;
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== '') break;
+ }
+ if (start > end) return [];
+ return arr.slice(start, end - start + 1);
+ }
+ var fromParts = trim(from.split('/'));
+ var toParts = trim(to.split('/'));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break;
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push('..');
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join('/');
+ }};
+
+ var TTY={ttys:[],init:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // currently, FS.init does not distinguish if process.stdin is a file or TTY
+ // // device, it always assumes it's a TTY device. because of this, we're forcing
+ // // process.stdin to UTF8 encoding to at least make stdin reading compatible
+ // // with text files until FS.init can be refactored.
+ // process['stdin']['setEncoding']('utf8');
+ // }
+ },shutdown:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
+ // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
+ // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
+ // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
+ // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
+ // process['stdin']['pause']();
+ // }
+ },register:function (dev, ops) {
+ TTY.ttys[dev] = { input: [], output: [], ops: ops };
+ FS.registerDevice(dev, TTY.stream_ops);
+ },stream_ops:{open:function (stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ stream.tty = tty;
+ stream.seekable = false;
+ },close:function (stream) {
+ // flush any pending line data
+ stream.tty.ops.flush(stream.tty);
+ },flush:function (stream) {
+ stream.tty.ops.flush(stream.tty);
+ },read:function (stream, buffer, offset, length, pos /* ignored */) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ for (var i = 0; i < length; i++) {
+ try {
+ stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }},default_tty_ops:{get_char:function (tty) {
+ if (!tty.input.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ // we will read data by chunks of BUFSIZE
+ var BUFSIZE = 256;
+ var buf = new Buffer(BUFSIZE);
+ var bytesRead = 0;
+
+ var isPosixPlatform = (process.platform != 'win32'); // Node doesn't offer a direct check, so test by exclusion
+
+ var fd = process.stdin.fd;
+ if (isPosixPlatform) {
+ // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync)
+ var usingDevice = false;
+ try {
+ fd = fs.openSync('/dev/stdin', 'r');
+ usingDevice = true;
+ } catch (e) {}
+ }
+
+ try {
+ bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
+ } catch(e) {
+ // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes,
+ // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0.
+ if (e.toString().indexOf('EOF') != -1) bytesRead = 0;
+ else throw e;
+ }
+
+ if (usingDevice) { fs.closeSync(fd); }
+ if (bytesRead > 0) {
+ result = buf.slice(0, bytesRead).toString('utf-8');
+ } else {
+ result = null;
+ }
+
+ } else if (typeof window != 'undefined' &&
+ typeof window.prompt == 'function') {
+ // Browser.
+ result = window.prompt('Input: '); // returns null on cancel
+ if (result !== null) {
+ result += '\n';
+ }
+ } else if (typeof readline == 'function') {
+ // Command line.
+ result = readline();
+ if (result !== null) {
+ result += '\n';
+ }
+ }
+ if (!result) {
+ return null;
+ }
+ tty.input = intArrayFromString(result, true);
+ }
+ return tty.input.shift();
+ },put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle.
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }},default_tty1_ops:{put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val);
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }}};
+
+ var MEMFS={ops_table:null,mount:function (mount) {
+ return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ // no supported
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (!MEMFS.ops_table) {
+ MEMFS.ops_table = {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap,
+ msync: MEMFS.stream_ops.msync
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ }
+ };
+ }
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {};
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity.
+ // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
+ // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
+ // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
+ node.contents = null;
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream;
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream;
+ }
+ node.timestamp = Date.now();
+ // add the new node to the parent
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },getFileDataAsRegularArray:function (node) {
+ if (node.contents && node.contents.subarray) {
+ var arr = [];
+ for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
+ return arr; // Returns a copy of the original data.
+ }
+ return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
+ },getFileDataAsTypedArray:function (node) {
+ if (!node.contents) return new Uint8Array;
+ if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
+ return new Uint8Array(node.contents);
+ },expandFileStorage:function (node, newCapacity) {
+ // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
+ // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
+ // increase the size.
+ if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
+ node.contents = MEMFS.getFileDataAsRegularArray(node);
+ node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
+ }
+
+ if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well.
+ var prevCapacity = node.contents ? node.contents.length : 0;
+ if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
+ // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
+ // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
+ // avoid overshooting the allocation cap by a very large margin.
+ var CAPACITY_DOUBLING_MAX = 1024 * 1024;
+ newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);
+ if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newCapacity); // Allocate new storage.
+ if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
+ return;
+ }
+ // Not using a typed array to back the file storage. Use a standard JS array instead.
+ if (!node.contents && newCapacity > 0) node.contents = [];
+ while (node.contents.length < newCapacity) node.contents.push(0);
+ },resizeFileStorage:function (node, newSize) {
+ if (node.usedBytes == newSize) return;
+ if (newSize == 0) {
+ node.contents = null; // Fully decommit when requesting a resize to zero.
+ node.usedBytes = 0;
+ return;
+ }
+ if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
+ if (oldContents) {
+ node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.
+ }
+ node.usedBytes = newSize;
+ return;
+ }
+ // Backing with a JS array.
+ if (!node.contents) node.contents = [];
+ if (node.contents.length > newSize) node.contents.length = newSize;
+ else while (node.contents.length < newSize) node.contents.push(0);
+ node.usedBytes = newSize;
+ },node_ops:{getattr:function (node) {
+ var attr = {};
+ // device numbers reuse inode numbers.
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096;
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.usedBytes;
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length;
+ } else {
+ attr.size = 0;
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
+ // but this is not required by the standard.
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr;
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ if (attr.size !== undefined) {
+ MEMFS.resizeFileStorage(node, attr.size);
+ }
+ },lookup:function (parent, name) {
+ throw FS.genericErrors[ERRNO_CODES.ENOENT];
+ },mknod:function (parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev);
+ },rename:function (old_node, new_dir, new_name) {
+ // if we're overwriting a directory at new_name, make sure it's empty.
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ }
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ }
+ }
+ // do the internal rewiring
+ delete old_node.parent.contents[old_node.name];
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ old_node.parent = new_dir;
+ },unlink:function (parent, name) {
+ delete parent.contents[name];
+ },rmdir:function (parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ delete parent.contents[name];
+ },readdir:function (node) {
+ var entries = ['.', '..']
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
+ node.link = oldpath;
+ return node;
+ },readlink:function (node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return node.link;
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= stream.node.usedBytes) return 0;
+ var size = Math.min(stream.node.usedBytes - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) { // non-trivial, and typed array
+ buffer.set(contents.subarray(position, position + size), offset);
+ } else {
+ for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
+ }
+ return size;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (!length) return 0;
+ var node = stream.node;
+ node.timestamp = Date.now();
+
+ if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array?
+ if (canOwn) {
+ assert(position === 0, 'canOwn must imply no weird position inside the file');
+ node.contents = buffer.subarray(offset, offset + length);
+ node.usedBytes = length;
+ return length;
+ } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
+ node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
+ node.usedBytes = length;
+ return length;
+ } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ return length;
+ }
+ }
+
+ // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
+ MEMFS.expandFileStorage(node, position+length);
+ if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.
+ else {
+ for (var i = 0; i < length; i++) {
+ node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
+ }
+ }
+ node.usedBytes = Math.max(node.usedBytes, position+length);
+ return length;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.usedBytes;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ },allocate:function (stream, offset, length) {
+ MEMFS.expandFileStorage(stream.node, offset + length);
+ stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ // Only make a new copy when MAP_PRIVATE is specified.
+ if ( !(flags & 2) &&
+ (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
+ // We can't emulate MAP_SHARED when the file is not backed by the buffer
+ // we're mapping to (e.g. the HEAP buffer).
+ allocated = false;
+ ptr = contents.byteOffset;
+ } else {
+ // Try to avoid unnecessary slices.
+ if (position > 0 || position + length < stream.node.usedBytes) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length);
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length);
+ }
+ }
+ allocated = true;
+ ptr = _malloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
+ }
+ buffer.set(contents, ptr);
+ }
+ return { ptr: ptr, allocated: allocated };
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (mmapFlags & 2) {
+ // MAP_PRIVATE calls need not to be synced back to underlying fs
+ return 0;
+ }
+
+ var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
+ // should we check if bytesWritten and length are the same?
+ return 0;
+ }}};
+
+ var IDBFS={dbs:{},indexedDB:function () {
+ if (typeof indexedDB !== 'undefined') return indexedDB;
+ var ret = null;
+ if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ assert(ret, 'IDBFS used, but indexedDB not supported');
+ return ret;
+ },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
+ // reuse all of the core MEMFS functionality
+ return MEMFS.mount.apply(null, arguments);
+ },syncfs:function (mount, populate, callback) {
+ IDBFS.getLocalSet(mount, function(err, local) {
+ if (err) return callback(err);
+
+ IDBFS.getRemoteSet(mount, function(err, remote) {
+ if (err) return callback(err);
+
+ var src = populate ? remote : local;
+ var dst = populate ? local : remote;
+
+ IDBFS.reconcile(src, dst, callback);
+ });
+ });
+ },getDB:function (name, callback) {
+ // check the cache first
+ var db = IDBFS.dbs[name];
+ if (db) {
+ return callback(null, db);
+ }
+
+ var req;
+ try {
+ req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
+ } catch (e) {
+ return callback(e);
+ }
+ if (!req) {
+ return callback("Unable to connect to IndexedDB");
+ }
+ req.onupgradeneeded = function(e) {
+ var db = e.target.result;
+ var transaction = e.target.transaction;
+
+ var fileStore;
+
+ if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
+ fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ } else {
+ fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
+ }
+
+ if (!fileStore.indexNames.contains('timestamp')) {
+ fileStore.createIndex('timestamp', 'timestamp', { unique: false });
+ }
+ };
+ req.onsuccess = function() {
+ db = req.result;
+
+ // add to the cache
+ IDBFS.dbs[name] = db;
+ callback(null, db);
+ };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },getLocalSet:function (mount, callback) {
+ var entries = {};
+
+ function isRealDir(p) {
+ return p !== '.' && p !== '..';
+ };
+ function toAbsolute(root) {
+ return function(p) {
+ return PATH.join2(root, p);
+ }
+ };
+
+ var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
+
+ while (check.length) {
+ var path = check.pop();
+ var stat;
+
+ try {
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
+ }
+
+ entries[path] = { timestamp: stat.mtime };
+ }
+
+ return callback(null, { type: 'local', entries: entries });
+ },getRemoteSet:function (mount, callback) {
+ var entries = {};
+
+ IDBFS.getDB(mount.mountpoint, function(err, db) {
+ if (err) return callback(err);
+
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
+ transaction.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ var index = store.index('timestamp');
+
+ index.openKeyCursor().onsuccess = function(event) {
+ var cursor = event.target.result;
+
+ if (!cursor) {
+ return callback(null, { type: 'remote', db: db, entries: entries });
+ }
+
+ entries[cursor.primaryKey] = { timestamp: cursor.key };
+
+ cursor.continue();
+ };
+ });
+ },loadLocalEntry:function (path, callback) {
+ var stat, node;
+
+ try {
+ var lookup = FS.lookupPath(path);
+ node = lookup.node;
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode });
+ } else if (FS.isFile(stat.mode)) {
+ // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
+ // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
+ node.contents = MEMFS.getFileDataAsTypedArray(node);
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+ },storeLocalEntry:function (path, entry, callback) {
+ try {
+ if (FS.isDir(entry.mode)) {
+ FS.mkdir(path, entry.mode);
+ } else if (FS.isFile(entry.mode)) {
+ FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+
+ FS.chmod(path, entry.mode);
+ FS.utime(path, entry.timestamp, entry.timestamp);
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },removeLocalEntry:function (path, callback) {
+ try {
+ var lookup = FS.lookupPath(path);
+ var stat = FS.stat(path);
+
+ if (FS.isDir(stat.mode)) {
+ FS.rmdir(path);
+ } else if (FS.isFile(stat.mode)) {
+ FS.unlink(path);
+ }
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },loadRemoteEntry:function (store, path, callback) {
+ var req = store.get(path);
+ req.onsuccess = function(event) { callback(null, event.target.result); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },storeRemoteEntry:function (store, path, entry, callback) {
+ var req = store.put(entry, path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },removeRemoteEntry:function (store, path, callback) {
+ var req = store.delete(path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },reconcile:function (src, dst, callback) {
+ var total = 0;
+
+ var create = [];
+ Object.keys(src.entries).forEach(function (key) {
+ var e = src.entries[key];
+ var e2 = dst.entries[key];
+ if (!e2 || e.timestamp > e2.timestamp) {
+ create.push(key);
+ total++;
+ }
+ });
+
+ var remove = [];
+ Object.keys(dst.entries).forEach(function (key) {
+ var e = dst.entries[key];
+ var e2 = src.entries[key];
+ if (!e2) {
+ remove.push(key);
+ total++;
+ }
+ });
+
+ if (!total) {
+ return callback(null);
+ }
+
+ var errored = false;
+ var completed = 0;
+ var db = src.type === 'remote' ? src.db : dst.db;
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return callback(err);
+ }
+ return;
+ }
+ if (++completed >= total) {
+ return callback(null);
+ }
+ };
+
+ transaction.onerror = function(e) {
+ done(this.error);
+ e.preventDefault();
+ };
+
+ // sort paths in ascending order so directory entries are created
+ // before the files inside them
+ create.sort().forEach(function (path) {
+ if (dst.type === 'local') {
+ IDBFS.loadRemoteEntry(store, path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeLocalEntry(path, entry, done);
+ });
+ } else {
+ IDBFS.loadLocalEntry(path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeRemoteEntry(store, path, entry, done);
+ });
+ }
+ });
+
+ // sort paths in descending order so files are deleted before their
+ // parent directories
+ remove.sort().reverse().forEach(function(path) {
+ if (dst.type === 'local') {
+ IDBFS.removeLocalEntry(path, done);
+ } else {
+ IDBFS.removeRemoteEntry(store, path, done);
+ }
+ });
+ }};
+
+ var NODEFS={isWindows:false,staticInit:function () {
+ NODEFS.isWindows = !!process.platform.match(/^win/);
+ },mount:function (mount) {
+ assert(ENVIRONMENT_IS_NODE);
+ return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node = FS.createNode(parent, name, mode);
+ node.node_ops = NODEFS.node_ops;
+ node.stream_ops = NODEFS.stream_ops;
+ return node;
+ },getMode:function (path) {
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ if (NODEFS.isWindows) {
+ // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
+ // propagate write bits to execute bits.
+ stat.mode = stat.mode | ((stat.mode & 146) >> 1);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return stat.mode;
+ },realPath:function (node) {
+ var parts = [];
+ while (node.parent !== node) {
+ parts.push(node.name);
+ node = node.parent;
+ }
+ parts.push(node.mount.opts.root);
+ parts.reverse();
+ return PATH.join.apply(null, parts);
+ },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
+ flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process.
+ if (flags in NODEFS.flagsToPermissionStringMap) {
+ return NODEFS.flagsToPermissionStringMap[flags];
+ } else {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ },node_ops:{getattr:function (node) {
+ var path = NODEFS.realPath(node);
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
+ // See http://support.microsoft.com/kb/140365
+ if (NODEFS.isWindows && !stat.blksize) {
+ stat.blksize = 4096;
+ }
+ if (NODEFS.isWindows && !stat.blocks) {
+ stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
+ }
+ return {
+ dev: stat.dev,
+ ino: stat.ino,
+ mode: stat.mode,
+ nlink: stat.nlink,
+ uid: stat.uid,
+ gid: stat.gid,
+ rdev: stat.rdev,
+ size: stat.size,
+ atime: stat.atime,
+ mtime: stat.mtime,
+ ctime: stat.ctime,
+ blksize: stat.blksize,
+ blocks: stat.blocks
+ };
+ },setattr:function (node, attr) {
+ var path = NODEFS.realPath(node);
+ try {
+ if (attr.mode !== undefined) {
+ fs.chmodSync(path, attr.mode);
+ // update the common node structure mode as well
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ var date = new Date(attr.timestamp);
+ fs.utimesSync(path, date, date);
+ }
+ if (attr.size !== undefined) {
+ fs.truncateSync(path, attr.size);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },lookup:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ var mode = NODEFS.getMode(path);
+ return NODEFS.createNode(parent, name, mode);
+ },mknod:function (parent, name, mode, dev) {
+ var node = NODEFS.createNode(parent, name, mode, dev);
+ // create the backing node for this in the fs root as well
+ var path = NODEFS.realPath(node);
+ try {
+ if (FS.isDir(node.mode)) {
+ fs.mkdirSync(path, node.mode);
+ } else {
+ fs.writeFileSync(path, '', { mode: node.mode });
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return node;
+ },rename:function (oldNode, newDir, newName) {
+ var oldPath = NODEFS.realPath(oldNode);
+ var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
+ try {
+ fs.renameSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },unlink:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.unlinkSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },rmdir:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.rmdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readdir:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },symlink:function (parent, newName, oldPath) {
+ var newPath = PATH.join2(NODEFS.realPath(parent), newName);
+ try {
+ fs.symlinkSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readlink:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ path = fs.readlinkSync(path);
+ path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
+ return path;
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }},stream_ops:{open:function (stream) {
+ var path = NODEFS.realPath(stream.node);
+ try {
+ if (FS.isFile(stream.node.mode)) {
+ stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },close:function (stream) {
+ try {
+ if (FS.isFile(stream.node.mode) && stream.nfd) {
+ fs.closeSync(stream.nfd);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },read:function (stream, buffer, offset, length, position) {
+ if (length === 0) return 0; // node errors on 0 length reads
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(length);
+ var res;
+ try {
+ res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ if (res > 0) {
+ for (var i = 0; i < res; i++) {
+ buffer[offset + i] = nbuffer[i];
+ }
+ }
+ return res;
+ },write:function (stream, buffer, offset, length, position) {
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
+ var res;
+ try {
+ res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return res;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ try {
+ var stat = fs.fstatSync(stream.nfd);
+ position += stat.size;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }
+ }
+
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ return position;
+ }}};
+
+ var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) {
+ assert(ENVIRONMENT_IS_WORKER);
+ if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();
+ var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0);
+ var createdParents = {};
+ function ensureParent(path) {
+ // return the parent node, creating subdirs as necessary
+ var parts = path.split('/');
+ var parent = root;
+ for (var i = 0; i < parts.length-1; i++) {
+ var curr = parts.slice(0, i+1).join('/');
+ // Issue 4254: Using curr as a node name will prevent the node
+ // from being found in FS.nameTable when FS.open is called on
+ // a path which holds a child of this node,
+ // given that all FS functions assume node names
+ // are just their corresponding parts within their given path,
+ // rather than incremental aggregates which include their parent's
+ // directories.
+ if (!createdParents[curr]) {
+ createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0);
+ }
+ parent = createdParents[curr];
+ }
+ return parent;
+ }
+ function base(path) {
+ var parts = path.split('/');
+ return parts[parts.length-1];
+ }
+ // We also accept FileList here, by using Array.prototype
+ Array.prototype.forEach.call(mount.opts["files"] || [], function(file) {
+ WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
+ });
+ (mount.opts["blobs"] || []).forEach(function(obj) {
+ WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
+ });
+ (mount.opts["packages"] || []).forEach(function(pack) {
+ pack['metadata'].files.forEach(function(file) {
+ var name = file.filename.substr(1); // remove initial slash
+ WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end));
+ });
+ });
+ return root;
+ },createNode:function (parent, name, mode, dev, contents, mtime) {
+ var node = FS.createNode(parent, name, mode);
+ node.mode = mode;
+ node.node_ops = WORKERFS.node_ops;
+ node.stream_ops = WORKERFS.stream_ops;
+ node.timestamp = (mtime || new Date).getTime();
+ assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
+ if (mode === WORKERFS.FILE_MODE) {
+ node.size = contents.size;
+ node.contents = contents;
+ } else {
+ node.size = 4096;
+ node.contents = {};
+ }
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },node_ops:{getattr:function (node) {
+ return {
+ dev: 1,
+ ino: undefined,
+ mode: node.mode,
+ nlink: 1,
+ uid: 0,
+ gid: 0,
+ rdev: undefined,
+ size: node.size,
+ atime: new Date(node.timestamp),
+ mtime: new Date(node.timestamp),
+ ctime: new Date(node.timestamp),
+ blksize: 4096,
+ blocks: Math.ceil(node.size / 4096),
+ };
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ },lookup:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ },mknod:function (parent, name, mode, dev) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rename:function (oldNode, newDir, newName) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },unlink:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rmdir:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readdir:function (node) {
+ var entries = ['.', '..'];
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newName, oldPath) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readlink:function (node) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ if (position >= stream.node.size) return 0;
+ var chunk = stream.node.contents.slice(position, position + length);
+ var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
+ buffer.set(new Uint8Array(ab), offset);
+ return chunk.size;
+ },write:function (stream, buffer, offset, length, position) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.size;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ }}};
+
+ var _stdin; if (ENVIRONMENT_IS_PTHREAD) _stdin = PthreadWorkerInit._stdin; else PthreadWorkerInit._stdin = _stdin = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stdout; if (ENVIRONMENT_IS_PTHREAD) _stdout = PthreadWorkerInit._stdout; else PthreadWorkerInit._stdout = _stdout = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stderr; if (ENVIRONMENT_IS_PTHREAD) _stderr = PthreadWorkerInit._stderr; else PthreadWorkerInit._stderr = _stderr = allocate(1, "i32*", ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function (e) {
+ if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
+ return ___setErrNo(e.errno);
+ },lookupPath:function (path, opts) {
+ path = PATH.resolve(FS.cwd(), path);
+ opts = opts || {};
+
+ if (!path) return { path: '', node: null };
+
+ var defaults = {
+ follow_mount: true,
+ recurse_count: 0
+ };
+ for (var key in defaults) {
+ if (opts[key] === undefined) {
+ opts[key] = defaults[key];
+ }
+ }
+
+ if (opts.recurse_count > 8) { // max recursive lookup of 8
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+
+ // split the path
+ var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), false);
+
+ // start at the root
+ var current = FS.root;
+ var current_path = '/';
+
+ for (var i = 0; i < parts.length; i++) {
+ var islast = (i === parts.length-1);
+ if (islast && opts.parent) {
+ // stop resolving
+ break;
+ }
+
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+
+ // jump to the mount's root node if this is a mountpoint
+ if (FS.isMountpoint(current)) {
+ if (!islast || (islast && opts.follow_mount)) {
+ current = current.mounted.root;
+ }
+ }
+
+ // by default, lookupPath will not follow a symlink if it is the final path component.
+ // setting opts.follow = true will override this behavior.
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH.resolve(PATH.dirname(current_path), link);
+
+ var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
+ current = lookup.node;
+
+ if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+ }
+ }
+ }
+
+ return { path: current_path, node: current };
+ },getPath:function (node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path) return mount;
+ return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
+ }
+ path = path ? node.name + '/' + path : node.name;
+ node = node.parent;
+ }
+ },hashName:function (parentid, name) {
+ var hash = 0;
+
+
+ for (var i = 0; i < name.length; i++) {
+ hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
+ }
+ return ((parentid + hash) >>> 0) % FS.nameTable.length;
+ },hashAddNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node;
+ },hashRemoveNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next;
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break;
+ }
+ current = current.name_next;
+ }
+ }
+ },lookupNode:function (parent, name) {
+ var err = FS.mayLookup(parent);
+ if (err) {
+ throw new FS.ErrnoError(err, parent);
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node;
+ }
+ }
+ // if we failed to find it in the cache, call into the VFS
+ return FS.lookup(parent, name);
+ },createNode:function (parent, name, mode, rdev) {
+ if (!FS.FSNode) {
+ FS.FSNode = function(parent, name, mode, rdev) {
+ if (!parent) {
+ parent = this; // root node sets parent to itself
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ this.mounted = null;
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev;
+ };
+
+ FS.FSNode.prototype = {};
+
+ // compatibility
+ var readMode = 292 | 73;
+ var writeMode = 146;
+
+ // NOTE we must use Object.defineProperties instead of individual calls to
+ // Object.defineProperty in order to make closure compiler happy
+ Object.defineProperties(FS.FSNode.prototype, {
+ read: {
+ get: function() { return (this.mode & readMode) === readMode; },
+ set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
+ },
+ write: {
+ get: function() { return (this.mode & writeMode) === writeMode; },
+ set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
+ },
+ isFolder: {
+ get: function() { return FS.isDir(this.mode); }
+ },
+ isDevice: {
+ get: function() { return FS.isChrdev(this.mode); }
+ }
+ });
+ }
+
+ var node = new FS.FSNode(parent, name, mode, rdev);
+
+ FS.hashAddNode(node);
+
+ return node;
+ },destroyNode:function (node) {
+ FS.hashRemoveNode(node);
+ },isRoot:function (node) {
+ return node === node.parent;
+ },isMountpoint:function (node) {
+ return !!node.mounted;
+ },isFile:function (mode) {
+ return (mode & 61440) === 32768;
+ },isDir:function (mode) {
+ return (mode & 61440) === 16384;
+ },isLink:function (mode) {
+ return (mode & 61440) === 40960;
+ },isChrdev:function (mode) {
+ return (mode & 61440) === 8192;
+ },isBlkdev:function (mode) {
+ return (mode & 61440) === 24576;
+ },isFIFO:function (mode) {
+ return (mode & 61440) === 4096;
+ },isSocket:function (mode) {
+ return (mode & 49152) === 49152;
+ },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
+ var flags = FS.flagModes[str];
+ if (typeof flags === 'undefined') {
+ throw new Error('Unknown file open mode: ' + str);
+ }
+ return flags;
+ },flagsToPermissionString:function (flag) {
+ var perms = ['r', 'w', 'rw'][flag & 3];
+ if ((flag & 512)) {
+ perms += 'w';
+ }
+ return perms;
+ },nodePermissions:function (node, perms) {
+ if (FS.ignorePermissions) {
+ return 0;
+ }
+ // return 0 if any user, group or owner bits are set.
+ if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
+ return ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },mayLookup:function (dir) {
+ var err = FS.nodePermissions(dir, 'x');
+ if (err) return err;
+ if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
+ return 0;
+ },mayCreate:function (dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return ERRNO_CODES.EEXIST;
+ } catch (e) {
+ }
+ return FS.nodePermissions(dir, 'wx');
+ },mayDelete:function (dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name);
+ } catch (e) {
+ return e.errno;
+ }
+ var err = FS.nodePermissions(dir, 'wx');
+ if (err) {
+ return err;
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return ERRNO_CODES.ENOTDIR;
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return ERRNO_CODES.EBUSY;
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return 0;
+ },mayOpen:function (node, flags) {
+ if (!node) {
+ return ERRNO_CODES.ENOENT;
+ }
+ if (FS.isLink(node.mode)) {
+ return ERRNO_CODES.ELOOP;
+ } else if (FS.isDir(node.mode)) {
+ if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write
+ (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only)
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
+ },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
+ fd_start = fd_start || 0;
+ fd_end = fd_end || FS.MAX_OPEN_FDS;
+ for (var fd = fd_start; fd <= fd_end; fd++) {
+ if (!FS.streams[fd]) {
+ return fd;
+ }
+ }
+ throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
+ },getStream:function (fd) {
+ return FS.streams[fd];
+ },createStream:function (stream, fd_start, fd_end) {
+ if (!FS.FSStream) {
+ FS.FSStream = function(){};
+ FS.FSStream.prototype = {};
+ // compatibility
+ Object.defineProperties(FS.FSStream.prototype, {
+ object: {
+ get: function() { return this.node; },
+ set: function(val) { this.node = val; }
+ },
+ isRead: {
+ get: function() { return (this.flags & 2097155) !== 1; }
+ },
+ isWrite: {
+ get: function() { return (this.flags & 2097155) !== 0; }
+ },
+ isAppend: {
+ get: function() { return (this.flags & 1024); }
+ }
+ });
+ }
+ // clone it, so we can return an instance of FSStream
+ var newStream = new FS.FSStream();
+ for (var p in stream) {
+ newStream[p] = stream[p];
+ }
+ stream = newStream;
+ var fd = FS.nextfd(fd_start, fd_end);
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream;
+ },closeStream:function (fd) {
+ FS.streams[fd] = null;
+ },chrdev_stream_ops:{open:function (stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ // override node's stream ops with the device's
+ stream.stream_ops = device.stream_ops;
+ // forward the open call
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ },llseek:function () {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }},major:function (dev) {
+ return ((dev) >> 8);
+ },minor:function (dev) {
+ return ((dev) & 0xff);
+ },makedev:function (ma, mi) {
+ return ((ma) << 8 | (mi));
+ },registerDevice:function (dev, ops) {
+ FS.devices[dev] = { stream_ops: ops };
+ },getDevice:function (dev) {
+ return FS.devices[dev];
+ },getMounts:function (mount) {
+ var mounts = [];
+ var check = [mount];
+
+ while (check.length) {
+ var m = check.pop();
+
+ mounts.push(m);
+
+ check.push.apply(check, m.mounts);
+ }
+
+ return mounts;
+ },syncfs:function (populate, callback) {
+ if (typeof(populate) === 'function') {
+ callback = populate;
+ populate = false;
+ }
+
+ FS.syncFSRequests++;
+
+ if (FS.syncFSRequests > 1) {
+ console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work');
+ }
+
+ var mounts = FS.getMounts(FS.root.mount);
+ var completed = 0;
+
+ function doCallback(err) {
+ assert(FS.syncFSRequests > 0);
+ FS.syncFSRequests--;
+ return callback(err);
+ }
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return doCallback(err);
+ }
+ return;
+ }
+ if (++completed >= mounts.length) {
+ doCallback(null);
+ }
+ };
+
+ // sync all mounts
+ mounts.forEach(function (mount) {
+ if (!mount.type.syncfs) {
+ return done(null);
+ }
+ mount.type.syncfs(mount, populate, done);
+ });
+ },mount:function (type, opts, mountpoint) {
+ var root = mountpoint === '/';
+ var pseudo = !mountpoint;
+ var node;
+
+ if (root && FS.root) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ } else if (!root && !pseudo) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ mountpoint = lookup.path; // use the absolute path
+ node = lookup.node;
+
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+
+ if (!FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ }
+
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ mounts: []
+ };
+
+ // create a root node for the fs
+ var mountRoot = type.mount(mount);
+ mountRoot.mount = mount;
+ mount.root = mountRoot;
+
+ if (root) {
+ FS.root = mountRoot;
+ } else if (node) {
+ // set as a mountpoint
+ node.mounted = mount;
+
+ // add the new mount to the current mount's children
+ if (node.mount) {
+ node.mount.mounts.push(mount);
+ }
+ }
+
+ return mountRoot;
+ },unmount:function (mountpoint) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ if (!FS.isMountpoint(lookup.node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ // destroy the nodes for this mount, and all its child mounts
+ var node = lookup.node;
+ var mount = node.mounted;
+ var mounts = FS.getMounts(mount);
+
+ Object.keys(FS.nameTable).forEach(function (hash) {
+ var current = FS.nameTable[hash];
+
+ while (current) {
+ var next = current.name_next;
+
+ if (mounts.indexOf(current.mount) !== -1) {
+ FS.destroyNode(current);
+ }
+
+ current = next;
+ }
+ });
+
+ // no longer a mountpoint
+ node.mounted = null;
+
+ // remove this mount from the child mounts
+ var idx = node.mount.mounts.indexOf(mount);
+ assert(idx !== -1);
+ node.mount.mounts.splice(idx, 1);
+ },lookup:function (parent, name) {
+ return parent.node_ops.lookup(parent, name);
+ },mknod:function (path, mode, dev) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ if (!name || name === '.' || name === '..') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.mayCreate(parent, name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev);
+ },create:function (path, mode) {
+ mode = mode !== undefined ? mode : 438 /* 0666 */;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0);
+ },mkdir:function (path, mode) {
+ mode = mode !== undefined ? mode : 511 /* 0777 */;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0);
+ },mkdirTree:function (path, mode) {
+ var dirs = path.split('/');
+ var d = '';
+ for (var i = 0; i < dirs.length; ++i) {
+ if (!dirs[i]) continue;
+ d += '/' + dirs[i];
+ try {
+ FS.mkdir(d, mode);
+ } catch(e) {
+ if (e.errno != ERRNO_CODES.EEXIST) throw e;
+ }
+ }
+ },mkdev:function (path, mode, dev) {
+ if (typeof(dev) === 'undefined') {
+ dev = mode;
+ mode = 438 /* 0666 */;
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev);
+ },symlink:function (oldpath, newpath) {
+ if (!PATH.resolve(oldpath)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var lookup = FS.lookupPath(newpath, { parent: true });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var newname = PATH.basename(newpath);
+ var err = FS.mayCreate(parent, newname);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath);
+ },rename:function (old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ // parents must exist
+ var lookup, old_dir, new_dir;
+ try {
+ lookup = FS.lookupPath(old_path, { parent: true });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, { parent: true });
+ new_dir = lookup.node;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ // need to be part of the same mount
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
+ }
+ // source must exist
+ var old_node = FS.lookupNode(old_dir, old_name);
+ // old path should not be an ancestor of the new path
+ var relative = PATH.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ // new path should not be an ancestor of the old path
+ relative = PATH.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ // see if the new path already exists
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ // not fatal
+ }
+ // early out if nothing needs to change
+ if (old_node === new_node) {
+ return;
+ }
+ // we'll need to delete the old entry
+ var isdir = FS.isDir(old_node.mode);
+ var err = FS.mayDelete(old_dir, old_name, isdir);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ // need delete permissions if we'll be overwriting.
+ // need create permissions if new doesn't already exist.
+ err = new_node ?
+ FS.mayDelete(new_dir, new_name, isdir) :
+ FS.mayCreate(new_dir, new_name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ // if we are going to change the parent, check write permissions
+ if (new_dir !== old_dir) {
+ err = FS.nodePermissions(old_dir, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['willMovePath']) {
+ FS.trackingDelegate['willMovePath'](old_path, new_path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ // remove the node from the lookup hash
+ FS.hashRemoveNode(old_node);
+ // do the underlying fs rename
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name);
+ } catch (e) {
+ throw e;
+ } finally {
+ // add the node back to the hash (in case node_ops.rename
+ // changed its name)
+ FS.hashAddNode(old_node);
+ }
+ try {
+ if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ },rmdir:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, true);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ return node.node_ops.readdir(node);
+ },unlink:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, false);
+ if (err) {
+ // According to POSIX, we should map EISDIR to EPERM, but
+ // we instead do what Linux does (and we must, as we use
+ // the musl linux libc).
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readlink:function (path) {
+ var lookup = FS.lookupPath(path);
+ var link = lookup.node;
+ if (!link) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
+ },stat:function (path, dontFollow) {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ var node = lookup.node;
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return node.node_ops.getattr(node);
+ },lstat:function (path) {
+ return FS.stat(path, true);
+ },chmod:function (path, mode, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ mode: (mode & 4095) | (node.mode & ~4095),
+ timestamp: Date.now()
+ });
+ },lchmod:function (path, mode) {
+ FS.chmod(path, mode, true);
+ },fchmod:function (fd, mode) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chmod(stream.node, mode);
+ },chown:function (path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ // we ignore the uid / gid for now
+ });
+ },lchown:function (path, uid, gid) {
+ FS.chown(path, uid, gid, true);
+ },fchown:function (fd, uid, gid) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chown(stream.node, uid, gid);
+ },truncate:function (path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.nodePermissions(node, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ });
+ },ftruncate:function (fd, len) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ FS.truncate(stream.node, len);
+ },utime:function (path, atime, mtime) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ });
+ },open:function (path, flags, mode, fd_start, fd_end) {
+ if (path === "") {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
+ mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
+ if ((flags & 64)) {
+ mode = (mode & 4095) | 32768;
+ } else {
+ mode = 0;
+ }
+ var node;
+ if (typeof path === 'object') {
+ node = path;
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node;
+ } catch (e) {
+ // ignore
+ }
+ }
+ // perhaps we need to create the node
+ var created = false;
+ if ((flags & 64)) {
+ if (node) {
+ // if O_CREAT and O_EXCL are set, error out if the node already exists
+ if ((flags & 128)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
+ }
+ } else {
+ // node doesn't exist, try to create it
+ node = FS.mknod(path, mode, 0);
+ created = true;
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ // can't truncate a device
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512;
+ }
+ // if asked only for a directory, then this must be one
+ if ((flags & 65536) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ // check permissions, if this is not a file we just created now (it is ok to
+ // create and write to a file with read-only permissions; it is read-only
+ // for later use)
+ if (!created) {
+ var err = FS.mayOpen(node, flags);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ // do truncation if necessary
+ if ((flags & 512)) {
+ FS.truncate(node, 0);
+ }
+ // we've already handled these, don't pass down to the underlying vfs
+ flags &= ~(128 | 512);
+
+ // register the stream with the filesystem
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node), // we want the absolute path to the node
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ // used by the file family libc calls (fopen, fwrite, ferror, etc.)
+ ungotten: [],
+ error: false
+ }, fd_start, fd_end);
+ // call the new stream's open function
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ if (Module['logReadFiles'] && !(flags & 1)) {
+ if (!FS.readFiles) FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1;
+ Module['printErr']('read file: ' + path);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['onOpenFile']) {
+ var trackingFlags = 0;
+ if ((flags & 2097155) !== 1) {
+ trackingFlags |= FS.tracking.openFlags.READ;
+ }
+ if ((flags & 2097155) !== 0) {
+ trackingFlags |= FS.tracking.openFlags.WRITE;
+ }
+ FS.trackingDelegate['onOpenFile'](path, trackingFlags);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message);
+ }
+ return stream;
+ },close:function (stream) {
+ if (stream.getdents) stream.getdents = null; // free readdir state
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream);
+ }
+ } catch (e) {
+ throw e;
+ } finally {
+ FS.closeStream(stream.fd);
+ }
+ },llseek:function (stream, offset, whence) {
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ stream.position = stream.stream_ops.llseek(stream, offset, whence);
+ stream.ungotten = [];
+ return stream.position;
+ },read:function (stream, buffer, offset, length, position) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking) stream.position += bytesRead;
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if (stream.flags & 1024) {
+ // seek to the end before writing in append mode
+ FS.llseek(stream, 0, 2);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking) stream.position += bytesWritten;
+ try {
+ if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message);
+ }
+ return bytesWritten;
+ },allocate:function (stream, offset, length) {
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
+ }
+ stream.stream_ops.allocate(stream, offset, length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ // TODO if PROT is PROT_WRITE, make sure we have write access
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EACCES);
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!stream || !stream.stream_ops.msync) {
+ return 0;
+ }
+ return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
+ },munmap:function (stream) {
+ return 0;
+ },ioctl:function (stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg);
+ },readFile:function (path, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'r';
+ opts.encoding = opts.encoding || 'binary';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === 'utf8') {
+ ret = UTF8ArrayToString(buf, 0);
+ } else if (opts.encoding === 'binary') {
+ ret = buf;
+ }
+ FS.close(stream);
+ return ret;
+ },writeFile:function (path, data, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'w';
+ opts.encoding = opts.encoding || 'utf8';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (opts.encoding === 'utf8') {
+ var buf = new Uint8Array(lengthBytesUTF8(data)+1);
+ var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
+ FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);
+ } else if (opts.encoding === 'binary') {
+ FS.write(stream, data, 0, data.length, 0, opts.canOwn);
+ }
+ FS.close(stream);
+ },cwd:function () {
+ return FS.currentPath;
+ },chdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ if (lookup.node === null) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ var err = FS.nodePermissions(lookup.node, 'x');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ FS.currentPath = lookup.path;
+ },createDefaultDirectories:function () {
+ FS.mkdir('/tmp');
+ FS.mkdir('/home');
+ FS.mkdir('/home/web_user');
+ },createDefaultDevices:function () {
+ // create /dev
+ FS.mkdir('/dev');
+ // setup /dev/null
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: function() { return 0; },
+ write: function(stream, buffer, offset, length, pos) { return length; }
+ });
+ FS.mkdev('/dev/null', FS.makedev(1, 3));
+ // setup /dev/tty and /dev/tty1
+ // stderr needs to print output using Module['printErr']
+ // so we register a second tty just for it.
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev('/dev/tty', FS.makedev(5, 0));
+ FS.mkdev('/dev/tty1', FS.makedev(6, 0));
+ // setup /dev/[u]random
+ var random_device;
+ if (typeof crypto !== 'undefined') {
+ // for modern web browsers
+ var randomBuffer = new Uint8Array(1);
+ random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; };
+ } else if (ENVIRONMENT_IS_NODE) {
+ // for nodejs
+ random_device = function() { return require('crypto').randomBytes(1)[0]; };
+ } else {
+ // default for ES5 platforms
+ random_device = function() { return (Math.random()*256)|0; };
+ }
+ FS.createDevice('/dev', 'random', random_device);
+ FS.createDevice('/dev', 'urandom', random_device);
+ // we're not going to emulate the actual shm device,
+ // just create the tmp dirs that reside in it commonly
+ FS.mkdir('/dev/shm');
+ FS.mkdir('/dev/shm/tmp');
+ },createSpecialDirectories:function () {
+ // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname)
+ FS.mkdir('/proc');
+ FS.mkdir('/proc/self');
+ FS.mkdir('/proc/self/fd');
+ FS.mount({
+ mount: function() {
+ var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73);
+ node.node_ops = {
+ lookup: function(parent, name) {
+ var fd = +name;
+ var stream = FS.getStream(fd);
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ var ret = {
+ parent: null,
+ mount: { mountpoint: 'fake' },
+ node_ops: { readlink: function() { return stream.path } }
+ };
+ ret.parent = ret; // make it look like a simple root node
+ return ret;
+ }
+ };
+ return node;
+ }
+ }, {}, '/proc/self/fd');
+ },createStandardStreams:function () {
+ // TODO deprecate the old functionality of a single
+ // input / output callback and that utilizes FS.createDevice
+ // and instead require a unique set of stream ops
+
+ // by default, we symlink the standard streams to the
+ // default tty devices. however, if the standard streams
+ // have been overwritten we create a unique device for
+ // them instead.
+ if (Module['stdin']) {
+ FS.createDevice('/dev', 'stdin', Module['stdin']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdin');
+ }
+ if (Module['stdout']) {
+ FS.createDevice('/dev', 'stdout', null, Module['stdout']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdout');
+ }
+ if (Module['stderr']) {
+ FS.createDevice('/dev', 'stderr', null, Module['stderr']);
+ } else {
+ FS.symlink('/dev/tty1', '/dev/stderr');
+ }
+
+ // open default streams for the stdin, stdout and stderr devices
+ var stdin = FS.open('/dev/stdin', 'r');
+ assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
+
+ var stdout = FS.open('/dev/stdout', 'w');
+ assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
+
+ var stderr = FS.open('/dev/stderr', 'w');
+ assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
+ },ensureErrnoError:function () {
+ if (FS.ErrnoError) return;
+ FS.ErrnoError = function ErrnoError(errno, node) {
+ //Module.printErr(stackTrace()); // useful for debugging
+ this.node = node;
+ this.setErrno = function(errno) {
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break;
+ }
+ }
+ };
+ this.setErrno(errno);
+ this.message = ERRNO_MESSAGES[errno];
+ if (this.stack) this.stack = demangleAll(this.stack);
+ };
+ FS.ErrnoError.prototype = new Error();
+ FS.ErrnoError.prototype.constructor = FS.ErrnoError;
+ // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
+ [ERRNO_CODES.ENOENT].forEach(function(code) {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = '<generic error, no stack>';
+ });
+ },staticInit:function () {
+ FS.ensureErrnoError();
+
+ FS.nameTable = new Array(4096);
+
+ FS.mount(MEMFS, {}, '/');
+
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ FS.createSpecialDirectories();
+
+ FS.filesystems = {
+ 'MEMFS': MEMFS,
+ 'IDBFS': IDBFS,
+ 'NODEFS': NODEFS,
+ 'WORKERFS': WORKERFS,
+ };
+ },init:function (input, output, error) {
+ assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
+ FS.init.initialized = true;
+
+ FS.ensureErrnoError();
+
+ // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
+ Module['stdin'] = input || Module['stdin'];
+ Module['stdout'] = output || Module['stdout'];
+ Module['stderr'] = error || Module['stderr'];
+
+ FS.createStandardStreams();
+ },quit:function () {
+ FS.init.initialized = false;
+ // force-flush all streams, so we get musl std streams printed out
+ var fflush = Module['_fflush'];
+ if (fflush) fflush(0);
+ // close all of our streams
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue;
+ }
+ FS.close(stream);
+ }
+ },getMode:function (canRead, canWrite) {
+ var mode = 0;
+ if (canRead) mode |= 292 | 73;
+ if (canWrite) mode |= 146;
+ return mode;
+ },joinPath:function (parts, forceRelative) {
+ var path = PATH.join.apply(null, parts);
+ if (forceRelative && path[0] == '/') path = path.substr(1);
+ return path;
+ },absolutePath:function (relative, base) {
+ return PATH.resolve(base, relative);
+ },standardizePath:function (path) {
+ return PATH.normalize(path);
+ },findObject:function (path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (ret.exists) {
+ return ret.object;
+ } else {
+ ___setErrNo(ret.error);
+ return null;
+ }
+ },analyzePath:function (path, dontResolveLastLink) {
+ // operate from within the context of the symlink's target
+ try {
+ var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ path = lookup.path;
+ } catch (e) {
+ }
+ var ret = {
+ isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
+ parentExists: false, parentPath: null, parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, { parent: true });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === '/';
+ } catch (e) {
+ ret.error = e.errno;
+ };
+ return ret;
+ },createFolder:function (parent, name, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.mkdir(path, mode);
+ },createPath:function (parent, path, canRead, canWrite) {
+ parent = typeof parent === 'string' ? parent : FS.getPath(parent);
+ var parts = path.split('/').reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part) continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current);
+ } catch (e) {
+ // ignore EEXIST
+ }
+ parent = current;
+ }
+ return current;
+ },createFile:function (parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.create(path, mode);
+ },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
+ var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
+ var mode = FS.getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data === 'string') {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
+ data = arr;
+ }
+ // make sure we can write to the file
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, 'w');
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode);
+ }
+ return node;
+ },createDevice:function (parent, name, input, output) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(!!input, !!output);
+ if (!FS.createDevice.major) FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ // Create a fake device that a set of stream ops to emulate
+ // the old behavior.
+ FS.registerDevice(dev, {
+ open: function(stream) {
+ stream.seekable = false;
+ },
+ close: function(stream) {
+ // flush any pending line data
+ if (output && output.buffer && output.buffer.length) {
+ output(10);
+ }
+ },
+ read: function(stream, buffer, offset, length, pos /* ignored */) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input();
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },
+ write: function(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }
+ });
+ return FS.mkdev(path, mode, dev);
+ },createLink:function (parent, name, target, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ return FS.symlink(target, path);
+ },forceLoadFile:function (obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
+ var success = true;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
+ } else if (Module['read']) {
+ // Command-line.
+ try {
+ // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
+ // read() will try to parse UTF8.
+ obj.contents = intArrayFromString(Module['read'](obj.url), true);
+ obj.usedBytes = obj.contents.length;
+ } catch (e) {
+ success = false;
+ }
+ } else {
+ throw new Error('Cannot load without read() or XMLHttpRequest.');
+ }
+ if (!success) ___setErrNo(ERRNO_CODES.EIO);
+ return success;
+ },createLazyFile:function (parent, name, url, canRead, canWrite) {
+ // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
+ function LazyUint8Array() {
+ this.lengthKnown = false;
+ this.chunks = []; // Loaded chunks. Index is the chunk number
+ }
+ LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
+ if (idx > this.length-1 || idx < 0) {
+ return undefined;
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = (idx / this.chunkSize)|0;
+ return this.getter(chunkNum)[chunkOffset];
+ }
+ LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
+ this.getter = getter;
+ }
+ LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
+ // Find length
+ var xhr = new XMLHttpRequest();
+ xhr.open('HEAD', url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
+
+ var chunkSize = 1024*1024; // Chunk size in bytes
+
+ if (!hasByteServing) chunkSize = datalength;
+
+ // Function to get a range from the remote URL.
+ var doXHR = (function(from, to) {
+ if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
+
+ // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, false);
+ if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+
+ // Some hints to the browser that we want binary data.
+ if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
+ }
+
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || []);
+ } else {
+ return intArrayFromString(xhr.responseText || '', true);
+ }
+ });
+ var lazyArray = this;
+ lazyArray.setDataGetter(function(chunkNum) {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum+1) * chunkSize - 1; // including this byte
+ end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end);
+ }
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum];
+ });
+
+ if (usesGzip || !datalength) {
+ // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length
+ chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file
+ datalength = this.getter(0).length;
+ chunkSize = datalength;
+ console.log("LazyFiles on gzip forces download of the whole file when length is accessed");
+ }
+
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true;
+ }
+ if (typeof XMLHttpRequest !== 'undefined') {
+ if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
+ var lazyArray = new LazyUint8Array();
+ Object.defineProperties(lazyArray, {
+ length: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._length;
+ }
+ },
+ chunkSize: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._chunkSize;
+ }
+ }
+ });
+
+ var properties = { isDevice: false, contents: lazyArray };
+ } else {
+ var properties = { isDevice: false, url: url };
+ }
+
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ // This is a total hack, but I want to get this lazy file code out of the
+ // core of MEMFS. If we want to keep this lazy file concept I feel it should
+ // be its own thin LAZYFS proxying calls to MEMFS.
+ if (properties.contents) {
+ node.contents = properties.contents;
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url;
+ }
+ // Add a function that defers querying the file size until it is asked the first time.
+ Object.defineProperties(node, {
+ usedBytes: {
+ get: function() { return this.contents.length; }
+ }
+ });
+ // override each stream op with one that tries to force load the lazy file first
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach(function(key) {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = function forceLoadLazyFile() {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ return fn.apply(null, arguments);
+ };
+ });
+ // use a custom read function
+ stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) { // normal array
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i];
+ }
+ } else {
+ for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
+ buffer[offset + i] = contents.get(position + i);
+ }
+ }
+ return size;
+ };
+ node.stream_ops = stream_ops;
+ return node;
+ },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
+ Browser.init(); // XXX perhaps this method should move onto Browser?
+ // TODO we should allow people to just pass in a complete filename instead
+ // of parent and name being that we just join them anyways
+ var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
+ var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname
+ function processData(byteArray) {
+ function finish(byteArray) {
+ if (preFinish) preFinish();
+ if (!dontCreateFile) {
+ FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
+ }
+ if (onload) onload();
+ removeRunDependency(dep);
+ }
+ var handled = false;
+ Module['preloadPlugins'].forEach(function(plugin) {
+ if (handled) return;
+ if (plugin['canHandle'](fullname)) {
+ plugin['handle'](byteArray, fullname, finish, function() {
+ if (onerror) onerror();
+ removeRunDependency(dep);
+ });
+ handled = true;
+ }
+ });
+ if (!handled) finish(byteArray);
+ }
+ addRunDependency(dep);
+ if (typeof url == 'string') {
+ Browser.asyncLoad(url, function(byteArray) {
+ processData(byteArray);
+ }, onerror);
+ } else {
+ processData(url);
+ }
+ },indexedDB:function () {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ },DB_NAME:function () {
+ return 'EM_FS_' + window.location.pathname;
+ },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
+ console.log('creating db');
+ var db = openRequest.result;
+ db.createObjectStore(FS.DB_STORE_NAME);
+ };
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var putRequest = files.put(FS.analyzePath(path).object.contents, path);
+ putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
+ putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ },loadFilesFromDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = onerror; // no database to load from
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ try {
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
+ } catch(e) {
+ onerror(e);
+ return;
+ }
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var getRequest = files.get(path);
+ getRequest.onsuccess = function getRequest_onsuccess() {
+ if (FS.analyzePath(path).exists) {
+ FS.unlink(path);
+ }
+ FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
+ ok++;
+ if (ok + fail == total) finish();
+ };
+ getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) {
+ if (path[0] !== '/') {
+ // relative path
+ var dir;
+ if (dirfd === -100) {
+ dir = FS.cwd();
+ } else {
+ var dirstream = FS.getStream(dirfd);
+ if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ dir = dirstream.path;
+ }
+ path = PATH.join2(dir, path);
+ }
+ return path;
+ },doStat:function (func, path, buf) {
+ try {
+ var stat = func(path);
+ } catch (e) {
+ if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
+ // an error occurred while trying to look up the path; we should just report ENOTDIR
+ return -ERRNO_CODES.ENOTDIR;
+ }
+ throw e;
+ }
+ HEAP32[((buf)>>2)]=stat.dev;
+ HEAP32[(((buf)+(4))>>2)]=0;
+ HEAP32[(((buf)+(8))>>2)]=stat.ino;
+ HEAP32[(((buf)+(12))>>2)]=stat.mode;
+ HEAP32[(((buf)+(16))>>2)]=stat.nlink;
+ HEAP32[(((buf)+(20))>>2)]=stat.uid;
+ HEAP32[(((buf)+(24))>>2)]=stat.gid;
+ HEAP32[(((buf)+(28))>>2)]=stat.rdev;
+ HEAP32[(((buf)+(32))>>2)]=0;
+ HEAP32[(((buf)+(36))>>2)]=stat.size;
+ HEAP32[(((buf)+(40))>>2)]=4096;
+ HEAP32[(((buf)+(44))>>2)]=stat.blocks;
+ HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(52))>>2)]=0;
+ HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(60))>>2)]=0;
+ HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(68))>>2)]=0;
+ HEAP32[(((buf)+(72))>>2)]=stat.ino;
+ return 0;
+ },doMsync:function (addr, stream, len, flags) {
+ var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
+ FS.msync(stream, buffer, 0, len, flags);
+ },doMkdir:function (path, mode) {
+ // remove a trailing slash, if one - /a/b/ has basename of '', but
+ // we want to create b in the context of this function
+ path = PATH.normalize(path);
+ if (path[path.length-1] === '/') path = path.substr(0, path.length-1);
+ FS.mkdir(path, mode, 0);
+ return 0;
+ },doMknod:function (path, mode, dev) {
+ // we don't want this in the JS API as it uses mknod to create all nodes.
+ switch (mode & 61440) {
+ case 32768:
+ case 8192:
+ case 24576:
+ case 4096:
+ case 49152:
+ break;
+ default: return -ERRNO_CODES.EINVAL;
+ }
+ FS.mknod(path, mode, dev);
+ return 0;
+ },doReadlink:function (path, buf, bufsize) {
+ if (bufsize <= 0) return -ERRNO_CODES.EINVAL;
+ var ret = FS.readlink(path);
+
+ var len = Math.min(bufsize, lengthBytesUTF8(ret));
+ var endChar = HEAP8[buf+len];
+ stringToUTF8(ret, buf, bufsize+1);
+ // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!)
+ // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write.
+ HEAP8[buf+len] = endChar;
+
+ return len;
+ },doAccess:function (path, amode) {
+ if (amode & ~7) {
+ // need a valid mode
+ return -ERRNO_CODES.EINVAL;
+ }
+ var node;
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ var perms = '';
+ if (amode & 4) perms += 'r';
+ if (amode & 2) perms += 'w';
+ if (amode & 1) perms += 'x';
+ if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) {
+ return -ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },doDup:function (path, flags, suggestFD) {
+ var suggest = FS.getStream(suggestFD);
+ if (suggest) FS.close(suggest);
+ return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
+ },doReadv:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.read(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ if (curr < len) break; // nothing more to read
+ }
+ return ret;
+ },doWritev:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.write(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ }
+ return ret;
+ },varargs:0,get:function (varargs) {
SYSCALLS.varargs += 4;
var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
return ret;
},getStr:function () {
var ret = Pointer_stringify(SYSCALLS.get());
return ret;
+ },getStreamFromFD:function () {
+ var stream = FS.getStream(SYSCALLS.get());
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return stream;
+ },getSocketFromFD:function () {
+ var socket = SOCKFS.getSocket(SYSCALLS.get());
+ if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return socket;
+ },getSocketAddress:function (allowNull) {
+ var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();
+ if (allowNull && addrp === 0) return null;
+ var info = __read_sockaddr(addrp, addrlen);
+ if (info.errno) throw new FS.ErrnoError(info.errno);
+ info.addr = DNS.lookup_addr(info.addr) || info.addr;
+ return info;
},get64:function () {
var low = SYSCALLS.get(), high = SYSCALLS.get();
if (low >= 0) assert(high === 0);
@@ -3374,10 +6488,42 @@ function copyTempDouble(ptr) {
return low;
},getZero:function () {
assert(SYSCALLS.get() === 0);
- }};function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;
+ }};function ___syscall54(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 54, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// ioctl
- return 0;
+ var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();
+ switch (op) {
+ case 21505: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ case 21506: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0; // no-op, not actually adjusting terminal settings
+ }
+ case 21519: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ var argp = SYSCALLS.get();
+ HEAP32[((argp)>>2)]=0;
+ return 0;
+ }
+ case 21520: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return -ERRNO_CODES.EINVAL; // not supported
+ }
+ case 21531: {
+ var argp = SYSCALLS.get();
+ return FS.ioctl(stream, op, argp);
+ }
+ case 21523: {
+ // TODO: in theory we should write to the winsize struct that gets
+ // passed in, but for now musl doesn't read anything on it
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ default: abort('bad ioctl syscall ' + op);
+ }
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4367,6 +7513,29 @@ function copyTempDouble(ptr) {
return 0;
}
+ function _utime(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(12, path, times);
+ // int utime(const char *path, const struct utimbuf *times);
+ // http://pubs.opengroup.org/onlinepubs/009695399/basedefs/utime.h.html
+ var time;
+ if (times) {
+ // NOTE: We don't keep track of access timestamps.
+ var offset = 4;
+ time = HEAP32[(((times)+(offset))>>2)];
+ time *= 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx['copyTexImage2D'](x0, x1, x2, x3, x4, x5, x6, x7) }
function _emscripten_glTexParameterfv(target, pname, params) {
@@ -4374,6 +7543,220 @@ function copyTempDouble(ptr) {
GLctx.texParameterf(target, pname, param);
}
+
+
+
+ var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};
+
+
+ var __pthread_ptr=0;
+
+ var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr, isMainBrowserThread, isMainRuntimeThread) {
+ pthreadPtr = pthreadPtr|0;
+ isMainBrowserThread = isMainBrowserThread|0;
+ isMainRuntimeThread = isMainRuntimeThread|0;
+ __pthread_ptr = pthreadPtr;
+ __pthread_is_main_browser_thread = isMainBrowserThread;
+ __pthread_is_main_runtime_thread = isMainRuntimeThread;
+ }
+
+ var _emscripten_main_thread_process_queued_calls=undefined;var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkerPool:[],runningWorkers:[],initMainThreadBlock:function () {
+ if (ENVIRONMENT_IS_PTHREAD) return undefined;
+ PThread.mainThreadBlock = allocate(244, "i32*", ALLOC_STATIC);
+ __register_pthread_ptr(PThread.mainThreadBlock, /*isMainBrowserThread=*/!ENVIRONMENT_IS_WORKER, /*isMainRuntimeThread=*/1); // Pass the thread address inside the asm.js scope to store it for fast access that avoids the need for a FFI out.
+
+ for (var i = 0; i < 244/4; ++i) HEAPU32[PThread.mainThreadBlock/4+i] = 0;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((PThread.mainThreadBlock)+(24))>>2)]=PThread.mainThreadBlock;
+
+ // Allocate memory for thread-local storage.
+ var tlsMemory = allocate(128 * 4, "i32*", ALLOC_STATIC);
+ for (var i = 0; i < 128; ++i) HEAPU32[tlsMemory/4+i] = 0;
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 52 ) >> 2, PThread.mainThreadBlock); // Main thread ID.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ },pthreads:{},pthreadIdCounter:2,exitHandlers:null,setThreadStatus:function () {},runExitHandlers:function () {
+ if (PThread.exitHandlers !== null) {
+ while (PThread.exitHandlers.length > 0) {
+ PThread.exitHandlers.pop()();
+ }
+ PThread.exitHandlers = null;
+ }
+
+ // Call into the musl function that runs destructors of all thread-specific data.
+ if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors();
+ },threadExit:function (exitCode) {
+ var tb = _pthread_self();
+ if (tb) { // If we haven't yet exited?
+ Atomics.store(HEAPU32, (tb + 4 ) >> 2, exitCode);
+ // When we publish this, the main thread is free to deallocate the thread object and we are done.
+ // Therefore set threadInfoStruct = 0; above to 'release' the object in this worker thread.
+ Atomics.store(HEAPU32, (tb + 0 ) >> 2, 1);
+
+ // Disable all cancellation so that executing the cleanup handlers won't trigger another JS
+ // canceled exception to be thrown.
+ Atomics.store(HEAPU32, (tb + 72 ) >> 2, 1/*PTHREAD_CANCEL_DISABLE*/);
+ Atomics.store(HEAPU32, (tb + 76 ) >> 2, 0/*PTHREAD_CANCEL_DEFERRED*/);
+ PThread.runExitHandlers();
+
+ _emscripten_futex_wake(tb + 0, 2147483647);
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ threadInfoStruct = 0;
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // This worker no longer owns any WebGL OffscreenCanvases, so transfer them back to parent thread.
+ var transferList = [];
+
+
+ postMessage({ cmd: 'exit' });
+ }
+ }
+ },threadCancel:function () {
+ PThread.runExitHandlers();
+ Atomics.store(HEAPU32, (threadInfoStruct + 4 ) >> 2, -1/*PTHREAD_CANCELED*/);
+ Atomics.store(HEAPU32, (threadInfoStruct + 0 ) >> 2, 1); // Mark the thread as no longer running.
+ _emscripten_futex_wake(threadInfoStruct + 0, 2147483647); // wake all threads
+ threadInfoStruct = selfThreadId = 0; // Not hosting a pthread anymore in this worker, reset the info structures to null.
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ postMessage({ cmd: 'cancelDone' });
+ },terminateAllThreads:function () {
+ for (var t in PThread.pthreads) {
+ var pthread = PThread.pthreads[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.pthreads = {};
+ for (var t in PThread.unusedWorkerPool) {
+ var pthread = PThread.unusedWorkerPool[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.unusedWorkerPool = [];
+ for (var t in PThread.runningWorkers) {
+ var pthread = PThread.runningWorkers[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.runningWorkers = [];
+ },freeThreadData:function (pthread) {
+ if (!pthread) return;
+ if (pthread.threadInfoStruct) {
+ var tlsMemory = HEAP32[(((pthread.threadInfoStruct)+(116))>>2)];
+ HEAP32[(((pthread.threadInfoStruct)+(116))>>2)]=0;
+ _free(pthread.tlsMemory);
+ _free(pthread.threadInfoStruct);
+ }
+ pthread.threadInfoStruct = 0;
+ if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase);
+ pthread.stackBase = 0;
+ if (pthread.worker) pthread.worker.pthread = null;
+ },receiveObjectTransfer:function (data) {
+ },allocateUnusedWorkers:function (numWorkers, onFinishedLoading) {
+ if (typeof SharedArrayBuffer === 'undefined') return; // No multithreading support, no-op.
+ Module['print']('Preallocating ' + numWorkers + ' workers for a pthread spawn pool.');
+
+ var numWorkersLoaded = 0;
+ for (var i = 0; i < numWorkers; ++i) {
+ var pthreadMainJs = 'pthread-main.js';
+ // Allow HTML module to configure the location where the 'pthread-main.js' file will be loaded from,
+ // either via Module.locateFile() function, or via Module.pthreadMainPrefixURL string. If neither
+ // of these are passed, then the default URL 'pthread-main.js' relative to the main html file is loaded.
+ if (typeof Module['locateFile'] === 'function') pthreadMainJs = Module['locateFile'](pthreadMainJs);
+ else if (Module['pthreadMainPrefixURL']) pthreadMainJs = Module['pthreadMainPrefixURL'] + pthreadMainJs;
+ var worker = new Worker(pthreadMainJs);
+
+ worker.onmessage = function(e) {
+ // If this message is intended to a recipient that is not the main thread, forward it to the target thread.
+ if (e.data.targetThread && e.data.targetThread != _pthread_self()) {
+ var thread = PThread.pthreads[e.data.targetThread];
+ if (thread) {
+ thread.worker.postMessage(e.data, e.data.transferList);
+ } else {
+ console.error('Internal error! Worker sent a message "' + e.data.cmd + '" to target pthread ' + e.data.targetThread + ', but that thread no longer exists!');
+ }
+ return;
+ }
+
+ if (e.data.cmd === 'processQueuedMainThreadWork') {
+ // TODO: Must post message to main Emscripten thread in PROXY_TO_WORKER mode.
+ _emscripten_main_thread_process_queued_calls();
+ } else if (e.data.cmd === 'spawnThread') {
+ __spawn_thread(e.data);
+ } else if (e.data.cmd === 'cleanupThread') {
+ __cleanup_thread(e.data.thread);
+ } else if (e.data.cmd === 'killThread') {
+ __kill_thread(e.data.thread);
+ } else if (e.data.cmd === 'cancelThread') {
+ __cancel_thread(e.data.thread);
+ } else if (e.data.cmd === 'loaded') {
+ ++numWorkersLoaded;
+ if (numWorkersLoaded === numWorkers && onFinishedLoading) {
+ onFinishedLoading();
+ }
+ } else if (e.data.cmd === 'print') {
+ Module['print']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'printErr') {
+ Module['printErr']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'alert') {
+ alert('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'exit') {
+ // currently no-op
+ } else if (e.data.cmd === 'cancelDone') {
+ PThread.freeThreadData(worker.pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ // TODO: Free if detached.
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ } else if (e.data.cmd === 'objectTransfer') {
+ PThread.receiveObjectTransfer(e.data);
+ } else {
+ Module['printErr']("worker sent an unknown command " + e.data.cmd);
+ }
+ };
+
+ worker.onerror = function(e) {
+ Module['printErr']('pthread sent an error! ' + e.filename + ':' + e.lineno + ': ' + e.message);
+ };
+
+ // Allocate tempDoublePtr for the worker. This is done here on the worker's behalf, since we may need to do this statically
+ // if the runtime has not been loaded yet, etc. - so we just use getMemory, which is main-thread only.
+ var tempDoublePtr = getMemory(8); // TODO: leaks. Cleanup after worker terminates.
+
+ // Ask the new worker to load up the Emscripten-compiled page. This is a heavy operation.
+ worker.postMessage({
+ cmd: 'load',
+ url: currentScriptUrl,
+ buffer: HEAPU8.buffer,
+ tempDoublePtr: tempDoublePtr,
+ TOTAL_MEMORY: TOTAL_MEMORY,
+ STATICTOP: STATICTOP,
+ DYNAMIC_BASE: DYNAMIC_BASE,
+ DYNAMICTOP_PTR: DYNAMICTOP_PTR,
+ PthreadWorkerInit: PthreadWorkerInit
+ });
+ PThread.unusedWorkerPool.push(worker);
+ }
+ },getNewWorker:function () {
+ if (PThread.unusedWorkerPool.length == 0) PThread.allocateUnusedWorkers(1);
+ if (PThread.unusedWorkerPool.length > 0) return PThread.unusedWorkerPool.pop();
+ else return null;
+ },busySpinWait:function (msecs) {
+ var t = performance.now() + msecs;
+ while(performance.now() < t) {
+ ;
+ }
+ }};var __pthread_is_main_runtime_thread=0;function _emscripten_is_main_runtime_thread() {
+ return __pthread_is_main_runtime_thread|0; // Semantically the same as testing "!ENVIRONMENT_IS_PTHREAD" outside the asm.js scope
+ }
+
function _emscripten_glLinkProgram(program) {
GLctx.linkProgram(GL.programs[program]);
GL.programInfos[program] = null; // uniforms no longer keep the same names after linking
@@ -4424,6 +7807,11 @@ function copyTempDouble(ptr) {
Module["_memset"] = _memset;
+ function _atexit(func, arg) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(110, func, arg);
+ __ATEXIT__.unshift({ func: func, arg: arg });
+ }
+
function _glfwMakeContextCurrent(winid) {}
function _emscripten_set_touchcancel_callback(target, userData, useCapture, callbackfunc) {
@@ -4621,7 +8009,8 @@ function copyTempDouble(ptr) {
GLctx.uniformMatrix2fv(GL.uniforms[location], !!transpose, view);
}
- function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall6(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 6, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// close
var stream = SYSCALLS.getStreamFromFD();
@@ -4691,7 +8080,8 @@ function copyTempDouble(ptr) {
Module['printErr']('missing function: emscripten_glGetPointerv'); abort(-1);
}
- function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall140(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 140, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// llseek
var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
@@ -4707,34 +8097,12 @@ function copyTempDouble(ptr) {
}
}
- function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall146(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 146, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// writev
- // hack to support printf in NO_FILESYSTEM
- var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
- var ret = 0;
- if (!___syscall146.buffer) {
- ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr
- ___syscall146.printChar = function(stream, curr) {
- var buffer = ___syscall146.buffers[stream];
- assert(buffer);
- if (curr === 0 || curr === 10) {
- (stream === 1 ? Module['print'] : Module['printErr'])(UTF8ArrayToString(buffer, 0));
- buffer.length = 0;
- } else {
- buffer.push(curr);
- }
- };
- }
- for (var i = 0; i < iovcnt; i++) {
- var ptr = HEAP32[(((iov)+(i*8))>>2)];
- var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
- for (var j = 0; j < len; j++) {
- ___syscall146.printChar(stream, HEAPU8[ptr+j]);
- }
- ret += len;
- }
- return ret;
+ var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
+ return SYSCALLS.doWritev(stream, iov, iovcnt);
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4749,6 +8117,41 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilFuncSeparate(x0, x1, x2, x3) { GLctx['stencilFuncSeparate'](x0, x1, x2, x3) }
+
+ var _tzname; if (ENVIRONMENT_IS_PTHREAD) _tzname = PthreadWorkerInit._tzname; else PthreadWorkerInit._tzname = _tzname = allocate(8, "i32*", ALLOC_STATIC);
+
+ var _daylight; if (ENVIRONMENT_IS_PTHREAD) _daylight = PthreadWorkerInit._daylight; else PthreadWorkerInit._daylight = _daylight = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _timezone; if (ENVIRONMENT_IS_PTHREAD) _timezone = PthreadWorkerInit._timezone; else PthreadWorkerInit._timezone = _timezone = allocate(1, "i32*", ALLOC_STATIC);function _tzset() {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_0(119);
+ // TODO: Use (malleable) environment variables instead of system settings.
+ if (_tzset.called) return;
+ _tzset.called = true;
+
+ HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60;
+
+ var winter = new Date(2000, 0, 1);
+ var summer = new Date(2000, 6, 1);
+ HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
+
+ function extractZone(date) {
+ var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
+ return match ? match[1] : "GMT";
+ };
+ var winterName = extractZone(winter);
+ var summerName = extractZone(summer);
+ var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);
+ var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);
+ if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {
+ // Northern hemisphere
+ HEAP32[((_tzname)>>2)]=winterNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr;
+ } else {
+ HEAP32[((_tzname)>>2)]=summerNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=winterNamePtr;
+ }
+ }
+
Module["_i64Subtract"] = _i64Subtract;
@@ -4789,6 +8192,155 @@ function copyTempDouble(ptr) {
return JSEvents.lastGamepadState.length;
}
+ function _sysconf(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(72, name);
+ // long sysconf(int name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
+ switch(name) {
+ case 30: return PAGE_SIZE;
+ case 85:
+ var maxHeapSize = 2*1024*1024*1024 - 16777216;
+ maxHeapSize = HEAPU8.length;
+ return maxHeapSize / PAGE_SIZE;
+ case 132:
+ case 133:
+ case 12:
+ case 137:
+ case 138:
+ case 15:
+ case 235:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 149:
+ case 13:
+ case 10:
+ case 236:
+ case 153:
+ case 9:
+ case 21:
+ case 22:
+ case 159:
+ case 154:
+ case 14:
+ case 77:
+ case 78:
+ case 139:
+ case 80:
+ case 81:
+ case 82:
+ case 68:
+ case 67:
+ case 164:
+ case 11:
+ case 29:
+ case 47:
+ case 48:
+ case 95:
+ case 52:
+ case 51:
+ case 46:
+ return 200809;
+ case 79:
+ return 0;
+ case 27:
+ case 246:
+ case 127:
+ case 128:
+ case 23:
+ case 24:
+ case 160:
+ case 161:
+ case 181:
+ case 182:
+ case 242:
+ case 183:
+ case 184:
+ case 243:
+ case 244:
+ case 245:
+ case 165:
+ case 178:
+ case 179:
+ case 49:
+ case 50:
+ case 168:
+ case 169:
+ case 175:
+ case 170:
+ case 171:
+ case 172:
+ case 97:
+ case 76:
+ case 32:
+ case 173:
+ case 35:
+ return -1;
+ case 176:
+ case 177:
+ case 7:
+ case 155:
+ case 8:
+ case 157:
+ case 125:
+ case 126:
+ case 92:
+ case 93:
+ case 129:
+ case 130:
+ case 131:
+ case 94:
+ case 91:
+ return 1;
+ case 74:
+ case 60:
+ case 69:
+ case 70:
+ case 4:
+ return 1024;
+ case 31:
+ case 42:
+ case 72:
+ return 32;
+ case 87:
+ case 26:
+ case 33:
+ return 2147483647;
+ case 34:
+ case 1:
+ return 47839;
+ case 38:
+ case 36:
+ return 99;
+ case 43:
+ case 37:
+ return 2048;
+ case 0: return 2097152;
+ case 3: return 65536;
+ case 28: return 32768;
+ case 44: return 32767;
+ case 75: return 16384;
+ case 39: return 1000;
+ case 89: return 700;
+ case 71: return 256;
+ case 40: return 255;
+ case 2: return 100;
+ case 180: return 64;
+ case 25: return 20;
+ case 5: return 16;
+ case 6: return 6;
+ case 73: return 4;
+ case 84: {
+ if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;
+ return 1;
+ }
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
function _emscripten_glUniform4iv(location, count, value) {
@@ -4832,6 +8384,7 @@ function copyTempDouble(ptr) {
GL.shaders[shader]);
}
+
function _glUniform4f(location, v0, v1, v2, v3) {
GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3);
}
@@ -4869,6 +8422,13 @@ function copyTempDouble(ptr) {
GLFW.hints = GLFW.defaultHints;
}
+ function _gettimeofday(ptr) {
+ var now = Date.now();
+ HEAP32[((ptr)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((ptr)+(4))>>2)]=((now % 1000)*1000)|0; // microseconds
+ return 0;
+ }
+
function _emscripten_glClearStencil(x0) { GLctx['clearStencil'](x0) }
function _emscripten_glDetachShader(program, shader) {
@@ -4925,6 +8485,70 @@ function copyTempDouble(ptr) {
function _emscripten_glGenerateMipmap(x0) { GLctx['generateMipmap'](x0) }
+
+
+
+
+ var _environ; if (ENVIRONMENT_IS_PTHREAD) _environ = PthreadWorkerInit._environ; else PthreadWorkerInit._environ = _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'] = ENV['LOGNAME'] = 'web_user';
+ ENV['PATH'] = '/';
+ ENV['PWD'] = '/';
+ ENV['HOME'] = '/home/web_user';
+ ENV['LANG'] = 'C';
+ ENV['_'] = Module['thisProgram'];
+ // 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];
+ writeAsciiToMemory(line, poolPtr);
+ HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
+ poolPtr += line.length + 1;
+ }
+ HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
+ }var ENV={};function _clearenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(112, name);
+ // int clearenv (void);
+ // http://www.gnu.org/s/hello/manual/libc/Environment-Access.html#index-clearenv-3107
+ ENV = {};
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glCullFace(x0) { GLctx['cullFace'](x0) }
function _emscripten_glUniform4f(location, v0, v1, v2, v3) {
@@ -5009,9 +8633,14 @@ function copyTempDouble(ptr) {
GLctx.uniform2iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*8)>>2));
}
- function _emscripten_glVertexAttrib1fv(index, v) {
-
- GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ var _emscripten_asm_const=true;
+
+ function _chroot(path) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(37, path);
+ // int chroot(const char *path);
+ // http://pubs.opengroup.org/onlinepubs/7908799/xsh/chroot.html
+ ___setErrNo(ERRNO_CODES.EACCES);
+ return -1;
}
function _glEnable(x0) { GLctx['enable'](x0) }
@@ -5180,13 +8809,57 @@ function copyTempDouble(ptr) {
emscriptenWebGLGetUniform(program, location, params, 'Integer');
}
+ function _unsetenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(114, name);
+ // int unsetenv(const char *name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/unsetenv.html
+ if (name === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ name = Pointer_stringify(name);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name)) {
+ delete ENV[name];
+ ___buildEnvironment(ENV);
+ }
+ return 0;
+ }
+
function _emscripten_glDepthMask(flag) {
GLctx.depthMask(!!flag);
}
+
function _emscripten_glDepthRangef(x0, x1) { GLctx['depthRange'](x0, x1) }
- function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
+
+ function _emscripten_get_now_is_monotonic() {
+ // return whether emscripten_get_now is guaranteed monotonic; the Date.now
+ // implementation is not :(
+ return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
+ ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
+ }function _clock_gettime(clk_id, tp) {
+ // int clock_gettime(clockid_t clk_id, struct timespec *tp);
+ var now;
+ if (clk_id === 0) {
+ now = Date.now();
+ } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
+ now = _emscripten_get_now();
+ } else {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
+ return 0;
+ }function ___clock_gettime() {
+ return _clock_gettime.apply(null, arguments)
+ }
function _emscripten_set_fullscreenchange_callback(target, userData, useCapture, callbackfunc) {
if (typeof JSEvents.fullscreenEnabled() === 'undefined') return -1;
@@ -5202,7 +8875,75 @@ function copyTempDouble(ptr) {
return 0;
}
- function _pthread_join() {}
+ function _emscripten_glVertexAttrib1fv(index, v) {
+
+ GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ }
+
+
+ function __cleanup_thread(pthread_ptr) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _cleanup_thread() can only ever be called from main application thread!';
+ if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _cleanup_thread!';
+ HEAP32[(((pthread_ptr)+(24))>>2)]=0;
+ var pthread = PThread.pthreads[pthread_ptr];
+ var worker = pthread.worker;
+ PThread.freeThreadData(pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ }
+
+ function __pthread_testcancel_js() {
+ if (!ENVIRONMENT_IS_PTHREAD) return;
+ if (!threadInfoStruct) return;
+ var cancelDisabled = Atomics.load(HEAPU32, (threadInfoStruct + 72 ) >> 2);
+ if (cancelDisabled) return;
+ var canceled = Atomics.load(HEAPU32, (threadInfoStruct + 0 ) >> 2);
+ if (canceled == 2) throw 'Canceled!';
+ }function _pthread_join(thread, status) {
+ if (!thread) {
+ Module['printErr']('pthread_join attempted on a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ if (ENVIRONMENT_IS_PTHREAD && selfThreadId == thread) {
+ Module['printErr']('PThread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ else if (!ENVIRONMENT_IS_PTHREAD && PThread.mainThreadBlock == thread) {
+ Module['printErr']('Main thread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_join attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var detached = Atomics.load(HEAPU32, (thread + 80 ) >> 2);
+ if (detached) {
+ Module['printErr']('Attempted to join thread ' + thread + ', which was already detached!');
+ return ERRNO_CODES.EINVAL; // The thread is already detached, can no longer join it!
+ }
+ for (;;) {
+ var threadStatus = Atomics.load(HEAPU32, (thread + 0 ) >> 2);
+ if (threadStatus == 1) { // Exited?
+ var threadExitCode = Atomics.load(HEAPU32, (thread + 4 ) >> 2);
+ if (status) HEAP32[((status)>>2)]=threadExitCode;
+ Atomics.store(HEAPU32, (thread + 80 ) >> 2, 1); // Mark the thread as detached.
+
+ if (!ENVIRONMENT_IS_PTHREAD) __cleanup_thread(thread);
+ else postMessage({ cmd: 'cleanupThread', thread: thread});
+ return 0;
+ }
+ // TODO HACK! Replace the _js variant with just _pthread_testcancel:
+ //_pthread_testcancel();
+ __pthread_testcancel_js();
+ // In main runtime thread (the thread that initialized the Emscripten C runtime and launched main()), assist pthreads in performing operations
+ // that they need to access the Emscripten main runtime for.
+ if (!ENVIRONMENT_IS_PTHREAD) _emscripten_main_thread_process_queued_calls();
+ _emscripten_futex_wait(thread + 0, threadStatus, ENVIRONMENT_IS_PTHREAD ? 100 : 1);
+ }
+ }
@@ -5494,12 +9235,6 @@ function copyTempDouble(ptr) {
win.shouldClose = value;
}
- function _glfwWindowShouldClose(winid) {
- var win = GLFW.WindowFromId(winid);
- if (!win) return 0;
- return win.shouldClose;
- }
-
function _emscripten_glClientActiveTexture() {
Module['printErr']('missing function: emscripten_glClientActiveTexture'); abort(-1);
}
@@ -5551,8 +9286,6 @@ function copyTempDouble(ptr) {
HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target, pname);
}
- function _glfwWaitEvents() {}
-
function _emscripten_glStencilOpSeparate(x0, x1, x2, x3) { GLctx['stencilOpSeparate'](x0, x1, x2, x3) }
function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) {
@@ -5611,45 +9344,45 @@ function copyTempDouble(ptr) {
function _glDepthFunc(x0) { GLctx['depthFunc'](x0) }
-
- var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
- Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
- Module["___udivmoddi4"] = ___udivmoddi4;
- Module["___uremdi3"] = ___uremdi3;
+ var __main_thread_futex_wait_address; if (ENVIRONMENT_IS_PTHREAD) __main_thread_futex_wait_address = PthreadWorkerInit.__main_thread_futex_wait_address; else PthreadWorkerInit.__main_thread_futex_wait_address = __main_thread_futex_wait_address = allocate(1, "i32*", ALLOC_STATIC);function _emscripten_futex_wait(addr, val, timeout) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0) return -22;
+ // dump('futex_wait addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ENVIRONMENT_IS_WORKER) {
+ var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout);
+ // dump('futex_wait done by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ret === 'timed-out') return -110;
+ if (ret === 'not-equal') return -11;
+ if (ret === 'ok') return 0;
+ throw 'Atomics.wait returned an unexpected value ' + ret;
+ } else {
+ // Atomics.wait is not available in the main browser thread, so simulate it via busy spinning.
+ var loadedVal = Atomics.load(HEAP32, addr >> 2);
+ if (val != loadedVal) return -11;
+
+ var tNow = performance.now();
+ var tEnd = tNow + timeout;
+
+
+ // Register globally which address the main thread is simulating to be waiting on. When zero, main thread is not waiting on anything,
+ // and on nonzero, the contents of address pointed by __main_thread_futex_wait_address tell which address the main thread is simulating its wait on.
+ Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr);
+ var ourWaitAddress = addr; // We may recursively re-enter this function while processing queued calls, in which case we'll do a spurious wakeup of the older wait operation.
+ while (addr == ourWaitAddress) {
+ tNow = performance.now();
+ if (tNow > tEnd) {
+ return -110;
+ }
+ _emscripten_main_thread_process_queued_calls(); // We are performing a blocking loop here, so must pump any pthreads if they want to perform operations that are proxied.
+ addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); // Look for a worker thread waking us up.
+ }
+ return 0;
+ }
+ }
function _emscripten_glClearDepthf(x0) { GLctx['clearDepth'](x0) }
function _emscripten_glClear(x0) { GLctx['clear'](x0) }
-
- function _emscripten_get_now_is_monotonic() {
- // return whether emscripten_get_now is guaranteed monotonic; the Date.now
- // implementation is not :(
- return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
- ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
- }
-
- var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
-
- function ___setErrNo(value) {
- if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
- else Module.printErr('failed to set errno from JS');
- return value;
- }function _clock_gettime(clk_id, tp) {
- // int clock_gettime(clockid_t clk_id, struct timespec *tp);
- var now;
- if (clk_id === 0) {
- now = Date.now();
- } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
- now = _emscripten_get_now();
- } else {
- ___setErrNo(ERRNO_CODES.EINVAL);
- return -1;
- }
- HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
- HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
- return 0;
- }
function _emscripten_glBindBuffer(target, buffer) {
var bufferObj = buffer ? GL.buffers[buffer] : null;
@@ -5736,6 +9469,13 @@ function copyTempDouble(ptr) {
return 0;
}
+
+
+ var cttz_i8; if (ENVIRONMENT_IS_PTHREAD) cttz_i8 = PthreadWorkerInit.cttz_i8; else PthreadWorkerInit.cttz_i8 = cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
+ Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
+ Module["___udivmoddi4"] = ___udivmoddi4;
+ Module["___uremdi3"] = ___uremdi3;
+
function _glGetUniformLocation(program, name) {
name = Pointer_stringify(name);
@@ -5830,6 +9570,8 @@ function copyTempDouble(ptr) {
GLFW.setCursorPosCallback(winid, cbfun);
}
+ function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
function _glBindAttribLocation(program, index, name) {
name = Pointer_stringify(name);
GLctx.bindAttribLocation(GL.programs[program], index, name);
@@ -5913,6 +9655,43 @@ function copyTempDouble(ptr) {
GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size));
}
+ function _emscripten_futex_wake(addr, count) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0 || count < 0) return -22;
+ if (count == 0) return 0;
+ // dump('futex_wake addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+
+ // See if main thread is waiting on this address? If so, wake it up by resetting its wake location to zero.
+ // Note that this is not a fair procedure, since we always wake main thread first before any workers, so
+ // this scheme does not adhere to real queue-based waiting.
+ var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2);
+ var mainThreadWoken = 0;
+ if (mainThreadWaitAddress == addr) {
+ var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0);
+ if (loadedAddr == mainThreadWaitAddress) {
+ --count;
+ mainThreadWoken = 1;
+ if (count <= 0) return 1;
+ }
+ }
+
+ // Wake any workers waiting on this address.
+ var ret = Atomics.wake(HEAP32, addr >> 2, count);
+ if (ret >= 0) return ret + mainThreadWoken;
+ throw 'Atomics.wake returned an unexpected value ' + ret;
+ }
+
+ function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
+ var log = GLctx.getProgramInfoLog(GL.programs[program]);
+ if (log === null) log = '(unknown error)';
+
+ if (maxLength > 0 && infoLog) {
+ var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
+ if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
+ } else {
+ if (length) HEAP32[((length)>>2)]=0;
+ }
+ }
+
function _emscripten_glGenFramebuffers(n, ids) {
for (var i = 0; i < n; ++i) {
var framebuffer = GLctx.createFramebuffer();
@@ -6019,8 +9798,181 @@ function copyTempDouble(ptr) {
GLctx.shaderSource(GL.shaders[shader], source);
}
- function _pthread_create() {
- return 11;
+
+ function __spawn_thread(threadParams) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _spawn_thread() can only ever be called from main application thread!';
+
+ var worker = PThread.getNewWorker();
+ if (worker.pthread !== undefined) throw 'Internal error!';
+ if (!threadParams.pthread_ptr) throw 'Internal error, no pthread ptr!';
+ PThread.runningWorkers.push(worker);
+
+ // Allocate memory for thread-local storage and initialize it to zero.
+ var tlsMemory = _malloc(128 * 4);
+ for (var i = 0; i < 128; ++i) {
+ HEAP32[(((tlsMemory)+(i*4))>>2)]=0;
+ }
+
+ var pthread = PThread.pthreads[threadParams.pthread_ptr] = { // Create a pthread info object to represent this thread.
+ worker: worker,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ allocatedOwnStack: threadParams.allocatedOwnStack,
+ thread: threadParams.pthread_ptr,
+ threadInfoStruct: threadParams.pthread_ptr // Info area for this thread in Emscripten HEAP (shared)
+ };
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 0 ) >> 2, 0); // threadStatus <- 0, meaning not yet exited.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 4 ) >> 2, 0); // threadExitCode <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 20 ) >> 2, 0); // profilerBlock <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 80 ) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 60 ) >> 2, 0); // Mark initial status to unused.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 52 ) >> 2, pthread.threadInfoStruct); // Main thread ID.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 96) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 92) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 8) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 12) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 20) >> 2, threadParams.schedPolicy);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 24) >> 2, threadParams.schedPrio);
+
+ var global_libc = _emscripten_get_global_libc();
+ var global_locale = global_libc + 40;
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 188) >> 2, global_locale);
+
+
+ worker.pthread = pthread;
+
+ // Ask the worker to start executing its pthread entry point function.
+ worker.postMessage({
+ cmd: 'run',
+ start_routine: threadParams.startRoutine,
+ arg: threadParams.arg,
+ threadInfoStruct: threadParams.pthread_ptr,
+ selfThreadId: threadParams.pthread_ptr, // TODO: Remove this since thread ID is now the same as the thread address.
+ parentThreadId: threadParams.parent_pthread_ptr,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ }, threadParams.transferList);
+ }
+
+ function _pthread_getschedparam(thread, policy, schedparam) {
+ if (!policy && !schedparam) return ERRNO_CODES.EINVAL;
+
+ if (!thread) {
+ Module['printErr']('pthread_getschedparam called with a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_getschedparam attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var schedPolicy = Atomics.load(HEAPU32, (thread + 120 + 20 ) >> 2);
+ var schedPrio = Atomics.load(HEAPU32, (thread + 120 + 24 ) >> 2);
+
+ if (policy) HEAP32[((policy)>>2)]=schedPolicy;
+ if (schedparam) HEAP32[((schedparam)>>2)]=schedPrio;
+ return 0;
+ }
+
+ function _pthread_self() {
+ return __pthread_ptr|0;
+ }function _pthread_create(pthread_ptr, attr, start_routine, arg) {
+ if (typeof SharedArrayBuffer === 'undefined') {
+ Module['printErr']('Current environment does not support SharedArrayBuffer, pthreads are not available!');
+ return 11;
+ }
+ if (!pthread_ptr) {
+ Module['printErr']('pthread_create called with a null thread pointer!');
+ return 22;
+ }
+
+ var transferList = []; // List of JS objects that will transfer ownership to the Worker hosting the thread
+
+
+ // Synchronously proxy the thread creation to main thread if possible. If we need to transfer ownership of objects, then
+ // proxy asynchronously via postMessage.
+ if (ENVIRONMENT_IS_PTHREAD && transferList.length == 0) {
+ return _emscripten_sync_run_in_main_thread_4(137, pthread_ptr, attr, start_routine, arg);
+ }
+
+ var stackSize = 0;
+ var stackBase = 0;
+ var detached = 0; // Default thread attr is PTHREAD_CREATE_JOINABLE, i.e. start as not detached.
+ var schedPolicy = 0; /*SCHED_OTHER*/
+ var schedPrio = 0;
+ if (attr) {
+ stackSize = HEAP32[((attr)>>2)];
+ stackBase = HEAP32[(((attr)+(8))>>2)];
+ detached = HEAP32[(((attr)+(12))>>2)] != 0/*PTHREAD_CREATE_JOINABLE*/;
+ var inheritSched = HEAP32[(((attr)+(16))>>2)] == 0/*PTHREAD_INHERIT_SCHED*/;
+ if (inheritSched) {
+ var prevSchedPolicy = HEAP32[(((attr)+(20))>>2)];
+ var prevSchedPrio = HEAP32[(((attr)+(24))>>2)];
+ _pthread_getschedparam(_pthread_self(), attr + 20, attr + 24);
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ HEAP32[(((attr)+(20))>>2)]=prevSchedPolicy;
+ HEAP32[(((attr)+(24))>>2)]=prevSchedPrio;
+ } else {
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ }
+ }
+ stackSize += 81920 /*DEFAULT_STACK_SIZE*/;
+ var allocatedOwnStack = stackBase == 0; // If allocatedOwnStack == true, then the pthread impl maintains the stack allocation.
+ if (allocatedOwnStack) {
+ stackBase = _malloc(stackSize); // Allocate a stack if the user doesn't want to place the stack in a custom memory area.
+ } else {
+ // Musl stores the stack base address assuming stack grows downwards, so adjust it to Emscripten convention that the
+ // stack grows upwards instead.
+ stackBase -= stackSize;
+ assert(stackBase > 0);
+ }
+
+ // Allocate thread block (pthread_t structure).
+ var threadInfoStruct = _malloc(244);
+ for (var i = 0; i < 244 >> 2; ++i) HEAPU32[(threadInfoStruct>>2) + i] = 0; // zero-initialize thread structure.
+ HEAP32[((pthread_ptr)>>2)]=threadInfoStruct;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((threadInfoStruct)+(24))>>2)]=threadInfoStruct;
+
+ // pthread struct robust_list head should point to itself.
+ var headPtr = threadInfoStruct + 168;
+ HEAP32[((headPtr)>>2)]=headPtr;
+
+ var threadParams = {
+ stackBase: stackBase,
+ stackSize: stackSize,
+ allocatedOwnStack: allocatedOwnStack,
+ schedPolicy: schedPolicy,
+ schedPrio: schedPrio,
+ detached: detached,
+ startRoutine: start_routine,
+ pthread_ptr: threadInfoStruct,
+ parent_pthread_ptr: _pthread_self(),
+ arg: arg,
+ transferList: transferList
+ };
+
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // The prepopulated pool of web workers that can host pthreads is stored in the main JS thread. Therefore if a
+ // pthread is attempting to spawn a new thread, the thread creation must be deferred to the main JS thread.
+ threadParams.cmd = 'spawnThread';
+ postMessage(threadParams, transferList);
+ } else {
+ // We are the main thread, so we have the pthread warmup pool in this thread and can fire off JS thread creation
+ // directly ourselves.
+ __spawn_thread(threadParams);
+ }
+
+ return 0;
}
function _emscripten_glDrawArrays(mode, first, count) {
@@ -6055,6 +10007,10 @@ function copyTempDouble(ptr) {
GLFW.setCharCallback(winid, cbfun);
}
+ function _glfwGetKey(winid, key) {
+ return GLFW.getKey(winid, key);
+ }
+
function _emscripten_glGetUniformLocation(program, name) {
name = Pointer_stringify(name);
@@ -6092,6 +10048,11 @@ function copyTempDouble(ptr) {
GLctx.bindBuffer(target, bufferObj);
}
+
+ function _emscripten_set_current_thread_status_js(newStatus) {
+ }
+ Module["_emscripten_set_current_thread_status"] = _emscripten_set_current_thread_status;
+
function _emscripten_glVertexAttrib4fv(index, v) {
GLctx.vertexAttrib4f(index, HEAPF32[v>>2], HEAPF32[v+4>>2], HEAPF32[v+8>>2], HEAPF32[v+12>>2]);
@@ -6108,6 +10069,61 @@ function copyTempDouble(ptr) {
Module["_bitshift64Lshr"] = _bitshift64Lshr;
+ function _confstr(name, buf, len) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(68, name, buf, len);
+ // size_t confstr(int name, char *buf, size_t len);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/confstr.html
+ var value;
+ switch (name) {
+ case 0:
+ value = ENV['PATH'] || '/';
+ break;
+ case 1:
+ // Mimicking glibc.
+ value = 'POSIX_V6_ILP32_OFF32\nPOSIX_V6_ILP32_OFFBIG';
+ break;
+ case 2:
+ // This JS implementation was tested against this glibc version.
+ value = 'glibc 2.14';
+ break;
+ case 3:
+ // We don't support pthreads.
+ value = '';
+ break;
+ case 1118:
+ case 1122:
+ case 1124:
+ case 1125:
+ case 1126:
+ case 1128:
+ case 1129:
+ case 1130:
+ value = '';
+ break;
+ case 1116:
+ case 1117:
+ case 1121:
+ value = '-m32';
+ break;
+ case 1120:
+ value = '-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64';
+ break;
+ default:
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return 0;
+ }
+ if (len == 0 || buf == 0) {
+ return value.length + 1;
+ } else {
+ var length = Math.min(len, value.length);
+ for (var i = 0; i < length; i++) {
+ HEAP8[(((buf)+(i))>>0)]=value.charCodeAt(i);
+ }
+ if (len > length) HEAP8[(((buf)+(i++))>>0)]=0;
+ return i;
+ }
+ }
+
function _glBufferData(target, size, data, usage) {
if (!data) {
GLctx.bufferData(target, size, usage);
@@ -6122,6 +10138,24 @@ function copyTempDouble(ptr) {
return GLctx.isShader(s);
}
+ function _getenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(111, 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 _emscripten_conditional_set_current_thread_status_js(expectedStatus, newStatus) {
+ }
+ Module["_emscripten_conditional_set_current_thread_status"] = _emscripten_conditional_set_current_thread_status;
+
function _emscripten_glDrawBuffers(n, bufs) {
var bufArray = GL.tempFixedLengthArray[n];
@@ -6197,16 +10231,9 @@ function copyTempDouble(ptr) {
GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);
}
- function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
- var log = GLctx.getProgramInfoLog(GL.programs[program]);
- if (log === null) log = '(unknown error)';
-
- if (maxLength > 0 && infoLog) {
- var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
- if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
- } else {
- if (length) HEAP32[((length)>>2)]=0;
- }
+ function ___assert_fail(condition, filename, line, func) {
+ ABORT = true;
+ throw 'Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + stackTrace();
}
function _emscripten_glVertexAttribDivisor(index, divisor) {
@@ -6245,6 +10272,26 @@ function copyTempDouble(ptr) {
GLctx['bindVertexArray'](GL.vaos[vao]);
}
+ function _setenv(envname, envval, overwrite) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(113, envname, envval, overwrite);
+ // int setenv(const char *envname, const char *envval, int overwrite);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html
+ if (envname === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ var name = Pointer_stringify(envname);
+ var val = Pointer_stringify(envval);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name) && !overwrite) return 0;
+ ENV[name] = val;
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glLoadMatrixf() {
Module['printErr']('missing function: emscripten_glLoadMatrixf'); abort(-1);
}
@@ -6399,6 +10446,16 @@ function copyTempDouble(ptr) {
GLctx.validateProgram(GL.programs[program]);
}
+ function _emscripten_syscall(which, varargs) {
+ switch (which) {
+ case 54: return ___syscall54(which, varargs);
+ case 6: return ___syscall6(which, varargs);
+ case 140: return ___syscall140(which, varargs);
+ case 146: return ___syscall146(which, varargs);
+ default: throw "surprising proxied syscall: " + which;
+ }
+ }
+
function _emscripten_set_click_callback(target, userData, useCapture, callbackfunc) {
JSEvents.registerMouseEventCallback(target, userData, useCapture, callbackfunc, 4, "click");
return 0;
@@ -6430,8 +10487,70 @@ function copyTempDouble(ptr) {
}
}
- function _glfwGetKey(winid, key) {
- return GLFW.getKey(winid, key);
+ function _fpathconf(fildes, name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(46, fildes, name);
+ // long fpathconf(int fildes, int name);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/encrypt.html
+ // NOTE: The first parameter is ignored, so pathconf == fpathconf.
+ // The constants here aren't real values. Just mimicking glibc.
+ switch (name) {
+ case 0:
+ return 32000;
+ case 1:
+ case 2:
+ case 3:
+ return 255;
+ case 4:
+ case 5:
+ case 16:
+ case 17:
+ case 18:
+ return 4096;
+ case 6:
+ case 7:
+ case 20:
+ return 1;
+ case 8:
+ return 0;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 14:
+ case 15:
+ case 19:
+ return -1;
+ case 13:
+ return 64;
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
+ function _putenv(string) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(115, 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 _emscripten_glGenVertexArrays(n, arrays) {
@@ -6458,10 +10577,32 @@ function copyTempDouble(ptr) {
return ret;
}
+
function _emscripten_glGetBooleanv(name_, p) {
emscriptenWebGLGet(name_, p, 'Boolean');
}
+ function _utimes(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(13, path, times);
+ var time;
+ if (times) {
+ var offset = 8 + 0;
+ time = HEAP32[(((times)+(offset))>>2)] * 1000;
+ offset = 8 + 4;
+ time += HEAP32[(((times)+(offset))>>2)] / 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCompileShader(shader) {
GLctx.compileShader(GL.shaders[shader]);
}
@@ -6488,8 +10629,14 @@ Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, res
Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) };
+FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;Module["FS_unlink"] = FS.unlink;;
+__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() });;
+if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); };
JSEvents.staticInit();;
-/* flush anything remaining in the buffer during shutdown */ __ATEXIT__.push(function() { var fflush = Module["_fflush"]; if (fflush) fflush(0); var printChar = ___syscall146.printChar; if (!printChar) return; var buffers = ___syscall146.buffers; if (buffers[1].length) printChar(1, 10); if (buffers[2].length) printChar(2, 10); });;
+if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock();;
+if (!ENVIRONMENT_IS_PTHREAD) ___buildEnvironment(ENV);;
+if (!ENVIRONMENT_IS_PTHREAD) {
+ // Only main thread initializes these, pthreads copy them over at thread worker init time (in pthread-main.js)
DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC);
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
@@ -6504,6 +10651,8 @@ staticSealed = true; // seal the static portion of memory
assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
+}
+
function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
@@ -6771,8 +10920,8 @@ function invoke_viiii(index,a1,a2,a3,a4) {
}
Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity };
-
-Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_glUniform4f": _glUniform4f, "_glfwWindowShouldClose": _glfwWindowShouldClose, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_glGenTextures": _glGenTextures, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "_glLinkProgram": _glLinkProgram, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "___syscall146": ___syscall146, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_glGetFloatv": _glGetFloatv, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_glfwGetKey": _glfwGetKey, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_glClear": _glClear, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_glfwWaitEvents": _glfwWaitEvents, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
+Module.asmGlobalArg['Atomics'] = Atomics;
+Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "___assert_fail": ___assert_fail, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_sysconf": _sysconf, "_utime": _utime, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_chroot": _chroot, "_glUniform4f": _glUniform4f, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "__pthread_testcancel_js": __pthread_testcancel_js, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_unsetenv": _unsetenv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "___syscall146": ___syscall146, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_asm_const_v": _emscripten_asm_const_v, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_pthread_self": _pthread_self, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_glGenTextures": _glGenTextures, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "__register_pthread_ptr": __register_pthread_ptr, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "_gettimeofday": _gettimeofday, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "__spawn_thread": __spawn_thread, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_emscripten_conditional_set_current_thread_status_js": _emscripten_conditional_set_current_thread_status_js, "_putenv": _putenv, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_fpathconf": _fpathconf, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_is_main_runtime_thread": _emscripten_is_main_runtime_thread, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "___buildEnvironment": ___buildEnvironment, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_utimes": _utimes, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_tzset": _tzset, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_glGetFloatv": _glGetFloatv, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "___clock_gettime": ___clock_gettime, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_clearenv": _clearenv, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_getenv": _getenv, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_emscripten_futex_wake": _emscripten_futex_wake, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "__cleanup_thread": __cleanup_thread, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_set_current_thread_status_js": _emscripten_set_current_thread_status_js, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_syscall": _emscripten_syscall, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_glfwGetKey": _glfwGetKey, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_glLinkProgram": _glLinkProgram, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_futex_wait": _emscripten_futex_wait, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glClear": _glClear, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "___pthread_setcancelstate": ___pthread_setcancelstate, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_confstr": _confstr, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_pthread_getschedparam": _pthread_getschedparam, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glBufferData": _emscripten_glBufferData, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_atexit": _atexit, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_setenv": _setenv, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
'use asm';
@@ -6877,7 +11026,6 @@ var asm = (function(global, env, buffer) {
var invoke_viiii=env.invoke_viiii;
var _emscripten_glGetTexParameterfv=env._emscripten_glGetTexParameterfv;
var _glUseProgram=env._glUseProgram;
- var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _glfwCreateWindow=env._glfwCreateWindow;
var _emscripten_glReleaseShaderCompiler=env._emscripten_glReleaseShaderCompiler;
var _emscripten_glBlendFuncSeparate=env._emscripten_glBlendFuncSeparate;
@@ -6888,6 +11036,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilMaskSeparate=env._emscripten_glStencilMaskSeparate;
var _emscripten_glViewport=env._emscripten_glViewport;
var _emscripten_glFrontFace=env._emscripten_glFrontFace;
+ var ___assert_fail=env.___assert_fail;
var _glDeleteProgram=env._glDeleteProgram;
var _emscripten_glUniform3fv=env._emscripten_glUniform3fv;
var _emscripten_glPolygonOffset=env._emscripten_glPolygonOffset;
@@ -6907,17 +11056,19 @@ var asm = (function(global, env, buffer) {
var _glDisableVertexAttribArray=env._glDisableVertexAttribArray;
var _glCreateShader=env._glCreateShader;
var _emscripten_glReadPixels=env._emscripten_glReadPixels;
+ var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _sysconf=env._sysconf;
+ var _utime=env._utime;
var _emscripten_glSampleCoverage=env._emscripten_glSampleCoverage;
var _emscripten_glVertexPointer=env._emscripten_glVertexPointer;
var _emscripten_set_touchstart_callback=env._emscripten_set_touchstart_callback;
var emscriptenWebGLComputeImageSize=env.emscriptenWebGLComputeImageSize;
var _emscripten_glGetBooleanv=env._emscripten_glGetBooleanv;
var _emscripten_glGetShaderSource=env._emscripten_glGetShaderSource;
+ var _chroot=env._chroot;
var _glUniform4f=env._glUniform4f;
- var _glfwWindowShouldClose=env._glfwWindowShouldClose;
var _llvm_stacksave=env._llvm_stacksave;
var _emscripten_glUniform1i=env._emscripten_glUniform1i;
- var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
var _emscripten_glGenBuffers=env._emscripten_glGenBuffers;
var _emscripten_glDeleteObjectARB=env._emscripten_glDeleteObjectARB;
@@ -6930,9 +11081,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glIsFramebuffer=env._emscripten_glIsFramebuffer;
var _emscripten_glIsEnabled=env._emscripten_glIsEnabled;
var _emscripten_glScissor=env._emscripten_glScissor;
+ var __pthread_testcancel_js=env.__pthread_testcancel_js;
var _emscripten_glVertexAttrib4fv=env._emscripten_glVertexAttrib4fv;
var _emscripten_glFramebufferTexture2D=env._emscripten_glFramebufferTexture2D;
var _emscripten_glTexParameteriv=env._emscripten_glTexParameteriv;
+ var _unsetenv=env._unsetenv;
var _emscripten_glBindProgramARB=env._emscripten_glBindProgramARB;
var _emscripten_glStencilOpSeparate=env._emscripten_glStencilOpSeparate;
var _emscripten_glFramebufferRenderbuffer=env._emscripten_glFramebufferRenderbuffer;
@@ -6940,13 +11093,14 @@ var asm = (function(global, env, buffer) {
var _glfwSetErrorCallback=env._glfwSetErrorCallback;
var _glfwDefaultWindowHints=env._glfwDefaultWindowHints;
var _glfwDestroyWindow=env._glfwDestroyWindow;
- var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
+ var ___syscall146=env.___syscall146;
var _emscripten_glGetActiveAttrib=env._emscripten_glGetActiveAttrib;
var _emscripten_glAttachShader=env._emscripten_glAttachShader;
var _emscripten_get_now_is_monotonic=env._emscripten_get_now_is_monotonic;
var _emscripten_glUniform2i=env._emscripten_glUniform2i;
var _emscripten_glUniform2f=env._emscripten_glUniform2f;
var _emscripten_glTexParameterfv=env._emscripten_glTexParameterfv;
+ var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
var _emscripten_glUniformMatrix2fv=env._emscripten_glUniformMatrix2fv;
var _glGetProgramInfoLog=env._glGetProgramInfoLog;
var _glfwSetScrollCallback=env._glfwSetScrollCallback;
@@ -6971,17 +11125,21 @@ var asm = (function(global, env, buffer) {
var _glDepthFunc=env._glDepthFunc;
var _emscripten_glClientActiveTexture=env._emscripten_glClientActiveTexture;
var _emscripten_glVertexAttrib2f=env._emscripten_glVertexAttrib2f;
+ var _emscripten_asm_const_v=env._emscripten_asm_const_v;
var _emscripten_glFlush=env._emscripten_glFlush;
var _emscripten_glBlendFunc=env._emscripten_glBlendFunc;
var _emscripten_glCheckFramebufferStatus=env._emscripten_glCheckFramebufferStatus;
var _emscripten_glGenerateMipmap=env._emscripten_glGenerateMipmap;
var _emscripten_glGetError=env._emscripten_glGetError;
var _emscripten_glClearDepthf=env._emscripten_glClearDepthf;
- var _emscripten_glBufferData=env._emscripten_glBufferData;
+ var _pthread_self=env._pthread_self;
+ var _emscripten_glUniform3f=env._emscripten_glUniform3f;
var _emscripten_glUniform3i=env._emscripten_glUniform3i;
+ var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
var _emscripten_glRotatef=env._emscripten_glRotatef;
var _emscripten_glDeleteShader=env._emscripten_glDeleteShader;
var _glEnable=env._glEnable;
+ var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
var _glGenTextures=env._glGenTextures;
var _emscripten_glMatrixMode=env._emscripten_glMatrixMode;
var _glGetString=env._glGetString;
@@ -6989,7 +11147,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glGetUniformLocation=env._emscripten_glGetUniformLocation;
var emscriptenWebGLGet=env.emscriptenWebGLGet;
var _emscripten_glEnableVertexAttribArray=env._emscripten_glEnableVertexAttribArray;
- var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
+ var __register_pthread_ptr=env.__register_pthread_ptr;
var _emscripten_get_now=env._emscripten_get_now;
var _emscripten_glNormalPointer=env._emscripten_glNormalPointer;
var _glAttachShader=env._glAttachShader;
@@ -6998,41 +11156,48 @@ var asm = (function(global, env, buffer) {
var _glCreateProgram=env._glCreateProgram;
var _glUniformMatrix4fv=env._glUniformMatrix4fv;
var _emscripten_glClearDepth=env._emscripten_glClearDepth;
- var _glLinkProgram=env._glLinkProgram;
var ___lock=env.___lock;
var emscriptenWebGLGetTexPixelData=env.emscriptenWebGLGetTexPixelData;
var ___syscall6=env.___syscall6;
- var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
+ var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
var _emscripten_glVertexAttrib3f=env._emscripten_glVertexAttrib3f;
var _time=env._time;
- var ___syscall146=env.___syscall146;
+ var _gettimeofday=env._gettimeofday;
+ var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
var _emscripten_glGetFramebufferAttachmentParameteriv=env._emscripten_glGetFramebufferAttachmentParameteriv;
var _emscripten_glBlendEquationSeparate=env._emscripten_glBlendEquationSeparate;
var _exit=env._exit;
var _emscripten_glEnableClientState=env._emscripten_glEnableClientState;
+ var __spawn_thread=env.__spawn_thread;
var _emscripten_glUniform4i=env._emscripten_glUniform4i;
+ var _emscripten_conditional_set_current_thread_status_js=env._emscripten_conditional_set_current_thread_status_js;
+ var _putenv=env._putenv;
var _pthread_join=env._pthread_join;
var _glCullFace=env._glCullFace;
var _emscripten_glGetPointerv=env._emscripten_glGetPointerv;
var _emscripten_set_keypress_callback=env._emscripten_set_keypress_callback;
var __emscripten_sample_gamepad_data=env.__emscripten_sample_gamepad_data;
+ var _fpathconf=env._fpathconf;
var _emscripten_get_gamepad_status=env._emscripten_get_gamepad_status;
var _emscripten_glUniform4f=env._emscripten_glUniform4f;
var _emscripten_glUniform2fv=env._emscripten_glUniform2fv;
var _glfwGetVideoModes=env._glfwGetVideoModes;
var ___unlock=env.___unlock;
var _emscripten_set_click_callback=env._emscripten_set_click_callback;
+ var _emscripten_is_main_runtime_thread=env._emscripten_is_main_runtime_thread;
var _emscripten_glShaderBinary=env._emscripten_glShaderBinary;
var _emscripten_glDrawElements=env._emscripten_glDrawElements;
var _glVertexAttribPointer=env._glVertexAttribPointer;
var _emscripten_get_num_gamepads=env._emscripten_get_num_gamepads;
+ var ___buildEnvironment=env.___buildEnvironment;
var _glCompressedTexImage2D=env._glCompressedTexImage2D;
+ var _utimes=env._utimes;
var _emscripten_glUniform1iv=env._emscripten_glUniform1iv;
var _emscripten_glGetVertexAttribPointerv=env._emscripten_glGetVertexAttribPointerv;
var _glClearDepthf=env._glClearDepthf;
var _emscripten_glCompressedTexSubImage2D=env._emscripten_glCompressedTexSubImage2D;
var emscriptenWebGLGetUniform=env.emscriptenWebGLGetUniform;
- var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
+ var _tzset=env._tzset;
var _emscripten_glDeleteVertexArrays=env._emscripten_glDeleteVertexArrays;
var _glfwSetWindowShouldClose=env._glfwSetWindowShouldClose;
var _emscripten_glUniform1fv=env._emscripten_glUniform1fv;
@@ -7046,26 +11211,30 @@ var asm = (function(global, env, buffer) {
var _glGetFloatv=env._glGetFloatv;
var _emscripten_glDeleteProgram=env._emscripten_glDeleteProgram;
var _emscripten_glDeleteRenderbuffers=env._emscripten_glDeleteRenderbuffers;
+ var ___clock_gettime=env.___clock_gettime;
var _emscripten_glDrawElementsInstanced=env._emscripten_glDrawElementsInstanced;
var _emscripten_glVertexAttrib4f=env._emscripten_glVertexAttrib4f;
var _glDrawArrays=env._glDrawArrays;
var _emscripten_glTexSubImage2D=env._emscripten_glTexSubImage2D;
- var _emscripten_memcpy_big=env._emscripten_memcpy_big;
+ var _clearenv=env._clearenv;
var _emscripten_glPixelStorei=env._emscripten_glPixelStorei;
var _glCompileShader=env._glCompileShader;
var _emscripten_get_pointerlock_status=env._emscripten_get_pointerlock_status;
+ var _emscripten_memcpy_big=env._emscripten_memcpy_big;
var _emscripten_glUniformMatrix3fv=env._emscripten_glUniformMatrix3fv;
var _emscripten_glColorPointer=env._emscripten_glColorPointer;
+ var _getenv=env._getenv;
var _emscripten_glDepthRange=env._emscripten_glDepthRange;
var _emscripten_glGetBufferParameteriv=env._emscripten_glGetBufferParameteriv;
var _emscripten_glFinish=env._emscripten_glFinish;
- var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
+ var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _emscripten_asm_const_iii=env._emscripten_asm_const_iii;
var _emscripten_glDepthMask=env._emscripten_glDepthMask;
var _glfwSetWindowIconifyCallback=env._glfwSetWindowIconifyCallback;
var _emscripten_glDrawBuffers=env._emscripten_glDrawBuffers;
var _glfwTerminate=env._glfwTerminate;
+ var _emscripten_futex_wake=env._emscripten_futex_wake;
var _glFrontFace=env._glFrontFace;
var _emscripten_glGetObjectParameterivARB=env._emscripten_glGetObjectParameterivARB;
var _emscripten_exit_pointerlock=env._emscripten_exit_pointerlock;
@@ -7075,10 +11244,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilFunc=env._emscripten_glStencilFunc;
var _abort=env._abort;
var _emscripten_glGetUniformiv=env._emscripten_glGetUniformiv;
+ var __cleanup_thread=env.__cleanup_thread;
var _glDeleteBuffers=env._glDeleteBuffers;
var _glBufferData=env._glBufferData;
var _glTexImage2D=env._glTexImage2D;
- var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
+ var _emscripten_set_current_thread_status_js=env._emscripten_set_current_thread_status_js;
var _glfwSetKeyCallback=env._glfwSetKeyCallback;
var _emscripten_glGenFramebuffers=env._emscripten_glGenFramebuffers;
var _emscripten_glUniformMatrix4fv=env._emscripten_glUniformMatrix4fv;
@@ -7089,8 +11259,9 @@ var asm = (function(global, env, buffer) {
var _emscripten_glBindFramebuffer=env._emscripten_glBindFramebuffer;
var _emscripten_glIsRenderbuffer=env._emscripten_glIsRenderbuffer;
var _glfwGetTime=env._glfwGetTime;
- var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _emscripten_set_gamepadconnected_callback=env._emscripten_set_gamepadconnected_callback;
+ var _emscripten_syscall=env._emscripten_syscall;
var _emscripten_glGetVertexAttribiv=env._emscripten_glGetVertexAttribiv;
var _emscripten_glBindVertexArray=env._emscripten_glBindVertexArray;
var _emscripten_glDrawArraysInstanced=env._emscripten_glDrawArraysInstanced;
@@ -7100,33 +11271,35 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDeleteTextures=env._emscripten_glDeleteTextures;
var _glfwGetKey=env._glfwGetKey;
var _glfwGetPrimaryMonitor=env._glfwGetPrimaryMonitor;
- var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
+ var _glLinkProgram=env._glLinkProgram;
var _emscripten_glVertexAttribDivisor=env._emscripten_glVertexAttribDivisor;
var _emscripten_set_touchend_callback=env._emscripten_set_touchend_callback;
var _emscripten_glGetUniformfv=env._emscripten_glGetUniformfv;
var _emscripten_glGetVertexAttribfv=env._emscripten_glGetVertexAttribfv;
var _emscripten_glGetRenderbufferParameteriv=env._emscripten_glGetRenderbufferParameteriv;
+ var _emscripten_futex_wait=env._emscripten_futex_wait;
var _emscripten_glDeleteFramebuffers=env._emscripten_glDeleteFramebuffers;
var _glGetShaderiv=env._glGetShaderiv;
var _emscripten_glVertexAttrib3fv=env._emscripten_glVertexAttrib3fv;
var _glGetUniformLocation=env._glGetUniformLocation;
var _emscripten_glGetInfoLogARB=env._emscripten_glGetInfoLogARB;
- var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
var _glClear=env._glClear;
var _emscripten_glFrustum=env._emscripten_glFrustum;
var _emscripten_glDisable=env._emscripten_glDisable;
var _emscripten_glDepthRangef=env._emscripten_glDepthRangef;
var __exit=env.__exit;
var _emscripten_glLineWidth=env._emscripten_glLineWidth;
- var _emscripten_glUniform3f=env._emscripten_glUniform3f;
var _emscripten_glGetShaderInfoLog=env._emscripten_glGetShaderInfoLog;
var _emscripten_glStencilOp=env._emscripten_glStencilOp;
+ var ___pthread_setcancelstate=env.___pthread_setcancelstate;
var _glBindAttribLocation=env._glBindAttribLocation;
var _glPixelStorei=env._glPixelStorei;
var _emscripten_glColorMask=env._emscripten_glColorMask;
var _emscripten_glLinkProgram=env._emscripten_glLinkProgram;
var _emscripten_glBlendEquation=env._emscripten_glBlendEquation;
var _emscripten_glIsTexture=env._emscripten_glIsTexture;
+ var _confstr=env._confstr;
var _emscripten_glGetProgramiv=env._emscripten_glGetProgramiv;
var _emscripten_glVertexAttrib1fv=env._emscripten_glVertexAttrib1fv;
var _emscripten_glBindTexture=env._emscripten_glBindTexture;
@@ -7136,30 +11309,44 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDrawRangeElements=env._emscripten_glDrawRangeElements;
var ___syscall54=env.___syscall54;
var _emscripten_glDeleteBuffers=env._emscripten_glDeleteBuffers;
- var _glfwWaitEvents=env._glfwWaitEvents;
+ var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
var _glfwSwapBuffers=env._glfwSwapBuffers;
var _pthread_create=env._pthread_create;
var _emscripten_set_main_loop=env._emscripten_set_main_loop;
var _emscripten_glBindRenderbuffer=env._emscripten_glBindRenderbuffer;
var _emscripten_glGetProgramInfoLog=env._emscripten_glGetProgramInfoLog;
var _glfwWindowHint=env._glfwWindowHint;
+ var _pthread_getschedparam=env._pthread_getschedparam;
var _emscripten_glIsShader=env._emscripten_glIsShader;
var _emscripten_glUniform4fv=env._emscripten_glUniform4fv;
var _emscripten_glGenVertexArrays=env._emscripten_glGenVertexArrays;
var _emscripten_glDrawArrays=env._emscripten_glDrawArrays;
var _emscripten_glCompressedTexImage2D=env._emscripten_glCompressedTexImage2D;
var _emscripten_glClearColor=env._emscripten_glClearColor;
+ var _emscripten_glBufferData=env._emscripten_glBufferData;
+ var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
var _emscripten_glCreateProgram=env._emscripten_glCreateProgram;
var _emscripten_glCopyTexSubImage2D=env._emscripten_glCopyTexSubImage2D;
+ var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
var _glTexParameteri=env._glTexParameteri;
var _emscripten_glBindBuffer=env._emscripten_glBindBuffer;
+ var _atexit=env._atexit;
var _emscripten_glGetFloatv=env._emscripten_glGetFloatv;
var _emscripten_glDetachShader=env._emscripten_glDetachShader;
var _glClearColor=env._glClearColor;
var _glfwSetCursorPosCallback=env._glfwSetCursorPosCallback;
- var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
+ var _setenv=env._setenv;
var _emscripten_glCopyTexImage2D=env._emscripten_glCopyTexImage2D;
var _emscripten_glTexImage2D=env._emscripten_glTexImage2D;
+ var Atomics_load=global.Atomics.load;
+ var Atomics_store=global.Atomics.store;
+ var Atomics_exchange=global.Atomics.exchange;
+ var Atomics_compareExchange=global.Atomics.compareExchange;
+ var Atomics_add=global.Atomics.add;
+ var Atomics_sub=global.Atomics.sub;
+ var Atomics_and=global.Atomics.and;
+ var Atomics_or=global.Atomics.or;
+ var Atomics_xor=global.Atomics.xor;
var tempFloat = 0.0;
// EMSCRIPTEN_START_FUNCS
@@ -7208,7 +11395,7 @@ function getTempRet0() {
function _InitPhysics() {
var label = 0, sp = 0;
sp = STACKTOP;
- (_pthread_create((14120|0),(0|0),(2|0),(0|0))|0);
+ (_pthread_create((14272|0),(0|0),(2|0),(0|0))|0);
return;
}
function _PhysicsLoop($0) {
@@ -7216,53 +11403,53 @@ function _PhysicsLoop($0) {
var $$0 = 0, $$010 = 0, $$011 = 0, $$09 = 0, $$0912 = 0, $$0913 = 0, $$pr = 0.0, $1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0;
var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3531] = 1;
- HEAPF64[1727] = 0.0;
+ HEAP32[3569] = 1;
+ HEAPF64[1746] = 0.0;
_InitTimer();
- $1 = HEAP32[3531]|0;
+ $1 = HEAP32[3569]|0;
$2 = ($1|0)==(0);
if (!($2)) {
while(1) {
$3 = (+_GetCurrentTime());
- HEAPF64[1728] = $3;
- $4 = +HEAPF64[1729];
+ HEAPF64[1747] = $3;
+ $4 = +HEAPF64[1748];
$5 = $3 - $4;
- HEAPF64[1730] = $5;
- $6 = +HEAPF64[1727];
+ HEAPF64[1749] = $5;
+ $6 = +HEAPF64[1746];
$7 = $5 + $6;
- HEAPF64[1727] = $7;
+ HEAPF64[1746] = $7;
_MathClamp();
- $$pr = +HEAPF64[1727];
+ $$pr = +HEAPF64[1746];
$8 = !($$pr >= 0.016666666666666666);
if (!($8)) {
while(1) {
_PhysicsStep();
- $9 = +HEAPF64[1730];
- $10 = +HEAPF64[1727];
+ $9 = +HEAPF64[1749];
+ $10 = +HEAPF64[1746];
$11 = $10 - $9;
- HEAPF64[1727] = $11;
+ HEAPF64[1746] = $11;
$12 = !($11 >= 0.016666666666666666);
if ($12) {
break;
}
}
}
- $13 = +HEAPF64[1728];
- HEAPF64[1729] = $13;
- $14 = HEAP32[3531]|0;
+ $13 = +HEAPF64[1747];
+ HEAPF64[1748] = $13;
+ $14 = HEAP32[3569]|0;
$15 = ($14|0)==(0);
if ($15) {
break;
}
}
}
- $16 = HEAP32[3598]|0;
+ $16 = HEAP32[3636]|0;
$$0912 = (($16) + -1)|0;
$17 = ($$0912|0)>(-1);
if ($17) {
$$0913 = $$0912;
while(1) {
- $20 = (14396 + ($$0913<<2)|0);
+ $20 = (14548 + ($$0913<<2)|0);
$21 = HEAP32[$20>>2]|0;
_DestroyPhysicsManifold($21);
$$09 = (($$0913) + -1)|0;
@@ -7274,7 +11461,7 @@ function _PhysicsLoop($0) {
}
}
}
- $18 = HEAP32[3533]|0;
+ $18 = HEAP32[3571]|0;
$$010 = (($18) + -1)|0;
$19 = ($$010|0)>(-1);
if ($19) {
@@ -7283,7 +11470,7 @@ function _PhysicsLoop($0) {
return (0|0);
}
while(1) {
- $23 = (14136 + ($$011<<2)|0);
+ $23 = (14288 + ($$011<<2)|0);
$24 = HEAP32[$23>>2]|0;
_DestroyPhysicsBody($24);
$$0 = (($$011) + -1)|0;
@@ -7318,10 +11505,10 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$6 = sp + 8|0;
$7 = sp;
$8 = (_malloc(500)|0);
- $9 = HEAP32[3532]|0;
+ $9 = HEAP32[3570]|0;
$10 = (($9) + 500)|0;
- HEAP32[3532] = $10;
- $11 = HEAP32[3533]|0;
+ HEAP32[3570] = $10;
+ $11 = HEAP32[3571]|0;
$12 = ($11|0)==(0);
$$0116149 = 0;
L1: while(1) {
@@ -7332,7 +11519,7 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$$0119144 = 0;
}
while(1) {
- $15 = (14136 + ($$0119144<<2)|0);
+ $15 = (14288 + ($$0119144<<2)|0);
$16 = HEAP32[$15>>2]|0;
$17 = HEAP32[$16>>2]|0;
$18 = ($17|0)==($$0116149|0);
@@ -7533,11 +11720,11 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
HEAP32[$120>>2] = 0;
$121 = ((($8)) + 80|0);
HEAP32[$121>>2] = 0;
- $122 = HEAP32[3533]|0;
- $123 = (14136 + ($122<<2)|0);
+ $122 = HEAP32[3571]|0;
+ $123 = (14288 + ($122<<2)|0);
HEAP32[$123>>2] = $8;
$124 = (($122) + 1)|0;
- HEAP32[3533] = $124;
+ HEAP32[3571] = $124;
STACKTOP = sp;return ($8|0);
}
function _CreateRectanglePolygon($0,$1,$2) {
@@ -7719,16 +11906,16 @@ function _DestroyPhysicsBody($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3533]|0;
+ $3 = HEAP32[3571]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3533]|0;
+ $5 = HEAP32[3571]|0;
$$02023 = 0;
while(1) {
- $6 = (14136 + ($$02023<<2)|0);
+ $6 = (14288 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -7747,24 +11934,24 @@ function _DestroyPhysicsBody($0) {
}
}
} while(0);
- $12 = (14136 + ($$021<<2)|0);
+ $12 = (14288 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3532]|0;
+ $14 = HEAP32[3570]|0;
$15 = (($14) + -500)|0;
- HEAP32[3532] = $15;
+ HEAP32[3570] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3533]|0;
+ $16 = HEAP32[3571]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3533]|0;
+ $18 = HEAP32[3571]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14136 + ($$022<<2)|0);
- $25 = (14136 + ($20<<2)|0);
+ $24 = (14288 + ($$022<<2)|0);
+ $25 = (14288 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -7780,7 +11967,7 @@ function _DestroyPhysicsBody($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3533] = $19;
+ HEAP32[3571] = $19;
return;
}
function _Vector2Subtract_4($0,$1,$2) {
@@ -7825,20 +12012,20 @@ function _MathNormalize($0) {
function _GetPhysicsBodiesCount() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[3533]|0;
+ $0 = HEAP32[3571]|0;
return ($0|0);
}
function _GetPhysicsBody($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3533]|0;
+ $1 = HEAP32[3571]|0;
$2 = ($1>>>0)>($0>>>0);
if (!($2)) {
$$0 = 0;
return ($$0|0);
}
- $3 = (14136 + ($0<<2)|0);
+ $3 = (14288 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$0 = $4;
return ($$0|0);
@@ -7847,11 +12034,11 @@ function _GetPhysicsShapeVerticesCount($0) {
$0 = $0|0;
var $$1 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3533]|0;
+ $1 = HEAP32[3571]|0;
$2 = ($1>>>0)>($0>>>0);
L1: do {
if ($2) {
- $3 = (14136 + ($0<<2)|0);
+ $3 = (14288 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$5 = ($4|0)==(0|0);
if ($5) {
@@ -8001,221 +12188,280 @@ function _Mat2Radians($0,$1) {
function _ClosePhysics() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3531] = 0;
- $0 = HEAP32[3530]|0;
+ HEAP32[3569] = 0;
+ $0 = HEAP32[3568]|0;
(_pthread_join(($0|0),(0|0))|0);
return;
}
function _main() {
- var $$09395 = 0, $$094 = 0, $$byval_copy7 = 0, $$byval_copy8 = 0, $$byval_copy9 = 0, $$sink = 0.0, $$sroa$0$0$$sroa_idx = 0, $$sroa$029$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx28 = 0, $$sroa$230$0$$sroa_idx31 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0;
- var $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0;
- var $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0;
- var $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $exitcond102 = 0;
- var label = 0, sp = 0;
+ var $$byval_copy5 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0.0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0, $19 = 0.0, $2 = 0, $20 = 0, $21 = 0, $22 = 0.0, $23 = 0.0, $24 = 0, $25 = 0;
+ var $26 = 0.0, $27 = 0.0, $28 = 0, $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0, $36 = 0, $37 = 0.0, $38 = 0.0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0, $43 = 0;
+ var $44 = 0, $45 = 0, $46 = 0.0, $47 = 0.0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0, $53 = 0, $54 = 0, $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0;
+ var $62 = 0, $63 = 0, $64 = 0, $65 = 0.0, $66 = 0, $67 = 0, $68 = 0, $69 = 0.0, $7 = 0, $70 = 0, $71 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
- $$byval_copy9 = sp + 104|0;
- $$byval_copy8 = sp + 96|0;
- $$byval_copy7 = sp + 88|0;
- $0 = sp + 80|0;
- $1 = sp + 72|0;
- $2 = sp + 64|0;
- $3 = sp + 56|0;
- $4 = sp + 48|0;
- $5 = sp + 40|0;
- $6 = sp + 116|0;
- $7 = sp + 24|0;
- $8 = sp + 8|0;
- $9 = sp + 112|0;
- $10 = sp + 36|0;
- $11 = sp + 32|0;
- $12 = sp + 16|0;
- $13 = sp;
+ STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
+ $$byval_copy5 = sp + 48|0;
+ $0 = sp + 40|0;
+ $1 = sp + 32|0;
+ $2 = sp + 24|0;
+ $3 = sp + 16|0;
+ $4 = sp + 8|0;
+ $5 = sp;
_SetConfigFlags(32);
- _InitWindow(800,450,3480);
- _SetTargetFPS(60);
- $14 = (_MeasureText(3515,30)|0);
- $15 = (800 - ($14))|0;
- $16 = (($15) + -10)|0;
+ $6 = HEAP32[2]|0;
+ $7 = HEAP32[3]|0;
+ _InitWindow($6,$7,3248);
+ $8 = HEAP32[2]|0;
+ $9 = (_MeasureText(3283,30)|0);
+ $10 = (($8) + -10)|0;
+ $11 = (($10) - ($9))|0;
+ HEAP32[7733] = $11;
_InitPhysics();
- HEAPF32[$0>>2] = 400.0;
- $17 = ((($0)) + 4|0);
- HEAPF32[$17>>2] = 450.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$0+4>>2]|0;
- $18 = (_CreatePhysicsBodyRectangle($$byval_copy9,800.0,100.0,10.0)|0);
- HEAPF32[$1>>2] = 200.0;
- $19 = ((($1)) + 4|0);
- HEAPF32[$19>>2] = 270.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$1+4>>2]|0;
- $20 = (_CreatePhysicsBodyRectangle($$byval_copy9,200.0,10.0,10.0)|0);
- HEAPF32[$2>>2] = 600.0;
- $21 = ((($2)) + 4|0);
- HEAPF32[$21>>2] = 270.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$2+4>>2]|0;
- $22 = (_CreatePhysicsBodyRectangle($$byval_copy9,200.0,10.0,10.0)|0);
+ $12 = HEAP32[2]|0;
+ $13 = (($12|0) / 2)&-1;
+ $14 = (+($13|0));
+ HEAPF32[$0>>2] = $14;
+ $15 = ((($0)) + 4|0);
+ $16 = HEAP32[3]|0;
+ $17 = (+($16|0));
+ HEAPF32[$15>>2] = $17;
+ $18 = HEAP32[2]|0;
+ $19 = (+($18|0));
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$0+4>>2]|0;
+ $20 = (_CreatePhysicsBodyRectangle($$byval_copy5,$19,100.0,10.0)|0);
+ $21 = HEAP32[2]|0;
+ $22 = (+($21|0));
+ $23 = $22 * 0.25;
+ HEAPF32[$1>>2] = $23;
+ $24 = ((($1)) + 4|0);
+ $25 = HEAP32[3]|0;
+ $26 = (+($25|0));
+ $27 = $26 * 0.60000002384185791;
+ HEAPF32[$24>>2] = $27;
+ $28 = HEAP32[2]|0;
+ $29 = (+($28|0));
+ $30 = $29 * 0.25;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$1+4>>2]|0;
+ $31 = (_CreatePhysicsBodyRectangle($$byval_copy5,$30,10.0,10.0)|0);
+ $32 = HEAP32[2]|0;
+ $33 = (+($32|0));
+ $34 = $33 * 0.75;
+ HEAPF32[$2>>2] = $34;
+ $35 = ((($2)) + 4|0);
+ $36 = HEAP32[3]|0;
+ $37 = (+($36|0));
+ $38 = $37 * 0.60000002384185791;
+ HEAPF32[$35>>2] = $38;
+ $39 = HEAP32[2]|0;
+ $40 = (+($39|0));
+ $41 = $40 * 0.25;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$2+4>>2]|0;
+ $42 = (_CreatePhysicsBodyRectangle($$byval_copy5,$41,10.0,10.0)|0);
HEAPF32[$3>>2] = -5.0;
- $23 = ((($3)) + 4|0);
- HEAPF32[$23>>2] = 225.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$3+4>>2]|0;
- $24 = (_CreatePhysicsBodyRectangle($$byval_copy9,10.0,450.0,10.0)|0);
- HEAPF32[$4>>2] = 805.0;
- $25 = ((($4)) + 4|0);
- HEAPF32[$25>>2] = 225.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$4>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$4+4>>2]|0;
- $26 = (_CreatePhysicsBodyRectangle($$byval_copy9,10.0,450.0,10.0)|0);
- $27 = ((($18)) + 4|0);
- HEAP32[$27>>2] = 0;
- $28 = ((($20)) + 4|0);
- HEAP32[$28>>2] = 0;
- $29 = ((($22)) + 4|0);
- HEAP32[$29>>2] = 0;
- $30 = ((($24)) + 4|0);
- HEAP32[$30>>2] = 0;
- $31 = ((($26)) + 4|0);
- HEAP32[$31>>2] = 0;
- HEAPF32[$5>>2] = 400.0;
- $32 = ((($5)) + 4|0);
- HEAPF32[$32>>2] = 225.0;
- ;HEAP32[$$byval_copy9>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy9+4>>2]=HEAP32[$5+4>>2]|0;
- $33 = (_CreatePhysicsBodyRectangle($$byval_copy9,50.0,50.0,1.0)|0);
- $34 = ((($33)) + 80|0);
- HEAP32[$34>>2] = 1;
- $35 = (_WindowShouldClose()|0);
- $36 = ($35|0)==(0);
- if (!($36)) {
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
- }
- $37 = ((($6)) + 1|0);
- $38 = ((($6)) + 2|0);
- $39 = ((($6)) + 3|0);
- $40 = (($15) + 40)|0;
- $41 = ((($9)) + 1|0);
- $42 = ((($9)) + 2|0);
- $43 = ((($9)) + 3|0);
- $44 = ((($33)) + 76|0);
- $45 = ((($33)) + 20|0);
- $46 = ((($33)) + 16|0);
- $$sroa$029$0$$sroa_idx = ((($33)) + 8|0);
- $$sroa$230$0$$sroa_idx31 = ((($33)) + 12|0);
- $$sroa$0$0$$sroa_idx = ((($33)) + 16|0);
- $$sroa$2$0$$sroa_idx28 = ((($33)) + 20|0);
- while(1) {
- $47 = (_IsKeyPressed(82)|0);
- $48 = ($47|0)==(0);
- if (!($48)) {
- HEAPF32[$$sroa$029$0$$sroa_idx>>2] = 400.0;
- HEAPF32[$$sroa$230$0$$sroa_idx31>>2] = 225.0;
- HEAPF32[$$sroa$0$0$$sroa_idx>>2] = 0.0;
- HEAPF32[$$sroa$2$0$$sroa_idx28>>2] = 0.0;
- _SetPhysicsBodyRotation($33,0.0);
- }
- $49 = (_IsKeyDown(262)|0);
- $50 = ($49|0)==(0);
- if ($50) {
- $51 = (_IsKeyDown(263)|0);
- $52 = ($51|0)==(0);
- if (!($52)) {
- $$sink = -0.5;
- label = 7;
- }
- } else {
- $$sink = 0.5;
- label = 7;
- }
- if ((label|0) == 7) {
- label = 0;
- HEAPF32[$46>>2] = $$sink;
- }
- $53 = (_IsKeyDown(265)|0);
- $54 = ($53|0)==(0);
- if (!($54)) {
- $55 = HEAP32[$44>>2]|0;
- $56 = ($55|0)==(0);
- if (!($56)) {
- HEAPF32[$45>>2] = -2.0;
- }
- }
- _BeginDrawing();
- HEAP8[$6>>0] = 0;
- HEAP8[$37>>0] = 0;
- HEAP8[$38>>0] = 0;
- HEAP8[$39>>0] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$6+3>>0]|0;
- _ClearBackground($$byval_copy9);
- _DrawFPS(710,420);
- $57 = (_GetPhysicsBodiesCount()|0);
- $58 = ($57|0)>(0);
- if ($58) {
- $$09395 = 0;
- while(1) {
- $61 = (_GetPhysicsBody($$09395)|0);
- $62 = (_GetPhysicsShapeVerticesCount($$09395)|0);
- $63 = ($62|0)>(0);
- if ($63) {
- $$094 = 0;
- while(1) {
- _GetPhysicsShapeVertex($7,$61,$$094);
- $65 = (($$094) + 1)|0;
- $66 = ($65|0)<($62|0);
- $67 = $66 ? $65 : 0;
- _GetPhysicsShapeVertex($8,$61,$67);
- HEAP8[$9>>0] = 0;
- HEAP8[$41>>0] = -28;
- HEAP8[$42>>0] = 48;
- HEAP8[$43>>0] = -1;
- ;HEAP32[$$byval_copy7>>2]=HEAP32[$7>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$7+4>>2]|0;
- ;HEAP32[$$byval_copy8>>2]=HEAP32[$8>>2]|0;HEAP32[$$byval_copy8+4>>2]=HEAP32[$8+4>>2]|0;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$9+3>>0]|0;
- _DrawLineV($$byval_copy7,$$byval_copy8,$$byval_copy9);
- $exitcond = ($65|0)==($62|0);
- if ($exitcond) {
- break;
- } else {
- $$094 = $65;
- }
- }
- }
- $64 = (($$09395) + 1)|0;
- $exitcond102 = ($64|0)==($57|0);
- if ($exitcond102) {
- break;
- } else {
- $$09395 = $64;
- }
- }
- }
- HEAP32[$10>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$10>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$10+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$10+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$10+3>>0]|0;
- _DrawText(3522,10,10,10,$$byval_copy9);
- HEAP32[$11>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$11>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$11+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$11+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$11+3>>0]|0;
- _DrawText(3550,10,30,10,$$byval_copy9);
- HEAP32[$12>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$12>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$12+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$12+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$12+3>>0]|0;
- _DrawText(3515,$16,15,30,$$byval_copy9);
- HEAP32[$13>>2] = -1;
- ;HEAP8[$$byval_copy9>>0]=HEAP8[$13>>0]|0;HEAP8[$$byval_copy9+1>>0]=HEAP8[$13+1>>0]|0;HEAP8[$$byval_copy9+2>>0]=HEAP8[$13+2>>0]|0;HEAP8[$$byval_copy9+3>>0]=HEAP8[$13+3>>0]|0;
- _DrawText(3577,$40,8,10,$$byval_copy9);
- _EndDrawing();
- $59 = (_WindowShouldClose()|0);
- $60 = ($59|0)==(0);
- if (!($60)) {
- break;
- }
- }
+ $43 = ((($3)) + 4|0);
+ $44 = HEAP32[3]|0;
+ $45 = (($44|0) / 2)&-1;
+ $46 = (+($45|0));
+ HEAPF32[$43>>2] = $46;
+ $47 = (+($44|0));
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$3+4>>2]|0;
+ $48 = (_CreatePhysicsBodyRectangle($$byval_copy5,10.0,$47,10.0)|0);
+ $49 = HEAP32[2]|0;
+ $50 = (($49) + 5)|0;
+ $51 = (+($50|0));
+ HEAPF32[$4>>2] = $51;
+ $52 = ((($4)) + 4|0);
+ $53 = HEAP32[3]|0;
+ $54 = (($53|0) / 2)&-1;
+ $55 = (+($54|0));
+ HEAPF32[$52>>2] = $55;
+ $56 = (+($53|0));
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$4>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$4+4>>2]|0;
+ $57 = (_CreatePhysicsBodyRectangle($$byval_copy5,10.0,$56,10.0)|0);
+ $58 = ((($20)) + 4|0);
+ HEAP32[$58>>2] = 0;
+ $59 = ((($31)) + 4|0);
+ HEAP32[$59>>2] = 0;
+ $60 = ((($42)) + 4|0);
+ HEAP32[$60>>2] = 0;
+ $61 = ((($48)) + 4|0);
+ HEAP32[$61>>2] = 0;
+ $62 = ((($57)) + 4|0);
+ HEAP32[$62>>2] = 0;
+ $63 = HEAP32[2]|0;
+ $64 = (($63|0) / 2)&-1;
+ $65 = (+($64|0));
+ HEAPF32[$5>>2] = $65;
+ $66 = ((($5)) + 4|0);
+ $67 = HEAP32[3]|0;
+ $68 = (($67|0) / 2)&-1;
+ $69 = (+($68|0));
+ HEAPF32[$66>>2] = $69;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$5+4>>2]|0;
+ $70 = (_CreatePhysicsBodyRectangle($$byval_copy5,50.0,50.0,1.0)|0);
+ HEAP32[7734] = $70;
+ $71 = ((($70)) + 80|0);
+ HEAP32[$71>>2] = 1;
+ _emscripten_set_main_loop((1|0),0,1);
_ClosePhysics();
_CloseWindow();
STACKTOP = sp;return 0;
}
+function _UpdateDrawFrame() {
+ var $$03233 = 0, $$034 = 0, $$byval_copy1 = 0, $$byval_copy2 = 0, $$byval_copy3 = 0, $$sink = 0.0, $$sroa$0$0$$sroa_idx = 0, $$sroa$029$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx28 = 0, $$sroa$230$0$$sroa_idx31 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0.0, $17 = 0;
+ var $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0;
+ var $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0;
+ var $54 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $exitcond38 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
+ $$byval_copy3 = sp + 56|0;
+ $$byval_copy2 = sp + 40|0;
+ $$byval_copy1 = sp + 32|0;
+ $0 = sp + 52|0;
+ $1 = sp + 16|0;
+ $2 = sp + 8|0;
+ $3 = sp + 48|0;
+ $4 = sp + 28|0;
+ $5 = sp + 24|0;
+ $6 = sp + 4|0;
+ $7 = sp;
+ $8 = (_IsKeyPressed(82)|0);
+ $9 = ($8|0)==(0);
+ if (!($9)) {
+ $10 = HEAP32[7734]|0;
+ $11 = HEAP32[2]|0;
+ $12 = (($11|0) / 2)&-1;
+ $13 = (+($12|0));
+ $14 = HEAP32[3]|0;
+ $15 = (($14|0) / 2)&-1;
+ $16 = (+($15|0));
+ $$sroa$029$0$$sroa_idx = ((($10)) + 8|0);
+ HEAPF32[$$sroa$029$0$$sroa_idx>>2] = $13;
+ $$sroa$230$0$$sroa_idx31 = ((($10)) + 12|0);
+ HEAPF32[$$sroa$230$0$$sroa_idx31>>2] = $16;
+ $$sroa$0$0$$sroa_idx = ((($10)) + 16|0);
+ HEAPF32[$$sroa$0$0$$sroa_idx>>2] = 0.0;
+ $$sroa$2$0$$sroa_idx28 = ((($10)) + 20|0);
+ HEAPF32[$$sroa$2$0$$sroa_idx28>>2] = 0.0;
+ _SetPhysicsBodyRotation($10,0.0);
+ }
+ $17 = (_IsKeyDown(262)|0);
+ $18 = ($17|0)==(0);
+ if ($18) {
+ $19 = (_IsKeyDown(263)|0);
+ $20 = ($19|0)==(0);
+ if (!($20)) {
+ $$sink = -0.5;
+ label = 5;
+ }
+ } else {
+ $$sink = 0.5;
+ label = 5;
+ }
+ if ((label|0) == 5) {
+ $21 = HEAP32[7734]|0;
+ $22 = ((($21)) + 16|0);
+ HEAPF32[$22>>2] = $$sink;
+ }
+ $23 = (_IsKeyDown(265)|0);
+ $24 = ($23|0)==(0);
+ if (!($24)) {
+ $25 = HEAP32[7734]|0;
+ $26 = ((($25)) + 76|0);
+ $27 = HEAP32[$26>>2]|0;
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $29 = ((($25)) + 20|0);
+ HEAPF32[$29>>2] = -2.0;
+ }
+ }
+ _BeginDrawing();
+ HEAP8[$0>>0] = 0;
+ $30 = ((($0)) + 1|0);
+ HEAP8[$30>>0] = 0;
+ $31 = ((($0)) + 2|0);
+ HEAP8[$31>>0] = 0;
+ $32 = ((($0)) + 3|0);
+ HEAP8[$32>>0] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$0>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$0+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$0+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$0+3>>0]|0;
+ _ClearBackground($$byval_copy3);
+ $33 = HEAP32[2]|0;
+ $34 = (($33) + -90)|0;
+ $35 = HEAP32[3]|0;
+ $36 = (($35) + -30)|0;
+ _DrawFPS($34,$36);
+ $37 = (_GetPhysicsBodiesCount()|0);
+ $38 = ($37|0)>(0);
+ if ($38) {
+ $39 = ((($3)) + 1|0);
+ $40 = ((($3)) + 2|0);
+ $41 = ((($3)) + 3|0);
+ $$034 = 0;
+ while(1) {
+ $48 = (_GetPhysicsBody($$034)|0);
+ $49 = (_GetPhysicsShapeVerticesCount($$034)|0);
+ $50 = ($49|0)>(0);
+ if ($50) {
+ $$03233 = 0;
+ while(1) {
+ _GetPhysicsShapeVertex($1,$48,$$03233);
+ $52 = (($$03233) + 1)|0;
+ $53 = ($52|0)<($49|0);
+ $54 = $53 ? $52 : 0;
+ _GetPhysicsShapeVertex($2,$48,$54);
+ HEAP8[$3>>0] = 0;
+ HEAP8[$39>>0] = -28;
+ HEAP8[$40>>0] = 48;
+ HEAP8[$41>>0] = -1;
+ ;HEAP32[$$byval_copy1>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$1+4>>2]|0;
+ ;HEAP32[$$byval_copy2>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy2+4>>2]=HEAP32[$2+4>>2]|0;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$3>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$3+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$3+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$3+3>>0]|0;
+ _DrawLineV($$byval_copy1,$$byval_copy2,$$byval_copy3);
+ $exitcond = ($52|0)==($49|0);
+ if ($exitcond) {
+ break;
+ } else {
+ $$03233 = $52;
+ }
+ }
+ }
+ $51 = (($$034) + 1)|0;
+ $exitcond38 = ($51|0)==($37|0);
+ if ($exitcond38) {
+ break;
+ } else {
+ $$034 = $51;
+ }
+ }
+ }
+ HEAP32[$4>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$4>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$4+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$4+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$4+3>>0]|0;
+ _DrawText(3290,10,10,10,$$byval_copy3);
+ HEAP32[$5>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$5>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$5+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$5+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$5+3>>0]|0;
+ _DrawText(3318,10,30,10,$$byval_copy3);
+ $42 = HEAP32[7733]|0;
+ $43 = HEAP32[4]|0;
+ HEAP32[$6>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$6+3>>0]|0;
+ _DrawText(3283,$42,$43,30,$$byval_copy3);
+ $44 = HEAP32[7733]|0;
+ $45 = (($44) + 50)|0;
+ $46 = HEAP32[4]|0;
+ $47 = (($46) + -7)|0;
+ HEAP32[$7>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$7>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$7+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$7+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$7+3>>0]|0;
+ _DrawText(3345,$45,$47,10,$$byval_copy3);
+ _EndDrawing();
+ STACKTOP = sp;return;
+}
function _InitTimer() {
var $0 = 0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetCurrentTime());
- HEAPF64[1729] = $1;
+ HEAPF64[1748] = $1;
return;
}
function _GetCurrentTime() {
@@ -8242,7 +12488,7 @@ function _GetCurrentTime() {
function _MathClamp() {
var $$sink = 0.0, $0 = 0.0, $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1727];
+ $0 = +HEAPF64[1746];
$1 = $0 < 0.0;
if ($1) {
$$sink = 0.0;
@@ -8254,7 +12500,7 @@ function _MathClamp() {
return;
}
}
- HEAPF64[1727] = $$sink;
+ HEAPF64[1746] = $$sink;
return;
}
function _PhysicsStep() {
@@ -8268,16 +12514,16 @@ function _PhysicsStep() {
var $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0;
var $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7695]|0;
+ $0 = HEAP32[7735]|0;
$1 = (($0) + 1)|0;
- HEAP32[7695] = $1;
- $2 = HEAP32[3598]|0;
+ HEAP32[7735] = $1;
+ $2 = HEAP32[3636]|0;
$$0167 = (($2) + -1)|0;
$3 = ($$0167|0)>(-1);
if ($3) {
$$0168 = $$0167;
while(1) {
- $6 = (14396 + ($$0168<<2)|0);
+ $6 = (14548 + ($$0168<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = ($7|0)==(0|0);
if (!($8)) {
@@ -8292,7 +12538,7 @@ function _PhysicsStep() {
}
}
}
- $4 = HEAP32[3533]|0;
+ $4 = HEAP32[3571]|0;
$5 = ($4|0)==(0);
if ($5) {
$17 = $4;
@@ -8300,7 +12546,7 @@ function _PhysicsStep() {
} else {
$$0125165 = 0;
while(1) {
- $11 = (14136 + ($$0125165<<2)|0);
+ $11 = (14288 + ($$0125165<<2)|0);
$12 = HEAP32[$11>>2]|0;
$13 = ((($12)) + 76|0);
HEAP32[$13>>2] = 0;
@@ -8312,24 +12558,24 @@ function _PhysicsStep() {
break;
}
}
- $$pr = HEAP32[3533]|0;
+ $$pr = HEAP32[3571]|0;
$10 = ($$pr|0)==(0);
if (!($10)) {
$$0126163 = 0;
while(1) {
- $19 = (14136 + ($$0126163<<2)|0);
+ $19 = (14288 + ($$0126163<<2)|0);
$20 = HEAP32[$19>>2]|0;
$21 = ($20|0)==(0|0);
if (!($21)) {
$$0130160 = (($$0126163) + 1)|0;
- $22 = HEAP32[3533]|0;
+ $22 = HEAP32[3571]|0;
$23 = ($$0130160>>>0)<($22>>>0);
if ($23) {
$24 = ((($20)) + 56|0);
$25 = ((($20)) + 84|0);
$$0130161 = $$0130160;
while(1) {
- $26 = (14136 + ($$0130161<<2)|0);
+ $26 = (14288 + ($$0130161<<2)|0);
$27 = HEAP32[$26>>2]|0;
$28 = ($27|0)==(0|0);
do {
@@ -8435,7 +12681,7 @@ function _PhysicsStep() {
}
} while(0);
$$0130 = (($$0130161) + 1)|0;
- $29 = HEAP32[3533]|0;
+ $29 = HEAP32[3571]|0;
$30 = ($$0130>>>0)<($29>>>0);
if ($30) {
$$0130161 = $$0130;
@@ -8446,7 +12692,7 @@ function _PhysicsStep() {
}
}
$97 = (($$0126163) + 1)|0;
- $98 = HEAP32[3533]|0;
+ $98 = HEAP32[3571]|0;
$99 = ($97>>>0)<($98>>>0);
if ($99) {
$$0126163 = $97;
@@ -8461,10 +12707,10 @@ function _PhysicsStep() {
if ((label|0) == 8) {
$16 = ($17|0)==(0);
if (!($16)) {
- $18 = HEAP32[3533]|0;
+ $18 = HEAP32[3571]|0;
$$0135158 = 0;
while(1) {
- $103 = (14136 + ($$0135158<<2)|0);
+ $103 = (14288 + ($$0135158<<2)|0);
$104 = HEAP32[$103>>2]|0;
$105 = ($104|0)==(0|0);
if (!($105)) {
@@ -8480,15 +12726,15 @@ function _PhysicsStep() {
}
}
}
- $100 = HEAP32[3598]|0;
+ $100 = HEAP32[3636]|0;
$101 = ($100|0)==(0);
if ($101) {
$$0134155 = 0;$114 = 0;
} else {
- $102 = HEAP32[3598]|0;
+ $102 = HEAP32[3636]|0;
$$0136156 = 0;
while(1) {
- $108 = (14396 + ($$0136156<<2)|0);
+ $108 = (14548 + ($$0136156<<2)|0);
$109 = HEAP32[$108>>2]|0;
$110 = ($109|0)==(0|0);
if (!($110)) {
@@ -8508,12 +12754,12 @@ function _PhysicsStep() {
while(1) {
if ((label|0) == 32) {
label = 0;
- $$pr172 = HEAP32[3598]|0;
+ $$pr172 = HEAP32[3636]|0;
$$0134155 = $$0134155$ph;$114 = $$pr172;
}
$113 = ($114|0)==(0);
if (!($113)) {
- $115 = (14396 + ($$0134155<<2)|0);
+ $115 = (14548 + ($$0134155<<2)|0);
$$0133152 = 0;
while(1) {
$120 = HEAP32[$115>>2]|0;
@@ -8522,7 +12768,7 @@ function _PhysicsStep() {
_IntegratePhysicsImpulses($120);
}
$122 = (($$0133152) + 1)|0;
- $123 = HEAP32[3598]|0;
+ $123 = HEAP32[3636]|0;
$124 = ($122>>>0)<($123>>>0);
if ($124) {
$$0133152 = $122;
@@ -8540,13 +12786,13 @@ function _PhysicsStep() {
label = 32;
}
}
- $116 = HEAP32[3533]|0;
+ $116 = HEAP32[3571]|0;
$117 = ($116|0)==(0);
if (!($117)) {
- $118 = HEAP32[3533]|0;
+ $118 = HEAP32[3571]|0;
$$0131150 = 0;
while(1) {
- $128 = (14136 + ($$0131150<<2)|0);
+ $128 = (14288 + ($$0131150<<2)|0);
$129 = HEAP32[$128>>2]|0;
$130 = ($129|0)==(0|0);
if (!($130)) {
@@ -8561,13 +12807,13 @@ function _PhysicsStep() {
}
}
}
- $125 = HEAP32[3598]|0;
+ $125 = HEAP32[3636]|0;
$126 = ($125|0)==(0);
if (!($126)) {
- $127 = HEAP32[3598]|0;
+ $127 = HEAP32[3636]|0;
$$0129148 = 0;
while(1) {
- $136 = (14396 + ($$0129148<<2)|0);
+ $136 = (14548 + ($$0129148<<2)|0);
$137 = HEAP32[$136>>2]|0;
$138 = ($137|0)==(0|0);
if (!($138)) {
@@ -8582,15 +12828,15 @@ function _PhysicsStep() {
}
}
}
- $133 = HEAP32[3533]|0;
+ $133 = HEAP32[3571]|0;
$134 = ($133|0)==(0);
if ($134) {
return;
}
- $135 = HEAP32[3533]|0;
+ $135 = HEAP32[3571]|0;
$$0127147 = 0;
while(1) {
- $141 = (14136 + ($$0127147<<2)|0);
+ $141 = (14288 + ($$0127147<<2)|0);
$142 = HEAP32[$141>>2]|0;
$143 = ($142|0)==(0|0);
if (!($143)) {
@@ -8621,16 +12867,16 @@ function _DestroyPhysicsManifold($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3598]|0;
+ $3 = HEAP32[3636]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3598]|0;
+ $5 = HEAP32[3636]|0;
$$02023 = 0;
while(1) {
- $6 = (14396 + ($$02023<<2)|0);
+ $6 = (14548 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -8649,24 +12895,24 @@ function _DestroyPhysicsManifold($0) {
}
}
} while(0);
- $12 = (14396 + ($$021<<2)|0);
+ $12 = (14548 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3532]|0;
+ $14 = HEAP32[3570]|0;
$15 = (($14) + -56)|0;
- HEAP32[3532] = $15;
+ HEAP32[3570] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3598]|0;
+ $16 = HEAP32[3636]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3598]|0;
+ $18 = HEAP32[3636]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14396 + ($$022<<2)|0);
- $25 = (14396 + ($20<<2)|0);
+ $24 = (14548 + ($$022<<2)|0);
+ $25 = (14548 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -8682,7 +12928,7 @@ function _DestroyPhysicsManifold($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3598] = $19;
+ HEAP32[3636] = $19;
return;
}
function _CreatePhysicsManifold($0,$1) {
@@ -8692,10 +12938,10 @@ function _CreatePhysicsManifold($0,$1) {
var $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
sp = STACKTOP;
$2 = (_malloc(56)|0);
- $3 = HEAP32[3532]|0;
+ $3 = HEAP32[3570]|0;
$4 = (($3) + 56)|0;
- HEAP32[3532] = $4;
- $5 = HEAP32[3598]|0;
+ HEAP32[3570] = $4;
+ $5 = HEAP32[3636]|0;
$6 = ($5|0)==(0);
$$04457 = 0;
L1: while(1) {
@@ -8706,7 +12952,7 @@ function _CreatePhysicsManifold($0,$1) {
$$04755 = 0;
}
while(1) {
- $9 = (14396 + ($$04755<<2)|0);
+ $9 = (14548 + ($$04755<<2)|0);
$10 = HEAP32[$9>>2]|0;
$11 = HEAP32[$10>>2]|0;
$12 = ($11|0)==($$04457|0);
@@ -8749,11 +12995,11 @@ function _CreatePhysicsManifold($0,$1) {
HEAP32[$17>>2] = $1;
$18 = ((($2)) + 12|0);
dest=$18; stop=dest+44|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
- $19 = HEAP32[3598]|0;
- $20 = (14396 + ($19<<2)|0);
+ $19 = HEAP32[3636]|0;
+ $20 = (14548 + ($19<<2)|0);
HEAP32[$20>>2] = $2;
$21 = (($19) + 1)|0;
- HEAP32[3598] = $21;
+ HEAP32[3636] = $21;
return ($2|0);
}
function _SolvePhysicsManifold($0) {
@@ -8853,7 +13099,7 @@ function _IntegratePhysicsForces($0) {
$8 = +HEAPF32[$7>>2];
$9 = $2 * $8;
$10 = $9;
- $11 = +HEAPF64[1730];
+ $11 = +HEAPF64[1749];
$12 = $11 * 0.5;
$13 = $10 * $12;
$14 = ((($0)) + 16|0);
@@ -8877,7 +13123,7 @@ function _IntegratePhysicsForces($0) {
$30 = HEAP32[$29>>2]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = +HEAPF32[7696];
+ $32 = +HEAPF32[7736];
$33 = $32;
$34 = $12 * $33;
$35 = +HEAPF32[$14>>2];
@@ -8885,7 +13131,7 @@ function _IntegratePhysicsForces($0) {
$37 = $36 + $34;
$38 = $37;
HEAPF32[$14>>2] = $38;
- $39 = +HEAPF32[2];
+ $39 = +HEAPF32[5];
$40 = $39;
$41 = $12 * $40;
$42 = +HEAPF32[$24>>2];
@@ -8970,13 +13216,13 @@ function _InitializePhysicsManifolds($0) {
$39 = ((($7)) + 20|0);
$40 = ((($$byval_copy9)) + 4|0);
$41 = ((($4)) + 4|0);
- $42 = +HEAPF32[7696];
+ $42 = +HEAPF32[7736];
$43 = $42;
- $44 = +HEAPF64[1730];
+ $44 = +HEAPF64[1749];
$45 = $43 * $44;
$46 = $45;
$47 = ((($5)) + 4|0);
- $48 = +HEAPF32[2];
+ $48 = +HEAPF32[5];
$49 = $48;
$50 = $49 * $44;
$51 = $50;
@@ -9473,7 +13719,7 @@ function _IntegratePhysicsVelocity($0) {
$4 = ((($0)) + 16|0);
$5 = +HEAPF32[$4>>2];
$6 = $5;
- $7 = +HEAPF64[1730];
+ $7 = +HEAPF64[1749];
$8 = $6 * $7;
$9 = ((($0)) + 8|0);
$10 = +HEAPF32[$9>>2];
@@ -11894,7 +16140,7 @@ function _ProcessGestureEvent($0) {
$moveDownPosition$byval_copy11 = sp;
$1 = ((($0)) + 4|0);
$2 = HEAP32[$1>>2]|0;
- HEAP32[7698] = $2;
+ HEAP32[7738] = $2;
$3 = ($2|0)<(2);
$4 = HEAP32[$0>>2]|0;
$5 = ($4|0)==(1);
@@ -11907,7 +16153,7 @@ function _ProcessGestureEvent($0) {
$92 = (($89) + 4)|0;
$93 = $92;
$94 = HEAP32[$93>>2]|0;
- $95 = 13848;
+ $95 = 14000;
$96 = $95;
HEAP32[$96>>2] = $91;
$97 = (($95) + 4)|0;
@@ -11920,48 +16166,48 @@ function _ProcessGestureEvent($0) {
$103 = (($100) + 4)|0;
$104 = $103;
$105 = HEAP32[$104>>2]|0;
- $106 = 13888;
+ $106 = 14040;
$107 = $106;
HEAP32[$107>>2] = $102;
$108 = (($106) + 4)|0;
$109 = $108;
HEAP32[$109>>2] = $105;
- $110 = +HEAPF32[3472];
- $111 = +HEAPF32[3462];
+ $110 = +HEAPF32[3510];
+ $111 = +HEAPF32[3500];
$112 = $110 - $111;
- HEAPF32[3474] = $112;
- $113 = +HEAPF32[(13892)>>2];
- $114 = +HEAPF32[(13852)>>2];
+ HEAPF32[3512] = $112;
+ $113 = +HEAPF32[(14044)>>2];
+ $114 = +HEAPF32[(14004)>>2];
$115 = $113 - $114;
- HEAPF32[(13900)>>2] = $115;
- HEAP32[7697] = 4;
+ HEAPF32[(14052)>>2] = $115;
+ HEAP32[7737] = 4;
STACKTOP = sp;return;
}
switch ($4|0) {
case 2: {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13880+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14032+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$116 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- HEAPF32[7703] = $116;
- $117 = 13880;
+ HEAPF32[7743] = $116;
+ $117 = 14032;
$118 = $117;
$119 = HEAP32[$118>>2]|0;
$120 = (($117) + 4)|0;
$121 = $120;
$122 = HEAP32[$121>>2]|0;
- $123 = 13848;
+ $123 = 14000;
$124 = $123;
HEAP32[$124>>2] = $119;
$125 = (($123) + 4)|0;
$126 = $125;
HEAP32[$126>>2] = $122;
- $127 = 13904;
+ $127 = 14056;
$128 = $127;
$129 = HEAP32[$128>>2]|0;
$130 = (($127) + 4)|0;
$131 = $130;
$132 = HEAP32[$131>>2]|0;
- $133 = 13888;
+ $133 = 14040;
$134 = $133;
HEAP32[$134>>2] = $129;
$135 = (($133) + 4)|0;
@@ -11974,7 +16220,7 @@ function _ProcessGestureEvent($0) {
$141 = (($138) + 4)|0;
$142 = $141;
$143 = HEAP32[$142>>2]|0;
- $144 = 13880;
+ $144 = 14032;
$145 = $144;
HEAP32[$145>>2] = $140;
$146 = (($144) + 4)|0;
@@ -11987,27 +16233,27 @@ function _ProcessGestureEvent($0) {
$152 = (($149) + 4)|0;
$153 = $152;
$154 = HEAP32[$153>>2]|0;
- $155 = 13904;
+ $155 = 14056;
$156 = $155;
HEAP32[$156>>2] = $151;
$157 = (($155) + 4)|0;
$158 = $157;
HEAP32[$158>>2] = $154;
- $159 = +HEAPF32[3476];
- $160 = +HEAPF32[3470];
+ $159 = +HEAPF32[3514];
+ $160 = +HEAPF32[3508];
$161 = $159 - $160;
- HEAPF32[3474] = $161;
- $162 = +HEAPF32[(13908)>>2];
- $163 = +HEAPF32[(13884)>>2];
+ HEAPF32[3512] = $161;
+ $162 = +HEAPF32[(14060)>>2];
+ $163 = +HEAPF32[(14036)>>2];
$164 = $162 - $163;
- HEAPF32[(13900)>>2] = $164;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13880+4>>2]|0;
+ HEAPF32[(14052)>>2] = $164;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14032+4>>2]|0;
$165 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$166 = !($165 >= 0.004999999888241291);
if ($166) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13888>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13888+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$167 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$168 = !($167 >= 0.004999999888241291);
if ($168) {
@@ -12019,31 +16265,31 @@ function _ProcessGestureEvent($0) {
label = 29;
}
if ((label|0) == 29) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13880+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14032+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$169 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- $170 = +HEAPF32[7703];
+ $170 = +HEAPF32[7743];
$171 = $169 - $170;
$172 = $171 < 0.0;
$$sink11 = $172 ? 256 : 512;
$$sink16 = $$sink11;
}
- HEAP32[7697] = $$sink16;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13880+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ HEAP32[7737] = $$sink16;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14032+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$173 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$174 = 360.0 - $173;
- HEAPF32[7704] = $174;
+ HEAPF32[7744] = $174;
STACKTOP = sp;return;
break;
}
case 0: {
- HEAPF32[7703] = 0.0;
- HEAPF32[7704] = 0.0;
- HEAPF32[3474] = 0.0;
- HEAPF32[(13900)>>2] = 0.0;
- HEAP32[7698] = 0;
- HEAP32[7697] = 0;
+ HEAPF32[7743] = 0.0;
+ HEAPF32[7744] = 0.0;
+ HEAPF32[3512] = 0.0;
+ HEAPF32[(14052)>>2] = 0.0;
+ HEAP32[7738] = 0;
+ HEAP32[7737] = 0;
STACKTOP = sp;return;
break;
}
@@ -12053,22 +16299,22 @@ function _ProcessGestureEvent($0) {
}
}
if ($5) {
- $6 = HEAP32[7699]|0;
+ $6 = HEAP32[7739]|0;
$7 = (($6) + 1)|0;
- HEAP32[7699] = $7;
- $8 = HEAP32[7697]|0;
+ HEAP32[7739] = $7;
+ $8 = HEAP32[7737]|0;
$9 = ($8|0)==(0);
$10 = ($6|0)>(0);
$or$cond = $10 & $9;
if ($or$cond) {
$11 = ((($0)) + 24|0);
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[$11>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[$11+4>>2]|0;
$12 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$13 = $12 < 0.029999999329447746;
if ($13) {
- HEAP32[7697] = 2;
- HEAP32[7699] = 0;
+ HEAP32[7737] = 2;
+ HEAP32[7739] = 0;
} else {
label = 6;
}
@@ -12076,8 +16322,8 @@ function _ProcessGestureEvent($0) {
label = 6;
}
if ((label|0) == 6) {
- HEAP32[7699] = 1;
- HEAP32[7697] = 1;
+ HEAP32[7739] = 1;
+ HEAP32[7737] = 1;
}
$14 = ((($0)) + 24|0);
$15 = $14;
@@ -12086,19 +16332,19 @@ function _ProcessGestureEvent($0) {
$18 = (($15) + 4)|0;
$19 = $18;
$20 = HEAP32[$19>>2]|0;
- $21 = 13848;
+ $21 = 14000;
$22 = $21;
HEAP32[$22>>2] = $17;
$23 = (($21) + 4)|0;
$24 = $23;
HEAP32[$24>>2] = $20;
- $25 = 13856;
+ $25 = 14008;
$26 = $25;
HEAP32[$26>>2] = $17;
$27 = (($25) + 4)|0;
$28 = $27;
HEAP32[$28>>2] = $20;
- $29 = 13864;
+ $29 = 14016;
$30 = $29;
HEAP32[$30>>2] = $17;
$31 = (($29) + 4)|0;
@@ -12106,14 +16352,14 @@ function _ProcessGestureEvent($0) {
HEAP32[$32>>2] = $20;
$33 = ((($0)) + 8|0);
$34 = HEAP32[$33>>2]|0;
- HEAP32[3] = $34;
- HEAPF32[3468] = 0.0;
- HEAPF32[(13876)>>2] = 0.0;
+ HEAP32[6] = $34;
+ HEAPF32[3506] = 0.0;
+ HEAPF32[(14028)>>2] = 0.0;
STACKTOP = sp;return;
}
switch ($4|0) {
case 0: {
- $35 = HEAP32[7697]|0;
+ $35 = HEAP32[7737]|0;
$36 = ($35|0)==(8);
if ($36) {
$37 = ((($0)) + 24|0);
@@ -12123,31 +16369,31 @@ function _ProcessGestureEvent($0) {
$41 = (($38) + 4)|0;
$42 = $41;
$43 = HEAP32[$42>>2]|0;
- $44 = 13864;
+ $44 = 14016;
$45 = $44;
HEAP32[$45>>2] = $40;
$46 = (($44) + 4)|0;
$47 = $46;
HEAP32[$47>>2] = $43;
}
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13864>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13864+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14016>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14016+4>>2]|0;
$48 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$49 = $48 / 0.0;
- HEAPF32[7700] = $49;
- HEAP32[7701] = 0;
+ HEAPF32[7740] = $49;
+ HEAP32[7741] = 0;
$50 = $49 > 5.0000002374872565E-4;
if ($50) {
- $51 = HEAP32[3]|0;
+ $51 = HEAP32[6]|0;
$52 = ((($0)) + 8|0);
$53 = HEAP32[$52>>2]|0;
$54 = ($51|0)==($53|0);
if ($54) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13864>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13864+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14016>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14016+4>>2]|0;
$55 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$56 = 360.0 - $55;
- HEAPF32[7702] = $56;
+ HEAPF32[7742] = $56;
$57 = $56 < 30.0;
$58 = $56 > 330.0;
$or$cond3 = $57 | $58;
@@ -12178,22 +16424,22 @@ function _ProcessGestureEvent($0) {
label = 16;
}
if ((label|0) == 16) {
- HEAPF32[7700] = 0.0;
- HEAPF32[7702] = 0.0;
+ HEAPF32[7740] = 0.0;
+ HEAPF32[7742] = 0.0;
$$sink10 = 0;
}
- HEAP32[7697] = $$sink10;
- HEAPF32[3464] = 0.0;
- HEAPF32[(13860)>>2] = 0.0;
- HEAP32[7698] = 0;
+ HEAP32[7737] = $$sink10;
+ HEAPF32[3502] = 0.0;
+ HEAPF32[(14012)>>2] = 0.0;
+ HEAP32[7738] = 0;
STACKTOP = sp;return;
break;
}
case 2: {
- $65 = HEAP32[7701]|0;
+ $65 = HEAP32[7741]|0;
$66 = ($65|0)==(0);
if ($66) {
- HEAP32[7701] = 1;
+ HEAP32[7741] = 1;
}
$67 = ((($0)) + 24|0);
$68 = $67;
@@ -12202,31 +16448,31 @@ function _ProcessGestureEvent($0) {
$71 = (($68) + 4)|0;
$72 = $71;
$73 = HEAP32[$72>>2]|0;
- $74 = 13880;
+ $74 = 14032;
$75 = $74;
HEAP32[$75>>2] = $70;
$76 = (($74) + 4)|0;
$77 = $76;
HEAP32[$77>>2] = $73;
- $78 = HEAP32[7697]|0;
+ $78 = HEAP32[7737]|0;
$79 = ($78|0)==(4);
if ($79) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13880+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14032+4>>2]|0;
$80 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$81 = !($80 >= 0.014999999664723873);
if (!($81)) {
- HEAP32[7697] = 8;
+ HEAP32[7737] = 8;
}
}
- $82 = +HEAPF32[3470];
- $83 = +HEAPF32[3464];
+ $82 = +HEAPF32[3508];
+ $83 = +HEAPF32[3502];
$84 = $82 - $83;
- HEAPF32[3468] = $84;
- $85 = +HEAPF32[(13884)>>2];
- $86 = +HEAPF32[(13860)>>2];
+ HEAPF32[3506] = $84;
+ $85 = +HEAPF32[(14036)>>2];
+ $86 = +HEAPF32[(14012)>>2];
$87 = $85 - $86;
- HEAPF32[(13876)>>2] = $87;
+ HEAPF32[(14028)>>2] = $87;
STACKTOP = sp;return;
break;
}
@@ -12238,16 +16484,16 @@ function _ProcessGestureEvent($0) {
function _UpdateGestures() {
var $$off = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $or$cond3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7697]|0;
+ $0 = HEAP32[7737]|0;
$$off = (($0) + -1)|0;
$1 = ($$off>>>0)<(2);
- $2 = HEAP32[7698]|0;
+ $2 = HEAP32[7738]|0;
$3 = ($2|0)<(2);
$or$cond3 = $1 & $3;
if ($or$cond3) {
- HEAP32[7697] = 4;
+ HEAP32[7737] = 4;
}
- $4 = HEAP32[7697]|0;
+ $4 = HEAP32[7737]|0;
$5 = (($4) + -16)|0;
$6 = $5 >>> 4;
$7 = $5 << 28;
@@ -12260,14 +16506,14 @@ function _UpdateGestures() {
return;
}
}
- HEAP32[7697] = 0;
+ HEAP32[7737] = 0;
return;
}
function _GetMousePosition($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = 13912;
+ $1 = 14064;
$2 = $1;
$3 = HEAP32[$2>>2]|0;
$4 = (($1) + 4)|0;
@@ -12293,20 +16539,20 @@ function _IsKeyDown($0) {
function _GetScreenWidth() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7707]|0;
+ $0 = HEAP32[7747]|0;
return ($0|0);
}
function _GetScreenHeight() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7706]|0;
+ $0 = HEAP32[7746]|0;
return ($0|0);
}
function _GetKeyStatus($0) {
$0 = $0|0;
var $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[7705]|0;
+ $1 = HEAP32[7745]|0;
$2 = (_glfwGetKey(($1|0),($0|0))|0);
return ($2|0);
}
@@ -12318,29 +16564,29 @@ function _InitWindow($0,$1,$2) {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- _TraceLog(0,3588,$vararg_buffer);
- HEAP32[7709] = $2;
+ _TraceLog(0,3356,$vararg_buffer);
+ HEAP32[7749] = $2;
_InitGraphicsDevice($0,$1);
_LoadDefaultFont();
- _InitTimer_10();
+ _InitTimer_12();
(_emscripten_set_fullscreenchange_callback((0|0),(0|0),1,(4|0))|0);
- (_emscripten_set_keypress_callback((3617|0),(0|0),1,(5|0))|0);
- (_emscripten_set_click_callback((3617|0),(0|0),1,(6|0))|0);
- (_emscripten_set_touchstart_callback((3617|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchend_callback((3617|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchmove_callback((3617|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchcancel_callback((3617|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_keypress_callback((3385|0),(0|0),1,(5|0))|0);
+ (_emscripten_set_click_callback((3385|0),(0|0),1,(6|0))|0);
+ (_emscripten_set_touchstart_callback((3385|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchend_callback((3385|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchmove_callback((3385|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchcancel_callback((3385|0),(0|0),1,(7|0))|0);
(_emscripten_set_gamepadconnected_callback((0|0),1,(8|0))|0);
(_emscripten_set_gamepaddisconnected_callback((0|0),1,(8|0))|0);
- $3 = HEAP32[7707]|0;
+ $3 = HEAP32[7747]|0;
$4 = (+($3|0));
$5 = $4 * 0.5;
- HEAPF32[3478] = $5;
- $6 = HEAP32[7706]|0;
+ HEAPF32[3516] = $5;
+ $6 = HEAP32[7746]|0;
$7 = (+($6|0));
$8 = $7 * 0.5;
- HEAPF32[(13916)>>2] = $8;
- $9 = HEAP32[7710]|0;
+ HEAPF32[(14068)>>2] = $8;
+ $9 = HEAP32[7750]|0;
$10 = ($9|0)==(0);
if ($10) {
STACKTOP = sp;return;
@@ -12359,11 +16605,11 @@ function _TraceLog($0,$1,$varargs) {
$2 = sp;
switch ($0|0) {
case 0: {
- ;HEAP8[13952>>0]=HEAP8[8146>>0]|0;HEAP8[13952+1>>0]=HEAP8[8146+1>>0]|0;HEAP8[13952+2>>0]=HEAP8[8146+2>>0]|0;HEAP8[13952+3>>0]=HEAP8[8146+3>>0]|0;HEAP8[13952+4>>0]=HEAP8[8146+4>>0]|0;HEAP8[13952+5>>0]=HEAP8[8146+5>>0]|0;HEAP8[13952+6>>0]=HEAP8[8146+6>>0]|0;
+ ;HEAP8[14104>>0]=HEAP8[7914>>0]|0;HEAP8[14104+1>>0]=HEAP8[7914+1>>0]|0;HEAP8[14104+2>>0]=HEAP8[7914+2>>0]|0;HEAP8[14104+3>>0]=HEAP8[7914+3>>0]|0;HEAP8[14104+4>>0]=HEAP8[7914+4>>0]|0;HEAP8[14104+5>>0]=HEAP8[7914+5>>0]|0;HEAP8[14104+6>>0]=HEAP8[7914+6>>0]|0;
break;
}
case 1: {
- $3 = 13952;
+ $3 = 14104;
$4 = $3;
HEAP32[$4>>2] = 1330795077;
$5 = (($3) + 4)|0;
@@ -12372,11 +16618,11 @@ function _TraceLog($0,$1,$varargs) {
break;
}
case 2: {
- dest=13952; src=8153; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
+ dest=14104; src=7921; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
break;
}
case 3: {
- $7 = 13952;
+ $7 = 14104;
$8 = $7;
HEAP32[$8>>2] = 1430406468;
$9 = (($7) + 4)|0;
@@ -12387,16 +16633,16 @@ function _TraceLog($0,$1,$varargs) {
default: {
}
}
- (_strcat(13952,$1)|0);
- $strlen = (_strlen(13952)|0);
- $endptr = (13952 + ($strlen)|0);
+ (_strcat(14104,$1)|0);
+ $strlen = (_strlen(14104)|0);
+ $endptr = (14104 + ($strlen)|0);
HEAP8[$endptr>>0]=10&255;HEAP8[$endptr+1>>0]=10>>8;
HEAP32[$2>>2] = $varargs;
$11 = ($0|0)==(3);
if ($11) {
STACKTOP = sp;return;
}
- (_vprintf(13952,$2)|0);
+ (_vprintf(14104,$2)|0);
$12 = ($0|0)==(1);
if ($12) {
_exit(1);
@@ -12428,22 +16674,22 @@ function _InitGraphicsDevice($0,$1) {
$vararg_buffer = sp;
$2 = sp + 72|0;
$3 = sp + 140|0;
- HEAP32[7707] = $0;
- HEAP32[7706] = $1;
+ HEAP32[7747] = $0;
+ HEAP32[7746] = $1;
_MatrixIdentity($2);
- dest=30916; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31076; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_glfwSetErrorCallback((1|0))|0);
$4 = (_glfwInit()|0);
$5 = ($4|0)==(0);
if ($5) {
- _TraceLog(1,4288,$vararg_buffer);
+ _TraceLog(1,4056,$vararg_buffer);
}
- $6 = HEAP32[7707]|0;
- HEAP32[7745] = $6;
- $7 = HEAP32[7706]|0;
- HEAP32[7746] = $7;
+ $6 = HEAP32[7747]|0;
+ HEAP32[7785] = $6;
+ $7 = HEAP32[7746]|0;
+ HEAP32[7786] = $7;
_glfwDefaultWindowHints();
- $8 = HEAP8[33640]|0;
+ $8 = HEAP8[35952]|0;
$9 = $8 & 4;
$10 = ($9<<24>>24)==(0);
if ($10) {
@@ -12451,18 +16697,18 @@ function _InitGraphicsDevice($0,$1) {
} else {
_glfwWindowHint(131075,1);
}
- $11 = HEAP8[33640]|0;
+ $11 = HEAP8[35952]|0;
$12 = $11 & 8;
$13 = ($12<<24>>24)==(0);
if (!($13)) {
_glfwWindowHint(131077,1);
}
- $14 = HEAP8[33640]|0;
+ $14 = HEAP8[35952]|0;
$15 = $14 & 32;
$16 = ($15<<24>>24)==(0);
if (!($16)) {
_glfwWindowHint(135181,4);
- _TraceLog(0,4314,$vararg_buffer1);
+ _TraceLog(0,4082,$vararg_buffer1);
}
$17 = (_rlGetVersion()|0);
$18 = ($17|0)==(2);
@@ -12479,18 +16725,18 @@ function _InitGraphicsDevice($0,$1) {
_glfwWindowHint(139270,0);
}
}
- $21 = HEAP32[7747]|0;
+ $21 = HEAP32[7787]|0;
$22 = ($21|0)==(0);
if ($22) {
- $47 = HEAP32[7707]|0;
- $48 = HEAP32[7706]|0;
- $49 = HEAP32[7709]|0;
+ $47 = HEAP32[7747]|0;
+ $48 = HEAP32[7746]|0;
+ $49 = HEAP32[7749]|0;
$50 = (_glfwCreateWindow(($47|0),($48|0),($49|0),(0|0),(0|0))|0);
- HEAP32[7705] = $50;
- $51 = HEAP32[7707]|0;
- HEAP32[7748] = $51;
- $52 = HEAP32[7706]|0;
- HEAP32[7749] = $52;
+ HEAP32[7745] = $50;
+ $51 = HEAP32[7747]|0;
+ HEAP32[7788] = $51;
+ $52 = HEAP32[7746]|0;
+ HEAP32[7789] = $52;
$54 = $50;
} else {
$23 = (_glfwGetPrimaryMonitor()|0);
@@ -12499,9 +16745,9 @@ function _InitGraphicsDevice($0,$1) {
$26 = ($25|0)>(0);
L22: do {
if ($26) {
- $27 = HEAP32[7707]|0;
+ $27 = HEAP32[7747]|0;
$28 = HEAP32[$$byval_copy>>2]|0;
- $29 = HEAP32[7706]|0;
+ $29 = HEAP32[7746]|0;
$$015 = 0;
while(1) {
$30 = (($24) + (($$015*24)|0)|0);
@@ -12523,87 +16769,87 @@ function _InitGraphicsDevice($0,$1) {
break L22;
}
}
- HEAP32[7745] = $31;
- HEAP32[7746] = $34;
+ HEAP32[7785] = $31;
+ HEAP32[7786] = $34;
}
} while(0);
- $38 = HEAP32[7745]|0;
- $39 = HEAP32[7746]|0;
+ $38 = HEAP32[7785]|0;
+ $39 = HEAP32[7786]|0;
HEAP32[$vararg_buffer3>>2] = $38;
$vararg_ptr5 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr5>>2] = $39;
- _TraceLog(2,4339,$vararg_buffer3);
- $40 = HEAP32[7745]|0;
- $41 = HEAP32[7746]|0;
+ _TraceLog(2,4107,$vararg_buffer3);
+ $40 = HEAP32[7785]|0;
+ $41 = HEAP32[7786]|0;
_SetupFramebufferSize($40,$41);
- $42 = HEAP32[7745]|0;
- $43 = HEAP32[7746]|0;
- $44 = HEAP32[7709]|0;
+ $42 = HEAP32[7785]|0;
+ $43 = HEAP32[7786]|0;
+ $44 = HEAP32[7749]|0;
$45 = (_glfwGetPrimaryMonitor()|0);
$46 = (_glfwCreateWindow(($42|0),($43|0),($44|0),($45|0),(0|0))|0);
- HEAP32[7705] = $46;
+ HEAP32[7745] = $46;
$54 = $46;
}
$53 = ($54|0)==(0|0);
if ($53) {
_glfwTerminate();
- _TraceLog(1,4377,$vararg_buffer6);
+ _TraceLog(1,4145,$vararg_buffer6);
} else {
- _TraceLog(0,4410,$vararg_buffer8);
- $55 = HEAP32[7748]|0;
- $56 = HEAP32[7749]|0;
+ _TraceLog(0,4178,$vararg_buffer8);
+ $55 = HEAP32[7788]|0;
+ $56 = HEAP32[7789]|0;
HEAP32[$vararg_buffer10>>2] = $55;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $56;
- _TraceLog(0,4450,$vararg_buffer10);
- $57 = HEAP32[7707]|0;
- $58 = HEAP32[7706]|0;
+ _TraceLog(0,4218,$vararg_buffer10);
+ $57 = HEAP32[7747]|0;
+ $58 = HEAP32[7746]|0;
HEAP32[$vararg_buffer14>>2] = $57;
$vararg_ptr17 = ((($vararg_buffer14)) + 4|0);
HEAP32[$vararg_ptr17>>2] = $58;
- _TraceLog(0,4471,$vararg_buffer14);
- $59 = HEAP32[7750]|0;
- $60 = HEAP32[7751]|0;
+ _TraceLog(0,4239,$vararg_buffer14);
+ $59 = HEAP32[7790]|0;
+ $60 = HEAP32[7791]|0;
HEAP32[$vararg_buffer18>>2] = $59;
$vararg_ptr21 = ((($vararg_buffer18)) + 4|0);
HEAP32[$vararg_ptr21>>2] = $60;
- _TraceLog(0,4492,$vararg_buffer18);
+ _TraceLog(0,4260,$vararg_buffer18);
}
- $61 = HEAP32[7705]|0;
+ $61 = HEAP32[7745]|0;
(_glfwSetWindowSizeCallback(($61|0),(1|0))|0);
- $62 = HEAP32[7705]|0;
+ $62 = HEAP32[7745]|0;
(_glfwSetCursorEnterCallback(($62|0),(2|0))|0);
- $63 = HEAP32[7705]|0;
+ $63 = HEAP32[7745]|0;
(_glfwSetKeyCallback(($63|0),(1|0))|0);
- $64 = HEAP32[7705]|0;
+ $64 = HEAP32[7745]|0;
(_glfwSetMouseButtonCallback(($64|0),(1|0))|0);
- $65 = HEAP32[7705]|0;
+ $65 = HEAP32[7745]|0;
(_glfwSetCursorPosCallback(($65|0),(1|0))|0);
- $66 = HEAP32[7705]|0;
+ $66 = HEAP32[7745]|0;
(_glfwSetCharCallback(($66|0),(3|0))|0);
- $67 = HEAP32[7705]|0;
+ $67 = HEAP32[7745]|0;
(_glfwSetScrollCallback(($67|0),(2|0))|0);
- $68 = HEAP32[7705]|0;
+ $68 = HEAP32[7745]|0;
(_glfwSetWindowIconifyCallback(($68|0),(4|0))|0);
- $69 = HEAP32[7705]|0;
+ $69 = HEAP32[7745]|0;
_glfwMakeContextCurrent(($69|0));
_glfwSwapInterval(0);
- $70 = HEAP8[33640]|0;
+ $70 = HEAP8[35952]|0;
$71 = $70 & 64;
$72 = ($71<<24>>24)==(0);
if ($72) {
- $73 = HEAP32[7707]|0;
- $74 = HEAP32[7706]|0;
+ $73 = HEAP32[7747]|0;
+ $74 = HEAP32[7746]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7748]|0;
- $76 = HEAP32[7750]|0;
+ $75 = HEAP32[7788]|0;
+ $76 = HEAP32[7790]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7749]|0;
- $80 = HEAP32[7751]|0;
+ $79 = HEAP32[7789]|0;
+ $80 = HEAP32[7791]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -12621,19 +16867,19 @@ function _InitGraphicsDevice($0,$1) {
STACKTOP = sp;return;
}
_glfwSwapInterval(1);
- _TraceLog(0,4517,$vararg_buffer22);
- $73 = HEAP32[7707]|0;
- $74 = HEAP32[7706]|0;
+ _TraceLog(0,4285,$vararg_buffer22);
+ $73 = HEAP32[7747]|0;
+ $74 = HEAP32[7746]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7748]|0;
- $76 = HEAP32[7750]|0;
+ $75 = HEAP32[7788]|0;
+ $76 = HEAP32[7790]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7749]|0;
- $80 = HEAP32[7751]|0;
+ $79 = HEAP32[7789]|0;
+ $80 = HEAP32[7791]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -12661,12 +16907,12 @@ function _LoadDefaultFont() {
$vararg_buffer = sp;
$0 = sp + 4|0;
$1 = sp + 24|0;
- HEAP32[(30884)>>2] = 224;
+ HEAP32[(31044)>>2] = 224;
$2 = (_malloc(65536)|0);
_memset(($2|0),0,65536)|0;
$$095104 = 0;$$096103 = 0;
while(1) {
- $3 = (16 + ($$095104<<2)|0);
+ $3 = (28 + ($$095104<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$097102 = 31;
while(1) {
@@ -12702,27 +16948,27 @@ function _LoadDefaultFont() {
_free($2);
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_LoadTextureFromImage($1,$$byval_copy1);
- ;HEAP32[30860>>2]=HEAP32[$1>>2]|0;HEAP32[30860+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[30860+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[30860+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[30860+16>>2]=HEAP32[$1+16>>2]|0;
+ ;HEAP32[31020>>2]=HEAP32[$1>>2]|0;HEAP32[31020+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[31020+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[31020+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[31020+16>>2]=HEAP32[$1+16>>2]|0;
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_UnloadImage($$byval_copy1);
- $5 = HEAP32[(30884)>>2]|0;
+ $5 = HEAP32[(31044)>>2]|0;
$6 = $5 << 5;
$7 = (_malloc($6)|0);
- HEAP32[(30888)>>2] = $7;
+ HEAP32[(31048)>>2] = $7;
$8 = ($5|0)>(0);
if (!($8)) {
$$lcssa = $7;
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30880)>>2] = $23;
- $24 = HEAP32[7715]|0;
+ HEAP32[(31040)>>2] = $23;
+ $24 = HEAP32[7755]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3812,$vararg_buffer);
+ _TraceLog(0,3580,$vararg_buffer);
STACKTOP = sp;return;
}
- $9 = HEAP32[(30864)>>2]|0;
- $10 = HEAP32[(30884)>>2]|0;
- $11 = HEAP32[(30888)>>2]|0;
+ $9 = HEAP32[(31024)>>2]|0;
+ $10 = HEAP32[(31044)>>2]|0;
+ $11 = HEAP32[(31048)>>2]|0;
$$0101 = 0;$$090100 = 1;$$09299 = 0;$27 = $7;
while(1) {
$25 = (($$0101) + 32)|0;
@@ -12734,7 +16980,7 @@ function _LoadDefaultFont() {
$30 = (($29) + 1)|0;
$31 = (((($27) + ($$0101<<5)|0)) + 8|0);
HEAP32[$31>>2] = $30;
- $32 = (2064 + ($$0101<<2)|0);
+ $32 = (2076 + ($$0101<<2)|0);
$33 = HEAP32[$32>>2]|0;
$34 = (((($27) + ($$0101<<5)|0)) + 12|0);
HEAP32[$34>>2] = $33;
@@ -12771,19 +17017,19 @@ function _LoadDefaultFont() {
}
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30880)>>2] = $23;
- $24 = HEAP32[7715]|0;
+ HEAP32[(31040)>>2] = $23;
+ $24 = HEAP32[7755]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3812,$vararg_buffer);
+ _TraceLog(0,3580,$vararg_buffer);
STACKTOP = sp;return;
}
-function _InitTimer_10() {
+function _InitTimer_12() {
var $0 = 0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetTime());
- HEAPF64[1743] = $1;
+ HEAPF64[1762] = $1;
return;
}
function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
@@ -12813,7 +17059,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr8>>2] = $10;
$vararg_ptr9 = ((($vararg_buffer4)) + 12|0);
HEAP32[$vararg_ptr9>>2] = $12;
- _TraceLog(0,3745,$vararg_buffer4);
+ _TraceLog(0,3513,$vararg_buffer4);
STACKTOP = sp;return 0;
} else {
HEAP32[$vararg_buffer>>2] = $6;
@@ -12823,7 +17069,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr2>>2] = $10;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $12;
- _TraceLog(0,3676,$vararg_buffer);
+ _TraceLog(0,3444,$vararg_buffer);
STACKTOP = sp;return 0;
}
return (0)|0;
@@ -12839,7 +17085,7 @@ function _EmscriptenKeyboardCallback($0,$1,$2) {
return 0;
}
$4 = ((($1)) + 32|0);
- $5 = (_strcmp($4,3669)|0);
+ $5 = (_strcmp($4,3437)|0);
$6 = ($5|0)==(0);
if (!($6)) {
return 0;
@@ -12942,7 +17188,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$28 = (($25) + 4)|0;
$29 = $28;
$30 = HEAP32[$29>>2]|0;
- $31 = 13928;
+ $31 = 14080;
$32 = $31;
HEAP32[$32>>2] = $27;
$33 = (($31) + 4)|0;
@@ -12955,7 +17201,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$39 = (($36) + 4)|0;
$40 = $39;
$41 = HEAP32[$40>>2]|0;
- $42 = (13936);
+ $42 = (14088);
$43 = $42;
HEAP32[$43>>2] = $38;
$44 = (($42) + 4)|0;
@@ -13011,7 +17257,7 @@ function _EmscriptenGamepadCallback($0,$1,$2) {
}
$9 = ((($1)) + 1300|0);
$10 = HEAP32[$9>>2]|0;
- $11 = (30844 + ($10<<2)|0);
+ $11 = (31004 + ($10<<2)|0);
HEAP32[$11>>2] = $$sink;
return 0;
}
@@ -13025,19 +17271,19 @@ function _SetTargetFPS($0) {
$2 = (+($0|0));
$3 = 1.0 / $2;
$$ = $1 ? 0.0 : $3;
- HEAPF64[1740] = $$;
+ HEAPF64[1759] = $$;
$4 = $3;
$$op = $4 * 1000.0;
$5 = $$op;
$6 = $1 ? 0.0 : $5;
HEAPF64[$vararg_buffer>>3] = $6;
- _TraceLog(0,3625,$vararg_buffer);
+ _TraceLog(0,3393,$vararg_buffer);
STACKTOP = sp;return;
}
function _LogoAnimation() {
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7710] = 0;
+ HEAP32[7750] = 0;
return;
}
function _GetTime() {
@@ -13136,7 +17382,7 @@ function _ImageFormat($0,$1) {
$6 = ($1|0)<(8);
$or$cond = $6 & $5;
if (!($or$cond)) {
- _TraceLog(2,4188,$vararg_buffer);
+ _TraceLog(2,3956,$vararg_buffer);
STACKTOP = sp;return;
}
;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[$0+16>>2]|0;
@@ -13613,52 +17859,52 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$5 = sp + 68|0;
_glBindTexture(3553,0);
HEAP32[$5>>2] = 0;
- $6 = HEAP32[7723]|0;
+ $6 = HEAP32[7763]|0;
$7 = ($6|0)==(0);
$8 = $3 & -4;
$switch = ($8|0)==(8);
$or$cond100 = $switch & $7;
if ($or$cond100) {
- _TraceLog(2,3857,$vararg_buffer);
+ _TraceLog(2,3625,$vararg_buffer);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $9 = HEAP32[7724]|0;
+ $9 = HEAP32[7764]|0;
$10 = ($9|0)==(0);
$11 = ($3|0)==(12);
$or$cond7 = $11 & $10;
if ($or$cond7) {
- _TraceLog(2,3901,$vararg_buffer1);
+ _TraceLog(2,3669,$vararg_buffer1);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $12 = HEAP32[7725]|0;
+ $12 = HEAP32[7765]|0;
$13 = ($12|0)==(0);
$$off = (($3) + -13)|0;
$14 = ($$off>>>0)<(2);
$or$cond = $14 & $13;
if ($or$cond) {
- _TraceLog(2,3946,$vararg_buffer3);
+ _TraceLog(2,3714,$vararg_buffer3);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $15 = HEAP32[7726]|0;
+ $15 = HEAP32[7766]|0;
$16 = ($15|0)==(0);
$$off92 = (($3) + -15)|0;
$17 = ($$off92>>>0)<(2);
$or$cond96 = $17 & $16;
if ($or$cond96) {
- _TraceLog(2,3991,$vararg_buffer5);
+ _TraceLog(2,3759,$vararg_buffer5);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $18 = HEAP32[7727]|0;
+ $18 = HEAP32[7767]|0;
$19 = ($18|0)==(0);
$$off93 = (($3) + -17)|0;
$20 = ($$off93>>>0)<(2);
$or$cond98 = $20 & $19;
if ($or$cond98) {
- _TraceLog(2,4036,$vararg_buffer7);
+ _TraceLog(2,3804,$vararg_buffer7);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -13696,7 +17942,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 8: {
- $22 = HEAP32[7723]|0;
+ $22 = HEAP32[7763]|0;
$23 = ($22|0)==(0);
if (!($23)) {
_LoadCompressedTexture($0,$1,$2,$4,33776);
@@ -13704,7 +17950,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 9: {
- $24 = HEAP32[7723]|0;
+ $24 = HEAP32[7763]|0;
$25 = ($24|0)==(0);
if (!($25)) {
_LoadCompressedTexture($0,$1,$2,$4,33777);
@@ -13712,7 +17958,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 10: {
- $26 = HEAP32[7723]|0;
+ $26 = HEAP32[7763]|0;
$27 = ($26|0)==(0);
if (!($27)) {
_LoadCompressedTexture($0,$1,$2,$4,33778);
@@ -13720,7 +17966,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 11: {
- $28 = HEAP32[7723]|0;
+ $28 = HEAP32[7763]|0;
$29 = ($28|0)==(0);
if (!($29)) {
_LoadCompressedTexture($0,$1,$2,$4,33779);
@@ -13728,7 +17974,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 12: {
- $30 = HEAP32[7724]|0;
+ $30 = HEAP32[7764]|0;
$31 = ($30|0)==(0);
if (!($31)) {
_LoadCompressedTexture($0,$1,$2,$4,36196);
@@ -13736,7 +17982,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 13: {
- $32 = HEAP32[7725]|0;
+ $32 = HEAP32[7765]|0;
$33 = ($32|0)==(0);
if (!($33)) {
_LoadCompressedTexture($0,$1,$2,$4,37492);
@@ -13744,7 +17990,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 14: {
- $34 = HEAP32[7725]|0;
+ $34 = HEAP32[7765]|0;
$35 = ($34|0)==(0);
if (!($35)) {
_LoadCompressedTexture($0,$1,$2,$4,37496);
@@ -13752,7 +17998,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 15: {
- $36 = HEAP32[7726]|0;
+ $36 = HEAP32[7766]|0;
$37 = ($36|0)==(0);
if (!($37)) {
_LoadCompressedTexture($0,$1,$2,$4,35840);
@@ -13760,7 +18006,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 16: {
- $38 = HEAP32[7726]|0;
+ $38 = HEAP32[7766]|0;
$39 = ($38|0)==(0);
if (!($39)) {
_LoadCompressedTexture($0,$1,$2,$4,35842);
@@ -13768,7 +18014,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 17: {
- $40 = HEAP32[7727]|0;
+ $40 = HEAP32[7767]|0;
$41 = ($40|0)==(0);
if (!($41)) {
_LoadCompressedTexture($0,$1,$2,$4,37808);
@@ -13776,7 +18022,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 18: {
- $42 = HEAP32[7727]|0;
+ $42 = HEAP32[7767]|0;
$43 = ($42|0)==(0);
if (!($43)) {
_LoadCompressedTexture($0,$1,$2,$4,37815);
@@ -13784,11 +18030,11 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
default: {
- _TraceLog(2,4081,$vararg_buffer9);
+ _TraceLog(2,3849,$vararg_buffer9);
}
}
} while(0);
- $44 = HEAP32[7728]|0;
+ $44 = HEAP32[7768]|0;
$45 = ($44|0)==(0);
if ($45) {
_glTexParameteri(3553,10242,33071);
@@ -13803,7 +18049,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$46 = HEAP32[$5>>2]|0;
$47 = ($46|0)==(0);
if ($47) {
- _TraceLog(2,4159,$vararg_buffer15);
+ _TraceLog(2,3927,$vararg_buffer15);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
} else {
@@ -13812,7 +18058,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
HEAP32[$vararg_ptr13>>2] = $1;
$vararg_ptr14 = ((($vararg_buffer11)) + 8|0);
HEAP32[$vararg_ptr14>>2] = $2;
- _TraceLog(0,4110,$vararg_buffer11);
+ _TraceLog(0,3878,$vararg_buffer11);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14086,7 +18332,7 @@ function _GetImageData($0) {
break;
}
default: {
- _TraceLog(2,4242,$vararg_buffer);
+ _TraceLog(2,4010,$vararg_buffer);
$$1 = $$0106;
}
}
@@ -14113,7 +18359,7 @@ function _ErrorCallback($0,$1) {
HEAP32[$vararg_buffer>>2] = $0;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $1;
- _TraceLog(2,8108,$vararg_buffer);
+ _TraceLog(2,7876,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlGetVersion() {
@@ -14134,20 +18380,20 @@ function _SetupFramebufferSize($0,$1) {
$vararg_buffer4 = sp + 16|0;
$vararg_buffer = sp;
$2 = sp + 40|0;
- $3 = HEAP32[7707]|0;
+ $3 = HEAP32[7747]|0;
$4 = ($3|0)>($0|0);
if (!($4)) {
- $5 = HEAP32[7706]|0;
+ $5 = HEAP32[7746]|0;
$6 = ($5|0)>($1|0);
if (!($6)) {
$30 = ($3|0)<($0|0);
$31 = ($5|0)<($1|0);
$or$cond = $30 | $31;
if (!($or$cond)) {
- HEAP32[7748] = $3;
- HEAP32[7749] = $5;
- HEAP32[7750] = 0;
- HEAP32[7751] = 0;
+ HEAP32[7788] = $3;
+ HEAP32[7789] = $5;
+ HEAP32[7790] = 0;
+ HEAP32[7791] = 0;
STACKTOP = sp;return;
}
HEAP32[$vararg_buffer8>>2] = $3;
@@ -14157,13 +18403,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr12>>2] = $0;
$vararg_ptr13 = ((($vararg_buffer8)) + 12|0);
HEAP32[$vararg_ptr13>>2] = $1;
- _TraceLog(0,8042,$vararg_buffer8);
+ _TraceLog(0,7810,$vararg_buffer8);
$32 = (+($0|0));
$33 = (+($1|0));
$34 = $32 / $33;
- $35 = HEAP32[7707]|0;
+ $35 = HEAP32[7747]|0;
$36 = (+($35|0));
- $37 = HEAP32[7706]|0;
+ $37 = HEAP32[7746]|0;
$38 = (+($37|0));
$39 = $36 / $38;
$40 = !($34 <= $39);
@@ -14171,26 +18417,26 @@ function _SetupFramebufferSize($0,$1) {
$44 = $34 * $38;
$roundf = (+_roundf((+$44)));
$45 = (~~(($roundf)));
- HEAP32[7748] = $45;
- HEAP32[7749] = $37;
+ HEAP32[7788] = $45;
+ HEAP32[7789] = $37;
$46 = (($45) - ($35))|0;
- HEAP32[7750] = $46;
+ HEAP32[7790] = $46;
$$sink1 = 0;
} else {
- HEAP32[7748] = $35;
+ HEAP32[7788] = $35;
$41 = $36 / $34;
$roundf38 = (+_roundf((+$41)));
$42 = (~~(($roundf38)));
- HEAP32[7749] = $42;
- HEAP32[7750] = 0;
+ HEAP32[7789] = $42;
+ HEAP32[7790] = 0;
$43 = (($42) - ($37))|0;
$$sink1 = $43;
}
- HEAP32[7751] = $$sink1;
+ HEAP32[7791] = $$sink1;
STACKTOP = sp;return;
}
}
- $7 = HEAP32[7706]|0;
+ $7 = HEAP32[7746]|0;
HEAP32[$vararg_buffer>>2] = $3;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $7;
@@ -14198,13 +18444,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr2>>2] = $0;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $1;
- _TraceLog(2,7899,$vararg_buffer);
+ _TraceLog(2,7667,$vararg_buffer);
$8 = (+($0|0));
- $9 = HEAP32[7707]|0;
+ $9 = HEAP32[7747]|0;
$10 = (+($9|0));
$11 = $8 / $10;
$12 = (+($1|0));
- $13 = HEAP32[7706]|0;
+ $13 = HEAP32[7746]|0;
$14 = (+($13|0));
$15 = $12 / $14;
$16 = !($11 <= $15);
@@ -14212,37 +18458,37 @@ function _SetupFramebufferSize($0,$1) {
$22 = $10 * $15;
$roundf39 = (+_roundf((+$22)));
$23 = (~~(($roundf39)));
- HEAP32[7748] = $23;
- HEAP32[7749] = $1;
+ HEAP32[7788] = $23;
+ HEAP32[7789] = $1;
$24 = (($0) - ($23))|0;
- HEAP32[7750] = $24;
+ HEAP32[7790] = $24;
$$sink = 0;
} else {
- HEAP32[7748] = $0;
- $17 = HEAP32[7706]|0;
+ HEAP32[7788] = $0;
+ $17 = HEAP32[7746]|0;
$18 = (+($17|0));
$19 = $11 * $18;
$roundf40 = (+_roundf((+$19)));
$20 = (~~(($roundf40)));
- HEAP32[7749] = $20;
- HEAP32[7750] = 0;
+ HEAP32[7789] = $20;
+ HEAP32[7790] = 0;
$21 = (($1) - ($20))|0;
$$sink = $21;
}
- HEAP32[7751] = $$sink;
- $25 = HEAP32[7748]|0;
+ HEAP32[7791] = $$sink;
+ $25 = HEAP32[7788]|0;
$26 = (+($25|0));
- $27 = HEAP32[7707]|0;
+ $27 = HEAP32[7747]|0;
$28 = (+($27|0));
$29 = $26 / $28;
_MatrixScale($2,$29,$29,$29);
- dest=30916; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7748] = $0;
- HEAP32[7749] = $1;
+ dest=31076; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7788] = $0;
+ HEAP32[7789] = $1;
HEAP32[$vararg_buffer4>>2] = $0;
$vararg_ptr7 = ((($vararg_buffer4)) + 4|0);
HEAP32[$vararg_ptr7>>2] = $1;
- _TraceLog(2,7977,$vararg_buffer4);
+ _TraceLog(2,7745,$vararg_buffer4);
STACKTOP = sp;return;
}
function _WindowSizeCallback($0,$1,$2) {
@@ -14260,10 +18506,10 @@ function _WindowSizeCallback($0,$1,$2) {
_rlMatrixMode(5888);
_rlLoadIdentity();
_rlClearScreenBuffers();
- HEAP32[7707] = $1;
- HEAP32[7706] = $2;
- HEAP32[7748] = $1;
- HEAP32[7749] = $2;
+ HEAP32[7747] = $1;
+ HEAP32[7746] = $2;
+ HEAP32[7788] = $1;
+ HEAP32[7789] = $2;
return;
}
function _CursorEnterCallback($0,$1) {
@@ -14281,7 +18527,7 @@ function _KeyCallback($0,$1,$2,$3,$4) {
$4 = $4|0;
var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $5 = HEAP32[741]|0;
+ $5 = HEAP32[744]|0;
$6 = ($5|0)==($1|0);
$7 = ($3|0)==(1);
$or$cond = $7 & $6;
@@ -14290,12 +18536,12 @@ function _KeyCallback($0,$1,$2,$3,$4) {
return;
}
$8 = $3&255;
- $9 = (33647 + ($1)|0);
+ $9 = (35959 + ($1)|0);
HEAP8[$9>>0] = $8;
if (!($7)) {
return;
}
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _MouseButtonCallback($0,$1,$2,$3) {
@@ -14311,7 +18557,7 @@ function _MouseButtonCallback($0,$1,$2,$3) {
$4 = sp + 8|0;
$5 = sp;
$6 = $2&255;
- $7 = (33641 + ($1)|0);
+ $7 = (35953 + ($1)|0);
HEAP8[$7>>0] = $6;
$8 = (_IsMouseButtonPressed(0)|0);
$9 = ($8|0)==(0);
@@ -14390,7 +18636,7 @@ function _MouseCursorPosCallback($0,$1,$2) {
$12 = (($9) + 4)|0;
$13 = $12;
$14 = HEAP32[$13>>2]|0;
- $15 = 13928;
+ $15 = 14080;
$16 = $15;
HEAP32[$16>>2] = $11;
$17 = (($15) + 4)|0;
@@ -14415,7 +18661,7 @@ function _CharCallback($0,$1) {
$1 = $1|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _ScrollCallback($0,$1,$2) {
@@ -14425,7 +18671,7 @@ function _ScrollCallback($0,$1,$2) {
var $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
$3 = (~~(($2)));
- HEAP32[8121] = $3;
+ HEAP32[8161] = $3;
return;
}
function _WindowIconifyCallback($0,$1) {
@@ -14435,7 +18681,7 @@ function _WindowIconifyCallback($0,$1) {
sp = STACKTOP;
$2 = ($1|0)!=(0);
$$sink = $2&1;
- HEAP32[8120] = $$sink;
+ HEAP32[8160] = $$sink;
return;
}
function _rlglInit($0,$1) {
@@ -14475,16 +18721,16 @@ function _rlglInit($0,$1) {
$6 = sp + 2192|0;
$7 = (_glGetString(7936)|0);
HEAP32[$vararg_buffer>>2] = $7;
- _TraceLog(0,4540,$vararg_buffer);
+ _TraceLog(0,4308,$vararg_buffer);
$8 = (_glGetString(7937)|0);
HEAP32[$vararg_buffer1>>2] = $8;
- _TraceLog(0,4558,$vararg_buffer1);
+ _TraceLog(0,4326,$vararg_buffer1);
$9 = (_glGetString(7938)|0);
HEAP32[$vararg_buffer4>>2] = $9;
- _TraceLog(0,4576,$vararg_buffer4);
+ _TraceLog(0,4344,$vararg_buffer4);
$10 = (_glGetString(35724)|0);
HEAP32[$vararg_buffer7>>2] = $10;
- _TraceLog(0,4594,$vararg_buffer7);
+ _TraceLog(0,4362,$vararg_buffer7);
$11 = (_glGetString(7939)|0);
$12 = (_strlen($11)|0);
$13 = (($12) + 1)|0;
@@ -14492,7 +18738,7 @@ function _rlglInit($0,$1) {
_memcpy(($14|0),($11|0),($13|0))|0;
$$062 = 0;$$sink63 = $14;
while(1) {
- $15 = (_strtok($$sink63,4612)|0);
+ $15 = (_strtok($$sink63,4380)|0);
$16 = (($vararg_buffer7) + ($$062<<2)|0);
HEAP32[$16>>2] = $15;
$17 = ($15|0)==(0|0);
@@ -14506,41 +18752,41 @@ function _rlglInit($0,$1) {
_free($14);
$19 = (($$062) + -1)|0;
HEAP32[$vararg_buffer10>>2] = $19;
- _TraceLog(0,4614,$vararg_buffer10);
+ _TraceLog(0,4382,$vararg_buffer10);
$20 = ($$062|0)>(1);
if ($20) {
$$06167 = 0;
while(1) {
$23 = (($vararg_buffer7) + ($$06167<<2)|0);
$24 = HEAP32[$23>>2]|0;
- $25 = (_strcmp($24,4649)|0);
+ $25 = (_strcmp($24,4417)|0);
$26 = ($25|0)==(0);
if ($26) {
- HEAP32[7786] = 1;
- $27 = (_eglGetProcAddress((4676|0))|0);
- HEAP32[7787] = $27;
- $28 = (_eglGetProcAddress((4697|0))|0);
- HEAP32[7788] = $28;
- $29 = (_eglGetProcAddress((4718|0))|0);
- HEAP32[7789] = $29;
- }
- $30 = (_strcmp($24,4742)|0);
+ HEAP32[7826] = 1;
+ $27 = (_eglGetProcAddress((4444|0))|0);
+ HEAP32[7827] = $27;
+ $28 = (_eglGetProcAddress((4465|0))|0);
+ HEAP32[7828] = $28;
+ $29 = (_eglGetProcAddress((4486|0))|0);
+ HEAP32[7829] = $29;
+ }
+ $30 = (_strcmp($24,4510)|0);
$31 = ($30|0)==(0);
if ($31) {
- HEAP32[7728] = 1;
+ HEAP32[7768] = 1;
}
- $32 = (_strcmp($24,4762)|0);
+ $32 = (_strcmp($24,4530)|0);
$33 = ($32|0)==(0);
if ($33) {
label = 12;
} else {
$34 = HEAP32[$23>>2]|0;
- $35 = (_strcmp($34,4794)|0);
+ $35 = (_strcmp($34,4562)|0);
$36 = ($35|0)==(0);
if ($36) {
label = 12;
} else {
- $37 = (_strcmp($34,4827)|0);
+ $37 = (_strcmp($34,4595)|0);
$38 = ($37|0)==(0);
if ($38) {
label = 12;
@@ -14549,15 +18795,15 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 12) {
label = 0;
- HEAP32[7723] = 1;
+ HEAP32[7763] = 1;
}
- $39 = (_strcmp($24,4867)|0);
+ $39 = (_strcmp($24,4635)|0);
$40 = ($39|0)==(0);
if ($40) {
label = 15;
} else {
$41 = HEAP32[$23>>2]|0;
- $42 = (_strcmp($41,4903)|0);
+ $42 = (_strcmp($41,4671)|0);
$43 = ($42|0)==(0);
if ($43) {
label = 15;
@@ -14565,35 +18811,35 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 15) {
label = 0;
- HEAP32[7724] = 1;
+ HEAP32[7764] = 1;
}
$44 = HEAP32[$23>>2]|0;
- $45 = (_strcmp($44,4936)|0);
+ $45 = (_strcmp($44,4704)|0);
$46 = ($45|0)==(0);
if ($46) {
- HEAP32[7725] = 1;
+ HEAP32[7765] = 1;
}
- $47 = (_strcmp($44,4961)|0);
+ $47 = (_strcmp($44,4729)|0);
$48 = ($47|0)==(0);
if ($48) {
- HEAP32[7726] = 1;
+ HEAP32[7766] = 1;
}
- $49 = (_strcmp($44,4994)|0);
+ $49 = (_strcmp($44,4762)|0);
$50 = ($49|0)==(0);
if ($50) {
- HEAP32[7727] = 1;
+ HEAP32[7767] = 1;
}
- $51 = (_strcmp($44,5030)|0);
+ $51 = (_strcmp($44,4798)|0);
$52 = ($51|0)==(0);
if ($52) {
- HEAP32[7790] = 1;
- _glGetFloatv(34047,(31164|0));
+ HEAP32[7830] = 1;
+ _glGetFloatv(34047,(31324|0));
}
$53 = HEAP32[$23>>2]|0;
- $54 = (_strcmp($53,5064)|0);
+ $54 = (_strcmp($53,4832)|0);
$55 = ($54|0)==(0);
if ($55) {
- HEAP32[7792] = 1;
+ HEAP32[7832] = 1;
}
$56 = (($$06167) + 1)|0;
$exitcond70 = ($56|0)==($19|0);
@@ -14604,77 +18850,77 @@ function _rlglInit($0,$1) {
}
}
}
- $21 = HEAP32[7786]|0;
+ $21 = HEAP32[7826]|0;
$22 = ($21|0)==(0);
if ($22) {
- _TraceLog(2,5167,$vararg_buffer15);
+ _TraceLog(2,4935,$vararg_buffer15);
} else {
- _TraceLog(0,5092,$vararg_buffer13);
+ _TraceLog(0,4860,$vararg_buffer13);
}
- $57 = HEAP32[7728]|0;
+ $57 = HEAP32[7768]|0;
$58 = ($57|0)==(0);
if ($58) {
- _TraceLog(2,5303,$vararg_buffer19);
+ _TraceLog(2,5071,$vararg_buffer19);
} else {
- _TraceLog(0,5228,$vararg_buffer17);
+ _TraceLog(0,4996,$vararg_buffer17);
}
- $59 = HEAP32[7723]|0;
+ $59 = HEAP32[7763]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- _TraceLog(0,5395,$vararg_buffer21);
+ _TraceLog(0,5163,$vararg_buffer21);
}
- $61 = HEAP32[7724]|0;
+ $61 = HEAP32[7764]|0;
$62 = ($61|0)==(0);
if (!($62)) {
- _TraceLog(0,5441,$vararg_buffer23);
+ _TraceLog(0,5209,$vararg_buffer23);
}
- $63 = HEAP32[7725]|0;
+ $63 = HEAP32[7765]|0;
$64 = ($63|0)==(0);
if (!($64)) {
- _TraceLog(0,5488,$vararg_buffer25);
+ _TraceLog(0,5256,$vararg_buffer25);
}
- $65 = HEAP32[7726]|0;
+ $65 = HEAP32[7766]|0;
$66 = ($65|0)==(0);
if (!($66)) {
- _TraceLog(0,5539,$vararg_buffer27);
+ _TraceLog(0,5307,$vararg_buffer27);
}
- $67 = HEAP32[7727]|0;
+ $67 = HEAP32[7767]|0;
$68 = ($67|0)==(0);
if (!($68)) {
- _TraceLog(0,5586,$vararg_buffer29);
+ _TraceLog(0,5354,$vararg_buffer29);
}
- $69 = HEAP32[7790]|0;
+ $69 = HEAP32[7830]|0;
$70 = ($69|0)==(0);
if (!($70)) {
- $71 = +HEAPF32[7791];
+ $71 = +HEAPF32[7831];
$72 = $71;
HEAPF64[$vararg_buffer31>>3] = $72;
- _TraceLog(0,5633,$vararg_buffer31);
+ _TraceLog(0,5401,$vararg_buffer31);
}
- $73 = HEAP32[7792]|0;
+ $73 = HEAP32[7832]|0;
$74 = ($73|0)==(0);
if (!($74)) {
- _TraceLog(0,5699,$vararg_buffer34);
+ _TraceLog(0,5467,$vararg_buffer34);
}
HEAP32[$vararg_buffer10>>2] = -1;
$75 = (_rlglLoadTexture($vararg_buffer10,1,1,7,1)|0);
- HEAP32[7793] = $75;
+ HEAP32[7833] = $75;
$76 = ($75|0)==(0);
if ($76) {
- _TraceLog(2,5803,$vararg_buffer39);
+ _TraceLog(2,5571,$vararg_buffer39);
} else {
HEAP32[$vararg_buffer36>>2] = $75;
- _TraceLog(0,5752,$vararg_buffer36);
+ _TraceLog(0,5520,$vararg_buffer36);
}
_LoadDefaultShader($2);
- dest=31176; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31232; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31336; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31392; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_LoadDefaultBuffers();
$77 = (_malloc(49152)|0);
- HEAP32[7822] = $77;
+ HEAP32[7862] = $77;
$$06066 = 0;
while(1) {
- $79 = HEAP32[7822]|0;
+ $79 = HEAP32[7862]|0;
$80 = (($79) + (($$06066*12)|0)|0);
_VectorZero($3);
;HEAP32[$80>>2]=HEAP32[$3>>2]|0;HEAP32[$80+4>>2]=HEAP32[$3+4>>2]|0;HEAP32[$80+8>>2]=HEAP32[$3+8>>2]|0;
@@ -14687,7 +18933,7 @@ function _rlglInit($0,$1) {
}
}
$78 = (_malloc(36864)|0);
- HEAP32[7823] = $78;
+ HEAP32[7863] = $78;
$$05965 = 0;
while(1) {
$82 = (((($78) + (($$05965*144)|0)|0)) + 8|0);
@@ -14702,48 +18948,48 @@ function _rlglInit($0,$1) {
$$05965 = $84;
}
}
- HEAP32[7824] = 1;
- $85 = HEAP32[7793]|0;
+ HEAP32[7864] = 1;
+ $85 = HEAP32[7833]|0;
$86 = ((($78)) + 8|0);
HEAP32[$86>>2] = $85;
- HEAP32[7825] = 4;
+ HEAP32[7865] = 4;
_MatrixIdentity($4);
- dest=31304; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31464; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31368); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31528); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31432); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31592); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31496); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31656); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31560); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31720); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31624); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31784); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31688); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31848); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31752); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31912); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31816); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31976); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31880); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32040); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31944); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32104); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32008); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32168); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32072); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32232); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32136); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32296); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32200); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32360); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32264); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32424); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($5);
- dest=31012; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31172; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($6);
- dest=31076; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7752] = 31076;
+ dest=31236; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7792] = 31236;
_glDepthFunc(515);
_glDisable(2929);
_glBlendFunc(770,771);
@@ -14754,21 +19000,21 @@ function _rlglInit($0,$1) {
_glClearColor(0.0,0.0,0.0,1.0);
_glClearDepthf(1.0);
_glClear(16640);
- HEAP32[8082] = $0;
- HEAP32[8083] = $1;
- _TraceLog(0,5842,$vararg_buffer41);
+ HEAP32[8122] = $0;
+ HEAP32[8123] = $1;
+ _TraceLog(0,5610,$vararg_buffer41);
STACKTOP = sp;return;
}
function _SetupViewport() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7750]|0;
+ $0 = HEAP32[7790]|0;
$1 = (($0|0) / 2)&-1;
- $2 = HEAP32[7751]|0;
+ $2 = HEAP32[7791]|0;
$3 = (($2|0) / 2)&-1;
- $4 = HEAP32[7748]|0;
+ $4 = HEAP32[7788]|0;
$5 = (($4) - ($0))|0;
- $6 = HEAP32[7749]|0;
+ $6 = HEAP32[7789]|0;
$7 = (($6) - ($2))|0;
_rlViewport($1,$3,$5,$7);
return;
@@ -14779,12 +19025,12 @@ function _rlMatrixMode($0) {
sp = STACKTOP;
switch ($0|0) {
case 5889: {
- $modelview$sink = 31012;
+ $modelview$sink = 31172;
label = 3;
break;
}
case 5888: {
- $modelview$sink = 31076;
+ $modelview$sink = 31236;
label = 3;
break;
}
@@ -14792,9 +19038,9 @@ function _rlMatrixMode($0) {
}
}
if ((label|0) == 3) {
- HEAP32[7752] = $modelview$sink;
+ HEAP32[7792] = $modelview$sink;
}
- HEAP32[7785] = $0;
+ HEAP32[7825] = $0;
return;
}
function _rlLoadIdentity() {
@@ -14802,7 +19048,7 @@ function _rlLoadIdentity() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$0 = sp;
- $1 = HEAP32[7752]|0;
+ $1 = HEAP32[7792]|0;
_MatrixIdentity($0);
dest=$1; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
@@ -14823,7 +19069,7 @@ function _rlOrtho($0,$1,$2,$3,$4,$5) {
$7 = sp;
_MatrixOrtho($6,$0,$1,$2,$3,$4,$5);
_MatrixTranspose($6);
- $8 = HEAP32[7752]|0;
+ $8 = HEAP32[7792]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy,$$byval_copy1);
@@ -14882,17 +19128,17 @@ function _LoadDefaultShader($0) {
$1 = sp + 16|0;
$2 = sp + 513|0;
$3 = sp + 72|0;
- _memcpy(($2|0),(6418|0),489)|0;
- _memcpy(($3|0),(6907|0),441)|0;
+ _memcpy(($2|0),(6186|0),489)|0;
+ _memcpy(($3|0),(6675|0),441)|0;
$4 = (_LoadShaderProgram($2,$3)|0);
HEAP32[$1>>2] = $4;
$5 = ($4|0)==(0);
if ($5) {
HEAP32[$vararg_buffer1>>2] = $4;
- _TraceLog(2,7396,$vararg_buffer1);
+ _TraceLog(2,7164,$vararg_buffer1);
} else {
HEAP32[$vararg_buffer>>2] = $4;
- _TraceLog(0,7348,$vararg_buffer);
+ _TraceLog(0,7116,$vararg_buffer);
}
$6 = HEAP32[$1>>2]|0;
$7 = ($6|0)==(0);
@@ -14920,15 +19166,15 @@ function _LoadDefaultBuffers() {
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
$0 = (_malloc(24576)|0);
- HEAP32[(32348)>>2] = $0;
+ HEAP32[(32508)>>2] = $0;
$1 = (_malloc(8192)|0);
- HEAP32[(32356)>>2] = $1;
- HEAP32[(32352)>>2] = 0;
- HEAP32[(32360)>>2] = 0;
+ HEAP32[(32516)>>2] = $1;
+ HEAP32[(32512)>>2] = 0;
+ HEAP32[(32520)>>2] = 0;
_memset(($0|0),0,24576)|0;
$$05972 = 0;
while(1) {
- $2 = HEAP32[(32356)>>2]|0;
+ $2 = HEAP32[(32516)>>2]|0;
$3 = (($2) + ($$05972)|0);
HEAP8[$3>>0] = 0;
$4 = (($$05972) + 1)|0;
@@ -14939,19 +19185,19 @@ function _LoadDefaultBuffers() {
$$05972 = $4;
}
}
- HEAP32[8084] = 0;
- HEAP32[(32344)>>2] = 0;
- HEAP32[(32340)>>2] = 0;
+ HEAP32[8124] = 0;
+ HEAP32[(32504)>>2] = 0;
+ HEAP32[(32500)>>2] = 0;
$5 = (_malloc(73728)|0);
- HEAP32[(32396)>>2] = $5;
+ HEAP32[(32556)>>2] = $5;
$6 = (_malloc(24576)|0);
- HEAP32[(32404)>>2] = $6;
- HEAP32[(32400)>>2] = 0;
- HEAP32[(32408)>>2] = 0;
+ HEAP32[(32564)>>2] = $6;
+ HEAP32[(32560)>>2] = 0;
+ HEAP32[(32568)>>2] = 0;
_memset(($5|0),0,73728)|0;
$$05770 = 0;
while(1) {
- $7 = HEAP32[(32404)>>2]|0;
+ $7 = HEAP32[(32564)>>2]|0;
$8 = (($7) + ($$05770)|0);
HEAP8[$8>>0] = 0;
$9 = (($$05770) + 1)|0;
@@ -14962,24 +19208,24 @@ function _LoadDefaultBuffers() {
$$05770 = $9;
}
}
- HEAP32[8096] = 0;
- HEAP32[(32392)>>2] = 0;
- HEAP32[(32388)>>2] = 0;
+ HEAP32[8136] = 0;
+ HEAP32[(32552)>>2] = 0;
+ HEAP32[(32548)>>2] = 0;
$10 = (_malloc(49152)|0);
- HEAP32[(32444)>>2] = $10;
+ HEAP32[(32604)>>2] = $10;
$11 = (_malloc(32768)|0);
- HEAP32[(32448)>>2] = $11;
+ HEAP32[(32608)>>2] = $11;
$12 = (_malloc(16384)|0);
- HEAP32[(32452)>>2] = $12;
+ HEAP32[(32612)>>2] = $12;
$13 = (_malloc(12288)|0);
- HEAP32[(32456)>>2] = $13;
- $14 = HEAP32[(32444)>>2]|0;
+ HEAP32[(32616)>>2] = $13;
+ $14 = HEAP32[(32604)>>2]|0;
_memset(($14|0),0,49152)|0;
- $15 = HEAP32[(32448)>>2]|0;
+ $15 = HEAP32[(32608)>>2]|0;
_memset(($15|0),0,32768)|0;
$$05467 = 0;
while(1) {
- $17 = HEAP32[(32452)>>2]|0;
+ $17 = HEAP32[(32612)>>2]|0;
$18 = (($17) + ($$05467)|0);
HEAP8[$18>>0] = 0;
$19 = (($$05467) + 1)|0;
@@ -14990,7 +19236,7 @@ function _LoadDefaultBuffers() {
$$05467 = $19;
}
}
- $16 = HEAP32[(32456)>>2]|0;
+ $16 = HEAP32[(32616)>>2]|0;
$$05365 = 0;$$066 = 0;
while(1) {
$22 = $$05365 << 2;
@@ -15027,140 +19273,140 @@ function _LoadDefaultBuffers() {
$$05365 = $41;$$066 = $42;
}
}
- HEAP32[8108] = 0;
- HEAP32[(32436)>>2] = 0;
- HEAP32[(32440)>>2] = 0;
- _TraceLog(0,5889,$vararg_buffer);
- $20 = HEAP32[7786]|0;
+ HEAP32[8148] = 0;
+ HEAP32[(32596)>>2] = 0;
+ HEAP32[(32600)>>2] = 0;
+ _TraceLog(0,5657,$vararg_buffer);
+ $20 = HEAP32[7826]|0;
$21 = ($20|0)==(0);
if (!($21)) {
- $43 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$43 & 63](1,(32364));
- $44 = HEAP32[7788]|0;
- $45 = HEAP32[(32364)>>2]|0;
+ $43 = HEAP32[7827]|0;
+ FUNCTION_TABLE_vii[$43 & 63](1,(32524));
+ $44 = HEAP32[7828]|0;
+ $45 = HEAP32[(32524)>>2]|0;
FUNCTION_TABLE_vi[$44 & 31]($45);
}
- _glGenBuffers(2,((32368)|0));
- $46 = HEAP32[(32368)>>2]|0;
+ _glGenBuffers(2,((32528)|0));
+ $46 = HEAP32[(32528)>>2]|0;
_glBindBuffer(34962,($46|0));
- $47 = HEAP32[(32348)>>2]|0;
+ $47 = HEAP32[(32508)>>2]|0;
_glBufferData(34962,24576,($47|0),35048);
- $48 = HEAP32[(31236)>>2]|0;
+ $48 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($48|0));
- $49 = HEAP32[(31236)>>2]|0;
+ $49 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($49|0),3,5126,0,0,(0|0));
- _glGenBuffers(2,((32372)|0));
- $50 = HEAP32[(32372)>>2]|0;
+ _glGenBuffers(2,((32532)|0));
+ $50 = HEAP32[(32532)>>2]|0;
_glBindBuffer(34962,($50|0));
- $51 = HEAP32[(32356)>>2]|0;
+ $51 = HEAP32[(32516)>>2]|0;
_glBufferData(34962,8192,($51|0),35048);
- $52 = HEAP32[(31256)>>2]|0;
+ $52 = HEAP32[(31416)>>2]|0;
_glEnableVertexAttribArray(($52|0));
- $53 = HEAP32[(31256)>>2]|0;
+ $53 = HEAP32[(31416)>>2]|0;
_glVertexAttribPointer(($53|0),4,5121,1,0,(0|0));
- $54 = HEAP32[7786]|0;
+ $54 = HEAP32[7826]|0;
$55 = ($54|0)==(0);
if ($55) {
- $57 = HEAP32[(32368)>>2]|0;
- $58 = HEAP32[(32372)>>2]|0;
+ $57 = HEAP32[(32528)>>2]|0;
+ $58 = HEAP32[(32532)>>2]|0;
HEAP32[$vararg_buffer3>>2] = $57;
$vararg_ptr6 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr6>>2] = $58;
- _TraceLog(0,6027,$vararg_buffer3);
+ _TraceLog(0,5795,$vararg_buffer3);
} else {
- $56 = HEAP32[(32364)>>2]|0;
+ $56 = HEAP32[(32524)>>2]|0;
HEAP32[$vararg_buffer1>>2] = $56;
- _TraceLog(0,5962,$vararg_buffer1);
+ _TraceLog(0,5730,$vararg_buffer1);
}
- $59 = HEAP32[7786]|0;
+ $59 = HEAP32[7826]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- $61 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$61 & 63](1,(32412));
- $62 = HEAP32[7788]|0;
- $63 = HEAP32[(32412)>>2]|0;
+ $61 = HEAP32[7827]|0;
+ FUNCTION_TABLE_vii[$61 & 63](1,(32572));
+ $62 = HEAP32[7828]|0;
+ $63 = HEAP32[(32572)>>2]|0;
FUNCTION_TABLE_vi[$62 & 31]($63);
}
- _glGenBuffers(1,((32416)|0));
- $64 = HEAP32[(32416)>>2]|0;
+ _glGenBuffers(1,((32576)|0));
+ $64 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($64|0));
- $65 = HEAP32[(32396)>>2]|0;
+ $65 = HEAP32[(32556)>>2]|0;
_glBufferData(34962,73728,($65|0),35048);
- $66 = HEAP32[(31236)>>2]|0;
+ $66 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($66|0));
- $67 = HEAP32[(31236)>>2]|0;
+ $67 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($67|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32420)|0));
- $68 = HEAP32[(32420)>>2]|0;
+ _glGenBuffers(1,((32580)|0));
+ $68 = HEAP32[(32580)>>2]|0;
_glBindBuffer(34962,($68|0));
- $69 = HEAP32[(32404)>>2]|0;
+ $69 = HEAP32[(32564)>>2]|0;
_glBufferData(34962,24576,($69|0),35048);
- $70 = HEAP32[(31256)>>2]|0;
+ $70 = HEAP32[(31416)>>2]|0;
_glEnableVertexAttribArray(($70|0));
- $71 = HEAP32[(31256)>>2]|0;
+ $71 = HEAP32[(31416)>>2]|0;
_glVertexAttribPointer(($71|0),4,5121,1,0,(0|0));
- $72 = HEAP32[7786]|0;
+ $72 = HEAP32[7826]|0;
$73 = ($72|0)==(0);
if ($73) {
- $75 = HEAP32[(32416)>>2]|0;
- $76 = HEAP32[(32420)>>2]|0;
+ $75 = HEAP32[(32576)>>2]|0;
+ $76 = HEAP32[(32580)>>2]|0;
HEAP32[$vararg_buffer10>>2] = $75;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $76;
- _TraceLog(0,6173,$vararg_buffer10);
+ _TraceLog(0,5941,$vararg_buffer10);
} else {
- $74 = HEAP32[(32412)>>2]|0;
+ $74 = HEAP32[(32572)>>2]|0;
HEAP32[$vararg_buffer7>>2] = $74;
- _TraceLog(0,6104,$vararg_buffer7);
+ _TraceLog(0,5872,$vararg_buffer7);
}
- $77 = HEAP32[7786]|0;
+ $77 = HEAP32[7826]|0;
$78 = ($77|0)==(0);
if (!($78)) {
- $79 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$79 & 63](1,(32460));
- $80 = HEAP32[7788]|0;
- $81 = HEAP32[(32460)>>2]|0;
+ $79 = HEAP32[7827]|0;
+ FUNCTION_TABLE_vii[$79 & 63](1,(32620));
+ $80 = HEAP32[7828]|0;
+ $81 = HEAP32[(32620)>>2]|0;
FUNCTION_TABLE_vi[$80 & 31]($81);
}
- _glGenBuffers(1,((32464)|0));
- $82 = HEAP32[(32464)>>2]|0;
+ _glGenBuffers(1,((32624)|0));
+ $82 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($82|0));
- $83 = HEAP32[(32444)>>2]|0;
+ $83 = HEAP32[(32604)>>2]|0;
_glBufferData(34962,49152,($83|0),35048);
- $84 = HEAP32[(31236)>>2]|0;
+ $84 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($84|0));
- $85 = HEAP32[(31236)>>2]|0;
+ $85 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($85|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32468)|0));
- $86 = HEAP32[(32468)>>2]|0;
+ _glGenBuffers(1,((32628)|0));
+ $86 = HEAP32[(32628)>>2]|0;
_glBindBuffer(34962,($86|0));
- $87 = HEAP32[(32448)>>2]|0;
+ $87 = HEAP32[(32608)>>2]|0;
_glBufferData(34962,32768,($87|0),35048);
- $88 = HEAP32[(31240)>>2]|0;
+ $88 = HEAP32[(31400)>>2]|0;
_glEnableVertexAttribArray(($88|0));
- $89 = HEAP32[(31240)>>2]|0;
+ $89 = HEAP32[(31400)>>2]|0;
_glVertexAttribPointer(($89|0),2,5126,0,0,(0|0));
- _glGenBuffers(1,((32472)|0));
- $90 = HEAP32[(32472)>>2]|0;
+ _glGenBuffers(1,((32632)|0));
+ $90 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($90|0));
- $91 = HEAP32[(32452)>>2]|0;
+ $91 = HEAP32[(32612)>>2]|0;
_glBufferData(34962,16384,($91|0),35048);
- $92 = HEAP32[(31256)>>2]|0;
+ $92 = HEAP32[(31416)>>2]|0;
_glEnableVertexAttribArray(($92|0));
- $93 = HEAP32[(31256)>>2]|0;
+ $93 = HEAP32[(31416)>>2]|0;
_glVertexAttribPointer(($93|0),4,5121,1,0,(0|0));
- _glGenBuffers(1,((32476)|0));
- $94 = HEAP32[(32476)>>2]|0;
+ _glGenBuffers(1,((32636)|0));
+ $94 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34963,($94|0));
- $95 = HEAP32[(32456)>>2]|0;
+ $95 = HEAP32[(32616)>>2]|0;
_glBufferData(34963,12288,($95|0),35044);
- $96 = HEAP32[7786]|0;
+ $96 = HEAP32[7826]|0;
$97 = ($96|0)==(0);
if ($97) {
- $99 = HEAP32[(32464)>>2]|0;
- $100 = HEAP32[(32468)>>2]|0;
- $101 = HEAP32[(32472)>>2]|0;
- $102 = HEAP32[(32476)>>2]|0;
+ $99 = HEAP32[(32624)>>2]|0;
+ $100 = HEAP32[(32628)>>2]|0;
+ $101 = HEAP32[(32632)>>2]|0;
+ $102 = HEAP32[(32636)>>2]|0;
HEAP32[$vararg_buffer17>>2] = $99;
$vararg_ptr20 = ((($vararg_buffer17)) + 4|0);
HEAP32[$vararg_ptr20>>2] = $100;
@@ -15168,18 +19414,18 @@ function _LoadDefaultBuffers() {
HEAP32[$vararg_ptr21>>2] = $101;
$vararg_ptr22 = ((($vararg_buffer17)) + 12|0);
HEAP32[$vararg_ptr22>>2] = $102;
- _TraceLog(0,6319,$vararg_buffer17);
+ _TraceLog(0,6087,$vararg_buffer17);
} else {
- $98 = HEAP32[(32460)>>2]|0;
+ $98 = HEAP32[(32620)>>2]|0;
HEAP32[$vararg_buffer14>>2] = $98;
- _TraceLog(0,6254,$vararg_buffer14);
+ _TraceLog(0,6022,$vararg_buffer14);
}
- $103 = HEAP32[7786]|0;
+ $103 = HEAP32[7826]|0;
$104 = ($103|0)==(0);
if ($104) {
STACKTOP = sp;return;
}
- $105 = HEAP32[7788]|0;
+ $105 = HEAP32[7828]|0;
FUNCTION_TABLE_vi[$105 & 31](0);
STACKTOP = sp;return;
}
@@ -15216,10 +19462,10 @@ function _LoadShaderProgram($0,$1) {
$9 = ($8|0)==(1);
if ($9) {
HEAP32[$vararg_buffer4>>2] = $6;
- _TraceLog(0,7652,$vararg_buffer4);
+ _TraceLog(0,7420,$vararg_buffer4);
} else {
HEAP32[$vararg_buffer>>2] = $6;
- _TraceLog(2,7600,$vararg_buffer);
+ _TraceLog(2,7368,$vararg_buffer);
HEAP32[$vararg_buffer>>2] = 0;
_glGetShaderiv(($6|0),35716,($vararg_buffer|0));
$10 = HEAP32[$vararg_buffer>>2]|0;
@@ -15229,7 +19475,7 @@ function _LoadShaderProgram($0,$1) {
$13 = HEAP32[$vararg_buffer>>2]|0;
_glGetShaderInfoLog(($6|0),($13|0),($5|0),($12|0));
HEAP32[$vararg_buffer1>>2] = $12;
- _TraceLog(0,7649,$vararg_buffer1);
+ _TraceLog(0,7417,$vararg_buffer1);
_llvm_stackrestore(($11|0));
}
_glCompileShader(($7|0));
@@ -15238,10 +19484,10 @@ function _LoadShaderProgram($0,$1) {
$15 = ($14|0)==(1);
if ($15) {
HEAP32[$vararg_buffer13>>2] = $7;
- _TraceLog(0,7753,$vararg_buffer13);
+ _TraceLog(0,7521,$vararg_buffer13);
} else {
HEAP32[$vararg_buffer7>>2] = $7;
- _TraceLog(2,7702,$vararg_buffer7);
+ _TraceLog(2,7470,$vararg_buffer7);
HEAP32[$vararg_buffer7>>2] = 0;
_glGetShaderiv(($7|0),35716,($vararg_buffer7|0));
$16 = HEAP32[$vararg_buffer7>>2]|0;
@@ -15251,25 +19497,25 @@ function _LoadShaderProgram($0,$1) {
$19 = HEAP32[$vararg_buffer7>>2]|0;
_glGetShaderInfoLog(($7|0),($19|0),($5|0),($18|0));
HEAP32[$vararg_buffer10>>2] = $18;
- _TraceLog(0,7649,$vararg_buffer10);
+ _TraceLog(0,7417,$vararg_buffer10);
_llvm_stackrestore(($17|0));
}
$20 = (_glCreateProgram()|0);
_glAttachShader(($20|0),($6|0));
_glAttachShader(($20|0),($7|0));
- _glBindAttribLocation(($20|0),0,(7444|0));
- _glBindAttribLocation(($20|0),1,(7459|0));
- _glBindAttribLocation(($20|0),2,(7490|0));
- _glBindAttribLocation(($20|0),3,(7517|0));
- _glBindAttribLocation(($20|0),4,(7503|0));
- _glBindAttribLocation(($20|0),5,(7474|0));
+ _glBindAttribLocation(($20|0),0,(7212|0));
+ _glBindAttribLocation(($20|0),1,(7227|0));
+ _glBindAttribLocation(($20|0),2,(7258|0));
+ _glBindAttribLocation(($20|0),3,(7285|0));
+ _glBindAttribLocation(($20|0),4,(7271|0));
+ _glBindAttribLocation(($20|0),5,(7242|0));
_glLinkProgram(($20|0));
_glGetProgramiv(($20|0),35714,($4|0));
$21 = HEAP32[$4>>2]|0;
$22 = ($21|0)==(0);
if ($22) {
HEAP32[$vararg_buffer16>>2] = $20;
- _TraceLog(2,7805,$vararg_buffer16);
+ _TraceLog(2,7573,$vararg_buffer16);
HEAP32[$vararg_buffer16>>2] = 0;
_glGetProgramiv(($20|0),35716,($vararg_buffer16|0));
$23 = HEAP32[$vararg_buffer16>>2]|0;
@@ -15279,7 +19525,7 @@ function _LoadShaderProgram($0,$1) {
$26 = HEAP32[$vararg_buffer16>>2]|0;
_glGetProgramInfoLog(($20|0),($26|0),($5|0),($25|0));
HEAP32[$vararg_buffer19>>2] = $25;
- _TraceLog(0,7649,$vararg_buffer19);
+ _TraceLog(0,7417,$vararg_buffer19);
_glDeleteProgram(($20|0));
_llvm_stackrestore(($24|0));
$$0 = 0;
@@ -15288,7 +19534,7 @@ function _LoadShaderProgram($0,$1) {
STACKTOP = sp;return ($$0|0);
} else {
HEAP32[$vararg_buffer22>>2] = $20;
- _TraceLog(0,7851,$vararg_buffer22);
+ _TraceLog(0,7619,$vararg_buffer22);
$$0 = $20;
_glDeleteShader(($6|0));
_glDeleteShader(($7|0));
@@ -15303,55 +19549,55 @@ function _LoadDefaultShaderLocations($0) {
var sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- $2 = (_glGetAttribLocation(($1|0),(7444|0))|0);
+ $2 = (_glGetAttribLocation(($1|0),(7212|0))|0);
$3 = ((($0)) + 4|0);
HEAP32[$3>>2] = $2;
$4 = HEAP32[$0>>2]|0;
- $5 = (_glGetAttribLocation(($4|0),(7459|0))|0);
+ $5 = (_glGetAttribLocation(($4|0),(7227|0))|0);
$6 = ((($0)) + 8|0);
HEAP32[$6>>2] = $5;
$7 = HEAP32[$0>>2]|0;
- $8 = (_glGetAttribLocation(($7|0),(7474|0))|0);
+ $8 = (_glGetAttribLocation(($7|0),(7242|0))|0);
$9 = ((($0)) + 12|0);
HEAP32[$9>>2] = $8;
$10 = HEAP32[$0>>2]|0;
- $11 = (_glGetAttribLocation(($10|0),(7490|0))|0);
+ $11 = (_glGetAttribLocation(($10|0),(7258|0))|0);
$12 = ((($0)) + 16|0);
HEAP32[$12>>2] = $11;
$13 = HEAP32[$0>>2]|0;
- $14 = (_glGetAttribLocation(($13|0),(7503|0))|0);
+ $14 = (_glGetAttribLocation(($13|0),(7271|0))|0);
$15 = ((($0)) + 20|0);
HEAP32[$15>>2] = $14;
$16 = HEAP32[$0>>2]|0;
- $17 = (_glGetAttribLocation(($16|0),(7517|0))|0);
+ $17 = (_glGetAttribLocation(($16|0),(7285|0))|0);
$18 = ((($0)) + 24|0);
HEAP32[$18>>2] = $17;
$19 = HEAP32[$0>>2]|0;
- $20 = (_glGetUniformLocation(($19|0),(7529|0))|0);
+ $20 = (_glGetUniformLocation(($19|0),(7297|0))|0);
$21 = ((($0)) + 28|0);
HEAP32[$21>>2] = $20;
$22 = HEAP32[$0>>2]|0;
- $23 = (_glGetUniformLocation(($22|0),(7539|0))|0);
+ $23 = (_glGetUniformLocation(($22|0),(7307|0))|0);
$24 = ((($0)) + 32|0);
HEAP32[$24>>2] = $23;
$25 = HEAP32[$0>>2]|0;
- $26 = (_glGetUniformLocation(($25|0),(7550|0))|0);
+ $26 = (_glGetUniformLocation(($25|0),(7318|0))|0);
$27 = ((($0)) + 36|0);
HEAP32[$27>>2] = $26;
$28 = HEAP32[$0>>2]|0;
- $29 = (_glGetUniformLocation(($28|0),(7561|0))|0);
+ $29 = (_glGetUniformLocation(($28|0),(7329|0))|0);
$30 = ((($0)) + 40|0);
HEAP32[$30>>2] = $29;
$31 = HEAP32[$0>>2]|0;
- $32 = (_glGetUniformLocation(($31|0),(7573|0))|0);
+ $32 = (_glGetUniformLocation(($31|0),(7341|0))|0);
$33 = ((($0)) + 44|0);
HEAP32[$33>>2] = $32;
$34 = HEAP32[$0>>2]|0;
- $35 = (_glGetUniformLocation(($34|0),(7582|0))|0);
+ $35 = (_glGetUniformLocation(($34|0),(7350|0))|0);
$36 = ((($0)) + 48|0);
HEAP32[$36>>2] = $35;
$37 = HEAP32[$0>>2]|0;
- $38 = (_glGetUniformLocation(($37|0),(7591|0))|0);
+ $38 = (_glGetUniformLocation(($37|0),(7359|0))|0);
$39 = ((($0)) + 52|0);
HEAP32[$39>>2] = $38;
return;
@@ -15360,9 +19606,9 @@ function _IsMouseButtonPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33641 + ($0)|0);
+ $1 = (35953 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33644 + ($0)|0);
+ $3 = (35956 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -15374,9 +19620,9 @@ function _IsMouseButtonReleased($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33641 + ($0)|0);
+ $1 = (35953 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33644 + ($0)|0);
+ $3 = (35956 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(0);
@@ -15397,10 +19643,10 @@ function _CloseWindow() {
$vararg_buffer = sp;
_UnloadDefaultFont();
_rlglClose();
- $0 = HEAP32[7705]|0;
+ $0 = HEAP32[7745]|0;
_glfwDestroyWindow(($0|0));
_glfwTerminate();
- _TraceLog(0,8163,$vararg_buffer);
+ _TraceLog(0,7931,$vararg_buffer);
STACKTOP = sp;return;
}
function _UnloadDefaultFont() {
@@ -15408,9 +19654,9 @@ function _UnloadDefaultFont() {
sp = STACKTOP;
STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
$$byval_copy = sp;
- ;HEAP32[$$byval_copy>>2]=HEAP32[30860>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[30860+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[30860+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[30860+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[30860+16>>2]|0;
+ ;HEAP32[$$byval_copy>>2]=HEAP32[31020>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[31020+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[31020+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[31020+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[31020+16>>2]|0;
_UnloadTexture($$byval_copy);
- $0 = HEAP32[(30888)>>2]|0;
+ $0 = HEAP32[(31048)>>2]|0;
_free($0);
STACKTOP = sp;return;
}
@@ -15421,11 +19667,11 @@ function _rlglClose() {
$vararg_buffer = sp;
_UnloadDefaultShader();
_UnloadDefaultBuffers();
- _glDeleteTextures(1,(31172|0));
- $0 = HEAP32[7793]|0;
+ _glDeleteTextures(1,(31332|0));
+ $0 = HEAP32[7833]|0;
HEAP32[$vararg_buffer>>2] = $0;
- _TraceLog(0,8190,$vararg_buffer);
- $1 = HEAP32[7823]|0;
+ _TraceLog(0,7958,$vararg_buffer);
+ $1 = HEAP32[7863]|0;
_free($1);
STACKTOP = sp;return;
}
@@ -15433,17 +19679,17 @@ function _UnloadDefaultShader() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
_glUseProgram(0);
- $0 = HEAP32[7794]|0;
+ $0 = HEAP32[7834]|0;
_glDeleteProgram(($0|0));
return;
}
function _UnloadDefaultBuffers() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7786]|0;
+ $0 = HEAP32[7826]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[7788]|0;
+ $2 = HEAP32[7828]|0;
FUNCTION_TABLE_vi[$2 & 31](0);
}
_glDisableVertexAttribArray(0);
@@ -15452,39 +19698,39 @@ function _UnloadDefaultBuffers() {
_glDisableVertexAttribArray(3);
_glBindBuffer(34962,0);
_glBindBuffer(34963,0);
- _glDeleteBuffers(1,((32368)|0));
- _glDeleteBuffers(1,((32372)|0));
- _glDeleteBuffers(1,((32416)|0));
- _glDeleteBuffers(1,((32420)|0));
- _glDeleteBuffers(1,((32464)|0));
- _glDeleteBuffers(1,((32468)|0));
- _glDeleteBuffers(1,((32472)|0));
- _glDeleteBuffers(1,((32476)|0));
- $3 = HEAP32[7786]|0;
+ _glDeleteBuffers(1,((32528)|0));
+ _glDeleteBuffers(1,((32532)|0));
+ _glDeleteBuffers(1,((32576)|0));
+ _glDeleteBuffers(1,((32580)|0));
+ _glDeleteBuffers(1,((32624)|0));
+ _glDeleteBuffers(1,((32628)|0));
+ _glDeleteBuffers(1,((32632)|0));
+ _glDeleteBuffers(1,((32636)|0));
+ $3 = HEAP32[7826]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7789]|0;
- FUNCTION_TABLE_vii[$5 & 63](1,(32364));
- $6 = HEAP32[7789]|0;
- FUNCTION_TABLE_vii[$6 & 63](1,(32412));
- $7 = HEAP32[7789]|0;
- FUNCTION_TABLE_vii[$7 & 63](1,(32460));
- }
- $8 = HEAP32[(32348)>>2]|0;
+ $5 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$5 & 63](1,(32524));
+ $6 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$6 & 63](1,(32572));
+ $7 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$7 & 63](1,(32620));
+ }
+ $8 = HEAP32[(32508)>>2]|0;
_free($8);
- $9 = HEAP32[(32356)>>2]|0;
+ $9 = HEAP32[(32516)>>2]|0;
_free($9);
- $10 = HEAP32[(32396)>>2]|0;
+ $10 = HEAP32[(32556)>>2]|0;
_free($10);
- $11 = HEAP32[(32404)>>2]|0;
+ $11 = HEAP32[(32564)>>2]|0;
_free($11);
- $12 = HEAP32[(32444)>>2]|0;
+ $12 = HEAP32[(32604)>>2]|0;
_free($12);
- $13 = HEAP32[(32448)>>2]|0;
+ $13 = HEAP32[(32608)>>2]|0;
_free($13);
- $14 = HEAP32[(32452)>>2]|0;
+ $14 = HEAP32[(32612)>>2]|0;
_free($14);
- $15 = HEAP32[(32456)>>2]|0;
+ $15 = HEAP32[(32616)>>2]|0;
_free($15);
return;
}
@@ -15502,7 +19748,7 @@ function _UnloadTexture($0) {
_rlDeleteTextures($1);
$3 = HEAP32[$0>>2]|0;
HEAP32[$vararg_buffer>>2] = $3;
- _TraceLog(0,8255,$vararg_buffer);
+ _TraceLog(0,8023,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlDeleteTextures($0) {
@@ -15518,41 +19764,22 @@ function _rlDeleteTextures($0) {
}
STACKTOP = sp;return;
}
-function _WindowShouldClose() {
- var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
- sp = STACKTOP;
- $0 = HEAP32[8120]|0;
- $1 = ($0|0)==(0);
- if (!($1)) {
- while(1) {
- _glfwWaitEvents();
- $2 = HEAP32[8120]|0;
- $3 = ($2|0)==(0);
- if ($3) {
- break;
- }
- }
- }
- $4 = HEAP32[7705]|0;
- $5 = (_glfwWindowShouldClose(($4|0))|0);
- return ($5|0);
-}
function _BeginDrawing() {
var $0 = 0.0, $1 = 0.0, $2 = 0.0, $downscaleView$byval_copy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$downscaleView$byval_copy = sp;
$0 = (+_GetTime());
- HEAPF64[1760] = $0;
- $1 = +HEAPF64[1743];
+ HEAPF64[1779] = $0;
+ $1 = +HEAPF64[1762];
$2 = $0 - $1;
- HEAPF64[1761] = $2;
- HEAPF64[1743] = $0;
+ HEAPF64[1780] = $2;
+ HEAPF64[1762] = $0;
_rlClearScreenBuffers();
_rlLoadIdentity();
- dest=$downscaleView$byval_copy; src=30916; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$downscaleView$byval_copy; src=31076; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_MatrixToFloat($downscaleView$byval_copy)|0);
- _rlMultMatrixf(32488);
+ _rlMultMatrixf(32648);
STACKTOP = sp;return;
}
function _MatrixToFloat($0) {
@@ -15561,53 +19788,53 @@ function _MatrixToFloat($0) {
var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- HEAP32[8122] = $1;
+ HEAP32[8162] = $1;
$2 = ((($0)) + 4|0);
$3 = HEAP32[$2>>2]|0;
- HEAP32[(32492)>>2] = $3;
+ HEAP32[(32652)>>2] = $3;
$4 = ((($0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
- HEAP32[(32496)>>2] = $5;
+ HEAP32[(32656)>>2] = $5;
$6 = ((($0)) + 12|0);
$7 = HEAP32[$6>>2]|0;
- HEAP32[(32500)>>2] = $7;
+ HEAP32[(32660)>>2] = $7;
$8 = ((($0)) + 16|0);
$9 = HEAP32[$8>>2]|0;
- HEAP32[(32504)>>2] = $9;
+ HEAP32[(32664)>>2] = $9;
$10 = ((($0)) + 20|0);
$11 = HEAP32[$10>>2]|0;
- HEAP32[(32508)>>2] = $11;
+ HEAP32[(32668)>>2] = $11;
$12 = ((($0)) + 24|0);
$13 = HEAP32[$12>>2]|0;
- HEAP32[(32512)>>2] = $13;
+ HEAP32[(32672)>>2] = $13;
$14 = ((($0)) + 28|0);
$15 = HEAP32[$14>>2]|0;
- HEAP32[(32516)>>2] = $15;
+ HEAP32[(32676)>>2] = $15;
$16 = ((($0)) + 32|0);
$17 = HEAP32[$16>>2]|0;
- HEAP32[(32520)>>2] = $17;
+ HEAP32[(32680)>>2] = $17;
$18 = ((($0)) + 36|0);
$19 = HEAP32[$18>>2]|0;
- HEAP32[(32524)>>2] = $19;
+ HEAP32[(32684)>>2] = $19;
$20 = ((($0)) + 40|0);
$21 = HEAP32[$20>>2]|0;
- HEAP32[(32528)>>2] = $21;
+ HEAP32[(32688)>>2] = $21;
$22 = ((($0)) + 44|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(32532)>>2] = $23;
+ HEAP32[(32692)>>2] = $23;
$24 = ((($0)) + 48|0);
$25 = HEAP32[$24>>2]|0;
- HEAP32[(32536)>>2] = $25;
+ HEAP32[(32696)>>2] = $25;
$26 = ((($0)) + 52|0);
$27 = HEAP32[$26>>2]|0;
- HEAP32[(32540)>>2] = $27;
+ HEAP32[(32700)>>2] = $27;
$28 = ((($0)) + 56|0);
$29 = HEAP32[$28>>2]|0;
- HEAP32[(32544)>>2] = $29;
+ HEAP32[(32704)>>2] = $29;
$30 = ((($0)) + 60|0);
$31 = HEAP32[$30>>2]|0;
- HEAP32[(32548)>>2] = $31;
- return (32488|0);
+ HEAP32[(32708)>>2] = $31;
+ return (32648|0);
}
function _rlMultMatrixf($0) {
$0 = $0|0;
@@ -15682,7 +19909,7 @@ function _rlMultMatrixf($0) {
$47 = ((($0)) + 60|0);
$48 = HEAP32[$47>>2]|0;
HEAP32[$46>>2] = $48;
- $49 = HEAP32[7752]|0;
+ $49 = HEAP32[7792]|0;
dest=$$byval_copy; src=$49; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$$byval_copy,$$byval_copy1);
@@ -15696,15 +19923,15 @@ function _EndDrawing() {
_SwapBuffers();
_PollInputEvents();
$0 = (+_GetTime());
- HEAPF64[1760] = $0;
- $1 = +HEAPF64[1743];
+ HEAPF64[1779] = $0;
+ $1 = +HEAPF64[1762];
$2 = $0 - $1;
- HEAPF64[1762] = $2;
- HEAPF64[1743] = $0;
- $3 = +HEAPF64[1761];
+ HEAPF64[1781] = $2;
+ HEAPF64[1762] = $0;
+ $3 = +HEAPF64[1780];
$4 = $2 + $3;
- HEAPF64[1763] = $4;
- $5 = +HEAPF64[1740];
+ HEAPF64[1782] = $4;
+ $5 = +HEAPF64[1759];
$6 = $4 < $5;
if (!($6)) {
return;
@@ -15714,13 +19941,13 @@ function _EndDrawing() {
$9 = $8;
_Wait($9);
$10 = (+_GetTime());
- HEAPF64[1760] = $10;
- $11 = +HEAPF64[1743];
+ HEAPF64[1779] = $10;
+ $11 = +HEAPF64[1762];
$12 = $10 - $11;
- HEAPF64[1743] = $10;
- $13 = +HEAPF64[1763];
+ HEAPF64[1762] = $10;
+ $13 = +HEAPF64[1782];
$14 = $12 + $13;
- HEAPF64[1763] = $14;
+ HEAPF64[1782] = $14;
return;
}
function _rlglDraw() {
@@ -15733,7 +19960,7 @@ function _rlglDraw() {
function _SwapBuffers() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7705]|0;
+ $0 = HEAP32[7745]|0;
_glfwSwapBuffers(($0|0));
return;
}
@@ -15747,22 +19974,22 @@ function _PollInputEvents() {
$1 = sp + 1432|0;
$2 = sp;
_UpdateGestures();
- HEAP32[740] = -1;
- HEAP32[742] = -1;
- HEAP32[8138] = 0;
- $3 = HEAP32[7705]|0;
+ HEAP32[743] = -1;
+ HEAP32[745] = -1;
+ HEAP32[8178] = 0;
+ $3 = HEAP32[7745]|0;
_glfwGetCursorPos(($3|0),($0|0),($1|0));
$4 = +HEAPF64[$0>>3];
$5 = $4;
- HEAPF32[3478] = $5;
+ HEAPF32[3516] = $5;
$6 = +HEAPF64[$1>>3];
$7 = $6;
- HEAPF32[(13916)>>2] = $7;
- _memcpy((34159|0),(33647|0),512)|0;
- ;HEAP8[33644>>0]=HEAP8[33641>>0]|0;HEAP8[33644+1>>0]=HEAP8[33641+1>>0]|0;HEAP8[33644+2>>0]=HEAP8[33641+2>>0]|0;
- $8 = HEAP32[8121]|0;
- HEAP32[7708] = $8;
- HEAP32[8121] = 0;
+ HEAPF32[(14068)>>2] = $7;
+ _memcpy((36471|0),(35959|0),512)|0;
+ ;HEAP8[35956>>0]=HEAP8[35953>>0]|0;HEAP8[35956+1>>0]=HEAP8[35953+1>>0]|0;HEAP8[35956+2>>0]=HEAP8[35953+2>>0]|0;
+ $8 = HEAP32[8161]|0;
+ HEAP32[7748] = $8;
+ HEAP32[8161] = 0;
$9 = (_emscripten_get_num_gamepads()|0);
$10 = ($9|0)>(0);
if (!($10)) {
@@ -15772,8 +19999,8 @@ function _PollInputEvents() {
$12 = ((($2)) + 8|0);
$$05160 = 0;
while(1) {
- $scevgep = (34671 + ($$05160<<5)|0);
- $scevgep67 = (34799 + ($$05160<<5)|0);
+ $scevgep = (36983 + ($$05160<<5)|0);
+ $scevgep67 = (37111 + ($$05160<<5)|0);
dest=$scevgep; src=$scevgep67; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
$13 = (_emscripten_get_gamepad_status(($$05160|0),($2|0))|0);
$14 = ($13|0)==(0);
@@ -15787,10 +20014,10 @@ function _PollInputEvents() {
$21 = (((($2)) + 1040|0) + ($$04857<<2)|0);
$22 = HEAP32[$21>>2]|0;
$23 = ($22|0)==(1);
- $24 = ((34799 + ($$05160<<5)|0) + ($$04857)|0);
+ $24 = ((37111 + ($$05160<<5)|0) + ($$04857)|0);
if ($23) {
HEAP8[$24>>0] = 1;
- HEAP32[742] = $$04857;
+ HEAP32[745] = $$04857;
} else {
HEAP8[$24>>0] = 0;
}
@@ -15814,7 +20041,7 @@ function _PollInputEvents() {
$29 = (((($2)) + 16|0) + ($$058<<3)|0);
$30 = +HEAPF64[$29>>3];
$31 = $30;
- $32 = ((32556 + ($$05160<<5)|0) + ($$058<<2)|0);
+ $32 = ((32716 + ($$05160<<5)|0) + ($$058<<2)|0);
HEAPF32[$32>>2] = $31;
$33 = (($$058) + 1)|0;
$34 = ($33|0)<($20|0);
@@ -15830,7 +20057,7 @@ function _PollInputEvents() {
} else {
$$lcssa = $18;
}
- HEAP32[8138] = $$lcssa;
+ HEAP32[8178] = $$lcssa;
}
$37 = (($$05160) + 1)|0;
$38 = ($37|0)<($9|0);
@@ -15871,87 +20098,87 @@ function _UpdateDefaultBuffers() {
var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8084]|0;
+ $0 = HEAP32[8124]|0;
$1 = ($0|0)>(0);
if ($1) {
- $2 = HEAP32[7786]|0;
+ $2 = HEAP32[7826]|0;
$3 = ($2|0)==(0);
if (!($3)) {
- $4 = HEAP32[7788]|0;
- $5 = HEAP32[(32364)>>2]|0;
+ $4 = HEAP32[7828]|0;
+ $5 = HEAP32[(32524)>>2]|0;
FUNCTION_TABLE_vi[$4 & 31]($5);
}
- $6 = HEAP32[(32368)>>2]|0;
+ $6 = HEAP32[(32528)>>2]|0;
_glBindBuffer(34962,($6|0));
- $7 = HEAP32[8084]|0;
+ $7 = HEAP32[8124]|0;
$8 = ($7*12)|0;
- $9 = HEAP32[(32348)>>2]|0;
+ $9 = HEAP32[(32508)>>2]|0;
_glBufferSubData(34962,0,($8|0),($9|0));
- $10 = HEAP32[(32372)>>2]|0;
+ $10 = HEAP32[(32532)>>2]|0;
_glBindBuffer(34962,($10|0));
- $11 = HEAP32[(32344)>>2]|0;
+ $11 = HEAP32[(32504)>>2]|0;
$12 = $11 << 2;
- $13 = HEAP32[(32356)>>2]|0;
+ $13 = HEAP32[(32516)>>2]|0;
_glBufferSubData(34962,0,($12|0),($13|0));
}
- $14 = HEAP32[8096]|0;
+ $14 = HEAP32[8136]|0;
$15 = ($14|0)>(0);
if ($15) {
- $16 = HEAP32[7786]|0;
+ $16 = HEAP32[7826]|0;
$17 = ($16|0)==(0);
if (!($17)) {
- $18 = HEAP32[7788]|0;
- $19 = HEAP32[(32412)>>2]|0;
+ $18 = HEAP32[7828]|0;
+ $19 = HEAP32[(32572)>>2]|0;
FUNCTION_TABLE_vi[$18 & 31]($19);
}
- $20 = HEAP32[(32416)>>2]|0;
+ $20 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($20|0));
- $21 = HEAP32[8096]|0;
+ $21 = HEAP32[8136]|0;
$22 = ($21*12)|0;
- $23 = HEAP32[(32396)>>2]|0;
+ $23 = HEAP32[(32556)>>2]|0;
_glBufferSubData(34962,0,($22|0),($23|0));
- $24 = HEAP32[(32420)>>2]|0;
+ $24 = HEAP32[(32580)>>2]|0;
_glBindBuffer(34962,($24|0));
- $25 = HEAP32[(32392)>>2]|0;
+ $25 = HEAP32[(32552)>>2]|0;
$26 = $25 << 2;
- $27 = HEAP32[(32404)>>2]|0;
+ $27 = HEAP32[(32564)>>2]|0;
_glBufferSubData(34962,0,($26|0),($27|0));
}
- $28 = HEAP32[8108]|0;
+ $28 = HEAP32[8148]|0;
$29 = ($28|0)>(0);
if ($29) {
- $30 = HEAP32[7786]|0;
+ $30 = HEAP32[7826]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = HEAP32[7788]|0;
- $33 = HEAP32[(32460)>>2]|0;
+ $32 = HEAP32[7828]|0;
+ $33 = HEAP32[(32620)>>2]|0;
FUNCTION_TABLE_vi[$32 & 31]($33);
}
- $34 = HEAP32[(32464)>>2]|0;
+ $34 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($34|0));
- $35 = HEAP32[8108]|0;
+ $35 = HEAP32[8148]|0;
$36 = ($35*12)|0;
- $37 = HEAP32[(32444)>>2]|0;
+ $37 = HEAP32[(32604)>>2]|0;
_glBufferSubData(34962,0,($36|0),($37|0));
- $38 = HEAP32[(32468)>>2]|0;
+ $38 = HEAP32[(32628)>>2]|0;
_glBindBuffer(34962,($38|0));
- $39 = HEAP32[8108]|0;
+ $39 = HEAP32[8148]|0;
$40 = $39 << 3;
- $41 = HEAP32[(32448)>>2]|0;
+ $41 = HEAP32[(32608)>>2]|0;
_glBufferSubData(34962,0,($40|0),($41|0));
- $42 = HEAP32[(32472)>>2]|0;
+ $42 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[8108]|0;
+ $43 = HEAP32[8148]|0;
$44 = $43 << 2;
- $45 = HEAP32[(32452)>>2]|0;
+ $45 = HEAP32[(32612)>>2]|0;
_glBufferSubData(34962,0,($44|0),($45|0));
}
- $46 = HEAP32[7786]|0;
+ $46 = HEAP32[7826]|0;
$47 = ($46|0)==(0);
if ($47) {
return;
}
- $48 = HEAP32[7788]|0;
+ $48 = HEAP32[7828]|0;
FUNCTION_TABLE_vi[$48 & 31](0);
return;
}
@@ -15969,9 +20196,9 @@ function _DrawDefaultBuffers() {
$0 = sp + 128|0;
$1 = sp + 64|0;
$2 = sp;
- dest=$0; src=31012; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$1; src=31076; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $3 = HEAP32[8171]|0;
+ dest=$0; src=31172; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$1; src=31236; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ $3 = HEAP32[8211]|0;
$4 = ($3|0)!=(0);
$$ = $4 ? 2 : 1;
$$02932 = 0;
@@ -15981,134 +20208,134 @@ function _DrawDefaultBuffers() {
dest=$$byval_copy2; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetStereoView($$02932,$modelview$byval_copy,$$byval_copy2);
}
- $8 = HEAP32[8084]|0;
+ $8 = HEAP32[8124]|0;
$9 = ($8|0)>(0);
- $10 = HEAP32[8096]|0;
+ $10 = HEAP32[8136]|0;
$11 = ($10|0)>(0);
$or$cond = $9 | $11;
- $12 = HEAP32[8108]|0;
+ $12 = HEAP32[8148]|0;
$13 = ($12|0)>(0);
$or$cond3 = $or$cond | $13;
if ($or$cond3) {
- $14 = HEAP32[7808]|0;
+ $14 = HEAP32[7848]|0;
_glUseProgram(($14|0));
- dest=$modelview$byval_copy; src=31076; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$$byval_copy2; src=31012; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$modelview$byval_copy; src=31236; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$$byval_copy2; src=31172; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$modelview$byval_copy,$$byval_copy2);
- $15 = HEAP32[(31260)>>2]|0;
+ $15 = HEAP32[(31420)>>2]|0;
dest=$$byval_copy2; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$16 = (_MatrixToFloat($$byval_copy2)|0);
_glUniformMatrix4fv(($15|0),1,0,($16|0));
- $17 = HEAP32[(31264)>>2]|0;
+ $17 = HEAP32[(31424)>>2]|0;
_glUniform4f(($17|0),1.0,1.0,1.0,1.0);
- $18 = HEAP32[(31276)>>2]|0;
+ $18 = HEAP32[(31436)>>2]|0;
_glUniform1i(($18|0),0);
}
- $19 = HEAP32[8084]|0;
+ $19 = HEAP32[8124]|0;
$20 = ($19|0)>(0);
if ($20) {
- $21 = HEAP32[7793]|0;
+ $21 = HEAP32[7833]|0;
_glBindTexture(3553,($21|0));
- $22 = HEAP32[7786]|0;
+ $22 = HEAP32[7826]|0;
$23 = ($22|0)==(0);
if ($23) {
- $26 = HEAP32[(32368)>>2]|0;
+ $26 = HEAP32[(32528)>>2]|0;
_glBindBuffer(34962,($26|0));
- $27 = HEAP32[(31236)>>2]|0;
+ $27 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($27|0),3,5126,0,0,(0|0));
- $28 = HEAP32[(31236)>>2]|0;
+ $28 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($28|0));
- $29 = HEAP32[(32372)>>2]|0;
+ $29 = HEAP32[(32532)>>2]|0;
_glBindBuffer(34962,($29|0));
- $30 = HEAP32[(31256)>>2]|0;
+ $30 = HEAP32[(31416)>>2]|0;
_glVertexAttribPointer(($30|0),4,5121,1,0,(0|0));
- $31 = HEAP32[(31256)>>2]|0;
+ $31 = HEAP32[(31416)>>2]|0;
_glEnableVertexAttribArray(($31|0));
} else {
- $24 = HEAP32[7788]|0;
- $25 = HEAP32[(32364)>>2]|0;
+ $24 = HEAP32[7828]|0;
+ $25 = HEAP32[(32524)>>2]|0;
FUNCTION_TABLE_vi[$24 & 31]($25);
}
- $32 = HEAP32[8084]|0;
+ $32 = HEAP32[8124]|0;
_glDrawArrays(1,0,($32|0));
- $33 = HEAP32[7786]|0;
+ $33 = HEAP32[7826]|0;
$34 = ($33|0)==(0);
if ($34) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $35 = HEAP32[8096]|0;
+ $35 = HEAP32[8136]|0;
$36 = ($35|0)>(0);
if ($36) {
- $37 = HEAP32[7793]|0;
+ $37 = HEAP32[7833]|0;
_glBindTexture(3553,($37|0));
- $38 = HEAP32[7786]|0;
+ $38 = HEAP32[7826]|0;
$39 = ($38|0)==(0);
if ($39) {
- $42 = HEAP32[(32416)>>2]|0;
+ $42 = HEAP32[(32576)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[(31236)>>2]|0;
+ $43 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($43|0),3,5126,0,0,(0|0));
- $44 = HEAP32[(31236)>>2]|0;
+ $44 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($44|0));
- $45 = HEAP32[(32420)>>2]|0;
+ $45 = HEAP32[(32580)>>2]|0;
_glBindBuffer(34962,($45|0));
- $46 = HEAP32[(31256)>>2]|0;
+ $46 = HEAP32[(31416)>>2]|0;
_glVertexAttribPointer(($46|0),4,5121,1,0,(0|0));
- $47 = HEAP32[(31256)>>2]|0;
+ $47 = HEAP32[(31416)>>2]|0;
_glEnableVertexAttribArray(($47|0));
} else {
- $40 = HEAP32[7788]|0;
- $41 = HEAP32[(32412)>>2]|0;
+ $40 = HEAP32[7828]|0;
+ $41 = HEAP32[(32572)>>2]|0;
FUNCTION_TABLE_vi[$40 & 31]($41);
}
- $48 = HEAP32[8096]|0;
+ $48 = HEAP32[8136]|0;
_glDrawArrays(4,0,($48|0));
- $49 = HEAP32[7786]|0;
+ $49 = HEAP32[7826]|0;
$50 = ($49|0)==(0);
if ($50) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $51 = HEAP32[8108]|0;
+ $51 = HEAP32[8148]|0;
$52 = ($51|0)>(0);
if ($52) {
- $53 = HEAP32[7786]|0;
+ $53 = HEAP32[7826]|0;
$54 = ($53|0)==(0);
if ($54) {
- $57 = HEAP32[(32464)>>2]|0;
+ $57 = HEAP32[(32624)>>2]|0;
_glBindBuffer(34962,($57|0));
- $58 = HEAP32[(31236)>>2]|0;
+ $58 = HEAP32[(31396)>>2]|0;
_glVertexAttribPointer(($58|0),3,5126,0,0,(0|0));
- $59 = HEAP32[(31236)>>2]|0;
+ $59 = HEAP32[(31396)>>2]|0;
_glEnableVertexAttribArray(($59|0));
- $60 = HEAP32[(32468)>>2]|0;
+ $60 = HEAP32[(32628)>>2]|0;
_glBindBuffer(34962,($60|0));
- $61 = HEAP32[(31240)>>2]|0;
+ $61 = HEAP32[(31400)>>2]|0;
_glVertexAttribPointer(($61|0),2,5126,0,0,(0|0));
- $62 = HEAP32[(31240)>>2]|0;
+ $62 = HEAP32[(31400)>>2]|0;
_glEnableVertexAttribArray(($62|0));
- $63 = HEAP32[(32472)>>2]|0;
+ $63 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($63|0));
- $64 = HEAP32[(31256)>>2]|0;
+ $64 = HEAP32[(31416)>>2]|0;
_glVertexAttribPointer(($64|0),4,5121,1,0,(0|0));
- $65 = HEAP32[(31256)>>2]|0;
+ $65 = HEAP32[(31416)>>2]|0;
_glEnableVertexAttribArray(($65|0));
- $66 = HEAP32[(32476)>>2]|0;
+ $66 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34963,($66|0));
} else {
- $55 = HEAP32[7788]|0;
- $56 = HEAP32[(32460)>>2]|0;
+ $55 = HEAP32[7828]|0;
+ $56 = HEAP32[(32620)>>2]|0;
FUNCTION_TABLE_vi[$55 & 31]($56);
}
- $67 = HEAP32[7824]|0;
+ $67 = HEAP32[7864]|0;
$68 = ($67|0)>(0);
if ($68) {
$$02830 = 0;$$031 = 0;
while(1) {
- $71 = HEAP32[7823]|0;
+ $71 = HEAP32[7863]|0;
$72 = (($71) + (($$031*144)|0)|0);
$73 = HEAP32[$72>>2]|0;
$74 = (($73|0) / 4)&-1;
@@ -16119,14 +20346,14 @@ function _DrawDefaultBuffers() {
$78 = $$02830 << 1;
$79 = $78;
_glDrawElements(4,($75|0),5123,($79|0));
- $80 = HEAP32[7823]|0;
+ $80 = HEAP32[7863]|0;
$81 = (($80) + (($$031*144)|0)|0);
$82 = HEAP32[$81>>2]|0;
$83 = (($82|0) / 4)&-1;
$84 = ($83*6)|0;
$85 = (($84) + ($$02830))|0;
$86 = (($$031) + 1)|0;
- $87 = HEAP32[7824]|0;
+ $87 = HEAP32[7864]|0;
$88 = ($86|0)<($87|0);
if ($88) {
$$02830 = $85;$$031 = $86;
@@ -16135,7 +20362,7 @@ function _DrawDefaultBuffers() {
}
}
}
- $69 = HEAP32[7786]|0;
+ $69 = HEAP32[7826]|0;
$70 = ($69|0)==(0);
if ($70) {
_glBindBuffer(34962,0);
@@ -16143,10 +20370,10 @@ function _DrawDefaultBuffers() {
}
_glBindTexture(3553,0);
}
- $89 = HEAP32[7786]|0;
+ $89 = HEAP32[7826]|0;
$90 = ($89|0)==(0);
if (!($90)) {
- $91 = HEAP32[7788]|0;
+ $91 = HEAP32[7828]|0;
FUNCTION_TABLE_vi[$91 & 31](0);
}
_glUseProgram(0);
@@ -16158,22 +20385,22 @@ function _DrawDefaultBuffers() {
break;
}
}
- HEAP32[7824] = 1;
- $5 = HEAP32[7793]|0;
- $6 = HEAP32[7823]|0;
+ HEAP32[7864] = 1;
+ $5 = HEAP32[7833]|0;
+ $6 = HEAP32[7863]|0;
$7 = ((($6)) + 8|0);
HEAP32[$7>>2] = $5;
HEAP32[$6>>2] = 0;
- HEAP32[8084] = 0;
- HEAP32[(32344)>>2] = 0;
- HEAP32[8096] = 0;
- HEAP32[(32392)>>2] = 0;
- HEAP32[8108] = 0;
- HEAP32[(32436)>>2] = 0;
- HEAP32[(32440)>>2] = 0;
- HEAPF32[743] = -1.0;
- dest=31012; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31076; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[8124] = 0;
+ HEAP32[(32504)>>2] = 0;
+ HEAP32[8136] = 0;
+ HEAP32[(32552)>>2] = 0;
+ HEAP32[8148] = 0;
+ HEAP32[(32596)>>2] = 0;
+ HEAP32[(32600)>>2] = 0;
+ HEAPF32[746] = -1.0;
+ dest=31172; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31236; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
}
function _SetStereoView($0,$1,$2) {
@@ -16188,17 +20415,17 @@ function _SetStereoView($0,$1,$2) {
$3 = sp;
$4 = sp + 128|0;
dest=$3; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $5 = HEAP32[8082]|0;
+ $5 = HEAP32[8122]|0;
$6 = Math_imul($5, $0)|0;
$7 = (($6|0) / 2)&-1;
$8 = (($5|0) / 2)&-1;
- $9 = HEAP32[8083]|0;
+ $9 = HEAP32[8123]|0;
_rlViewport($7,0,$8,$9);
- $10 = (32916 + ($0<<6)|0);
+ $10 = (33076 + ($0<<6)|0);
dest=$$byval_copy; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$10; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy3);
- $11 = (32788 + ($0<<6)|0);
+ $11 = (32948 + ($0<<6)|0);
dest=$3; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetMatrixModelview($$byval_copy3);
@@ -16210,14 +20437,14 @@ function _SetMatrixModelview($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31076; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31236; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _SetMatrixProjection($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31012; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31172; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _rlPushMatrix() {
@@ -16225,43 +20452,43 @@ function _rlPushMatrix() {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- $0 = HEAP32[8261]|0;
+ $0 = HEAP32[8301]|0;
$1 = ($0|0)==(15);
if ($1) {
HEAP32[$vararg_buffer>>2] = 16;
- _TraceLog(1,8305,$vararg_buffer);
+ _TraceLog(1,8073,$vararg_buffer);
}
- $2 = HEAP32[8261]|0;
- $3 = (31304 + ($2<<6)|0);
- $4 = HEAP32[7752]|0;
+ $2 = HEAP32[8301]|0;
+ $3 = (31464 + ($2<<6)|0);
+ $4 = HEAP32[7792]|0;
dest=$3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_rlLoadIdentity();
- $5 = HEAP32[8261]|0;
+ $5 = HEAP32[8301]|0;
$6 = (($5) + 1)|0;
- HEAP32[8261] = $6;
- $7 = HEAP32[7785]|0;
+ HEAP32[8301] = $6;
+ $7 = HEAP32[7825]|0;
$8 = ($7|0)==(5888);
if (!($8)) {
STACKTOP = sp;return;
}
- HEAP32[8262] = 1;
+ HEAP32[8302] = 1;
STACKTOP = sp;return;
}
function _rlPopMatrix() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8261]|0;
+ $0 = HEAP32[8301]|0;
$1 = ($0|0)>(0);
if (!($1)) {
return;
}
- $2 = HEAP32[8261]|0;
+ $2 = HEAP32[8301]|0;
$3 = (($2) + -1)|0;
- $4 = (31304 + ($3<<6)|0);
- $5 = HEAP32[7752]|0;
+ $4 = (31464 + ($3<<6)|0);
+ $5 = HEAP32[7792]|0;
_memmove(($5|0),($4|0),64)|0;
$6 = (($2) + -1)|0;
- HEAP32[8261] = $6;
+ HEAP32[8301] = $6;
return;
}
function _GetFPS() {
@@ -16275,7 +20502,7 @@ function _GetFPS() {
function _GetFrameTime() {
var $0 = 0.0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1763];
+ $0 = +HEAPF64[1782];
$1 = $0;
return (+$1);
}
@@ -16283,28 +20510,28 @@ function _SetConfigFlags($0) {
$0 = $0|0;
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP8[33640] = $0;
+ HEAP8[35952] = $0;
$1 = $0 & 1;
$2 = ($1<<24>>24)==(0);
if (!($2)) {
- HEAP32[7710] = 1;
+ HEAP32[7750] = 1;
}
- $3 = HEAP8[33640]|0;
+ $3 = HEAP8[35952]|0;
$4 = $3 & 2;
$5 = ($4<<24>>24)==(0);
if ($5) {
return;
}
- HEAP32[7747] = 1;
+ HEAP32[7787] = 1;
return;
}
function _IsKeyPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33647 + ($0)|0);
+ $1 = (35959 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (34159 + ($0)|0);
+ $3 = (36471 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -16325,7 +20552,7 @@ function _rlTranslatef($0,$1,$2) {
$4 = sp;
_MatrixTranslate($3,$0,$1,$2);
_MatrixTranspose($3);
- $5 = HEAP32[7752]|0;
+ $5 = HEAP32[7792]|0;
dest=$$byval_copy; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$3; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy1);
@@ -16358,7 +20585,7 @@ function _rlRotatef($0,$1,$2,$3) {
_MatrixRotate($6,$$byval_copy2,$10);
dest=$4; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixTranspose($4);
- $11 = HEAP32[7752]|0;
+ $11 = HEAP32[7792]|0;
dest=$$byval_copy1; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy2; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy1,$$byval_copy2);
@@ -16369,7 +20596,7 @@ function _rlBegin($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7825] = $0;
+ HEAP32[7865] = $0;
return;
}
function _rlEnd() {
@@ -16385,21 +20612,21 @@ function _rlEnd() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$$byval_copy = sp;
- $0 = HEAP32[8262]|0;
+ $0 = HEAP32[8302]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[8263]|0;
+ $2 = HEAP32[8303]|0;
$3 = ($2|0)>(0);
if ($3) {
$$03956 = 0;
while(1) {
- $6 = HEAP32[7822]|0;
+ $6 = HEAP32[7862]|0;
$7 = (($6) + (($$03956*12)|0)|0);
- $8 = HEAP32[7752]|0;
+ $8 = HEAP32[7792]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_VectorTransform($7,$$byval_copy);
$9 = (($$03956) + 1)|0;
- $5 = HEAP32[8263]|0;
+ $5 = HEAP32[8303]|0;
$10 = ($9|0)<($5|0);
if ($10) {
$$03956 = $9;
@@ -16407,12 +20634,12 @@ function _rlEnd() {
break;
}
}
- HEAP32[8262] = 0;
+ HEAP32[8302] = 0;
$4 = ($5|0)>(0);
if ($4) {
$$04154 = 0;
while(1) {
- $11 = HEAP32[7822]|0;
+ $11 = HEAP32[7862]|0;
$12 = (($11) + (($$04154*12)|0)|0);
$13 = +HEAPF32[$12>>2];
$14 = (((($11) + (($$04154*12)|0)|0)) + 4|0);
@@ -16421,7 +20648,7 @@ function _rlEnd() {
$17 = +HEAPF32[$16>>2];
_rlVertex3f($13,$15,$17);
$18 = (($$04154) + 1)|0;
- $19 = HEAP32[8263]|0;
+ $19 = HEAP32[8303]|0;
$20 = ($18|0)<($19|0);
if ($20) {
$$04154 = $18;
@@ -16431,20 +20658,20 @@ function _rlEnd() {
}
}
} else {
- HEAP32[8262] = 0;
+ HEAP32[8302] = 0;
}
- HEAP32[8263] = 0;
+ HEAP32[8303] = 0;
}
- $21 = HEAP32[7825]|0;
+ $21 = HEAP32[7865]|0;
switch ($21|0) {
case 1: {
- $22 = HEAP32[8084]|0;
- $23 = HEAP32[(32344)>>2]|0;
+ $22 = HEAP32[8124]|0;
+ $23 = HEAP32[(32504)>>2]|0;
$24 = ($22|0)==($23|0);
if ($24) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$25 = (($22) - ($23))|0;
@@ -16452,22 +20679,22 @@ function _rlEnd() {
if ($26) {
$$04347 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $27 = HEAP32[(32356)>>2]|0;
- $28 = HEAP32[(32344)>>2]|0;
+ $27 = HEAP32[(32516)>>2]|0;
+ $28 = HEAP32[(32504)>>2]|0;
$29 = $28 << 2;
$30 = (($29) + -4)|0;
$31 = (($27) + ($30)|0);
$32 = HEAP8[$31>>0]|0;
$33 = (($27) + ($29)|0);
HEAP8[$33>>0] = $32;
- $34 = HEAP32[(32356)>>2]|0;
- $35 = HEAP32[(32344)>>2]|0;
+ $34 = HEAP32[(32516)>>2]|0;
+ $35 = HEAP32[(32504)>>2]|0;
$36 = $35 << 2;
$37 = (($36) + -3)|0;
$38 = (($34) + ($37)|0);
@@ -16475,8 +20702,8 @@ function _rlEnd() {
$40 = $36 | 1;
$41 = (($34) + ($40)|0);
HEAP8[$41>>0] = $39;
- $42 = HEAP32[(32356)>>2]|0;
- $43 = HEAP32[(32344)>>2]|0;
+ $42 = HEAP32[(32516)>>2]|0;
+ $43 = HEAP32[(32504)>>2]|0;
$44 = $43 << 2;
$45 = (($44) + -2)|0;
$46 = (($42) + ($45)|0);
@@ -16484,8 +20711,8 @@ function _rlEnd() {
$48 = $44 | 2;
$49 = (($42) + ($48)|0);
HEAP8[$49>>0] = $47;
- $50 = HEAP32[(32356)>>2]|0;
- $51 = HEAP32[(32344)>>2]|0;
+ $50 = HEAP32[(32516)>>2]|0;
+ $51 = HEAP32[(32504)>>2]|0;
$52 = $51 << 2;
$53 = (($52) + -1)|0;
$54 = (($50) + ($53)|0);
@@ -16493,9 +20720,9 @@ function _rlEnd() {
$56 = $52 | 3;
$57 = (($50) + ($56)|0);
HEAP8[$57>>0] = $55;
- $58 = HEAP32[(32344)>>2]|0;
+ $58 = HEAP32[(32504)>>2]|0;
$59 = (($58) + 1)|0;
- HEAP32[(32344)>>2] = $59;
+ HEAP32[(32504)>>2] = $59;
$60 = (($$04347) + 1)|0;
$exitcond = ($60|0)==($25|0);
if ($exitcond) {
@@ -16504,20 +20731,20 @@ function _rlEnd() {
$$04347 = $60;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 4: {
- $61 = HEAP32[8096]|0;
- $62 = HEAP32[(32392)>>2]|0;
+ $61 = HEAP32[8136]|0;
+ $62 = HEAP32[(32552)>>2]|0;
$63 = ($61|0)==($62|0);
if ($63) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$64 = (($61) - ($62))|0;
@@ -16525,22 +20752,22 @@ function _rlEnd() {
if ($65) {
$$04248 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $66 = HEAP32[(32404)>>2]|0;
- $67 = HEAP32[(32392)>>2]|0;
+ $66 = HEAP32[(32564)>>2]|0;
+ $67 = HEAP32[(32552)>>2]|0;
$68 = $67 << 2;
$69 = (($68) + -4)|0;
$70 = (($66) + ($69)|0);
$71 = HEAP8[$70>>0]|0;
$72 = (($66) + ($68)|0);
HEAP8[$72>>0] = $71;
- $73 = HEAP32[(32404)>>2]|0;
- $74 = HEAP32[(32392)>>2]|0;
+ $73 = HEAP32[(32564)>>2]|0;
+ $74 = HEAP32[(32552)>>2]|0;
$75 = $74 << 2;
$76 = (($75) + -3)|0;
$77 = (($73) + ($76)|0);
@@ -16548,8 +20775,8 @@ function _rlEnd() {
$79 = $75 | 1;
$80 = (($73) + ($79)|0);
HEAP8[$80>>0] = $78;
- $81 = HEAP32[(32404)>>2]|0;
- $82 = HEAP32[(32392)>>2]|0;
+ $81 = HEAP32[(32564)>>2]|0;
+ $82 = HEAP32[(32552)>>2]|0;
$83 = $82 << 2;
$84 = (($83) + -2)|0;
$85 = (($81) + ($84)|0);
@@ -16557,8 +20784,8 @@ function _rlEnd() {
$87 = $83 | 2;
$88 = (($81) + ($87)|0);
HEAP8[$88>>0] = $86;
- $89 = HEAP32[(32404)>>2]|0;
- $90 = HEAP32[(32392)>>2]|0;
+ $89 = HEAP32[(32564)>>2]|0;
+ $90 = HEAP32[(32552)>>2]|0;
$91 = $90 << 2;
$92 = (($91) + -1)|0;
$93 = (($89) + ($92)|0);
@@ -16566,9 +20793,9 @@ function _rlEnd() {
$95 = $91 | 3;
$96 = (($89) + ($95)|0);
HEAP8[$96>>0] = $94;
- $97 = HEAP32[(32392)>>2]|0;
+ $97 = HEAP32[(32552)>>2]|0;
$98 = (($97) + 1)|0;
- HEAP32[(32392)>>2] = $98;
+ HEAP32[(32552)>>2] = $98;
$99 = (($$04248) + 1)|0;
$exitcond60 = ($99|0)==($64|0);
if ($exitcond60) {
@@ -16577,15 +20804,15 @@ function _rlEnd() {
$$04248 = $99;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 7: {
- $100 = HEAP32[8108]|0;
- $101 = HEAP32[(32440)>>2]|0;
+ $100 = HEAP32[8148]|0;
+ $101 = HEAP32[(32600)>>2]|0;
$102 = ($100|0)==($101|0);
if (!($102)) {
$103 = (($100) - ($101))|0;
@@ -16593,16 +20820,16 @@ function _rlEnd() {
if ($104) {
$$04052 = 0;
while(1) {
- $105 = HEAP32[(32452)>>2]|0;
- $106 = HEAP32[(32440)>>2]|0;
+ $105 = HEAP32[(32612)>>2]|0;
+ $106 = HEAP32[(32600)>>2]|0;
$107 = $106 << 2;
$108 = (($107) + -4)|0;
$109 = (($105) + ($108)|0);
$110 = HEAP8[$109>>0]|0;
$111 = (($105) + ($107)|0);
HEAP8[$111>>0] = $110;
- $112 = HEAP32[(32452)>>2]|0;
- $113 = HEAP32[(32440)>>2]|0;
+ $112 = HEAP32[(32612)>>2]|0;
+ $113 = HEAP32[(32600)>>2]|0;
$114 = $113 << 2;
$115 = (($114) + -3)|0;
$116 = (($112) + ($115)|0);
@@ -16610,8 +20837,8 @@ function _rlEnd() {
$118 = $114 | 1;
$119 = (($112) + ($118)|0);
HEAP8[$119>>0] = $117;
- $120 = HEAP32[(32452)>>2]|0;
- $121 = HEAP32[(32440)>>2]|0;
+ $120 = HEAP32[(32612)>>2]|0;
+ $121 = HEAP32[(32600)>>2]|0;
$122 = $121 << 2;
$123 = (($122) + -2)|0;
$124 = (($120) + ($123)|0);
@@ -16619,8 +20846,8 @@ function _rlEnd() {
$126 = $122 | 2;
$127 = (($120) + ($126)|0);
HEAP8[$127>>0] = $125;
- $128 = HEAP32[(32452)>>2]|0;
- $129 = HEAP32[(32440)>>2]|0;
+ $128 = HEAP32[(32612)>>2]|0;
+ $129 = HEAP32[(32600)>>2]|0;
$130 = $129 << 2;
$131 = (($130) + -1)|0;
$132 = (($128) + ($131)|0);
@@ -16628,9 +20855,9 @@ function _rlEnd() {
$134 = $130 | 3;
$135 = (($128) + ($134)|0);
HEAP8[$135>>0] = $133;
- $136 = HEAP32[(32440)>>2]|0;
+ $136 = HEAP32[(32600)>>2]|0;
$137 = (($136) + 1)|0;
- HEAP32[(32440)>>2] = $137;
+ HEAP32[(32600)>>2] = $137;
$138 = (($$04052) + 1)|0;
$exitcond63 = ($138|0)==($103|0);
if ($exitcond63) {
@@ -16641,17 +20868,17 @@ function _rlEnd() {
}
}
}
- $139 = HEAP32[8108]|0;
- $140 = HEAP32[(32436)>>2]|0;
+ $139 = HEAP32[8148]|0;
+ $140 = HEAP32[(32596)>>2]|0;
$141 = ($139|0)>($140|0);
if (!($141)) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
- $142 = HEAP32[(32448)>>2]|0;
- $$promoted = HEAP32[(32436)>>2]|0;
+ $142 = HEAP32[(32608)>>2]|0;
+ $$promoted = HEAP32[(32596)>>2]|0;
$143 = $$promoted << 1;
$scevgep = (($142) + ($143<<2)|0);
$144 = (($139) - ($140))|0;
@@ -16659,17 +20886,17 @@ function _rlEnd() {
_memset(($scevgep|0),0,($145|0))|0;
$146 = (($139) + ($$promoted))|0;
$147 = (($146) - ($140))|0;
- HEAP32[(32436)>>2] = $147;
- $148 = +HEAPF32[743];
+ HEAP32[(32596)>>2] = $147;
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
default: {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
}
@@ -16686,11 +20913,11 @@ function _rlVertex3f($0,$1,$2) {
$vararg_buffer3 = sp + 16|0;
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
- $3 = HEAP32[8262]|0;
+ $3 = HEAP32[8302]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7822]|0;
- $6 = HEAP32[8263]|0;
+ $5 = HEAP32[7862]|0;
+ $6 = HEAP32[8303]|0;
$7 = (($5) + (($6*12)|0)|0);
HEAPF32[$7>>2] = $0;
$8 = (((($5) + (($6*12)|0)|0)) + 4|0);
@@ -16698,16 +20925,16 @@ function _rlVertex3f($0,$1,$2) {
$9 = (((($5) + (($6*12)|0)|0)) + 8|0);
HEAPF32[$9>>2] = $2;
$10 = (($6) + 1)|0;
- HEAP32[8263] = $10;
+ HEAP32[8303] = $10;
STACKTOP = sp;return;
}
- $11 = HEAP32[7825]|0;
+ $11 = HEAP32[7865]|0;
switch ($11|0) {
case 1: {
- $12 = HEAP32[8084]|0;
+ $12 = HEAP32[8124]|0;
$13 = ($12|0)<(2048);
if ($13) {
- $14 = HEAP32[(32348)>>2]|0;
+ $14 = HEAP32[(32508)>>2]|0;
$15 = ($12*3)|0;
$16 = (($14) + ($15<<2)|0);
HEAPF32[$16>>2] = $0;
@@ -16718,19 +20945,19 @@ function _rlVertex3f($0,$1,$2) {
$20 = (($14) + ($19<<2)|0);
HEAPF32[$20>>2] = $2;
$21 = (($12) + 1)|0;
- HEAP32[8084] = $21;
+ HEAP32[8124] = $21;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8343,$vararg_buffer);
+ _TraceLog(1,8111,$vararg_buffer);
STACKTOP = sp;return;
}
break;
}
case 4: {
- $22 = HEAP32[8096]|0;
+ $22 = HEAP32[8136]|0;
$23 = ($22|0)<(6144);
if ($23) {
- $24 = HEAP32[(32396)>>2]|0;
+ $24 = HEAP32[(32556)>>2]|0;
$25 = ($22*3)|0;
$26 = (($24) + ($25<<2)|0);
HEAPF32[$26>>2] = $0;
@@ -16741,19 +20968,19 @@ function _rlVertex3f($0,$1,$2) {
$30 = (($24) + ($29<<2)|0);
HEAPF32[$30>>2] = $2;
$31 = (($22) + 1)|0;
- HEAP32[8096] = $31;
+ HEAP32[8136] = $31;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8368,$vararg_buffer1);
+ _TraceLog(1,8136,$vararg_buffer1);
STACKTOP = sp;return;
}
break;
}
case 7: {
- $32 = HEAP32[8108]|0;
+ $32 = HEAP32[8148]|0;
$33 = ($32|0)<(4096);
if ($33) {
- $34 = HEAP32[(32444)>>2]|0;
+ $34 = HEAP32[(32604)>>2]|0;
$35 = ($32*3)|0;
$36 = (($34) + ($35<<2)|0);
HEAPF32[$36>>2] = $0;
@@ -16764,9 +20991,9 @@ function _rlVertex3f($0,$1,$2) {
$40 = (($34) + ($39<<2)|0);
HEAPF32[$40>>2] = $2;
$41 = (($32) + 1)|0;
- HEAP32[8108] = $41;
- $42 = HEAP32[7823]|0;
- $43 = HEAP32[7824]|0;
+ HEAP32[8148] = $41;
+ $42 = HEAP32[7863]|0;
+ $43 = HEAP32[7864]|0;
$44 = (($43) + -1)|0;
$45 = (($42) + (($44*144)|0)|0);
$46 = HEAP32[$45>>2]|0;
@@ -16774,7 +21001,7 @@ function _rlVertex3f($0,$1,$2) {
HEAP32[$45>>2] = $47;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8397,$vararg_buffer3);
+ _TraceLog(1,8165,$vararg_buffer3);
STACKTOP = sp;return;
}
break;
@@ -16789,7 +21016,7 @@ function _rlVertex2f($0,$1) {
$1 = +$1;
var $2 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = +HEAPF32[743];
+ $2 = +HEAPF32[746];
_rlVertex3f($0,$1,$2);
return;
}
@@ -16798,13 +21025,13 @@ function _rlTexCoord2f($0,$1) {
$1 = +$1;
var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[7825]|0;
+ $2 = HEAP32[7865]|0;
$3 = ($2|0)==(7);
if (!($3)) {
return;
}
- $4 = HEAP32[(32448)>>2]|0;
- $5 = HEAP32[(32436)>>2]|0;
+ $4 = HEAP32[(32608)>>2]|0;
+ $5 = HEAP32[(32596)>>2]|0;
$6 = $5 << 1;
$7 = (($4) + ($6<<2)|0);
HEAPF32[$7>>2] = $0;
@@ -16812,7 +21039,7 @@ function _rlTexCoord2f($0,$1) {
$9 = (($4) + ($8<<2)|0);
HEAPF32[$9>>2] = $1;
$10 = (($5) + 1)|0;
- HEAP32[(32436)>>2] = $10;
+ HEAP32[(32596)>>2] = $10;
return;
}
function _rlNormal3f($0,$1,$2) {
@@ -16831,18 +21058,18 @@ function _rlColor4ub($0,$1,$2,$3) {
var $$sink37 = 0, $$sink38 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $4 = 0, $5 = 0;
var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $4 = HEAP32[7825]|0;
+ $4 = HEAP32[7865]|0;
switch ($4|0) {
case 1: {
- $$sink37 = (32344);$$sink38 = (32356);
+ $$sink37 = (32504);$$sink38 = (32516);
break;
}
case 4: {
- $$sink37 = (32392);$$sink38 = (32404);
+ $$sink37 = (32552);$$sink38 = (32564);
break;
}
case 7: {
- $$sink37 = (32440);$$sink38 = (32452);
+ $$sink37 = (32600);$$sink38 = (32612);
break;
}
default: {
@@ -16881,8 +21108,8 @@ function _rlEnableTexture($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[7823]|0;
- $2 = HEAP32[7824]|0;
+ $1 = HEAP32[7863]|0;
+ $2 = HEAP32[7864]|0;
$3 = (($2) + -1)|0;
$4 = (((($1) + (($3*144)|0)|0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
@@ -16895,9 +21122,9 @@ function _rlEnableTexture($0) {
$9 = ($8|0)>(0);
if ($9) {
$10 = (($2) + 1)|0;
- HEAP32[7824] = $10;
+ HEAP32[7864] = $10;
}
- $11 = HEAP32[7824]|0;
+ $11 = HEAP32[7864]|0;
$12 = (($11) + -1)|0;
$13 = (((($1) + (($12*144)|0)|0)) + 8|0);
HEAP32[$13>>2] = $0;
@@ -16908,7 +21135,7 @@ function _rlEnableTexture($0) {
function _rlDisableTexture() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8108]|0;
+ $0 = HEAP32[8148]|0;
$1 = ($0|0)>(4095);
if (!($1)) {
return;
@@ -16946,7 +21173,7 @@ function _GetDefaultFont($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- ;HEAP32[$0>>2]=HEAP32[30860>>2]|0;HEAP32[$0+4>>2]=HEAP32[30860+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[30860+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[30860+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[30860+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[30860+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[30860+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[30860+28>>2]|0;
+ ;HEAP32[$0>>2]=HEAP32[31020>>2]|0;HEAP32[$0+4>>2]=HEAP32[31020+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[31020+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[31020+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[31020+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[31020+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[31020+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[31020+28>>2]|0;
return;
}
function _MeasureTextEx($0,$1,$2,$3,$4) {
@@ -17422,8 +21649,8 @@ function _FormatText($0,$varargs) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
HEAP32[$1>>2] = $varargs;
- (_vsprintf(34927,$0,$1)|0);
- STACKTOP = sp;return (34927|0);
+ (_vsprintf(37239,$0,$1)|0);
+ STACKTOP = sp;return (37239|0);
}
function _MeasureText($0,$1) {
$0 = $0|0;
@@ -17462,22 +21689,22 @@ function _DrawFPS($0,$1) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$$byval_copy = sp;
$2 = sp + 4|0;
- $3 = HEAP32[8264]|0;
- $4 = HEAP32[744]|0;
+ $3 = HEAP32[8304]|0;
+ $4 = HEAP32[747]|0;
$5 = ($3|0)<($4|0);
if ($5) {
$6 = (($3) + 1)|0;
$$sink = $6;
} else {
$7 = (_GetFPS()|0);
- HEAP32[8265] = $7;
- HEAP32[744] = $7;
+ HEAP32[8305] = $7;
+ HEAP32[747] = $7;
$$sink = 0;
}
- HEAP32[8264] = $$sink;
- $8 = HEAP32[8265]|0;
+ HEAP32[8304] = $$sink;
+ $8 = HEAP32[8305]|0;
HEAP32[$$byval_copy>>2] = $8;
- (_FormatText(8422,$$byval_copy)|0);
+ (_FormatText(8190,$$byval_copy)|0);
HEAP8[$2>>0] = 0;
$9 = ((($2)) + 1|0);
HEAP8[$9>>0] = -98;
@@ -17486,7 +21713,7 @@ function _DrawFPS($0,$1) {
$11 = ((($2)) + 3|0);
HEAP8[$11>>0] = -1;
;HEAP8[$$byval_copy>>0]=HEAP8[$2>>0]|0;HEAP8[$$byval_copy+1>>0]=HEAP8[$2+1>>0]|0;HEAP8[$$byval_copy+2>>0]=HEAP8[$2+2>>0]|0;HEAP8[$$byval_copy+3>>0]=HEAP8[$2+3>>0]|0;
- _DrawText(34927,$0,$1,20,$$byval_copy);
+ _DrawText(37239,$0,$1,20,$$byval_copy);
STACKTOP = sp;return;
}
function _emscripten_GetProcAddress($0) {
@@ -17535,7 +21762,7 @@ function _emscripten_GetProcAddress($0) {
$10 = HEAP32[$2>>2]|0;
(_strcpy($9,$10)|0);
$11 = HEAP32[$3>>2]|0;
- $12 = (_strstr($11,8430)|0);
+ $12 = (_strstr($11,8198)|0);
HEAP32[$4>>2] = $12;
$13 = HEAP32[$4>>2]|0;
$14 = ($13|0)!=(0|0);
@@ -17544,7 +21771,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$15>>0] = 0;
}
$16 = HEAP32[$3>>2]|0;
- $17 = (_strstr($16,8434)|0);
+ $17 = (_strstr($16,8202)|0);
HEAP32[$4>>2] = $17;
$18 = HEAP32[$4>>2]|0;
$19 = ($18|0)!=(0|0);
@@ -17553,7 +21780,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$20>>0] = 0;
}
$21 = HEAP32[$3>>2]|0;
- $22 = (_strstr($21,8438)|0);
+ $22 = (_strstr($21,8206)|0);
HEAP32[$4>>2] = $22;
$23 = HEAP32[$4>>2]|0;
$24 = ($23|0)!=(0|0);
@@ -17562,7 +21789,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$25>>0] = 0;
}
$26 = HEAP32[$3>>2]|0;
- $27 = (_strstr($26,8442)|0);
+ $27 = (_strstr($26,8210)|0);
HEAP32[$4>>2] = $27;
$28 = HEAP32[$4>>2]|0;
$29 = ($28|0)!=(0|0);
@@ -17571,1210 +21798,1210 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$30>>0] = 0;
}
$31 = HEAP32[$3>>2]|0;
- $32 = (_strcmp($31,8448)|0);
+ $32 = (_strcmp($31,8216)|0);
$33 = ($32|0)!=(0);
do {
if ($33) {
$34 = HEAP32[$3>>2]|0;
- $35 = (_strcmp($34,8486)|0);
+ $35 = (_strcmp($34,8254)|0);
$36 = ($35|0)!=(0);
if (!($36)) {
- HEAP32[$3>>2] = 8505;
+ HEAP32[$3>>2] = 8273;
break;
}
$37 = HEAP32[$3>>2]|0;
- $38 = (_strcmp($37,8518)|0);
+ $38 = (_strcmp($37,8286)|0);
$39 = ($38|0)!=(0);
if (!($39)) {
- HEAP32[$3>>2] = 8539;
+ HEAP32[$3>>2] = 8307;
break;
}
$40 = HEAP32[$3>>2]|0;
- $41 = (_strcmp($40,8554)|0);
+ $41 = (_strcmp($40,8322)|0);
$42 = ($41|0)!=(0);
if (!($42)) {
- HEAP32[$3>>2] = 8569;
+ HEAP32[$3>>2] = 8337;
break;
}
$43 = HEAP32[$3>>2]|0;
- $44 = (_strcmp($43,8584)|0);
+ $44 = (_strcmp($43,8352)|0);
$45 = ($44|0)!=(0);
if (!($45)) {
- HEAP32[$3>>2] = 8599;
+ HEAP32[$3>>2] = 8367;
}
} else {
- HEAP32[$3>>2] = 8470;
+ HEAP32[$3>>2] = 8238;
}
} while(0);
$46 = HEAP32[$3>>2]|0;
- $47 = (_strcmp($46,8614)|0);
+ $47 = (_strcmp($46,8382)|0);
$48 = ($47|0)!=(0);
do {
if ($48) {
$49 = HEAP32[$3>>2]|0;
- $50 = (_strcmp($49,8628)|0);
+ $50 = (_strcmp($49,8396)|0);
$51 = ($50|0)!=(0);
if (!($51)) {
HEAP32[$1>>2] = 3;
break;
}
$52 = HEAP32[$3>>2]|0;
- $53 = (_strcmp($52,8640)|0);
+ $53 = (_strcmp($52,8408)|0);
$54 = ($53|0)!=(0);
if (!($54)) {
HEAP32[$1>>2] = 6;
break;
}
$55 = HEAP32[$3>>2]|0;
- $56 = (_strcmp($55,8654)|0);
+ $56 = (_strcmp($55,8422)|0);
$57 = ($56|0)!=(0);
if (!($57)) {
HEAP32[$1>>2] = 7;
break;
}
$58 = HEAP32[$3>>2]|0;
- $59 = (_strcmp($58,8666)|0);
+ $59 = (_strcmp($58,8434)|0);
$60 = ($59|0)!=(0);
if (!($60)) {
HEAP32[$1>>2] = 8;
break;
}
$61 = HEAP32[$3>>2]|0;
- $62 = (_strcmp($61,8680)|0);
+ $62 = (_strcmp($61,8448)|0);
$63 = ($62|0)!=(0);
if (!($63)) {
HEAP32[$1>>2] = 9;
break;
}
$64 = HEAP32[$3>>2]|0;
- $65 = (_strcmp($64,8694)|0);
+ $65 = (_strcmp($64,8462)|0);
$66 = ($65|0)!=(0);
if (!($66)) {
HEAP32[$1>>2] = 10;
break;
}
$67 = HEAP32[$3>>2]|0;
- $68 = (_strcmp($67,8711)|0);
+ $68 = (_strcmp($67,8479)|0);
$69 = ($68|0)!=(0);
if (!($69)) {
HEAP32[$1>>2] = 1;
break;
}
$70 = HEAP32[$3>>2]|0;
- $71 = (_strcmp($70,8734)|0);
+ $71 = (_strcmp($70,8502)|0);
$72 = ($71|0)!=(0);
if (!($72)) {
HEAP32[$1>>2] = 1;
break;
}
$73 = HEAP32[$3>>2]|0;
- $74 = (_strcmp($73,8760)|0);
+ $74 = (_strcmp($73,8528)|0);
$75 = ($74|0)!=(0);
if (!($75)) {
HEAP32[$1>>2] = 2;
break;
}
$76 = HEAP32[$3>>2]|0;
- $77 = (_strcmp($76,8773)|0);
+ $77 = (_strcmp($76,8541)|0);
$78 = ($77|0)!=(0);
if (!($78)) {
HEAP32[$1>>2] = 3;
break;
}
$79 = HEAP32[$3>>2]|0;
- $80 = (_strcmp($79,8789)|0);
+ $80 = (_strcmp($79,8557)|0);
$81 = ($80|0)!=(0);
if (!($81)) {
HEAP32[$1>>2] = 1;
break;
}
$82 = HEAP32[$3>>2]|0;
- $83 = (_strcmp($82,8802)|0);
+ $83 = (_strcmp($82,8570)|0);
$84 = ($83|0)!=(0);
if (!($84)) {
HEAP32[$1>>2] = 11;
break;
}
$85 = HEAP32[$3>>2]|0;
- $86 = (_strcmp($85,8816)|0);
+ $86 = (_strcmp($85,8584)|0);
$87 = ($86|0)!=(0);
if (!($87)) {
HEAP32[$1>>2] = 2;
break;
}
$88 = HEAP32[$3>>2]|0;
- $89 = (_strcmp($88,8836)|0);
+ $89 = (_strcmp($88,8604)|0);
$90 = ($89|0)!=(0);
if (!($90)) {
HEAP32[$1>>2] = 3;
break;
}
$91 = HEAP32[$3>>2]|0;
- $92 = (_strcmp($91,8856)|0);
+ $92 = (_strcmp($91,8624)|0);
$93 = ($92|0)!=(0);
if (!($93)) {
HEAP32[$1>>2] = 4;
break;
}
$94 = HEAP32[$3>>2]|0;
- $95 = (_strcmp($94,8873)|0);
+ $95 = (_strcmp($94,8641)|0);
$96 = ($95|0)!=(0);
if (!($96)) {
HEAP32[$1>>2] = 5;
break;
}
$97 = HEAP32[$3>>2]|0;
- $98 = (_strcmp($97,8890)|0);
+ $98 = (_strcmp($97,8658)|0);
$99 = ($98|0)!=(0);
if (!($99)) {
HEAP32[$1>>2] = 4;
break;
}
$100 = HEAP32[$3>>2]|0;
- $101 = (_strcmp($100,8902)|0);
+ $101 = (_strcmp($100,8670)|0);
$102 = ($101|0)!=(0);
if (!($102)) {
HEAP32[$1>>2] = 12;
break;
}
$103 = HEAP32[$3>>2]|0;
- $104 = (_strcmp($103,8915)|0);
+ $104 = (_strcmp($103,8683)|0);
$105 = ($104|0)!=(0);
if (!($105)) {
HEAP32[$1>>2] = 13;
break;
}
$106 = HEAP32[$3>>2]|0;
- $107 = (_strcmp($106,8931)|0);
+ $107 = (_strcmp($106,8699)|0);
$108 = ($107|0)!=(0);
if (!($108)) {
HEAP32[$1>>2] = 6;
break;
}
$109 = HEAP32[$3>>2]|0;
- $110 = (_strcmp($109,8954)|0);
+ $110 = (_strcmp($109,8722)|0);
$111 = ($110|0)!=(0);
if (!($111)) {
HEAP32[$1>>2] = 2;
break;
}
$112 = HEAP32[$3>>2]|0;
- $113 = (_strcmp($112,8967)|0);
+ $113 = (_strcmp($112,8735)|0);
$114 = ($113|0)!=(0);
if (!($114)) {
HEAP32[$1>>2] = 3;
break;
}
$115 = HEAP32[$3>>2]|0;
- $116 = (_strcmp($115,8983)|0);
+ $116 = (_strcmp($115,8751)|0);
$117 = ($116|0)!=(0);
if (!($117)) {
HEAP32[$1>>2] = 5;
break;
}
$118 = HEAP32[$3>>2]|0;
- $119 = (_strcmp($118,8994)|0);
+ $119 = (_strcmp($118,8762)|0);
$120 = ($119|0)!=(0);
if (!($120)) {
HEAP32[$1>>2] = 14;
break;
}
$121 = HEAP32[$3>>2]|0;
- $122 = (_strcmp($121,9013)|0);
+ $122 = (_strcmp($121,8781)|0);
$123 = ($122|0)!=(0);
if (!($123)) {
HEAP32[$1>>2] = 15;
break;
}
$124 = HEAP32[$3>>2]|0;
- $125 = (_strcmp($124,9035)|0);
+ $125 = (_strcmp($124,8803)|0);
$126 = ($125|0)!=(0);
if (!($126)) {
HEAP32[$1>>2] = 16;
break;
}
$127 = HEAP32[$3>>2]|0;
- $128 = (_strcmp($127,9054)|0);
+ $128 = (_strcmp($127,8822)|0);
$129 = ($128|0)!=(0);
if (!($129)) {
HEAP32[$1>>2] = 7;
break;
}
$130 = HEAP32[$3>>2]|0;
- $131 = (_strcmp($130,9083)|0);
+ $131 = (_strcmp($130,8851)|0);
$132 = ($131|0)!=(0);
if (!($132)) {
HEAP32[$1>>2] = 6;
break;
}
$133 = HEAP32[$3>>2]|0;
- $134 = (_strcmp($133,9100)|0);
+ $134 = (_strcmp($133,8868)|0);
$135 = ($134|0)!=(0);
if (!($135)) {
HEAP32[$1>>2] = 8;
break;
}
$136 = HEAP32[$3>>2]|0;
- $137 = (_strcmp($136,9115)|0);
+ $137 = (_strcmp($136,8883)|0);
$138 = ($137|0)!=(0);
if (!($138)) {
HEAP32[$1>>2] = 9;
break;
}
$139 = HEAP32[$3>>2]|0;
- $140 = (_strcmp($139,9130)|0);
+ $140 = (_strcmp($139,8898)|0);
$141 = ($140|0)!=(0);
if (!($141)) {
HEAP32[$1>>2] = 1;
break;
}
$142 = HEAP32[$3>>2]|0;
- $143 = (_strcmp($142,9151)|0);
+ $143 = (_strcmp($142,8919)|0);
$144 = ($143|0)!=(0);
if (!($144)) {
HEAP32[$1>>2] = 10;
break;
}
$145 = HEAP32[$3>>2]|0;
- $146 = (_strcmp($145,9171)|0);
+ $146 = (_strcmp($145,8939)|0);
$147 = ($146|0)!=(0);
if (!($147)) {
HEAP32[$1>>2] = 11;
break;
}
$148 = HEAP32[$3>>2]|0;
- $149 = (_strcmp($148,9191)|0);
+ $149 = (_strcmp($148,8959)|0);
$150 = ($149|0)!=(0);
if (!($150)) {
HEAP32[$1>>2] = 12;
break;
}
$151 = HEAP32[$3>>2]|0;
- $152 = (_strcmp($151,9217)|0);
+ $152 = (_strcmp($151,8985)|0);
$153 = ($152|0)!=(0);
if (!($153)) {
HEAP32[$1>>2] = 2;
break;
}
$154 = HEAP32[$3>>2]|0;
- $155 = (_strcmp($154,9236)|0);
+ $155 = (_strcmp($154,9004)|0);
$156 = ($155|0)!=(0);
if (!($156)) {
HEAP32[$1>>2] = 1;
break;
}
$157 = HEAP32[$3>>2]|0;
- $158 = (_strcmp($157,9248)|0);
+ $158 = (_strcmp($157,9016)|0);
$159 = ($158|0)!=(0);
if (!($159)) {
HEAP32[$1>>2] = 3;
break;
}
$160 = HEAP32[$3>>2]|0;
- $161 = (_strcmp($160,9260)|0);
+ $161 = (_strcmp($160,9028)|0);
$162 = ($161|0)!=(0);
if (!($162)) {
HEAP32[$1>>2] = 1;
break;
}
$163 = HEAP32[$3>>2]|0;
- $164 = (_strcmp($163,9272)|0);
+ $164 = (_strcmp($163,9040)|0);
$165 = ($164|0)!=(0);
if (!($165)) {
HEAP32[$1>>2] = 1;
break;
}
$166 = HEAP32[$3>>2]|0;
- $167 = (_strcmp($166,9284)|0);
+ $167 = (_strcmp($166,9052)|0);
$168 = ($167|0)!=(0);
if (!($168)) {
HEAP32[$1>>2] = 17;
break;
}
$169 = HEAP32[$3>>2]|0;
- $170 = (_strcmp($169,9296)|0);
+ $170 = (_strcmp($169,9064)|0);
$171 = ($170|0)!=(0);
if (!($171)) {
HEAP32[$1>>2] = 13;
break;
}
$172 = HEAP32[$3>>2]|0;
- $173 = (_strcmp($172,9308)|0);
+ $173 = (_strcmp($172,9076)|0);
$174 = ($173|0)!=(0);
if (!($174)) {
HEAP32[$1>>2] = 4;
break;
}
$175 = HEAP32[$3>>2]|0;
- $176 = (_strcmp($175,9320)|0);
+ $176 = (_strcmp($175,9088)|0);
$177 = ($176|0)!=(0);
if (!($177)) {
HEAP32[$1>>2] = 2;
break;
}
$178 = HEAP32[$3>>2]|0;
- $179 = (_strcmp($178,9332)|0);
+ $179 = (_strcmp($178,9100)|0);
$180 = ($179|0)!=(0);
if (!($180)) {
HEAP32[$1>>2] = 14;
break;
}
$181 = HEAP32[$3>>2]|0;
- $182 = (_strcmp($181,9345)|0);
+ $182 = (_strcmp($181,9113)|0);
$183 = ($182|0)!=(0);
if (!($183)) {
HEAP32[$1>>2] = 15;
break;
}
$184 = HEAP32[$3>>2]|0;
- $185 = (_strcmp($184,9358)|0);
+ $185 = (_strcmp($184,9126)|0);
$186 = ($185|0)!=(0);
if (!($186)) {
HEAP32[$1>>2] = 16;
break;
}
$187 = HEAP32[$3>>2]|0;
- $188 = (_strcmp($187,9371)|0);
+ $188 = (_strcmp($187,9139)|0);
$189 = ($188|0)!=(0);
if (!($189)) {
HEAP32[$1>>2] = 17;
break;
}
$190 = HEAP32[$3>>2]|0;
- $191 = (_strcmp($190,9384)|0);
+ $191 = (_strcmp($190,9152)|0);
$192 = ($191|0)!=(0);
if (!($192)) {
HEAP32[$1>>2] = 18;
break;
}
$193 = HEAP32[$3>>2]|0;
- $194 = (_strcmp($193,9397)|0);
+ $194 = (_strcmp($193,9165)|0);
$195 = ($194|0)!=(0);
if (!($195)) {
HEAP32[$1>>2] = 19;
break;
}
$196 = HEAP32[$3>>2]|0;
- $197 = (_strcmp($196,9410)|0);
+ $197 = (_strcmp($196,9178)|0);
$198 = ($197|0)!=(0);
if (!($198)) {
HEAP32[$1>>2] = 20;
break;
}
$199 = HEAP32[$3>>2]|0;
- $200 = (_strcmp($199,9423)|0);
+ $200 = (_strcmp($199,9191)|0);
$201 = ($200|0)!=(0);
if (!($201)) {
HEAP32[$1>>2] = 21;
break;
}
$202 = HEAP32[$3>>2]|0;
- $203 = (_strcmp($202,9436)|0);
+ $203 = (_strcmp($202,9204)|0);
$204 = ($203|0)!=(0);
if (!($204)) {
HEAP32[$1>>2] = 5;
break;
}
$205 = HEAP32[$3>>2]|0;
- $206 = (_strcmp($205,9455)|0);
+ $206 = (_strcmp($205,9223)|0);
$207 = ($206|0)!=(0);
if (!($207)) {
HEAP32[$1>>2] = 6;
break;
}
$208 = HEAP32[$3>>2]|0;
- $209 = (_strcmp($208,9474)|0);
+ $209 = (_strcmp($208,9242)|0);
$210 = ($209|0)!=(0);
if (!($210)) {
HEAP32[$1>>2] = 7;
break;
}
$211 = HEAP32[$3>>2]|0;
- $212 = (_strcmp($211,9493)|0);
+ $212 = (_strcmp($211,9261)|0);
$213 = ($212|0)!=(0);
if (!($213)) {
HEAP32[$1>>2] = 18;
break;
}
$214 = HEAP32[$3>>2]|0;
- $215 = (_strcmp($214,9506)|0);
+ $215 = (_strcmp($214,9274)|0);
$216 = ($215|0)!=(0);
if (!($216)) {
HEAP32[$1>>2] = 19;
break;
}
$217 = HEAP32[$3>>2]|0;
- $218 = (_strcmp($217,9524)|0);
+ $218 = (_strcmp($217,9292)|0);
$219 = ($218|0)!=(0);
if (!($219)) {
HEAP32[$1>>2] = 20;
break;
}
$220 = HEAP32[$3>>2]|0;
- $221 = (_strcmp($220,9542)|0);
+ $221 = (_strcmp($220,9310)|0);
$222 = ($221|0)!=(0);
if (!($222)) {
HEAP32[$1>>2] = 21;
break;
}
$223 = HEAP32[$3>>2]|0;
- $224 = (_strcmp($223,9560)|0);
+ $224 = (_strcmp($223,9328)|0);
$225 = ($224|0)!=(0);
if (!($225)) {
HEAP32[$1>>2] = 22;
break;
}
$226 = HEAP32[$3>>2]|0;
- $227 = (_strcmp($226,9578)|0);
+ $227 = (_strcmp($226,9346)|0);
$228 = ($227|0)!=(0);
if (!($228)) {
HEAP32[$1>>2] = 2;
break;
}
$229 = HEAP32[$3>>2]|0;
- $230 = (_strcmp($229,9598)|0);
+ $230 = (_strcmp($229,9366)|0);
$231 = ($230|0)!=(0);
if (!($231)) {
HEAP32[$1>>2] = 3;
break;
}
$232 = HEAP32[$3>>2]|0;
- $233 = (_strcmp($232,8539)|0);
+ $233 = (_strcmp($232,8307)|0);
$234 = ($233|0)!=(0);
if (!($234)) {
HEAP32[$1>>2] = 7;
break;
}
$235 = HEAP32[$3>>2]|0;
- $236 = (_strcmp($235,9616)|0);
+ $236 = (_strcmp($235,9384)|0);
$237 = ($236|0)!=(0);
if (!($237)) {
HEAP32[$1>>2] = 1;
break;
}
$238 = HEAP32[$3>>2]|0;
- $239 = (_strcmp($238,9631)|0);
+ $239 = (_strcmp($238,9399)|0);
$240 = ($239|0)!=(0);
if (!($240)) {
HEAP32[$1>>2] = 8;
break;
}
$241 = HEAP32[$3>>2]|0;
- $242 = (_strcmp($241,9652)|0);
+ $242 = (_strcmp($241,9420)|0);
$243 = ($242|0)!=(0);
if (!($243)) {
HEAP32[$1>>2] = 9;
break;
}
$244 = HEAP32[$3>>2]|0;
- $245 = (_strcmp($244,9667)|0);
+ $245 = (_strcmp($244,9435)|0);
$246 = ($245|0)!=(0);
if (!($246)) {
HEAP32[$1>>2] = 10;
break;
}
$247 = HEAP32[$3>>2]|0;
- $248 = (_strcmp($247,9685)|0);
+ $248 = (_strcmp($247,9453)|0);
$249 = ($248|0)!=(0);
if (!($249)) {
HEAP32[$1>>2] = 2;
break;
}
$250 = HEAP32[$3>>2]|0;
- $251 = (_strcmp($250,9701)|0);
+ $251 = (_strcmp($250,9469)|0);
$252 = ($251|0)!=(0);
if (!($252)) {
HEAP32[$1>>2] = 11;
break;
}
$253 = HEAP32[$3>>2]|0;
- $254 = (_strcmp($253,9720)|0);
+ $254 = (_strcmp($253,9488)|0);
$255 = ($254|0)!=(0);
if (!($255)) {
HEAP32[$1>>2] = 22;
break;
}
$256 = HEAP32[$3>>2]|0;
- $257 = (_strcmp($256,9734)|0);
+ $257 = (_strcmp($256,9502)|0);
$258 = ($257|0)!=(0);
if (!($258)) {
HEAP32[$1>>2] = 23;
break;
}
$259 = HEAP32[$3>>2]|0;
- $260 = (_strcmp($259,9749)|0);
+ $260 = (_strcmp($259,9517)|0);
$261 = ($260|0)!=(0);
if (!($261)) {
HEAP32[$1>>2] = 8;
break;
}
$262 = HEAP32[$3>>2]|0;
- $263 = (_strcmp($262,8470)|0);
+ $263 = (_strcmp($262,8238)|0);
$264 = ($263|0)!=(0);
if (!($264)) {
HEAP32[$1>>2] = 1;
break;
}
$265 = HEAP32[$3>>2]|0;
- $266 = (_strcmp($265,9760)|0);
+ $266 = (_strcmp($265,9528)|0);
$267 = ($266|0)!=(0);
if (!($267)) {
HEAP32[$1>>2] = 3;
break;
}
$268 = HEAP32[$3>>2]|0;
- $269 = (_strcmp($268,8569)|0);
+ $269 = (_strcmp($268,8337)|0);
$270 = ($269|0)!=(0);
if (!($270)) {
HEAP32[$1>>2] = 23;
break;
}
$271 = HEAP32[$3>>2]|0;
- $272 = (_strcmp($271,8599)|0);
+ $272 = (_strcmp($271,8367)|0);
$273 = ($272|0)!=(0);
if (!($273)) {
HEAP32[$1>>2] = 24;
break;
}
$274 = HEAP32[$3>>2]|0;
- $275 = (_strcmp($274,9776)|0);
+ $275 = (_strcmp($274,9544)|0);
$276 = ($275|0)!=(0);
if (!($276)) {
HEAP32[$1>>2] = 12;
break;
}
$277 = HEAP32[$3>>2]|0;
- $278 = (_strcmp($277,9803)|0);
+ $278 = (_strcmp($277,9571)|0);
$279 = ($278|0)!=(0);
if (!($279)) {
HEAP32[$1>>2] = 4;
break;
}
$280 = HEAP32[$3>>2]|0;
- $281 = (_strcmp($280,9817)|0);
+ $281 = (_strcmp($280,9585)|0);
$282 = ($281|0)!=(0);
if (!($282)) {
HEAP32[$1>>2] = 13;
break;
}
$283 = HEAP32[$3>>2]|0;
- $284 = (_strcmp($283,8505)|0);
+ $284 = (_strcmp($283,8273)|0);
$285 = ($284|0)!=(0);
if (!($285)) {
HEAP32[$1>>2] = 5;
break;
}
$286 = HEAP32[$3>>2]|0;
- $287 = (_strcmp($286,9837)|0);
+ $287 = (_strcmp($286,9605)|0);
$288 = ($287|0)!=(0);
if (!($288)) {
HEAP32[$1>>2] = 6;
break;
}
$289 = HEAP32[$3>>2]|0;
- $290 = (_strcmp($289,9855)|0);
+ $290 = (_strcmp($289,9623)|0);
$291 = ($290|0)!=(0);
if (!($291)) {
HEAP32[$1>>2] = 9;
break;
}
$292 = HEAP32[$3>>2]|0;
- $293 = (_strcmp($292,9867)|0);
+ $293 = (_strcmp($292,9635)|0);
$294 = ($293|0)!=(0);
if (!($294)) {
HEAP32[$1>>2] = 24;
break;
}
$295 = HEAP32[$3>>2]|0;
- $296 = (_strcmp($295,9888)|0);
+ $296 = (_strcmp($295,9656)|0);
$297 = ($296|0)!=(0);
if (!($297)) {
HEAP32[$1>>2] = 25;
break;
}
$298 = HEAP32[$3>>2]|0;
- $299 = (_strcmp($298,9906)|0);
+ $299 = (_strcmp($298,9674)|0);
$300 = ($299|0)!=(0);
if (!($300)) {
HEAP32[$1>>2] = 26;
break;
}
$301 = HEAP32[$3>>2]|0;
- $302 = (_strcmp($301,9924)|0);
+ $302 = (_strcmp($301,9692)|0);
$303 = ($302|0)!=(0);
if (!($303)) {
HEAP32[$1>>2] = 27;
break;
}
$304 = HEAP32[$3>>2]|0;
- $305 = (_strcmp($304,9945)|0);
+ $305 = (_strcmp($304,9713)|0);
$306 = ($305|0)!=(0);
if (!($306)) {
HEAP32[$1>>2] = 14;
break;
}
$307 = HEAP32[$3>>2]|0;
- $308 = (_strcmp($307,9971)|0);
+ $308 = (_strcmp($307,9739)|0);
$309 = ($308|0)!=(0);
if (!($309)) {
HEAP32[$1>>2] = 3;
break;
}
$310 = HEAP32[$3>>2]|0;
- $311 = (_strcmp($310,9994)|0);
+ $311 = (_strcmp($310,9762)|0);
$312 = ($311|0)!=(0);
if (!($312)) {
HEAP32[$1>>2] = 15;
break;
}
$313 = HEAP32[$3>>2]|0;
- $314 = (_strcmp($313,10032)|0);
+ $314 = (_strcmp($313,9800)|0);
$315 = ($314|0)!=(0);
if (!($315)) {
HEAP32[$1>>2] = 10;
break;
}
$316 = HEAP32[$3>>2]|0;
- $317 = (_strcmp($316,10048)|0);
+ $317 = (_strcmp($316,9816)|0);
$318 = ($317|0)!=(0);
if (!($318)) {
HEAP32[$1>>2] = 7;
break;
}
$319 = HEAP32[$3>>2]|0;
- $320 = (_strcmp($319,10063)|0);
+ $320 = (_strcmp($319,9831)|0);
$321 = ($320|0)!=(0);
if (!($321)) {
HEAP32[$1>>2] = 25;
break;
}
$322 = HEAP32[$3>>2]|0;
- $323 = (_strcmp($322,10086)|0);
+ $323 = (_strcmp($322,9854)|0);
$324 = ($323|0)!=(0);
if (!($324)) {
HEAP32[$1>>2] = 16;
break;
}
$325 = HEAP32[$3>>2]|0;
- $326 = (_strcmp($325,10099)|0);
+ $326 = (_strcmp($325,9867)|0);
$327 = ($326|0)!=(0);
if (!($327)) {
HEAP32[$1>>2] = 28;
break;
}
$328 = HEAP32[$3>>2]|0;
- $329 = (_strcmp($328,10113)|0);
+ $329 = (_strcmp($328,9881)|0);
$330 = ($329|0)!=(0);
if (!($330)) {
HEAP32[$1>>2] = 29;
break;
}
$331 = HEAP32[$3>>2]|0;
- $332 = (_strcmp($331,10127)|0);
+ $332 = (_strcmp($331,9895)|0);
$333 = ($332|0)!=(0);
if (!($333)) {
HEAP32[$1>>2] = 1;
break;
}
$334 = HEAP32[$3>>2]|0;
- $335 = (_strcmp($334,10147)|0);
+ $335 = (_strcmp($334,9915)|0);
$336 = ($335|0)!=(0);
if (!($336)) {
HEAP32[$1>>2] = 8;
break;
}
$337 = HEAP32[$3>>2]|0;
- $338 = (_strcmp($337,10167)|0);
+ $338 = (_strcmp($337,9935)|0);
$339 = ($338|0)!=(0);
if (!($339)) {
HEAP32[$1>>2] = 17;
break;
}
$340 = HEAP32[$3>>2]|0;
- $341 = (_strcmp($340,10183)|0);
+ $341 = (_strcmp($340,9951)|0);
$342 = ($341|0)!=(0);
if (!($342)) {
HEAP32[$1>>2] = 18;
break;
}
$343 = HEAP32[$3>>2]|0;
- $344 = (_strcmp($343,10201)|0);
+ $344 = (_strcmp($343,9969)|0);
$345 = ($344|0)!=(0);
if (!($345)) {
HEAP32[$1>>2] = 26;
break;
}
$346 = HEAP32[$3>>2]|0;
- $347 = (_strcmp($346,10217)|0);
+ $347 = (_strcmp($346,9985)|0);
$348 = ($347|0)!=(0);
if (!($348)) {
HEAP32[$1>>2] = 19;
break;
}
$349 = HEAP32[$3>>2]|0;
- $350 = (_strcmp($349,10232)|0);
+ $350 = (_strcmp($349,10000)|0);
$351 = ($350|0)!=(0);
if (!($351)) {
HEAP32[$1>>2] = 9;
break;
}
$352 = HEAP32[$3>>2]|0;
- $353 = (_strcmp($352,10254)|0);
+ $353 = (_strcmp($352,10022)|0);
$354 = ($353|0)!=(0);
if (!($354)) {
HEAP32[$1>>2] = 30;
break;
}
$355 = HEAP32[$3>>2]|0;
- $356 = (_strcmp($355,10272)|0);
+ $356 = (_strcmp($355,10040)|0);
$357 = ($356|0)!=(0);
if (!($357)) {
HEAP32[$1>>2] = 31;
break;
}
$358 = HEAP32[$3>>2]|0;
- $359 = (_strcmp($358,10293)|0);
+ $359 = (_strcmp($358,10061)|0);
$360 = ($359|0)!=(0);
if (!($360)) {
HEAP32[$1>>2] = 10;
break;
}
$361 = HEAP32[$3>>2]|0;
- $362 = (_strcmp($361,10311)|0);
+ $362 = (_strcmp($361,10079)|0);
$363 = ($362|0)!=(0);
if (!($363)) {
HEAP32[$1>>2] = 11;
break;
}
$364 = HEAP32[$3>>2]|0;
- $365 = (_strcmp($364,10324)|0);
+ $365 = (_strcmp($364,10092)|0);
$366 = ($365|0)!=(0);
if (!($366)) {
- HEAP32[$1>>2] = 1;
+ HEAP32[$1>>2] = 2;
break;
}
$367 = HEAP32[$3>>2]|0;
- $368 = (_strcmp($367,10339)|0);
+ $368 = (_strcmp($367,10107)|0);
$369 = ($368|0)!=(0);
if (!($369)) {
HEAP32[$1>>2] = 12;
break;
}
$370 = HEAP32[$3>>2]|0;
- $371 = (_strcmp($370,10353)|0);
+ $371 = (_strcmp($370,10121)|0);
$372 = ($371|0)!=(0);
if (!($372)) {
HEAP32[$1>>2] = 1;
break;
}
$373 = HEAP32[$3>>2]|0;
- $374 = (_strcmp($373,10363)|0);
+ $374 = (_strcmp($373,10131)|0);
$375 = ($374|0)!=(0);
if (!($375)) {
HEAP32[$1>>2] = 1;
break;
}
$376 = HEAP32[$3>>2]|0;
- $377 = (_strcmp($376,10373)|0);
+ $377 = (_strcmp($376,10141)|0);
$378 = ($377|0)!=(0);
if (!($378)) {
HEAP32[$1>>2] = 2;
break;
}
$379 = HEAP32[$3>>2]|0;
- $380 = (_strcmp($379,10395)|0);
+ $380 = (_strcmp($379,10163)|0);
$381 = ($380|0)!=(0);
if (!($381)) {
HEAP32[$1>>2] = 13;
break;
}
$382 = HEAP32[$3>>2]|0;
- $383 = (_strcmp($382,10421)|0);
+ $383 = (_strcmp($382,10189)|0);
$384 = ($383|0)!=(0);
if (!($384)) {
HEAP32[$1>>2] = 14;
break;
}
$385 = HEAP32[$3>>2]|0;
- $386 = (_strcmp($385,10448)|0);
+ $386 = (_strcmp($385,10216)|0);
$387 = ($386|0)!=(0);
if (!($387)) {
HEAP32[$1>>2] = 27;
break;
}
$388 = HEAP32[$3>>2]|0;
- $389 = (_strcmp($388,10461)|0);
+ $389 = (_strcmp($388,10229)|0);
$390 = ($389|0)!=(0);
if (!($390)) {
HEAP32[$1>>2] = 20;
break;
}
$391 = HEAP32[$3>>2]|0;
- $392 = (_strcmp($391,10476)|0);
+ $392 = (_strcmp($391,10244)|0);
$393 = ($392|0)!=(0);
if (!($393)) {
HEAP32[$1>>2] = 4;
break;
}
$394 = HEAP32[$3>>2]|0;
- $395 = (_strcmp($394,10491)|0);
+ $395 = (_strcmp($394,10259)|0);
$396 = ($395|0)!=(0);
if (!($396)) {
- HEAP32[$1>>2] = 2;
+ HEAP32[$1>>2] = 3;
break;
}
$397 = HEAP32[$3>>2]|0;
- $398 = (_strcmp($397,10515)|0);
+ $398 = (_strcmp($397,10283)|0);
$399 = ($398|0)!=(0);
if (!($399)) {
HEAP32[$1>>2] = 2;
break;
}
$400 = HEAP32[$3>>2]|0;
- $401 = (_strcmp($400,10526)|0);
+ $401 = (_strcmp($400,10294)|0);
$402 = ($401|0)!=(0);
if (!($402)) {
HEAP32[$1>>2] = 32;
break;
}
$403 = HEAP32[$3>>2]|0;
- $404 = (_strcmp($403,10548)|0);
+ $404 = (_strcmp($403,10316)|0);
$405 = ($404|0)!=(0);
if (!($405)) {
HEAP32[$1>>2] = 21;
break;
}
$406 = HEAP32[$3>>2]|0;
- $407 = (_strcmp($406,10570)|0);
+ $407 = (_strcmp($406,10338)|0);
$408 = ($407|0)!=(0);
if (!($408)) {
HEAP32[$1>>2] = 5;
break;
}
$409 = HEAP32[$3>>2]|0;
- $410 = (_strcmp($409,10594)|0);
+ $410 = (_strcmp($409,10362)|0);
$411 = ($410|0)!=(0);
if (!($411)) {
- HEAP32[$1>>2] = 3;
+ HEAP32[$1>>2] = 4;
break;
}
$412 = HEAP32[$3>>2]|0;
- $413 = (_strcmp($412,10603)|0);
+ $413 = (_strcmp($412,10371)|0);
$414 = ($413|0)!=(0);
if (!($414)) {
- HEAP32[$1>>2] = 4;
+ HEAP32[$1>>2] = 5;
break;
}
$415 = HEAP32[$3>>2]|0;
- $416 = (_strcmp($415,10611)|0);
+ $416 = (_strcmp($415,10379)|0);
$417 = ($416|0)!=(0);
if (!($417)) {
HEAP32[$1>>2] = 1;
break;
}
$418 = HEAP32[$3>>2]|0;
- $419 = (_strcmp($418,10624)|0);
+ $419 = (_strcmp($418,10392)|0);
$420 = ($419|0)!=(0);
if (!($420)) {
HEAP32[$1>>2] = 2;
break;
}
$421 = HEAP32[$3>>2]|0;
- $422 = (_strcmp($421,10638)|0);
+ $422 = (_strcmp($421,10406)|0);
$423 = ($422|0)!=(0);
if (!($423)) {
HEAP32[$1>>2] = 15;
break;
}
$424 = HEAP32[$3>>2]|0;
- $425 = (_strcmp($424,10650)|0);
+ $425 = (_strcmp($424,10418)|0);
$426 = ($425|0)!=(0);
if (!($426)) {
HEAP32[$1>>2] = 16;
break;
}
$427 = HEAP32[$3>>2]|0;
- $428 = (_strcmp($427,10659)|0);
+ $428 = (_strcmp($427,10427)|0);
$429 = ($428|0)!=(0);
if (!($429)) {
HEAP32[$1>>2] = 17;
break;
}
$430 = HEAP32[$3>>2]|0;
- $431 = (_strcmp($430,10669)|0);
+ $431 = (_strcmp($430,10437)|0);
$432 = ($431|0)!=(0);
if (!($432)) {
HEAP32[$1>>2] = 18;
break;
}
$433 = HEAP32[$3>>2]|0;
- $434 = (_strcmp($433,10681)|0);
+ $434 = (_strcmp($433,10449)|0);
$435 = ($434|0)!=(0);
if (!($435)) {
HEAP32[$1>>2] = 19;
break;
}
$436 = HEAP32[$3>>2]|0;
- $437 = (_strcmp($436,10692)|0);
+ $437 = (_strcmp($436,10460)|0);
$438 = ($437|0)!=(0);
if (!($438)) {
HEAP32[$1>>2] = 20;
break;
}
$439 = HEAP32[$3>>2]|0;
- $440 = (_strcmp($439,10700)|0);
+ $440 = (_strcmp($439,10468)|0);
$441 = ($440|0)!=(0);
if (!($441)) {
HEAP32[$1>>2] = 3;
break;
}
$442 = HEAP32[$3>>2]|0;
- $443 = (_strcmp($442,10712)|0);
+ $443 = (_strcmp($442,10480)|0);
$444 = ($443|0)!=(0);
if (!($444)) {
HEAP32[$1>>2] = 21;
break;
}
$445 = HEAP32[$3>>2]|0;
- $446 = (_strcmp($445,10727)|0);
+ $446 = (_strcmp($445,10495)|0);
$447 = ($446|0)!=(0);
if (!($447)) {
HEAP32[$1>>2] = 22;
break;
}
$448 = HEAP32[$3>>2]|0;
- $449 = (_strcmp($448,10739)|0);
+ $449 = (_strcmp($448,10507)|0);
$450 = ($449|0)!=(0);
if (!($450)) {
HEAP32[$1>>2] = 23;
break;
}
$451 = HEAP32[$3>>2]|0;
- $452 = (_strcmp($451,10753)|0);
+ $452 = (_strcmp($451,10521)|0);
$453 = ($452|0)!=(0);
if (!($453)) {
HEAP32[$1>>2] = 11;
break;
}
$454 = HEAP32[$3>>2]|0;
- $455 = (_strcmp($454,10778)|0);
+ $455 = (_strcmp($454,10546)|0);
$456 = ($455|0)!=(0);
if (!($456)) {
HEAP32[$1>>2] = 24;
break;
}
$457 = HEAP32[$3>>2]|0;
- $458 = (_strcmp($457,10795)|0);
+ $458 = (_strcmp($457,10563)|0);
$459 = ($458|0)!=(0);
if (!($459)) {
HEAP32[$1>>2] = 25;
break;
}
$460 = HEAP32[$3>>2]|0;
- $461 = (_strcmp($460,10811)|0);
+ $461 = (_strcmp($460,10579)|0);
$462 = ($461|0)!=(0);
if (!($462)) {
HEAP32[$1>>2] = 26;
break;
}
$463 = HEAP32[$3>>2]|0;
- $464 = (_strcmp($463,10827)|0);
+ $464 = (_strcmp($463,10595)|0);
$465 = ($464|0)!=(0);
if (!($465)) {
HEAP32[$1>>2] = 12;
break;
}
$466 = HEAP32[$3>>2]|0;
- $467 = (_strcmp($466,10839)|0);
+ $467 = (_strcmp($466,10607)|0);
$468 = ($467|0)!=(0);
if (!($468)) {
HEAP32[$1>>2] = 33;
break;
}
$469 = HEAP32[$3>>2]|0;
- $470 = (_strcmp($469,10851)|0);
+ $470 = (_strcmp($469,10619)|0);
$471 = ($470|0)!=(0);
if (!($471)) {
HEAP32[$1>>2] = 34;
break;
}
$472 = HEAP32[$3>>2]|0;
- $473 = (_strcmp($472,10875)|0);
+ $473 = (_strcmp($472,10643)|0);
$474 = ($473|0)!=(0);
if (!($474)) {
HEAP32[$1>>2] = 1;
break;
}
$475 = HEAP32[$3>>2]|0;
- $476 = (_strcmp($475,10888)|0);
+ $476 = (_strcmp($475,10656)|0);
$477 = ($476|0)!=(0);
if (!($477)) {
HEAP32[$1>>2] = 2;
break;
}
$478 = HEAP32[$3>>2]|0;
- $479 = (_strcmp($478,10902)|0);
+ $479 = (_strcmp($478,10670)|0);
$480 = ($479|0)!=(0);
if (!($480)) {
HEAP32[$1>>2] = 35;
break;
}
$481 = HEAP32[$3>>2]|0;
- $482 = (_strcmp($481,10924)|0);
+ $482 = (_strcmp($481,10692)|0);
$483 = ($482|0)!=(0);
if (!($483)) {
HEAP32[$1>>2] = 36;
break;
}
$484 = HEAP32[$3>>2]|0;
- $485 = (_strcmp($484,10931)|0);
+ $485 = (_strcmp($484,10699)|0);
$486 = ($485|0)!=(0);
if (!($486)) {
HEAP32[$1>>2] = 3;
break;
}
$487 = HEAP32[$3>>2]|0;
- $488 = (_strcmp($487,10947)|0);
+ $488 = (_strcmp($487,10715)|0);
$489 = ($488|0)!=(0);
if (!($489)) {
HEAP32[$1>>2] = 2;
break;
}
$490 = HEAP32[$3>>2]|0;
- $491 = (_strcmp($490,10964)|0);
+ $491 = (_strcmp($490,10732)|0);
$492 = ($491|0)!=(0);
if (!($492)) {
HEAP32[$1>>2] = 1;
break;
}
$493 = HEAP32[$3>>2]|0;
- $494 = (_strcmp($493,10981)|0);
+ $494 = (_strcmp($493,10749)|0);
$495 = ($494|0)!=(0);
if (!($495)) {
HEAP32[$1>>2] = 28;
break;
}
$496 = HEAP32[$3>>2]|0;
- $497 = (_strcmp($496,10997)|0);
+ $497 = (_strcmp($496,10765)|0);
$498 = ($497|0)!=(0);
if (!($498)) {
HEAP32[$1>>2] = 1;
break;
}
$499 = HEAP32[$3>>2]|0;
- $500 = (_strcmp($499,11013)|0);
+ $500 = (_strcmp($499,10781)|0);
$501 = ($500|0)!=(0);
if (!($501)) {
HEAP32[$1>>2] = 4;
break;
}
$502 = HEAP32[$3>>2]|0;
- $503 = (_strcmp($502,11030)|0);
+ $503 = (_strcmp($502,10798)|0);
$504 = ($503|0)!=(0);
if (!($504)) {
HEAP32[$1>>2] = 29;
break;
}
$505 = HEAP32[$3>>2]|0;
- $506 = (_strcmp($505,11044)|0);
+ $506 = (_strcmp($505,10812)|0);
$507 = ($506|0)!=(0);
if (!($507)) {
HEAP32[$1>>2] = 30;
break;
}
$508 = HEAP32[$3>>2]|0;
- $509 = (_strcmp($508,11056)|0);
+ $509 = (_strcmp($508,10824)|0);
$510 = ($509|0)!=(0);
if (!($510)) {
HEAP32[$1>>2] = 22;
break;
}
$511 = HEAP32[$3>>2]|0;
- $512 = (_strcmp($511,11067)|0);
+ $512 = (_strcmp($511,10835)|0);
$513 = ($512|0)!=(0);
if (!($513)) {
HEAP32[$1>>2] = 2;
break;
}
$514 = HEAP32[$3>>2]|0;
- $515 = (_strcmp($514,11080)|0);
+ $515 = (_strcmp($514,10848)|0);
$516 = ($515|0)!=(0);
if (!($516)) {
HEAP32[$1>>2] = 23;
break;
}
$517 = HEAP32[$3>>2]|0;
- $518 = (_strcmp($517,11090)|0);
+ $518 = (_strcmp($517,10858)|0);
$519 = ($518|0)!=(0);
if (!($519)) {
HEAP32[$1>>2] = 2;
break;
}
$520 = HEAP32[$3>>2]|0;
- $521 = (_strcmp($520,11107)|0);
+ $521 = (_strcmp($520,10875)|0);
$522 = ($521|0)!=(0);
if (!($522)) {
HEAP32[$1>>2] = 24;
break;
}
$523 = HEAP32[$3>>2]|0;
- $524 = (_strcmp($523,11119)|0);
+ $524 = (_strcmp($523,10887)|0);
$525 = ($524|0)!=(0);
if (!($525)) {
HEAP32[$1>>2] = 25;
break;
}
$526 = HEAP32[$3>>2]|0;
- $527 = (_strcmp($526,11141)|0);
+ $527 = (_strcmp($526,10909)|0);
$528 = ($527|0)!=(0);
if (!($528)) {
HEAP32[$1>>2] = 26;
break;
}
$529 = HEAP32[$3>>2]|0;
- $530 = (_strcmp($529,11161)|0);
+ $530 = (_strcmp($529,10929)|0);
$531 = ($530|0)!=(0);
if (!($531)) {
HEAP32[$1>>2] = 3;
break;
}
$532 = HEAP32[$3>>2]|0;
- $533 = (_strcmp($532,11174)|0);
+ $533 = (_strcmp($532,10942)|0);
$534 = ($533|0)!=(0);
if (!($534)) {
HEAP32[$1>>2] = 27;
break;
}
$535 = HEAP32[$3>>2]|0;
- $536 = (_strcmp($535,11196)|0);
+ $536 = (_strcmp($535,10964)|0);
$537 = ($536|0)!=(0);
if (!($537)) {
HEAP32[$1>>2] = 28;
break;
}
$538 = HEAP32[$3>>2]|0;
- $539 = (_strcmp($538,11216)|0);
+ $539 = (_strcmp($538,10984)|0);
$540 = ($539|0)!=(0);
if (!($540)) {
HEAP32[$1>>2] = 2;
break;
}
$541 = HEAP32[$3>>2]|0;
- $542 = (_strcmp($541,11233)|0);
+ $542 = (_strcmp($541,11001)|0);
$543 = ($542|0)!=(0);
if (!($543)) {
HEAP32[$1>>2] = 2;
break;
}
$544 = HEAP32[$3>>2]|0;
- $545 = (_strcmp($544,11250)|0);
+ $545 = (_strcmp($544,11018)|0);
$546 = ($545|0)!=(0);
if (!($546)) {
HEAP32[$1>>2] = 3;
break;
}
$547 = HEAP32[$3>>2]|0;
- $548 = (_strcmp($547,11270)|0);
+ $548 = (_strcmp($547,11038)|0);
$549 = ($548|0)!=(0);
if ($549) {
$550 = HEAP32[$2>>2]|0;
@@ -18796,7 +23023,15 @@ function _emscripten_GetProcAddress($0) {
function _emscripten_get_global_libc() {
var label = 0, sp = 0;
sp = STACKTOP;
- return (33064|0);
+ return (33224|0);
+}
+function ___emscripten_pthread_data_constructor() {
+ var $0 = 0, $1 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 188|0);
+ HEAP32[$1>>2] = (33264);
+ return;
}
function ___stdio_close($0) {
$0 = $0|0;
@@ -18806,7 +23041,7 @@ function ___stdio_close($0) {
$vararg_buffer = sp;
$1 = ((($0)) + 60|0);
$2 = HEAP32[$1>>2]|0;
- $3 = (_dummy_738($2)|0);
+ $3 = (_dummy_736($2)|0);
HEAP32[$vararg_buffer>>2] = $3;
$4 = (___syscall6(6,($vararg_buffer|0))|0);
$5 = (___syscall_ret($4)|0);
@@ -18986,12 +23221,7 @@ function ___pthread_self_108() {
$0 = (_pthread_self()|0);
return ($0|0);
}
-function _pthread_self() {
- var label = 0, sp = 0;
- sp = STACKTOP;
- return (2980|0);
-}
-function _dummy_738($0) {
+function _dummy_736($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
@@ -19124,7 +23354,7 @@ function _vsnprintf($0,$1,$2,$3) {
STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
$4 = sp + 124|0;
$5 = sp;
- dest=$5; src=3356; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$5; src=3124; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$6 = (($1) + -1)|0;
$7 = ($6>>>0)>(2147483646);
if ($7) {
@@ -19195,7 +23425,7 @@ function _vfprintf($0,$1,$2) {
$$0 = -1;
} else {
$9 = ((($0)) + 76|0);
- $10 = HEAP32[$9>>2]|0;
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
$11 = ($10|0)>(-1);
if ($11) {
$12 = (___lockfile($0)|0);
@@ -19608,7 +23838,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$133 = HEAP8[$128>>0]|0;
$134 = $133 << 24 >> 24;
$135 = (($134) + -65)|0;
- $136 = ((11386 + (($$0252*58)|0)|0) + ($135)|0);
+ $136 = ((11154 + (($$0252*58)|0)|0) + ($135)|0);
$137 = HEAP8[$136>>0]|0;
$138 = $137&255;
$139 = (($138) + -1)|0;
@@ -19786,7 +24016,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$222 = (($220) + 1)|0;
$223 = $218 | $221;
$$0254$$0254$ = $223 ? $$0254 : $222;
- $$0228 = $216;$$1233 = 0;$$1238 = 11850;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
+ $$0228 = $216;$$1233 = 0;$$1238 = 11618;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
label = 67;
break;
}
@@ -19807,7 +24037,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$235 = (($233) + 4)|0;
$236 = $235;
HEAP32[$236>>2] = $232;
- $$0232 = 1;$$0237 = 11850;$242 = $231;$243 = $232;
+ $$0232 = 1;$$0237 = 11618;$242 = $231;$243 = $232;
label = 66;
break L71;
} else {
@@ -19815,8 +24045,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$238 = ($237|0)==(0);
$239 = $$1263$ & 1;
$240 = ($239|0)==(0);
- $$ = $240 ? 11850 : (11852);
- $$$ = $238 ? $$ : (11851);
+ $$ = $240 ? 11618 : (11620);
+ $$$ = $238 ? $$ : (11619);
$241 = $$1263$ & 2049;
$narrow = ($241|0)!=(0);
$$284$ = $narrow&1;
@@ -19833,7 +24063,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$168 = (($165) + 4)|0;
$169 = $168;
$170 = HEAP32[$169>>2]|0;
- $$0232 = 0;$$0237 = 11850;$242 = $167;$243 = $170;
+ $$0232 = 0;$$0237 = 11618;$242 = $167;$243 = $170;
label = 66;
break;
}
@@ -19846,7 +24076,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$264 = HEAP32[$263>>2]|0;
$265 = $261&255;
HEAP8[$13>>0] = $265;
- $$2 = $13;$$2234 = 0;$$2239 = 11850;$$2251 = $11;$$5 = 1;$$6268 = $164;
+ $$2 = $13;$$2234 = 0;$$2239 = 11618;$$2251 = $11;$$5 = 1;$$6268 = $164;
break;
}
case 109: {
@@ -19860,7 +24090,7 @@ function _printf_core($0,$1,$2,$3,$4) {
case 115: {
$269 = HEAP32[$6>>2]|0;
$270 = ($269|0)!=(0|0);
- $271 = $270 ? $269 : 11860;
+ $271 = $270 ? $269 : 11628;
$$1 = $271;
label = 71;
break;
@@ -19883,7 +24113,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$pre349 = HEAP32[$6>>2]|0;
$284 = ($$0254|0)==(0);
if ($284) {
- _pad_674($0,32,$$1260,0,$$1263$);
+ _pad_672($0,32,$$1260,0,$$1263$);
$$0240$lcssa357 = 0;
label = 84;
} else {
@@ -19900,7 +24130,7 @@ function _printf_core($0,$1,$2,$3,$4) {
break;
}
default: {
- $$2 = $21;$$2234 = 0;$$2239 = 11850;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
+ $$2 = $21;$$2234 = 0;$$2239 = 11618;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
}
}
} while(0);
@@ -19922,8 +24152,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$207 = ($206|0)==(0);
$or$cond283 = $207 | $205;
$208 = $$1236 >> 4;
- $209 = (11850 + ($208)|0);
- $$289 = $or$cond283 ? 11850 : $209;
+ $209 = (11618 + ($208)|0);
+ $$289 = $or$cond283 ? 11618 : $209;
$$290 = $or$cond283 ? 0 : 2;
$$0228 = $202;$$1233 = $$290;$$1238 = $$289;$$2256 = $$1255;$$4266 = $$3265;$248 = $197;$250 = $200;
label = 67;
@@ -19944,7 +24174,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$277 = (($$1) + ($$0254)|0);
$$3257 = $273 ? $$0254 : $276;
$$1250 = $273 ? $277 : $272;
- $$2 = $$1;$$2234 = 0;$$2239 = 11850;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
+ $$2 = $$1;$$2234 = 0;$$2239 = 11618;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
}
else if ((label|0) == 75) {
label = 0;
@@ -19980,7 +24210,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$0 = -1;
break L1;
}
- _pad_674($0,32,$$1260,$$0240$lcssa,$$1263$);
+ _pad_672($0,32,$$1260,$$0240$lcssa,$$1263$);
$295 = ($$0240$lcssa|0)==(0);
if ($295) {
$$0240$lcssa357 = 0;
@@ -20041,7 +24271,7 @@ function _printf_core($0,$1,$2,$3,$4) {
else if ((label|0) == 84) {
label = 0;
$303 = $$1263$ ^ 8192;
- _pad_674($0,32,$$1260,$$0240$lcssa357,$303);
+ _pad_672($0,32,$$1260,$$0240$lcssa357,$303);
$304 = ($$1260|0)>($$0240$lcssa357|0);
$305 = $304 ? $$1260 : $$0240$lcssa357;
$$0243 = $305;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
@@ -20055,14 +24285,14 @@ function _printf_core($0,$1,$2,$3,$4) {
$312 = (($$$5) + ($$2234))|0;
$313 = ($$1260|0)<($312|0);
$$2261 = $313 ? $312 : $$1260;
- _pad_674($0,32,$$2261,$312,$$6268);
+ _pad_672($0,32,$$2261,$312,$$6268);
_out($0,$$2239,$$2234);
$314 = $$6268 ^ 65536;
- _pad_674($0,48,$$2261,$312,$314);
- _pad_674($0,48,$$$5,$310,0);
+ _pad_672($0,48,$$2261,$312,$314);
+ _pad_672($0,48,$$$5,$310,0);
_out($0,$$2,$310);
$315 = $$6268 ^ 8192;
- _pad_674($0,32,$$2261,$312,$315);
+ _pad_672($0,32,$$2261,$312,$315);
$$0243 = $$2261;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
}
L114: do {
@@ -20474,7 +24704,7 @@ function _fmt_x($0,$1,$2,$3) {
$$056 = $2;$15 = $1;$8 = $0;
while(1) {
$7 = $8 & 15;
- $9 = (11902 + ($7)|0);
+ $9 = (11670 + ($7)|0);
$10 = HEAP8[$9>>0]|0;
$11 = $10&255;
$12 = $11 | $3;
@@ -20729,7 +24959,7 @@ function _memchr($0,$1,$2) {
$39 = $38 ? $$2 : 0;
return ($39|0);
}
-function _pad_674($0,$1,$2,$3,$4) {
+function _pad_672($0,$1,$2,$3,$4) {
$0 = $0|0;
$1 = $1|0;
$2 = $2|0;
@@ -20827,25 +25057,25 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$10 = sp + 512|0;
HEAP32[$7>>2] = 0;
$11 = ((($10)) + 12|0);
- (___DOUBLE_BITS_675($1)|0);
+ (___DOUBLE_BITS_673($1)|0);
$12 = tempRet0;
$13 = ($12|0)<(0);
if ($13) {
$14 = -$1;
- $$0471 = $14;$$0520 = 1;$$0521 = 11867;
+ $$0471 = $14;$$0520 = 1;$$0521 = 11635;
} else {
$15 = $4 & 2048;
$16 = ($15|0)==(0);
$17 = $4 & 1;
$18 = ($17|0)==(0);
- $$ = $18 ? (11868) : (11873);
- $$$ = $16 ? $$ : (11870);
+ $$ = $18 ? (11636) : (11641);
+ $$$ = $16 ? $$ : (11638);
$19 = $4 & 2049;
$narrow = ($19|0)!=(0);
$$534$ = $narrow&1;
$$0471 = $1;$$0520 = $$534$;$$0521 = $$$;
}
- (___DOUBLE_BITS_675($$0471)|0);
+ (___DOUBLE_BITS_673($$0471)|0);
$20 = tempRet0;
$21 = $20 & 2146435072;
$22 = ($21>>>0)<(2146435072);
@@ -20938,7 +25168,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$0523 = $8;$$2473 = $$1472;
while(1) {
$80 = (~~(($$2473)));
- $81 = (11902 + ($80)|0);
+ $81 = (11670 + ($80)|0);
$82 = HEAP8[$81>>0]|0;
$83 = $82&255;
$84 = $83 | $42;
@@ -20985,16 +25215,16 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$pn = $or$cond537 ? $103 : $99;
$$0525 = (($100) + ($45))|0;
$104 = (($$0525) + ($$pn))|0;
- _pad_674($0,32,$2,$104,$4);
+ _pad_672($0,32,$2,$104,$4);
_out($0,$$0521$,$45);
$105 = $4 ^ 65536;
- _pad_674($0,48,$2,$104,$105);
+ _pad_672($0,48,$2,$104,$105);
_out($0,$8,$99);
$106 = (($$pn) - ($99))|0;
- _pad_674($0,48,$106,0,0);
+ _pad_672($0,48,$106,0,0);
_out($0,$77,$100);
$107 = $4 ^ 8192;
- _pad_674($0,32,$2,$104,$107);
+ _pad_672($0,32,$2,$104,$107);
$$sink562 = $104;
break;
}
@@ -21492,10 +25722,10 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$319 = (($318) + ($$3477))|0;
$$1526 = (($319) + ($291))|0;
$320 = (($$1526) + ($$pn566))|0;
- _pad_674($0,32,$2,$320,$4);
+ _pad_672($0,32,$2,$320,$4);
_out($0,$$0521,$$0520);
$321 = $4 ^ 65536;
- _pad_674($0,48,$2,$320,$321);
+ _pad_672($0,48,$2,$320,$321);
if ($293) {
$322 = ($$9$ph>>>0)>($$556>>>0);
$$0496$$9 = $322 ? $$556 : $$9$ph;
@@ -21549,7 +25779,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
}
$339 = ($289|0)==(0);
if (!($339)) {
- _out($0,11918,1);
+ _out($0,11686,1);
}
$340 = ($337>>>0)<($$7505>>>0);
$341 = ($$3477|0)>(0);
@@ -21597,7 +25827,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$4478$lcssa = $$3477;
}
$357 = (($$4478$lcssa) + 9)|0;
- _pad_674($0,48,$357,9,0);
+ _pad_672($0,48,$357,9,0);
} else {
$358 = ((($$9$ph)) + 4|0);
$$7505$ = $$lcssa673 ? $$7505 : $358;
@@ -21630,7 +25860,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$2 = $372;
break;
}
- _out($0,11918,1);
+ _out($0,11686,1);
$$2 = $372;
} else {
$369 = ($$0>>>0)>($8>>>0);
@@ -21675,29 +25905,29 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$5$lcssa = $$3477;
}
$383 = (($$5$lcssa) + 18)|0;
- _pad_674($0,48,$383,18,0);
+ _pad_672($0,48,$383,18,0);
$384 = $11;
$385 = $$2513;
$386 = (($384) - ($385))|0;
_out($0,$$2513,$386);
}
$387 = $4 ^ 8192;
- _pad_674($0,32,$2,$320,$387);
+ _pad_672($0,32,$2,$320,$387);
$$sink562 = $320;
} else {
$27 = $5 & 32;
$28 = ($27|0)!=(0);
- $29 = $28 ? 11886 : 11890;
+ $29 = $28 ? 11654 : 11658;
$30 = ($$0471 != $$0471) | (0.0 != 0.0);
- $31 = $28 ? 11894 : 11898;
+ $31 = $28 ? 11662 : 11666;
$$0510 = $30 ? $31 : $29;
$32 = (($$0520) + 3)|0;
$33 = $4 & -65537;
- _pad_674($0,32,$2,$32,$33);
+ _pad_672($0,32,$2,$32,$33);
_out($0,$$0521,$$0520);
_out($0,$$0510,3);
$34 = $4 ^ 8192;
- _pad_674($0,32,$2,$32,$34);
+ _pad_672($0,32,$2,$32,$34);
$$sink562 = $32;
}
} while(0);
@@ -21705,7 +25935,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$555 = $388 ? $2 : $$sink562;
STACKTOP = sp;return ($$555|0);
}
-function ___DOUBLE_BITS_675($0) {
+function ___DOUBLE_BITS_673($0) {
$0 = +$0;
var $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
@@ -21786,10 +26016,10 @@ function _wcrtomb($0,$1,$2) {
$$0 = 1;
break;
}
- $6 = (___pthread_self_448()|0);
+ $6 = (___pthread_self_446()|0);
$7 = ((($6)) + 188|0);
$8 = HEAP32[$7>>2]|0;
- $9 = HEAP32[$8>>2]|0;
+ $9 = (Atomics_load(HEAP32,$8>>2)|0);
$not$ = ($9|0)==(0|0);
if ($not$) {
$10 = $1 & -128;
@@ -21879,7 +26109,7 @@ function _wcrtomb($0,$1,$2) {
} while(0);
return ($$0|0);
}
-function ___pthread_self_448() {
+function ___pthread_self_446() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_pthread_self()|0);
@@ -21899,7 +26129,7 @@ function ___strerror_l($0,$1) {
sp = STACKTOP;
$$016 = 0;
while(1) {
- $3 = (11920 + ($$016)|0);
+ $3 = (11688 + ($$016)|0);
$4 = HEAP8[$3>>0]|0;
$5 = $4&255;
$6 = ($5|0)==($0|0);
@@ -21910,7 +26140,7 @@ function ___strerror_l($0,$1) {
$7 = (($$016) + 1)|0;
$8 = ($7|0)==(87);
if ($8) {
- $$01214 = 12008;$$115 = 87;
+ $$01214 = 11776;$$115 = 87;
label = 5;
break;
} else {
@@ -21920,9 +26150,9 @@ function ___strerror_l($0,$1) {
if ((label|0) == 2) {
$2 = ($$016|0)==(0);
if ($2) {
- $$012$lcssa = 12008;
+ $$012$lcssa = 11776;
} else {
- $$01214 = 12008;$$115 = $$016;
+ $$01214 = 11776;$$115 = $$016;
label = 5;
}
}
@@ -21952,7 +26182,7 @@ function ___strerror_l($0,$1) {
}
}
$14 = ((($1)) + 20|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = (___lctrans($$012$lcssa,$15)|0);
return ($16|0);
}
@@ -22559,13 +26789,13 @@ function ___stpcpy($0,$1) {
function ___ofl_lock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___lock((33128|0));
- return (33136|0);
+ ___lock((33288|0));
+ return (33296|0);
}
function ___ofl_unlock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___unlock((33128|0));
+ ___unlock((33288|0));
return;
}
function _fflush($0) {
@@ -22576,12 +26806,12 @@ function _fflush($0) {
$1 = ($0|0)==(0|0);
do {
if ($1) {
- $8 = HEAP32[838]|0;
+ $8 = (Atomics_load(HEAP32,780)|0);
$9 = ($8|0)==(0|0);
if ($9) {
$29 = 0;
} else {
- $10 = HEAP32[838]|0;
+ $10 = (Atomics_load(HEAP32,780)|0);
$11 = (_fflush($10)|0);
$29 = $11;
}
@@ -22594,7 +26824,7 @@ function _fflush($0) {
$$02327 = $$02325;$$02426 = $29;
while(1) {
$14 = ((($$02327)) + 76|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = ($15|0)>(-1);
if ($16) {
$17 = (___lockfile($$02327)|0);
@@ -22633,7 +26863,7 @@ function _fflush($0) {
$$0 = $$024$lcssa;
} else {
$2 = ((($0)) + 76|0);
- $3 = HEAP32[$2>>2]|0;
+ $3 = (Atomics_load(HEAP32,$2>>2)|0);
$4 = ($3|0)>(-1);
if (!($4)) {
$5 = (___fflush_unlocked($0)|0);
@@ -23405,7 +27635,7 @@ function _srand($0) {
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = (($0) + -1)|0;
- $2 = 14112;
+ $2 = 14264;
$3 = $2;
HEAP32[$3>>2] = $1;
$4 = (($2) + 4)|0;
@@ -23418,7 +27648,7 @@ function _vprintf($0,$1) {
$1 = $1|0;
var $2 = 0, $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[806]|0;
+ $2 = HEAP32[748]|0;
$3 = (_vfprintf($2,$0,$1)|0);
return ($3|0);
}
@@ -23525,7 +27755,7 @@ function _strtok($0,$1) {
sp = STACKTOP;
$2 = ($0|0)==(0|0);
if ($2) {
- $3 = HEAP32[8285]|0;
+ $3 = HEAP32[8325]|0;
$4 = ($3|0)==(0|0);
if ($4) {
$$0 = 0;
@@ -23544,22 +27774,22 @@ function _strtok($0,$1) {
$7 = HEAP8[$6>>0]|0;
$8 = ($7<<24>>24)==(0);
if ($8) {
- HEAP32[8285] = 0;
+ HEAP32[8325] = 0;
$$0 = 0;
break;
}
$9 = (_strcspn($6,$1)|0);
$10 = (($6) + ($9)|0);
- HEAP32[8285] = $10;
+ HEAP32[8325] = $10;
$11 = HEAP8[$10>>0]|0;
$12 = ($11<<24>>24)==(0);
if ($12) {
- HEAP32[8285] = 0;
+ HEAP32[8325] = 0;
$$0 = $6;
break;
} else {
$13 = ((($10)) + 1|0);
- HEAP32[8285] = $13;
+ HEAP32[8325] = $13;
HEAP8[$10>>0] = 0;
$$0 = $6;
break;
@@ -23568,112 +27798,2175 @@ function _strtok($0,$1) {
} while(0);
return ($$0|0);
}
-function _malloc($0) {
+function __emscripten_atomic_fetch_and_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_async_run_in_main_thread($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$0$in = 0, $$0$in19 = 0, $$0$lcssa = 0, $$020 = 0, $$expand_i1_val = 0, $$lcssa = 0, $$lcssa18 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, $call_queue$init$val = 0, $call_queue$init$val$pre_trunc = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ($0|0)==(0|0);
+ if ($1) {
+ ___assert_fail((13870|0),(13702|0),260,(13875|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ if (!($3)) {
+ __do_call($0);
+ return;
+ }
+ (___pthread_mutex_lock(33820)|0);
+ $call_queue$init$val$pre_trunc = HEAP8[38335]|0;
+ $call_queue$init$val = $call_queue$init$val$pre_trunc&1;
+ if (!($call_queue$init$val)) {
+ $$expand_i1_val = 1;
+ HEAP8[38335] = $$expand_i1_val;
+ }
+ $4 = (Atomics_load(HEAP32, 8462)|0);
+ $5 = (Atomics_load(HEAP32, 8463)|0);
+ $$0$in19 = (($5) + 1)|0;
+ $$020 = (($$0$in19|0) % 128)&-1;
+ $6 = ($$020|0)==($4|0);
+ if ($6) {
+ $7 = $4;
+ while(1) {
+ (___pthread_mutex_unlock(33820)|0);
+ (_emscripten_futex_wait((33848|0),($7|0),inf)|0);
+ (___pthread_mutex_lock(33820)|0);
+ $8 = (Atomics_load(HEAP32, 8462)|0);
+ $9 = (Atomics_load(HEAP32, 8463)|0);
+ $$0$in = (($9) + 1)|0;
+ $$0 = (($$0$in|0) % 128)&-1;
+ $10 = ($$0|0)==($8|0);
+ if ($10) {
+ $7 = $8;
+ } else {
+ $$0$lcssa = $$0;$$lcssa = $9;$$lcssa18 = $8;
+ break;
+ }
+ }
+ } else {
+ $$0$lcssa = $$020;$$lcssa = $5;$$lcssa18 = $4;
+ }
+ $11 = (33856 + ($$lcssa<<2)|0);
+ HEAP32[$11>>2] = $0;
+ $12 = ($$lcssa18|0)==($$lcssa|0);
+ if ($12) {
+ _emscripten_asm_const_v(1);
+ }
+ $13 = (Atomics_store(HEAP32, 8463, $$0$lcssa)|0);
+ (___pthread_mutex_unlock(33820)|0);
+ return;
+}
+function _emscripten_atomic_add_u64($0,$1,$2) {
$0 = $0|0;
- var $$$0192$i = 0, $$$0193$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0 = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i18$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0197 = 0, $$0199 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
- var $$0212$i$i = 0, $$024371$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1196$i = 0, $$1198$i = 0;
- var $$124470$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i201 = 0, $$3350$i = 0, $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0;
- var $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$723948$i = 0, $$749$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i19$i = 0, $$pre$i210 = 0, $$pre$i212 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i20$iZ2D = 0, $$pre$phi$i211Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0;
- var $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i204 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0;
- var $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0;
- var $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0;
- var $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0;
- var $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0;
- var $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0;
- var $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0;
- var $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0;
- var $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0;
- var $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0;
- var $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0;
- var $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0;
- var $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0;
- var $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0;
- var $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0;
- var $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0;
- var $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0;
- var $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0;
- var $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0;
- var $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0;
- var $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0;
- var $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0;
- var $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0;
- var $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0;
- var $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0;
- var $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0;
- var $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0;
- var $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0;
- var $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0;
- var $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0;
- var $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0;
- var $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0;
- var $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0;
- var $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0;
- var $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0;
- var $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0;
- var $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0;
- var $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0;
- var $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0;
- var $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0;
- var $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0;
- var $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0;
- var $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0;
- var $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0;
- var $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0;
- var $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0;
- var $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0;
- var $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0;
- var $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0;
- var $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0;
- var $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0;
- var $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0;
- var $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0;
- var $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0, $cond$i$i = 0, $cond$i208 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i17$i = 0, $not$$i209 = 0, $not$$i216 = 0, $not$1$i = 0, $not$1$i203 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0;
- var $or$cond$i = 0, $or$cond$i214 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond11$not$i = 0, $or$cond12$i = 0, $or$cond2$i = 0, $or$cond2$i215 = 0, $or$cond5$i = 0, $or$cond50$i = 0, $or$cond51$i = 0, $or$cond7$i = 0, label = 0, sp = 0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_cas_u64($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $5 = $0;
+ $6 = $5 >>> 3;
+ $7 = $6 & 255;
+ $8 = (34376 + ($7<<2)|0);
+ while(1) {
+ while(1) {
+ $9 = (Atomics_load(HEAP32, $8>>2)|0);
+ $10 = (Atomics_compareExchange(HEAP32, $8>>2, $9, 1)|0);
+ $11 = ($9|0)==($10|0);
+ if ($11) {
+ break;
+ }
+ }
+ $12 = ($9|0)==(0);
+ if ($12) {
+ break;
+ }
+ }
+ $13 = $0;
+ $14 = $13;
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (($13) + 4)|0;
+ $17 = $16;
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($15|0)==($1|0);
+ $20 = ($18|0)==($2|0);
+ $21 = $19 & $20;
+ if (!($21)) {
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+ }
+ $22 = $0;
+ $23 = $22;
+ HEAP32[$23>>2] = $3;
+ $24 = (($22) + 4)|0;
+ $25 = $24;
+ HEAP32[$25>>2] = $4;
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+}
+function _emscripten_atomic_exchange_u32($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ while(1) {
+ $2 = (Atomics_load(HEAP32, $0>>2)|0);
+ $3 = (Atomics_compareExchange(HEAP32, $0>>2, $2, $1)|0);
+ $4 = ($2|0)==($3|0);
+ if ($4) {
+ break;
+ }
+ }
+ return ($2|0);
+}
+function _emscripten_atomic_exchange_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
+ var sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $0;
+ $18 = $17;
+ HEAP32[$18>>2] = $1;
+ $19 = (($17) + 4)|0;
+ $20 = $19;
+ HEAP32[$20>>2] = $2;
+ $21 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_atomic_load_f32($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = (Atomics_load(HEAP32, $0>>2)|0);
+ $2 = (HEAP32[tempDoublePtr>>2]=$1,+HEAPF32[tempDoublePtr>>2]);
+ return (+$2);
+}
+function _emscripten_atomic_load_f64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34376 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = +HEAPF64[$0>>3];
+ $10 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ return (+$9);
+}
+function _emscripten_atomic_load_u64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34376 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = $0;
+ $10 = $9;
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (($9) + 4)|0;
+ $13 = $12;
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ tempRet0 = ($14);
+ return ($11|0);
+}
+function _emscripten_atomic_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_store_f32($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $2 = 0, $3 = 0, $4 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = (HEAPF32[tempDoublePtr>>2]=$1,HEAP32[tempDoublePtr>>2]|0);
+ $3 = (Atomics_store(HEAP32, $0>>2, $2)|0);
+ $4 = (+($3>>>0));
+ return (+$4);
+}
+function _emscripten_atomic_store_f64($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = $0;
+ $3 = $2 >>> 3;
+ $4 = $3 & 255;
+ $5 = (34376 + ($4<<2)|0);
+ while(1) {
+ while(1) {
+ $6 = (Atomics_load(HEAP32, $5>>2)|0);
+ $7 = (Atomics_compareExchange(HEAP32, $5>>2, $6, 1)|0);
+ $8 = ($6|0)==($7|0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = ($6|0)==(0);
+ if ($9) {
+ break;
+ }
+ }
+ HEAPF64[$0>>3] = $1;
+ $10 = (Atomics_store(HEAP32, $5>>2, 0)|0);
+ return (+$1);
+}
+function _emscripten_atomic_store_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ HEAP32[$12>>2] = $1;
+ $13 = (($11) + 4)|0;
+ $14 = $13;
+ HEAP32[$14>>2] = $2;
+ $15 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($2);
+ return ($1|0);
+}
+function _emscripten_atomic_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_main_thread_process_queued_calls() {
+ var $$0910 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_emscripten_is_main_runtime_thread()|0);
+ $1 = ($0|0)==(0);
+ if ($1) {
+ ___assert_fail((13580|0),(13702|0),424,(13766|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ $4 = HEAP32[8454]|0;
+ $5 = ($4|0)!=(0);
+ $or$cond = $3 | $5;
+ if ($or$cond) {
+ return;
+ }
+ HEAP32[8454] = 1;
+ (___pthread_mutex_lock(33820)|0);
+ $6 = (Atomics_load(HEAP32, 8462)|0);
+ $7 = (Atomics_load(HEAP32, 8463)|0);
+ $8 = ($6|0)==($7|0);
+ (___pthread_mutex_unlock(33820)|0);
+ if (!($8)) {
+ $$0910 = $6;
+ while(1) {
+ $9 = (33856 + ($$0910<<2)|0);
+ $10 = HEAP32[$9>>2]|0;
+ __do_call($10);
+ (___pthread_mutex_lock(33820)|0);
+ $11 = (($$0910) + 1)|0;
+ $12 = (($11|0) % 128)&-1;
+ $13 = (Atomics_store(HEAP32, 8462, $12)|0);
+ $14 = (Atomics_load(HEAP32, 8463)|0);
+ $15 = ($12|0)==($14|0);
+ (___pthread_mutex_unlock(33820)|0);
+ if ($15) {
+ break;
+ } else {
+ $$0910 = $12;
+ }
+ }
+ }
+ (_emscripten_futex_wake((33848|0),2147483647)|0);
+ HEAP32[8454] = 0;
+ return;
+}
+function _emscripten_sync_run_in_main_thread($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ _emscripten_async_run_in_main_thread($0);
+ (_emscripten_wait_for_call_v($0,inf)|0);
+ return;
+}
+function _emscripten_sync_run_in_main_thread_0($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $1 = sp;
+ dest=$1; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$1>>2] = $0;
+ $2 = ((($1)) + 80|0);
+ HEAP32[$2>>2] = 0;
+ _emscripten_async_run_in_main_thread($1);
+ (_emscripten_wait_for_call_v($1,inf)|0);
+ $3 = HEAP32[$2>>2]|0;
+ STACKTOP = sp;return ($3|0);
+}
+function _emscripten_sync_run_in_main_thread_1($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $2 = sp;
+ dest=$2; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$2>>2] = $0;
+ $3 = ((($2)) + 16|0);
+ HEAP32[$3>>2] = $1;
+ $4 = ((($2)) + 80|0);
+ HEAP32[$4>>2] = 0;
+ _emscripten_async_run_in_main_thread($2);
+ (_emscripten_wait_for_call_v($2,inf)|0);
+ $5 = HEAP32[$4>>2]|0;
+ STACKTOP = sp;return ($5|0);
+}
+function _emscripten_sync_run_in_main_thread_2($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $3 = sp;
+ dest=$3; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$3>>2] = $0;
+ $4 = ((($3)) + 16|0);
+ HEAP32[$4>>2] = $1;
+ $5 = ((($3)) + 24|0);
+ HEAP32[$5>>2] = $2;
+ $6 = ((($3)) + 80|0);
+ HEAP32[$6>>2] = 0;
+ _emscripten_async_run_in_main_thread($3);
+ (_emscripten_wait_for_call_v($3,inf)|0);
+ $7 = HEAP32[$6>>2]|0;
+ STACKTOP = sp;return ($7|0);
+}
+function _emscripten_sync_run_in_main_thread_3($0,$1,$2,$3) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $4 = sp;
+ dest=$4; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$4>>2] = $0;
+ $5 = ((($4)) + 16|0);
+ HEAP32[$5>>2] = $1;
+ $6 = ((($4)) + 24|0);
+ HEAP32[$6>>2] = $2;
+ $7 = ((($4)) + 32|0);
+ HEAP32[$7>>2] = $3;
+ $8 = ((($4)) + 80|0);
+ HEAP32[$8>>2] = 0;
+ _emscripten_async_run_in_main_thread($4);
+ (_emscripten_wait_for_call_v($4,inf)|0);
+ $9 = HEAP32[$8>>2]|0;
+ STACKTOP = sp;return ($9|0);
+}
+function _emscripten_sync_run_in_main_thread_4($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $5 = sp;
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $6 = ((($5)) + 16|0);
+ HEAP32[$6>>2] = $1;
+ $7 = ((($5)) + 24|0);
+ HEAP32[$7>>2] = $2;
+ $8 = ((($5)) + 32|0);
+ HEAP32[$8>>2] = $3;
+ $9 = ((($5)) + 40|0);
+ HEAP32[$9>>2] = $4;
+ $10 = ((($5)) + 80|0);
+ HEAP32[$10>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $11 = HEAP32[$10>>2]|0;
+ STACKTOP = sp;return ($11|0);
+}
+function _emscripten_sync_run_in_main_thread_5($0,$1,$2,$3,$4,$5) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $6 = sp;
+ dest=$6; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$6>>2] = $0;
+ $7 = ((($6)) + 16|0);
+ HEAP32[$7>>2] = $1;
+ $8 = ((($6)) + 24|0);
+ HEAP32[$8>>2] = $2;
+ $9 = ((($6)) + 32|0);
+ HEAP32[$9>>2] = $3;
+ $10 = ((($6)) + 40|0);
+ HEAP32[$10>>2] = $4;
+ $11 = ((($6)) + 48|0);
+ HEAP32[$11>>2] = $5;
+ $12 = ((($6)) + 80|0);
+ HEAP32[$12>>2] = 0;
+ _emscripten_async_run_in_main_thread($6);
+ (_emscripten_wait_for_call_v($6,inf)|0);
+ $13 = HEAP32[$12>>2]|0;
+ STACKTOP = sp;return ($13|0);
+}
+function _emscripten_sync_run_in_main_thread_6($0,$1,$2,$3,$4,$5,$6) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $7 = sp;
+ dest=$7; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$7>>2] = $0;
+ $8 = ((($7)) + 16|0);
+ HEAP32[$8>>2] = $1;
+ $9 = ((($7)) + 24|0);
+ HEAP32[$9>>2] = $2;
+ $10 = ((($7)) + 32|0);
+ HEAP32[$10>>2] = $3;
+ $11 = ((($7)) + 40|0);
+ HEAP32[$11>>2] = $4;
+ $12 = ((($7)) + 48|0);
+ HEAP32[$12>>2] = $5;
+ $13 = ((($7)) + 56|0);
+ HEAP32[$13>>2] = $6;
+ $14 = ((($7)) + 80|0);
+ HEAP32[$14>>2] = 0;
+ _emscripten_async_run_in_main_thread($7);
+ (_emscripten_wait_for_call_v($7,inf)|0);
+ $15 = HEAP32[$14>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function _emscripten_sync_run_in_main_thread_7($0,$1,$2,$3,$4,$5,$6,$7) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ $7 = $7|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $8 = sp;
+ dest=$8; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$8>>2] = $0;
+ $9 = ((($8)) + 16|0);
+ HEAP32[$9>>2] = $1;
+ $10 = ((($8)) + 24|0);
+ HEAP32[$10>>2] = $2;
+ $11 = ((($8)) + 32|0);
+ HEAP32[$11>>2] = $3;
+ $12 = ((($8)) + 40|0);
+ HEAP32[$12>>2] = $4;
+ $13 = ((($8)) + 48|0);
+ HEAP32[$13>>2] = $5;
+ $14 = ((($8)) + 56|0);
+ HEAP32[$14>>2] = $6;
+ $15 = ((($8)) + 64|0);
+ HEAP32[$15>>2] = $7;
+ $16 = ((($8)) + 80|0);
+ HEAP32[$16>>2] = 0;
+ _emscripten_async_run_in_main_thread($8);
+ (_emscripten_wait_for_call_v($8,inf)|0);
+ $17 = HEAP32[$16>>2]|0;
+ STACKTOP = sp;return ($17|0);
+}
+function _emscripten_sync_run_in_main_thread_xprintf_varargs($0,$1,$2,$varargs) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $varargs = $varargs|0;
+ var $$0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 240|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(240|0);
+ $3 = sp + 96|0;
+ $4 = sp + 112|0;
+ $5 = sp;
+ HEAP32[$3>>2] = $varargs;
+ $6 = (_vsnprintf($4,128,$2,$3)|0);
+ $7 = ($6|0)>(127);
+ $8 = (($6) + 1)|0;
+ if ($7) {
+ $9 = (_malloc($8)|0);
+ HEAP32[$3>>2] = $varargs;
+ (_vsnprintf($9,$8,$2,$3)|0);
+ $$0 = $9;
+ } else {
+ $$0 = $4;
+ }
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $10 = $1;
+ $11 = ((($5)) + 16|0);
+ HEAP32[$11>>2] = $10;
+ $12 = ((($5)) + 24|0);
+ HEAP32[$12>>2] = $$0;
+ $13 = ((($5)) + 80|0);
+ HEAP32[$13>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $14 = ($$0|0)==($4|0);
+ if ($14) {
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+ }
+ _free($$0);
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function ___pthread_tsd_run_dtors() {
+ var $$02427 = 0, $$026 = 0, $$125 = 0, $$2 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, $exitcond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 60|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ $4 = ((($0)) + 116|0);
+ $$02427 = 0;
+ while(1) {
+ $$026 = 0;$$125 = 0;
+ while(1) {
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (($5) + ($$026<<2)|0);
+ $7 = HEAP32[$6>>2]|0;
+ $8 = ($7|0)==(0|0);
+ if ($8) {
+ $$2 = $$125;
+ } else {
+ $9 = (33304 + ($$026<<2)|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = ($10|0)==(0|0);
+ if ($11) {
+ $$2 = $$125;
+ } else {
+ HEAP32[$6>>2] = 0;
+ $12 = (Atomics_load(HEAP32,$9>>2)|0);
+ FUNCTION_TABLE_vi[$12 & 31]($7);
+ $$2 = 1;
+ }
+ }
+ $13 = (($$026) + 1)|0;
+ $exitcond = ($13|0)==(128);
+ if ($exitcond) {
+ break;
+ } else {
+ $$026 = $13;$$125 = $$2;
+ }
+ }
+ $14 = (($$02427) + 1)|0;
+ $15 = ($$2|0)!=(0);
+ $16 = ($14|0)<(4);
+ $17 = $16 & $15;
+ if ($17) {
+ $$02427 = $14;
+ } else {
+ break;
+ }
+ }
+ return;
+}
+function _emscripten_wait_for_call_v($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $$ = 0, $$01921 = 0.0, $$020$lcssa = 0, $$1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = ((($0)) + 8|0);
+ $3 = (Atomics_load(HEAP32, $2>>2)|0);
+ $4 = ($3|0)==(0);
+ if (!($4)) {
+ $$1 = $3;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+ }
+ $5 = (+_emscripten_get_now());
+ $6 = $5 + $1;
+ _emscripten_set_current_thread_status(5);
+ $7 = $5 < $6;
+ if ($7) {
+ $$01921 = $5;
+ while(1) {
+ $8 = $6 - $$01921;
+ (_emscripten_futex_wait(($2|0),0,(+$8))|0);
+ $9 = (Atomics_load(HEAP32, $2>>2)|0);
+ $10 = (+_emscripten_get_now());
+ $11 = ($9|0)==(0);
+ $12 = $10 < $6;
+ $or$cond = $11 & $12;
+ if ($or$cond) {
+ $$01921 = $10;
+ } else {
+ $$020$lcssa = $9;
+ break;
+ }
+ }
+ } else {
+ $$020$lcssa = 0;
+ }
+ _emscripten_set_current_thread_status(1);
+ $$1 = $$020$lcssa;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+}
+function __do_call($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0;
+ var $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ do {
+ switch ($1|0) {
+ case 12: {
+ $2 = ((($0)) + 16|0);
+ $3 = HEAP32[$2>>2]|0;
+ $4 = ((($0)) + 24|0);
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (_utime(($3|0),($5|0))|0);
+ $7 = ((($0)) + 80|0);
+ HEAP32[$7>>2] = $6;
+ break;
+ }
+ case 13: {
+ $8 = ((($0)) + 16|0);
+ $9 = HEAP32[$8>>2]|0;
+ $10 = ((($0)) + 24|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (_utimes(($9|0),($11|0))|0);
+ $13 = ((($0)) + 80|0);
+ HEAP32[$13>>2] = $12;
+ break;
+ }
+ case 37: {
+ $14 = ((($0)) + 16|0);
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (_chroot(($15|0))|0);
+ $17 = ((($0)) + 80|0);
+ HEAP32[$17>>2] = $16;
+ break;
+ }
+ case 46: {
+ $18 = ((($0)) + 16|0);
+ $19 = HEAP32[$18>>2]|0;
+ $20 = ((($0)) + 24|0);
+ $21 = HEAP32[$20>>2]|0;
+ $22 = (_fpathconf(($19|0),($21|0))|0);
+ $23 = ((($0)) + 80|0);
+ HEAP32[$23>>2] = $22;
+ break;
+ }
+ case 68: {
+ $24 = ((($0)) + 16|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = ((($0)) + 24|0);
+ $27 = HEAP32[$26>>2]|0;
+ $28 = ((($0)) + 32|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = (_confstr(($25|0),($27|0),($29|0))|0);
+ $31 = ((($0)) + 80|0);
+ HEAP32[$31>>2] = $30;
+ break;
+ }
+ case 72: {
+ $32 = ((($0)) + 16|0);
+ $33 = HEAP32[$32>>2]|0;
+ $34 = (_sysconf(($33|0))|0);
+ $35 = ((($0)) + 80|0);
+ HEAP32[$35>>2] = $34;
+ break;
+ }
+ case 110: {
+ $36 = ((($0)) + 16|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = (_atexit(($37|0))|0);
+ $39 = ((($0)) + 80|0);
+ HEAP32[$39>>2] = $38;
+ break;
+ }
+ case 111: {
+ $40 = ((($0)) + 16|0);
+ $41 = HEAP32[$40>>2]|0;
+ $42 = (_getenv(($41|0))|0);
+ $43 = ((($0)) + 80|0);
+ HEAP32[$43>>2] = $42;
+ break;
+ }
+ case 112: {
+ $44 = (_clearenv()|0);
+ $45 = ((($0)) + 80|0);
+ HEAP32[$45>>2] = $44;
+ break;
+ }
+ case 113: {
+ $46 = ((($0)) + 16|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ((($0)) + 24|0);
+ $49 = HEAP32[$48>>2]|0;
+ $50 = ((($0)) + 32|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = (_setenv(($47|0),($49|0),($51|0))|0);
+ $53 = ((($0)) + 80|0);
+ HEAP32[$53>>2] = $52;
+ break;
+ }
+ case 114: {
+ $54 = ((($0)) + 16|0);
+ $55 = HEAP32[$54>>2]|0;
+ $56 = (_unsetenv(($55|0))|0);
+ $57 = ((($0)) + 80|0);
+ HEAP32[$57>>2] = $56;
+ break;
+ }
+ case 115: {
+ $58 = ((($0)) + 16|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = (_putenv(($59|0))|0);
+ $61 = ((($0)) + 80|0);
+ HEAP32[$61>>2] = $60;
+ break;
+ }
+ case 119: {
+ _tzset();
+ break;
+ }
+ case 137: {
+ $62 = ((($0)) + 16|0);
+ $63 = HEAP32[$62>>2]|0;
+ $64 = ((($0)) + 24|0);
+ $65 = HEAP32[$64>>2]|0;
+ $66 = ((($0)) + 32|0);
+ $67 = HEAP32[$66>>2]|0;
+ $68 = ((($0)) + 40|0);
+ $69 = HEAP32[$68>>2]|0;
+ $70 = (_pthread_create(($63|0),($65|0),($67|0),($69|0))|0);
+ $71 = ((($0)) + 80|0);
+ HEAP32[$71>>2] = $70;
+ break;
+ }
+ case 138: {
+ $72 = ((($0)) + 16|0);
+ $73 = HEAP32[$72>>2]|0;
+ $74 = ((($0)) + 24|0);
+ $75 = HEAP32[$74>>2]|0;
+ $76 = (_emscripten_syscall(($73|0),($75|0))|0);
+ $77 = ((($0)) + 80|0);
+ HEAP32[$77>>2] = $76;
+ break;
+ }
+ case 1024: {
+ $78 = ((($0)) + 4|0);
+ $79 = HEAP32[$78>>2]|0;
+ FUNCTION_TABLE_v[$79 & 7]();
+ break;
+ }
+ case 1025: {
+ $80 = ((($0)) + 4|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ((($0)) + 16|0);
+ $83 = HEAP32[$82>>2]|0;
+ FUNCTION_TABLE_vi[$81 & 31]($83);
+ break;
+ }
+ case 1026: {
+ $84 = ((($0)) + 4|0);
+ $85 = HEAP32[$84>>2]|0;
+ $86 = ((($0)) + 16|0);
+ $87 = HEAP32[$86>>2]|0;
+ $88 = ((($0)) + 24|0);
+ $89 = HEAP32[$88>>2]|0;
+ FUNCTION_TABLE_vii[$85 & 63]($87,$89);
+ break;
+ }
+ case 1027: {
+ $90 = ((($0)) + 4|0);
+ $91 = HEAP32[$90>>2]|0;
+ $92 = ((($0)) + 16|0);
+ $93 = HEAP32[$92>>2]|0;
+ $94 = ((($0)) + 24|0);
+ $95 = HEAP32[$94>>2]|0;
+ $96 = ((($0)) + 32|0);
+ $97 = HEAP32[$96>>2]|0;
+ FUNCTION_TABLE_viii[$91 & 31]($93,$95,$97);
+ break;
+ }
+ case 2048: {
+ $98 = ((($0)) + 4|0);
+ $99 = HEAP32[$98>>2]|0;
+ $100 = (FUNCTION_TABLE_i[$99 & 3]()|0);
+ $101 = ((($0)) + 80|0);
+ HEAP32[$101>>2] = $100;
+ break;
+ }
+ case 2049: {
+ $102 = ((($0)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ((($0)) + 16|0);
+ $105 = HEAP32[$104>>2]|0;
+ $106 = (FUNCTION_TABLE_ii[$103 & 15]($105)|0);
+ $107 = ((($0)) + 80|0);
+ HEAP32[$107>>2] = $106;
+ break;
+ }
+ case 2050: {
+ $108 = ((($0)) + 4|0);
+ $109 = HEAP32[$108>>2]|0;
+ $110 = ((($0)) + 16|0);
+ $111 = HEAP32[$110>>2]|0;
+ $112 = ((($0)) + 24|0);
+ $113 = HEAP32[$112>>2]|0;
+ $114 = (FUNCTION_TABLE_iii[$109 & 3]($111,$113)|0);
+ $115 = ((($0)) + 80|0);
+ HEAP32[$115>>2] = $114;
+ break;
+ }
+ case 2051: {
+ $116 = ((($0)) + 4|0);
+ $117 = HEAP32[$116>>2]|0;
+ $118 = ((($0)) + 16|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = ((($0)) + 24|0);
+ $121 = HEAP32[$120>>2]|0;
+ $122 = ((($0)) + 32|0);
+ $123 = HEAP32[$122>>2]|0;
+ $124 = (FUNCTION_TABLE_iiii[$117 & 15]($119,$121,$123)|0);
+ $125 = ((($0)) + 80|0);
+ HEAP32[$125>>2] = $124;
+ break;
+ }
+ default: {
+ ___assert_fail((13810|0),(13702|0),211,(13861|0));
+ // unreachable;
+ }
+ }
+ } while(0);
+ $126 = ((($0)) + 88|0);
+ $127 = HEAP32[$126>>2]|0;
+ $128 = ($127|0)==(0);
+ if ($128) {
+ $129 = ((($0)) + 8|0);
+ HEAP32[$129>>2] = 1;
+ (_emscripten_futex_wake(($129|0),2147483647)|0);
+ return;
+ } else {
+ _free($0);
+ return;
+ }
+}
+function ___pthread_mutex_unlock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$045 = 0, $$pre = 0, $$pre$phiZ2D = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
+ var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $5 = 0, $6 = 0;
+ var $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ((($0)) + 8|0);
+ $2 = (Atomics_load(HEAP32,$1>>2)|0);
+ $3 = HEAP32[$0>>2]|0;
+ $4 = $3 & 15;
+ $5 = $3 & 128;
+ $6 = $5 ^ 128;
+ $7 = ($4|0)==(0);
+ if ($7) {
+ $$pre = ((($0)) + 4|0);
+ $$045 = 0;$$pre$phiZ2D = $$pre;
+ } else {
+ $8 = (_pthread_self()|0);
+ $9 = ((($0)) + 4|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = $10 & 2147483647;
+ $12 = ((($8)) + 52|0);
+ $13 = HEAP32[$12>>2]|0;
+ $14 = ($11|0)==($13|0);
+ if (!($14)) {
+ $$0 = 1;
+ return ($$0|0);
+ }
+ $15 = $3 & 3;
+ $16 = ($15|0)==(1);
+ if ($16) {
+ $17 = ((($0)) + 20|0);
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($18|0)==(0);
+ if (!($19)) {
+ $20 = (($18) + -1)|0;
+ HEAP32[$17>>2] = $20;
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $21 = ($6|0)==(0);
+ $22 = ((($0)) + 16|0);
+ if ($21) {
+ $23 = ((($8)) + 176|0);
+ Atomics_store(HEAP32,$23>>2,$22)|0;
+ ___vm_lock();
+ }
+ $24 = ((($0)) + 12|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = HEAP32[$22>>2]|0;
+ Atomics_store(HEAP32,$25>>2,$26)|0;
+ $27 = ((($8)) + 168|0);
+ $28 = ($26|0)==($27|0);
+ if ($28) {
+ $$045 = $8;$$pre$phiZ2D = $9;
+ } else {
+ $29 = ((($26)) + -4|0);
+ Atomics_store(HEAP32,$29>>2,$25)|0;
+ $$045 = $8;$$pre$phiZ2D = $9;
+ }
+ }
+ $30 = $3 & 8;
+ $31 = ($30|0)!=(0);
+ $32 = $31 ? 2147483647 : 0;
+ while(1) {
+ $33 = (Atomics_load(HEAP32, $$pre$phiZ2D>>2)|0);
+ $34 = (Atomics_compareExchange(HEAP32, $$pre$phiZ2D>>2, $33, $32)|0);
+ $35 = ($34|0)==($33|0);
+ if ($35) {
+ break;
+ }
+ }
+ $36 = ($6|0)!=(0);
+ $or$cond = $7 | $36;
+ if (!($or$cond)) {
+ $37 = ((($$045)) + 176|0);
+ Atomics_store(HEAP32,$37>>2,0)|0;
+ ___vm_unlock();
+ }
+ $38 = ($2|0)!=(0);
+ $39 = ($33|0)<(0);
+ $or$cond3 = $38 | $39;
+ if (!($or$cond3)) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ (_emscripten_futex_wake(($$pre$phiZ2D|0),1)|0);
+ $$0 = 0;
+ return ($$0|0);
+}
+function ___vm_lock() {
+ var $0 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8592, 1)|0);
+ return;
+}
+function ___vm_unlock() {
+ var $0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8592, -1)|0);
+ $1 = ($0|0)==(1);
+ if (!($1)) {
+ return;
+ }
+ $2 = (Atomics_load(HEAP32,(34372)>>2)|0);
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ (_emscripten_futex_wake((34368|0),2147483647)|0);
+ return;
+}
+function ___pthread_mutex_lock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = ($5|0)==(0);
+ if ($6) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $7 = (___pthread_mutex_timedlock($0,0)|0);
+ $$0 = $7;
+ return ($$0|0);
+}
+function ___pthread_mutex_timedlock($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$0 = 0, $$2 = 0, $$pre = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
+ var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
+ var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond40 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = HEAP32[$0>>2]|0;
+ $3 = $2 & 15;
+ $4 = ($3|0)==(0);
+ do {
+ if ($4) {
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_compareExchange(HEAP32, $5>>2, 0, 16)|0);
+ $7 = ($6|0)==(0);
+ if ($7) {
+ $$2 = 0;
+ return ($$2|0);
+ } else {
+ $$pre = HEAP32[$0>>2]|0;
+ $9 = $$pre;
+ break;
+ }
+ } else {
+ $9 = $2;
+ }
+ } while(0);
+ $8 = $9 & 128;
+ $10 = $8 ^ 128;
+ $11 = (___pthread_mutex_trylock($0)|0);
+ $12 = ($11|0)==(16);
+ if (!($12)) {
+ $$2 = $11;
+ return ($$2|0);
+ }
+ $13 = ((($0)) + 4|0);
+ $14 = ((($0)) + 8|0);
+ $$0 = 100;
+ while(1) {
+ $15 = (($$0) + -1)|0;
+ $16 = ($$0|0)==(0);
+ if ($16) {
+ break;
+ }
+ $17 = (Atomics_load(HEAP32,$13>>2)|0);
+ $18 = ($17|0)==(0);
+ if ($18) {
+ break;
+ }
+ $19 = (Atomics_load(HEAP32,$14>>2)|0);
+ $20 = ($19|0)==(0);
+ if ($20) {
+ $$0 = $15;
+ } else {
+ break;
+ }
+ }
+ $21 = (___pthread_mutex_trylock($0)|0);
+ $22 = ($21|0)==(16);
+ if (!($22)) {
+ $$2 = $21;
+ return ($$2|0);
+ }
+ L18: while(1) {
+ $23 = (Atomics_load(HEAP32,$13>>2)|0);
+ $24 = ($23|0)==(0);
+ if (!($24)) {
+ $27 = $23 & 1073741824;
+ $28 = ($27|0)==(0);
+ $29 = HEAP32[$0>>2]|0;
+ $30 = $29 & 4;
+ $31 = ($30|0)==(0);
+ $or$cond40 = $28 | $31;
+ if ($or$cond40) {
+ $32 = $29 & 3;
+ $33 = ($32|0)==(2);
+ if ($33) {
+ $34 = $23 & 2147483647;
+ $35 = (_pthread_self()|0);
+ $36 = ((($35)) + 52|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($34|0)==($37|0);
+ if ($38) {
+ $$2 = 35;
+ label = 17;
+ break;
+ }
+ }
+ $39 = (Atomics_add(HEAP32, $14>>2, 1)|0);
+ $40 = $23 | -2147483648;
+ $41 = (Atomics_compareExchange(HEAP32, $13>>2, $23, $40)|0);
+ $42 = (___timedwait($13,$40,0,$1,$10)|0);
+ $43 = (Atomics_sub(HEAP32, $14>>2, 1)|0);
+ switch ($42|0) {
+ case 0: case 4: {
+ break;
+ }
+ default: {
+ $$2 = $42;
+ label = 17;
+ break L18;
+ }
+ }
+ }
+ }
+ $25 = (___pthread_mutex_trylock($0)|0);
+ $26 = ($25|0)==(16);
+ if (!($26)) {
+ $$2 = $25;
+ label = 17;
+ break;
+ }
+ }
+ if ((label|0) == 17) {
+ return ($$2|0);
+ }
+ return (0)|0;
+}
+function ___timedwait($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ (___pthread_setcancelstate(1,($5|0))|0);
+ _emscripten_conditional_set_current_thread_status(1,4);
+ $6 = (___timedwait_cp($0,$1,$2,$3,$4)|0);
+ _emscripten_conditional_set_current_thread_status(4,1);
+ $7 = HEAP32[$5>>2]|0;
+ (___pthread_setcancelstate(($7|0),(0|0))|0);
+ STACKTOP = sp;return ($6|0);
+}
+function ___timedwait_cp($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $$$0$us = 0.0, $$$045 = 0.0, $$$046$us = 0.0, $$0$us = 0.0, $$0$us53 = 0.0, $$138 = 0, $$138$ph = 0, $$138$ph70 = 0, $$138$ph72 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0;
+ var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $40 = 0;
+ var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ $6 = ($3|0)!=(0|0);
+ if ($6) {
+ $7 = ((($3)) + 4|0);
+ $8 = HEAP32[$7>>2]|0;
+ $9 = ($8>>>0)>(999999999);
+ if ($9) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $10 = (___clock_gettime(($2|0),($5|0))|0);
+ $11 = ($10|0)==(0);
+ if (!($11)) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $12 = HEAP32[$3>>2]|0;
+ $13 = HEAP32[$5>>2]|0;
+ $14 = (($12) - ($13))|0;
+ HEAP32[$5>>2] = $14;
+ $15 = HEAP32[$7>>2]|0;
+ $16 = ((($5)) + 4|0);
+ $17 = HEAP32[$16>>2]|0;
+ $18 = (($15) - ($17))|0;
+ HEAP32[$16>>2] = $18;
+ $19 = ($18|0)<(0);
+ if ($19) {
+ $20 = (($14) + -1)|0;
+ HEAP32[$5>>2] = $20;
+ $21 = (($18) + 1000000000)|0;
+ HEAP32[$16>>2] = $21;
+ $23 = $20;
+ } else {
+ $23 = $14;
+ }
+ $22 = ($23|0)<(0);
+ if ($22) {
+ $$138 = 110;
+ STACKTOP = sp;return ($$138|0);
+ }
+ }
+ $24 = (_emscripten_is_main_runtime_thread()|0);
+ $25 = ($24|0)!=(0);
+ $$$045 = $25 ? 1.0 : 100.0;
+ if ($25) {
+ L15: while(1) {
+ $26 = (_pthread_self()|0);
+ $27 = (__pthread_isduecanceled($26)|0);
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $$138$ph = 125;
+ break;
+ }
+ _emscripten_main_thread_process_queued_calls();
+ if ($6) {
+ $29 = (+__pthread_msecs_until($3));
+ $30 = !($29 <= 0.0);
+ $31 = $29 > 100.0;
+ $$0$us = $31 ? 100.0 : $29;
+ $32 = $$0$us > 1.0;
+ $$$0$us = $32 ? 1.0 : $$0$us;
+ if ($30) {
+ $$$046$us = $$$0$us;
+ } else {
+ $$138$ph = 110;
+ break;
+ }
+ } else {
+ $$$046$us = $$$045;
+ }
+ $33 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$046$us))|0);
+ $34 = (0 - ($33))|0;
+ switch ($34|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph = $34;
+ break L15;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L15;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph;
+ STACKTOP = sp;return ($$138|0);
+ }
+ if (!($6)) {
+ L27: while(1) {
+ $43 = (_pthread_self()|0);
+ $44 = (__pthread_isduecanceled($43)|0);
+ $45 = ($44|0)==(0);
+ if (!($45)) {
+ $$138$ph72 = 125;
+ break;
+ }
+ $46 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$045))|0);
+ $47 = (0 - ($46))|0;
+ switch ($47|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph72 = $47;
+ break L27;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L27;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph72;
+ STACKTOP = sp;return ($$138|0);
+ }
+ L34: while(1) {
+ $35 = (_pthread_self()|0);
+ $36 = (__pthread_isduecanceled($35)|0);
+ $37 = ($36|0)==(0);
+ if (!($37)) {
+ $$138$ph70 = 125;
+ break;
+ }
+ $38 = (+__pthread_msecs_until($3));
+ $39 = !($38 <= 0.0);
+ if (!($39)) {
+ $$138$ph70 = 110;
+ break;
+ }
+ $40 = $38 > 100.0;
+ $$0$us53 = $40 ? 100.0 : $38;
+ $41 = (_emscripten_futex_wait(($0|0),($1|0),(+$$0$us53))|0);
+ $42 = (0 - ($41))|0;
+ switch ($42|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph70 = $42;
+ break L34;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L34;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph70;
+ STACKTOP = sp;return ($$138|0);
+}
+function __pthread_isduecanceled($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = ($1|0)==(2);
+ $3 = $2&1;
+ return ($3|0);
+}
+function __pthread_msecs_until($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
- $2 = ($0>>>0)<(245);
+ (_gettimeofday(($1|0),(0|0))|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = (+($2|0));
+ $4 = $3 * 1000.0;
+ $5 = ((($1)) + 4|0);
+ $6 = HEAP32[$5>>2]|0;
+ $7 = (+($6|0));
+ $8 = $7 * 0.001;
+ $9 = $4 + $8;
+ $10 = HEAP32[$0>>2]|0;
+ $11 = (+($10|0));
+ $12 = $11 * 1000.0;
+ $13 = ((($0)) + 4|0);
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (+($14|0));
+ $16 = $15 * 9.9999999999999995E-7;
+ $17 = $12 + $16;
+ $18 = $17 - $9;
+ STACKTOP = sp;return (+$18);
+}
+function ___pthread_mutex_trylock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = $5 & 16;
+ $$0 = $6;
+ return ($$0|0);
+ } else {
+ $7 = (___pthread_mutex_trylock_owner($0)|0);
+ $$0 = $7;
+ return ($$0|0);
+ }
+ return (0)|0;
+}
+function ___pthread_mutex_trylock_owner($0) {
+ $0 = $0|0;
+ var $$ = 0, $$1 = 0, $$154 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0;
+ var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0;
+ var $43 = 0, $44 = 0, $45 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond57 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = (_pthread_self()|0);
+ $3 = ((($2)) + 52|0);
+ $4 = HEAP32[$3>>2]|0;
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_load(HEAP32,$5>>2)|0);
+ $7 = $6 & 2147483647;
+ $8 = ($7|0)==($4|0);
+ $9 = $1 & 3;
+ $10 = ($9|0)==(1);
+ $or$cond = $10 & $8;
+ if ($or$cond) {
+ $11 = ((($0)) + 20|0);
+ $12 = HEAP32[$11>>2]|0;
+ $13 = ($12>>>0)>(2147483646);
+ if ($13) {
+ $$1 = 11;
+ return ($$1|0);
+ }
+ $14 = (($12) + 1)|0;
+ HEAP32[$11>>2] = $14;
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $15 = ($7|0)==(2147483647);
+ if ($15) {
+ $$1 = 131;
+ return ($$1|0);
+ }
+ $16 = HEAP32[$0>>2]|0;
+ $17 = $16 & 128;
+ $18 = ($17|0)==(0);
+ if ($18) {
+ $$154 = $4;
+ } else {
+ $19 = ((($2)) + 172|0);
+ $20 = HEAP32[$19>>2]|0;
+ $21 = ($20|0)==(0);
+ if ($21) {
+ HEAP32[$19>>2] = -12;
+ }
+ $22 = ((($0)) + 8|0);
+ $23 = (Atomics_load(HEAP32,$22>>2)|0);
+ $24 = ($23|0)==(0);
+ $25 = $4 | -2147483648;
+ $$ = $24 ? $4 : $25;
+ $26 = ((($0)) + 16|0);
+ $27 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$27>>2,$26)|0;
+ $$154 = $$;
+ }
+ $28 = ($7|0)!=(0);
+ if ($28) {
+ $29 = $6 & 1073741824;
+ $30 = ($29|0)==(0);
+ $31 = $1 & 4;
+ $32 = ($31|0)==(0);
+ $or$cond57 = $32 | $30;
+ if (!($or$cond57)) {
+ label = 11;
+ }
+ } else {
+ label = 11;
+ }
+ if ((label|0) == 11) {
+ $33 = (Atomics_compareExchange(HEAP32, $5>>2, $6, $$154)|0);
+ $34 = ($33|0)==($6|0);
+ if ($34) {
+ $36 = ((($2)) + 168|0);
+ $37 = (Atomics_load(HEAP32,$36>>2)|0);
+ $38 = ((($0)) + 16|0);
+ HEAP32[$38>>2] = $37;
+ $39 = ((($0)) + 12|0);
+ HEAP32[$39>>2] = $36;
+ $40 = ($37|0)==($36|0);
+ if (!($40)) {
+ $41 = ((($37)) + -4|0);
+ Atomics_store(HEAP32,$41>>2,$38)|0;
+ }
+ Atomics_store(HEAP32,$36>>2,$38)|0;
+ $42 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$42>>2,0)|0;
+ if (!($28)) {
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $43 = ((($0)) + 20|0);
+ HEAP32[$43>>2] = 0;
+ $44 = HEAP32[$0>>2]|0;
+ $45 = $44 | 8;
+ HEAP32[$0>>2] = $45;
+ $$1 = 130;
+ return ($$1|0);
+ }
+ }
+ $35 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$35>>2,0)|0;
+ $$1 = 16;
+ return ($$1|0);
+}
+function _pthread_mutexattr_destroy($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ return 0;
+}
+function _pthread_mutexattr_init($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ HEAP32[$0>>2] = 0;
+ return 0;
+}
+function _pthread_mutex_init($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$sroa$0 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
+ $$sroa$0 = sp;
+ ;HEAP32[$$sroa$0>>2]=0|0;HEAP32[$$sroa$0+4>>2]=0|0;HEAP32[$$sroa$0+8>>2]=0|0;HEAP32[$$sroa$0+12>>2]=0|0;HEAP32[$$sroa$0+16>>2]=0|0;HEAP32[$$sroa$0+20>>2]=0|0;HEAP32[$$sroa$0+24>>2]=0|0;
+ ;HEAP32[$0>>2]=HEAP32[$$sroa$0>>2]|0;HEAP32[$0+4>>2]=HEAP32[$$sroa$0+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[$$sroa$0+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[$$sroa$0+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[$$sroa$0+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[$$sroa$0+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[$$sroa$0+24>>2]|0;
+ $2 = ($1|0)==(0|0);
+ if ($2) {
+ STACKTOP = sp;return 0;
+ }
+ $3 = HEAP32[$1>>2]|0;
+ HEAP32[$0>>2] = $3;
+ STACKTOP = sp;return 0;
+}
+function _malloc($0) {
+ $0 = $0|0;
+ var $$$0192$i = 0, $$$0193$i = 0, $$$4230$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i17$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0198 = 0, $$0200 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
+ var $$0212$i$i = 0, $$024363$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1 = 0, $$1196$i = 0;
+ var $$1198$i = 0, $$124462$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2 = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i202 = 0, $$3229$i = 0, $$3235$i = 0, $$3350$i = 0;
+ var $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0, $$4230$i = 0, $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$7$i = 0, $$7239$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i18$i = 0, $$pre$i211 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i19$iZ2D = 0;
+ var $$pre$phi$i212Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0, $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i205 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0;
+ var $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0;
+ var $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0;
+ var $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0;
+ var $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0;
+ var $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0, $1088 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0;
+ var $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0;
+ var $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0;
+ var $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0;
+ var $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0;
+ var $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0;
+ var $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0;
+ var $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0;
+ var $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0;
+ var $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0;
+ var $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0;
+ var $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0;
+ var $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0;
+ var $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0;
+ var $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0;
+ var $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0;
+ var $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0;
+ var $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0;
+ var $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0;
+ var $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0;
+ var $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0;
+ var $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0;
+ var $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0;
+ var $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0;
+ var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0;
+ var $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0;
+ var $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0;
+ var $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0;
+ var $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0;
+ var $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0;
+ var $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0;
+ var $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0;
+ var $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0;
+ var $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0;
+ var $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0;
+ var $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0;
+ var $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0;
+ var $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0;
+ var $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0;
+ var $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0;
+ var $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0;
+ var $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0;
+ var $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0;
+ var $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0;
+ var $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0;
+ var $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0;
+ var $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0;
+ var $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0;
+ var $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0;
+ var $cond$i$i = 0, $cond$i209 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i21$i = 0, $not$$i210 = 0, $not$1$i = 0, $not$1$i204 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0, $or$cond$i = 0, $or$cond$i213 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond12$i = 0, $or$cond2$i = 0;
+ var $or$cond2$i214 = 0, $or$cond43$i = 0, $or$cond5$i = 0, $or$cond7$i = 0, $or$cond9$i = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $1 = sp + 4|0;
+ $2 = sp;
+ $3 = HEAP32[8850]|0;
+ $4 = ($3|0)==(0);
+ if ($4) {
+ (___pthread_mutex_lock(35424)|0);
+ $5 = HEAP32[8850]|0;
+ $6 = ($5|0)==(0);
+ if ($6) {
+ HEAP32[(35408)>>2] = 4096;
+ HEAP32[(35404)>>2] = 4096;
+ HEAP32[(35412)>>2] = -1;
+ HEAP32[(35416)>>2] = -1;
+ HEAP32[(35420)>>2] = 2;
+ HEAP32[(35896)>>2] = 2;
+ $7 = (_pthread_mutexattr_init($1)|0);
+ $8 = ($7|0)==(0);
+ if ($8) {
+ $9 = (_pthread_mutex_init((35900),$1)|0);
+ $10 = ($9|0)==(0);
+ if ($10) {
+ }
+ }
+ $11 = $2;
+ $12 = $11 & -16;
+ $13 = $12 ^ 1431655768;
+ HEAP32[$2>>2] = $13;
+ Atomics_store(HEAP32,8850,$13)|0;
+ }
+ (___pthread_mutex_unlock(35424)|0);
+ }
+ $14 = HEAP32[(35896)>>2]|0;
+ $15 = $14 & 2;
+ $16 = ($15|0)==(0);
+ if (!($16)) {
+ $17 = (___pthread_mutex_lock((35900))|0);
+ $18 = ($17|0)==(0);
+ if (!($18)) {
+ $$1 = 0;
+ STACKTOP = sp;return ($$1|0);
+ }
+ }
+ $19 = ($0>>>0)<(245);
do {
- if ($2) {
- $3 = ($0>>>0)<(11);
- $4 = (($0) + 11)|0;
- $5 = $4 & -8;
- $6 = $3 ? 16 : $5;
- $7 = $6 >>> 3;
- $8 = HEAP32[8286]|0;
- $9 = $8 >>> $7;
- $10 = $9 & 3;
- $11 = ($10|0)==(0);
- if (!($11)) {
- $12 = $9 & 1;
- $13 = $12 ^ 1;
- $14 = (($13) + ($7))|0;
- $15 = $14 << 1;
- $16 = (33184 + ($15<<2)|0);
- $17 = ((($16)) + 8|0);
- $18 = HEAP32[$17>>2]|0;
- $19 = ((($18)) + 8|0);
- $20 = HEAP32[$19>>2]|0;
- $21 = ($16|0)==($20|0);
+ if ($19) {
+ $20 = ($0>>>0)<(11);
+ $21 = (($0) + 11)|0;
+ $22 = $21 & -8;
+ $23 = $20 ? 16 : $22;
+ $24 = $23 >>> 3;
+ $25 = HEAP32[8863]|0;
+ $26 = $25 >>> $24;
+ $27 = $26 & 3;
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $29 = $26 & 1;
+ $30 = $29 ^ 1;
+ $31 = (($30) + ($24))|0;
+ $32 = $31 << 1;
+ $33 = (35492 + ($32<<2)|0);
+ $34 = ((($33)) + 8|0);
+ $35 = HEAP32[$34>>2]|0;
+ $36 = ((($35)) + 8|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($33|0)==($37|0);
do {
- if ($21) {
- $22 = 1 << $14;
- $23 = $22 ^ -1;
- $24 = $8 & $23;
- HEAP32[8286] = $24;
+ if ($38) {
+ $39 = 1 << $31;
+ $40 = $39 ^ -1;
+ $41 = $25 & $40;
+ HEAP32[8863] = $41;
} else {
- $25 = HEAP32[(33160)>>2]|0;
- $26 = ($20>>>0)<($25>>>0);
- if ($26) {
+ $42 = HEAP32[(35468)>>2]|0;
+ $43 = ($37>>>0)<($42>>>0);
+ if ($43) {
_abort();
// unreachable;
}
- $27 = ((($20)) + 12|0);
- $28 = HEAP32[$27>>2]|0;
- $29 = ($28|0)==($18|0);
- if ($29) {
- HEAP32[$27>>2] = $16;
- HEAP32[$17>>2] = $20;
+ $44 = ((($37)) + 12|0);
+ $45 = HEAP32[$44>>2]|0;
+ $46 = ($45|0)==($35|0);
+ if ($46) {
+ HEAP32[$44>>2] = $33;
+ HEAP32[$34>>2] = $37;
break;
} else {
_abort();
@@ -23681,79 +29974,79 @@ function _malloc($0) {
}
}
} while(0);
- $30 = $14 << 3;
- $31 = $30 | 3;
- $32 = ((($18)) + 4|0);
- HEAP32[$32>>2] = $31;
- $33 = (($18) + ($30)|0);
- $34 = ((($33)) + 4|0);
- $35 = HEAP32[$34>>2]|0;
- $36 = $35 | 1;
- HEAP32[$34>>2] = $36;
- $$0 = $19;
- STACKTOP = sp;return ($$0|0);
+ $47 = $31 << 3;
+ $48 = $47 | 3;
+ $49 = ((($35)) + 4|0);
+ HEAP32[$49>>2] = $48;
+ $50 = (($35) + ($47)|0);
+ $51 = ((($50)) + 4|0);
+ $52 = HEAP32[$51>>2]|0;
+ $53 = $52 | 1;
+ HEAP32[$51>>2] = $53;
+ $$2 = $36;
+ break;
}
- $37 = HEAP32[(33152)>>2]|0;
- $38 = ($6>>>0)>($37>>>0);
- if ($38) {
- $39 = ($9|0)==(0);
- if (!($39)) {
- $40 = $9 << $7;
- $41 = 2 << $7;
- $42 = (0 - ($41))|0;
- $43 = $41 | $42;
- $44 = $40 & $43;
- $45 = (0 - ($44))|0;
- $46 = $44 & $45;
- $47 = (($46) + -1)|0;
- $48 = $47 >>> 12;
- $49 = $48 & 16;
- $50 = $47 >>> $49;
- $51 = $50 >>> 5;
- $52 = $51 & 8;
- $53 = $52 | $49;
- $54 = $50 >>> $52;
- $55 = $54 >>> 2;
- $56 = $55 & 4;
- $57 = $53 | $56;
- $58 = $54 >>> $56;
- $59 = $58 >>> 1;
- $60 = $59 & 2;
- $61 = $57 | $60;
- $62 = $58 >>> $60;
- $63 = $62 >>> 1;
- $64 = $63 & 1;
- $65 = $61 | $64;
- $66 = $62 >>> $64;
- $67 = (($65) + ($66))|0;
- $68 = $67 << 1;
- $69 = (33184 + ($68<<2)|0);
- $70 = ((($69)) + 8|0);
- $71 = HEAP32[$70>>2]|0;
- $72 = ((($71)) + 8|0);
- $73 = HEAP32[$72>>2]|0;
- $74 = ($69|0)==($73|0);
+ $54 = HEAP32[(35460)>>2]|0;
+ $55 = ($23>>>0)>($54>>>0);
+ if ($55) {
+ $56 = ($26|0)==(0);
+ if (!($56)) {
+ $57 = $26 << $24;
+ $58 = 2 << $24;
+ $59 = (0 - ($58))|0;
+ $60 = $58 | $59;
+ $61 = $57 & $60;
+ $62 = (0 - ($61))|0;
+ $63 = $61 & $62;
+ $64 = (($63) + -1)|0;
+ $65 = $64 >>> 12;
+ $66 = $65 & 16;
+ $67 = $64 >>> $66;
+ $68 = $67 >>> 5;
+ $69 = $68 & 8;
+ $70 = $69 | $66;
+ $71 = $67 >>> $69;
+ $72 = $71 >>> 2;
+ $73 = $72 & 4;
+ $74 = $70 | $73;
+ $75 = $71 >>> $73;
+ $76 = $75 >>> 1;
+ $77 = $76 & 2;
+ $78 = $74 | $77;
+ $79 = $75 >>> $77;
+ $80 = $79 >>> 1;
+ $81 = $80 & 1;
+ $82 = $78 | $81;
+ $83 = $79 >>> $81;
+ $84 = (($82) + ($83))|0;
+ $85 = $84 << 1;
+ $86 = (35492 + ($85<<2)|0);
+ $87 = ((($86)) + 8|0);
+ $88 = HEAP32[$87>>2]|0;
+ $89 = ((($88)) + 8|0);
+ $90 = HEAP32[$89>>2]|0;
+ $91 = ($86|0)==($90|0);
do {
- if ($74) {
- $75 = 1 << $67;
- $76 = $75 ^ -1;
- $77 = $8 & $76;
- HEAP32[8286] = $77;
- $98 = $77;
+ if ($91) {
+ $92 = 1 << $84;
+ $93 = $92 ^ -1;
+ $94 = $25 & $93;
+ HEAP32[8863] = $94;
+ $115 = $94;
} else {
- $78 = HEAP32[(33160)>>2]|0;
- $79 = ($73>>>0)<($78>>>0);
- if ($79) {
+ $95 = HEAP32[(35468)>>2]|0;
+ $96 = ($90>>>0)<($95>>>0);
+ if ($96) {
_abort();
// unreachable;
}
- $80 = ((($73)) + 12|0);
- $81 = HEAP32[$80>>2]|0;
- $82 = ($81|0)==($71|0);
- if ($82) {
- HEAP32[$80>>2] = $69;
- HEAP32[$70>>2] = $73;
- $98 = $8;
+ $97 = ((($90)) + 12|0);
+ $98 = HEAP32[$97>>2]|0;
+ $99 = ($98|0)==($88|0);
+ if ($99) {
+ HEAP32[$97>>2] = $86;
+ HEAP32[$87>>2] = $90;
+ $115 = $25;
break;
} else {
_abort();
@@ -23761,178 +30054,179 @@ function _malloc($0) {
}
}
} while(0);
- $83 = $67 << 3;
- $84 = (($83) - ($6))|0;
- $85 = $6 | 3;
- $86 = ((($71)) + 4|0);
- HEAP32[$86>>2] = $85;
- $87 = (($71) + ($6)|0);
- $88 = $84 | 1;
- $89 = ((($87)) + 4|0);
- HEAP32[$89>>2] = $88;
- $90 = (($87) + ($84)|0);
- HEAP32[$90>>2] = $84;
- $91 = ($37|0)==(0);
- if (!($91)) {
- $92 = HEAP32[(33164)>>2]|0;
- $93 = $37 >>> 3;
- $94 = $93 << 1;
- $95 = (33184 + ($94<<2)|0);
- $96 = 1 << $93;
- $97 = $98 & $96;
- $99 = ($97|0)==(0);
- if ($99) {
- $100 = $98 | $96;
- HEAP32[8286] = $100;
- $$pre = ((($95)) + 8|0);
- $$0199 = $95;$$pre$phiZ2D = $$pre;
+ $100 = $84 << 3;
+ $101 = (($100) - ($23))|0;
+ $102 = $23 | 3;
+ $103 = ((($88)) + 4|0);
+ HEAP32[$103>>2] = $102;
+ $104 = (($88) + ($23)|0);
+ $105 = $101 | 1;
+ $106 = ((($104)) + 4|0);
+ HEAP32[$106>>2] = $105;
+ $107 = (($104) + ($101)|0);
+ HEAP32[$107>>2] = $101;
+ $108 = ($54|0)==(0);
+ if (!($108)) {
+ $109 = HEAP32[(35472)>>2]|0;
+ $110 = $54 >>> 3;
+ $111 = $110 << 1;
+ $112 = (35492 + ($111<<2)|0);
+ $113 = 1 << $110;
+ $114 = $115 & $113;
+ $116 = ($114|0)==(0);
+ if ($116) {
+ $117 = $115 | $113;
+ HEAP32[8863] = $117;
+ $$pre = ((($112)) + 8|0);
+ $$0200 = $112;$$pre$phiZ2D = $$pre;
} else {
- $101 = ((($95)) + 8|0);
- $102 = HEAP32[$101>>2]|0;
- $103 = HEAP32[(33160)>>2]|0;
- $104 = ($102>>>0)<($103>>>0);
- if ($104) {
+ $118 = ((($112)) + 8|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = HEAP32[(35468)>>2]|0;
+ $121 = ($119>>>0)<($120>>>0);
+ if ($121) {
_abort();
// unreachable;
} else {
- $$0199 = $102;$$pre$phiZ2D = $101;
+ $$0200 = $119;$$pre$phiZ2D = $118;
}
}
- HEAP32[$$pre$phiZ2D>>2] = $92;
- $105 = ((($$0199)) + 12|0);
- HEAP32[$105>>2] = $92;
- $106 = ((($92)) + 8|0);
- HEAP32[$106>>2] = $$0199;
- $107 = ((($92)) + 12|0);
- HEAP32[$107>>2] = $95;
+ HEAP32[$$pre$phiZ2D>>2] = $109;
+ $122 = ((($$0200)) + 12|0);
+ HEAP32[$122>>2] = $109;
+ $123 = ((($109)) + 8|0);
+ HEAP32[$123>>2] = $$0200;
+ $124 = ((($109)) + 12|0);
+ HEAP32[$124>>2] = $112;
}
- HEAP32[(33152)>>2] = $84;
- HEAP32[(33164)>>2] = $87;
- $$0 = $72;
- STACKTOP = sp;return ($$0|0);
- }
- $108 = HEAP32[(33148)>>2]|0;
- $109 = ($108|0)==(0);
- if ($109) {
- $$0197 = $6;
+ HEAP32[(35460)>>2] = $101;
+ HEAP32[(35472)>>2] = $104;
+ $$2 = $89;
+ break;
+ }
+ $125 = HEAP32[(35456)>>2]|0;
+ $126 = ($125|0)==(0);
+ if ($126) {
+ $$0198 = $23;
+ label = 153;
} else {
- $110 = (0 - ($108))|0;
- $111 = $108 & $110;
- $112 = (($111) + -1)|0;
- $113 = $112 >>> 12;
- $114 = $113 & 16;
- $115 = $112 >>> $114;
- $116 = $115 >>> 5;
- $117 = $116 & 8;
- $118 = $117 | $114;
- $119 = $115 >>> $117;
- $120 = $119 >>> 2;
- $121 = $120 & 4;
- $122 = $118 | $121;
- $123 = $119 >>> $121;
- $124 = $123 >>> 1;
- $125 = $124 & 2;
- $126 = $122 | $125;
- $127 = $123 >>> $125;
- $128 = $127 >>> 1;
- $129 = $128 & 1;
- $130 = $126 | $129;
- $131 = $127 >>> $129;
- $132 = (($130) + ($131))|0;
- $133 = (33448 + ($132<<2)|0);
- $134 = HEAP32[$133>>2]|0;
- $135 = ((($134)) + 4|0);
- $136 = HEAP32[$135>>2]|0;
- $137 = $136 & -8;
- $138 = (($137) - ($6))|0;
- $139 = ((($134)) + 16|0);
- $140 = HEAP32[$139>>2]|0;
- $not$5$i = ($140|0)==(0|0);
+ $127 = (0 - ($125))|0;
+ $128 = $125 & $127;
+ $129 = (($128) + -1)|0;
+ $130 = $129 >>> 12;
+ $131 = $130 & 16;
+ $132 = $129 >>> $131;
+ $133 = $132 >>> 5;
+ $134 = $133 & 8;
+ $135 = $134 | $131;
+ $136 = $132 >>> $134;
+ $137 = $136 >>> 2;
+ $138 = $137 & 4;
+ $139 = $135 | $138;
+ $140 = $136 >>> $138;
+ $141 = $140 >>> 1;
+ $142 = $141 & 2;
+ $143 = $139 | $142;
+ $144 = $140 >>> $142;
+ $145 = $144 >>> 1;
+ $146 = $145 & 1;
+ $147 = $143 | $146;
+ $148 = $144 >>> $146;
+ $149 = (($147) + ($148))|0;
+ $150 = (35756 + ($149<<2)|0);
+ $151 = HEAP32[$150>>2]|0;
+ $152 = ((($151)) + 4|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = $153 & -8;
+ $155 = (($154) - ($23))|0;
+ $156 = ((($151)) + 16|0);
+ $157 = HEAP32[$156>>2]|0;
+ $not$5$i = ($157|0)==(0|0);
$$sink16$i = $not$5$i&1;
- $141 = (((($134)) + 16|0) + ($$sink16$i<<2)|0);
- $142 = HEAP32[$141>>2]|0;
- $143 = ($142|0)==(0|0);
- if ($143) {
- $$0192$lcssa$i = $134;$$0193$lcssa$i = $138;
+ $158 = (((($151)) + 16|0) + ($$sink16$i<<2)|0);
+ $159 = HEAP32[$158>>2]|0;
+ $160 = ($159|0)==(0|0);
+ if ($160) {
+ $$0192$lcssa$i = $151;$$0193$lcssa$i = $155;
} else {
- $$01928$i = $134;$$01937$i = $138;$145 = $142;
+ $$01928$i = $151;$$01937$i = $155;$162 = $159;
while(1) {
- $144 = ((($145)) + 4|0);
- $146 = HEAP32[$144>>2]|0;
- $147 = $146 & -8;
- $148 = (($147) - ($6))|0;
- $149 = ($148>>>0)<($$01937$i>>>0);
- $$$0193$i = $149 ? $148 : $$01937$i;
- $$$0192$i = $149 ? $145 : $$01928$i;
- $150 = ((($145)) + 16|0);
- $151 = HEAP32[$150>>2]|0;
- $not$$i = ($151|0)==(0|0);
+ $161 = ((($162)) + 4|0);
+ $163 = HEAP32[$161>>2]|0;
+ $164 = $163 & -8;
+ $165 = (($164) - ($23))|0;
+ $166 = ($165>>>0)<($$01937$i>>>0);
+ $$$0193$i = $166 ? $165 : $$01937$i;
+ $$$0192$i = $166 ? $162 : $$01928$i;
+ $167 = ((($162)) + 16|0);
+ $168 = HEAP32[$167>>2]|0;
+ $not$$i = ($168|0)==(0|0);
$$sink1$i = $not$$i&1;
- $152 = (((($145)) + 16|0) + ($$sink1$i<<2)|0);
- $153 = HEAP32[$152>>2]|0;
- $154 = ($153|0)==(0|0);
- if ($154) {
+ $169 = (((($162)) + 16|0) + ($$sink1$i<<2)|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==(0|0);
+ if ($171) {
$$0192$lcssa$i = $$$0192$i;$$0193$lcssa$i = $$$0193$i;
break;
} else {
- $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$145 = $153;
+ $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$162 = $170;
}
}
}
- $155 = HEAP32[(33160)>>2]|0;
- $156 = ($$0192$lcssa$i>>>0)<($155>>>0);
- if ($156) {
+ $172 = HEAP32[(35468)>>2]|0;
+ $173 = ($$0192$lcssa$i>>>0)<($172>>>0);
+ if ($173) {
_abort();
// unreachable;
}
- $157 = (($$0192$lcssa$i) + ($6)|0);
- $158 = ($$0192$lcssa$i>>>0)<($157>>>0);
- if (!($158)) {
+ $174 = (($$0192$lcssa$i) + ($23)|0);
+ $175 = ($$0192$lcssa$i>>>0)<($174>>>0);
+ if (!($175)) {
_abort();
// unreachable;
}
- $159 = ((($$0192$lcssa$i)) + 24|0);
- $160 = HEAP32[$159>>2]|0;
- $161 = ((($$0192$lcssa$i)) + 12|0);
- $162 = HEAP32[$161>>2]|0;
- $163 = ($162|0)==($$0192$lcssa$i|0);
+ $176 = ((($$0192$lcssa$i)) + 24|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ((($$0192$lcssa$i)) + 12|0);
+ $179 = HEAP32[$178>>2]|0;
+ $180 = ($179|0)==($$0192$lcssa$i|0);
do {
- if ($163) {
- $173 = ((($$0192$lcssa$i)) + 20|0);
- $174 = HEAP32[$173>>2]|0;
- $175 = ($174|0)==(0|0);
- if ($175) {
- $176 = ((($$0192$lcssa$i)) + 16|0);
- $177 = HEAP32[$176>>2]|0;
- $178 = ($177|0)==(0|0);
- if ($178) {
+ if ($180) {
+ $190 = ((($$0192$lcssa$i)) + 20|0);
+ $191 = HEAP32[$190>>2]|0;
+ $192 = ($191|0)==(0|0);
+ if ($192) {
+ $193 = ((($$0192$lcssa$i)) + 16|0);
+ $194 = HEAP32[$193>>2]|0;
+ $195 = ($194|0)==(0|0);
+ if ($195) {
$$3$i = 0;
break;
} else {
- $$1196$i = $177;$$1198$i = $176;
+ $$1196$i = $194;$$1198$i = $193;
}
} else {
- $$1196$i = $174;$$1198$i = $173;
+ $$1196$i = $191;$$1198$i = $190;
}
while(1) {
- $179 = ((($$1196$i)) + 20|0);
- $180 = HEAP32[$179>>2]|0;
- $181 = ($180|0)==(0|0);
- if (!($181)) {
- $$1196$i = $180;$$1198$i = $179;
+ $196 = ((($$1196$i)) + 20|0);
+ $197 = HEAP32[$196>>2]|0;
+ $198 = ($197|0)==(0|0);
+ if (!($198)) {
+ $$1196$i = $197;$$1198$i = $196;
continue;
}
- $182 = ((($$1196$i)) + 16|0);
- $183 = HEAP32[$182>>2]|0;
- $184 = ($183|0)==(0|0);
- if ($184) {
+ $199 = ((($$1196$i)) + 16|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($200|0)==(0|0);
+ if ($201) {
break;
} else {
- $$1196$i = $183;$$1198$i = $182;
+ $$1196$i = $200;$$1198$i = $199;
}
}
- $185 = ($$1198$i>>>0)<($155>>>0);
- if ($185) {
+ $202 = ($$1198$i>>>0)<($172>>>0);
+ if ($202) {
_abort();
// unreachable;
} else {
@@ -23941,27 +30235,27 @@ function _malloc($0) {
break;
}
} else {
- $164 = ((($$0192$lcssa$i)) + 8|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165>>>0)<($155>>>0);
- if ($166) {
+ $181 = ((($$0192$lcssa$i)) + 8|0);
+ $182 = HEAP32[$181>>2]|0;
+ $183 = ($182>>>0)<($172>>>0);
+ if ($183) {
_abort();
// unreachable;
}
- $167 = ((($165)) + 12|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = ($168|0)==($$0192$lcssa$i|0);
- if (!($169)) {
+ $184 = ((($182)) + 12|0);
+ $185 = HEAP32[$184>>2]|0;
+ $186 = ($185|0)==($$0192$lcssa$i|0);
+ if (!($186)) {
_abort();
// unreachable;
}
- $170 = ((($162)) + 8|0);
- $171 = HEAP32[$170>>2]|0;
- $172 = ($171|0)==($$0192$lcssa$i|0);
- if ($172) {
- HEAP32[$167>>2] = $162;
- HEAP32[$170>>2] = $165;
- $$3$i = $162;
+ $187 = ((($179)) + 8|0);
+ $188 = HEAP32[$187>>2]|0;
+ $189 = ($188|0)==($$0192$lcssa$i|0);
+ if ($189) {
+ HEAP32[$184>>2] = $179;
+ HEAP32[$187>>2] = $182;
+ $$3$i = $179;
break;
} else {
_abort();
@@ -23969,397 +30263,401 @@ function _malloc($0) {
}
}
} while(0);
- $186 = ($160|0)==(0|0);
- L73: do {
- if (!($186)) {
- $187 = ((($$0192$lcssa$i)) + 28|0);
- $188 = HEAP32[$187>>2]|0;
- $189 = (33448 + ($188<<2)|0);
- $190 = HEAP32[$189>>2]|0;
- $191 = ($$0192$lcssa$i|0)==($190|0);
+ $203 = ($177|0)==(0|0);
+ L85: do {
+ if (!($203)) {
+ $204 = ((($$0192$lcssa$i)) + 28|0);
+ $205 = HEAP32[$204>>2]|0;
+ $206 = (35756 + ($205<<2)|0);
+ $207 = HEAP32[$206>>2]|0;
+ $208 = ($$0192$lcssa$i|0)==($207|0);
do {
- if ($191) {
- HEAP32[$189>>2] = $$3$i;
+ if ($208) {
+ HEAP32[$206>>2] = $$3$i;
$cond$i = ($$3$i|0)==(0|0);
if ($cond$i) {
- $192 = 1 << $188;
- $193 = $192 ^ -1;
- $194 = $108 & $193;
- HEAP32[(33148)>>2] = $194;
- break L73;
+ $209 = 1 << $205;
+ $210 = $209 ^ -1;
+ $211 = $125 & $210;
+ HEAP32[(35456)>>2] = $211;
+ break L85;
}
} else {
- $195 = HEAP32[(33160)>>2]|0;
- $196 = ($160>>>0)<($195>>>0);
- if ($196) {
+ $212 = HEAP32[(35468)>>2]|0;
+ $213 = ($177>>>0)<($212>>>0);
+ if ($213) {
_abort();
// unreachable;
} else {
- $197 = ((($160)) + 16|0);
- $198 = HEAP32[$197>>2]|0;
- $not$1$i = ($198|0)!=($$0192$lcssa$i|0);
+ $214 = ((($177)) + 16|0);
+ $215 = HEAP32[$214>>2]|0;
+ $not$1$i = ($215|0)!=($$0192$lcssa$i|0);
$$sink2$i = $not$1$i&1;
- $199 = (((($160)) + 16|0) + ($$sink2$i<<2)|0);
- HEAP32[$199>>2] = $$3$i;
- $200 = ($$3$i|0)==(0|0);
- if ($200) {
- break L73;
+ $216 = (((($177)) + 16|0) + ($$sink2$i<<2)|0);
+ HEAP32[$216>>2] = $$3$i;
+ $217 = ($$3$i|0)==(0|0);
+ if ($217) {
+ break L85;
} else {
break;
}
}
}
} while(0);
- $201 = HEAP32[(33160)>>2]|0;
- $202 = ($$3$i>>>0)<($201>>>0);
- if ($202) {
+ $218 = HEAP32[(35468)>>2]|0;
+ $219 = ($$3$i>>>0)<($218>>>0);
+ if ($219) {
_abort();
// unreachable;
}
- $203 = ((($$3$i)) + 24|0);
- HEAP32[$203>>2] = $160;
- $204 = ((($$0192$lcssa$i)) + 16|0);
- $205 = HEAP32[$204>>2]|0;
- $206 = ($205|0)==(0|0);
+ $220 = ((($$3$i)) + 24|0);
+ HEAP32[$220>>2] = $177;
+ $221 = ((($$0192$lcssa$i)) + 16|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
do {
- if (!($206)) {
- $207 = ($205>>>0)<($201>>>0);
- if ($207) {
+ if (!($223)) {
+ $224 = ($222>>>0)<($218>>>0);
+ if ($224) {
_abort();
// unreachable;
} else {
- $208 = ((($$3$i)) + 16|0);
- HEAP32[$208>>2] = $205;
- $209 = ((($205)) + 24|0);
- HEAP32[$209>>2] = $$3$i;
+ $225 = ((($$3$i)) + 16|0);
+ HEAP32[$225>>2] = $222;
+ $226 = ((($222)) + 24|0);
+ HEAP32[$226>>2] = $$3$i;
break;
}
}
} while(0);
- $210 = ((($$0192$lcssa$i)) + 20|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
- if (!($212)) {
- $213 = HEAP32[(33160)>>2]|0;
- $214 = ($211>>>0)<($213>>>0);
- if ($214) {
+ $227 = ((($$0192$lcssa$i)) + 20|0);
+ $228 = HEAP32[$227>>2]|0;
+ $229 = ($228|0)==(0|0);
+ if (!($229)) {
+ $230 = HEAP32[(35468)>>2]|0;
+ $231 = ($228>>>0)<($230>>>0);
+ if ($231) {
_abort();
// unreachable;
} else {
- $215 = ((($$3$i)) + 20|0);
- HEAP32[$215>>2] = $211;
- $216 = ((($211)) + 24|0);
- HEAP32[$216>>2] = $$3$i;
+ $232 = ((($$3$i)) + 20|0);
+ HEAP32[$232>>2] = $228;
+ $233 = ((($228)) + 24|0);
+ HEAP32[$233>>2] = $$3$i;
break;
}
}
}
} while(0);
- $217 = ($$0193$lcssa$i>>>0)<(16);
- if ($217) {
- $218 = (($$0193$lcssa$i) + ($6))|0;
- $219 = $218 | 3;
- $220 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$220>>2] = $219;
- $221 = (($$0192$lcssa$i) + ($218)|0);
- $222 = ((($221)) + 4|0);
- $223 = HEAP32[$222>>2]|0;
- $224 = $223 | 1;
- HEAP32[$222>>2] = $224;
+ $234 = ($$0193$lcssa$i>>>0)<(16);
+ if ($234) {
+ $235 = (($$0193$lcssa$i) + ($23))|0;
+ $236 = $235 | 3;
+ $237 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$237>>2] = $236;
+ $238 = (($$0192$lcssa$i) + ($235)|0);
+ $239 = ((($238)) + 4|0);
+ $240 = HEAP32[$239>>2]|0;
+ $241 = $240 | 1;
+ HEAP32[$239>>2] = $241;
} else {
- $225 = $6 | 3;
- $226 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$226>>2] = $225;
- $227 = $$0193$lcssa$i | 1;
- $228 = ((($157)) + 4|0);
- HEAP32[$228>>2] = $227;
- $229 = (($157) + ($$0193$lcssa$i)|0);
- HEAP32[$229>>2] = $$0193$lcssa$i;
- $230 = ($37|0)==(0);
- if (!($230)) {
- $231 = HEAP32[(33164)>>2]|0;
- $232 = $37 >>> 3;
- $233 = $232 << 1;
- $234 = (33184 + ($233<<2)|0);
- $235 = 1 << $232;
- $236 = $8 & $235;
- $237 = ($236|0)==(0);
- if ($237) {
- $238 = $8 | $235;
- HEAP32[8286] = $238;
- $$pre$i = ((($234)) + 8|0);
- $$0189$i = $234;$$pre$phi$iZ2D = $$pre$i;
+ $242 = $23 | 3;
+ $243 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$243>>2] = $242;
+ $244 = $$0193$lcssa$i | 1;
+ $245 = ((($174)) + 4|0);
+ HEAP32[$245>>2] = $244;
+ $246 = (($174) + ($$0193$lcssa$i)|0);
+ HEAP32[$246>>2] = $$0193$lcssa$i;
+ $247 = ($54|0)==(0);
+ if (!($247)) {
+ $248 = HEAP32[(35472)>>2]|0;
+ $249 = $54 >>> 3;
+ $250 = $249 << 1;
+ $251 = (35492 + ($250<<2)|0);
+ $252 = 1 << $249;
+ $253 = $25 & $252;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $255 = $25 | $252;
+ HEAP32[8863] = $255;
+ $$pre$i = ((($251)) + 8|0);
+ $$0189$i = $251;$$pre$phi$iZ2D = $$pre$i;
} else {
- $239 = ((($234)) + 8|0);
- $240 = HEAP32[$239>>2]|0;
- $241 = HEAP32[(33160)>>2]|0;
- $242 = ($240>>>0)<($241>>>0);
- if ($242) {
+ $256 = ((($251)) + 8|0);
+ $257 = HEAP32[$256>>2]|0;
+ $258 = HEAP32[(35468)>>2]|0;
+ $259 = ($257>>>0)<($258>>>0);
+ if ($259) {
_abort();
// unreachable;
} else {
- $$0189$i = $240;$$pre$phi$iZ2D = $239;
+ $$0189$i = $257;$$pre$phi$iZ2D = $256;
}
}
- HEAP32[$$pre$phi$iZ2D>>2] = $231;
- $243 = ((($$0189$i)) + 12|0);
- HEAP32[$243>>2] = $231;
- $244 = ((($231)) + 8|0);
- HEAP32[$244>>2] = $$0189$i;
- $245 = ((($231)) + 12|0);
- HEAP32[$245>>2] = $234;
+ HEAP32[$$pre$phi$iZ2D>>2] = $248;
+ $260 = ((($$0189$i)) + 12|0);
+ HEAP32[$260>>2] = $248;
+ $261 = ((($248)) + 8|0);
+ HEAP32[$261>>2] = $$0189$i;
+ $262 = ((($248)) + 12|0);
+ HEAP32[$262>>2] = $251;
}
- HEAP32[(33152)>>2] = $$0193$lcssa$i;
- HEAP32[(33164)>>2] = $157;
+ HEAP32[(35460)>>2] = $$0193$lcssa$i;
+ HEAP32[(35472)>>2] = $174;
}
- $246 = ((($$0192$lcssa$i)) + 8|0);
- $$0 = $246;
- STACKTOP = sp;return ($$0|0);
+ $263 = ((($$0192$lcssa$i)) + 8|0);
+ $$2 = $263;
}
} else {
- $$0197 = $6;
+ $$0198 = $23;
+ label = 153;
}
} else {
- $247 = ($0>>>0)>(4294967231);
- if ($247) {
- $$0197 = -1;
+ $264 = ($0>>>0)>(4294967231);
+ if ($264) {
+ $$0198 = -1;
+ label = 153;
} else {
- $248 = (($0) + 11)|0;
- $249 = $248 & -8;
- $250 = HEAP32[(33148)>>2]|0;
- $251 = ($250|0)==(0);
- if ($251) {
- $$0197 = $249;
+ $265 = (($0) + 11)|0;
+ $266 = $265 & -8;
+ $267 = HEAP32[(35456)>>2]|0;
+ $268 = ($267|0)==(0);
+ if ($268) {
+ $$0198 = $266;
+ label = 153;
} else {
- $252 = (0 - ($249))|0;
- $253 = $248 >>> 8;
- $254 = ($253|0)==(0);
- if ($254) {
+ $269 = (0 - ($266))|0;
+ $270 = $265 >>> 8;
+ $271 = ($270|0)==(0);
+ if ($271) {
$$0358$i = 0;
} else {
- $255 = ($249>>>0)>(16777215);
- if ($255) {
+ $272 = ($266>>>0)>(16777215);
+ if ($272) {
$$0358$i = 31;
} else {
- $256 = (($253) + 1048320)|0;
- $257 = $256 >>> 16;
- $258 = $257 & 8;
- $259 = $253 << $258;
- $260 = (($259) + 520192)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 4;
- $263 = $262 | $258;
- $264 = $259 << $262;
- $265 = (($264) + 245760)|0;
- $266 = $265 >>> 16;
- $267 = $266 & 2;
- $268 = $263 | $267;
- $269 = (14 - ($268))|0;
- $270 = $264 << $267;
- $271 = $270 >>> 15;
- $272 = (($269) + ($271))|0;
- $273 = $272 << 1;
- $274 = (($272) + 7)|0;
- $275 = $249 >>> $274;
- $276 = $275 & 1;
- $277 = $276 | $273;
- $$0358$i = $277;
+ $273 = (($270) + 1048320)|0;
+ $274 = $273 >>> 16;
+ $275 = $274 & 8;
+ $276 = $270 << $275;
+ $277 = (($276) + 520192)|0;
+ $278 = $277 >>> 16;
+ $279 = $278 & 4;
+ $280 = $279 | $275;
+ $281 = $276 << $279;
+ $282 = (($281) + 245760)|0;
+ $283 = $282 >>> 16;
+ $284 = $283 & 2;
+ $285 = $280 | $284;
+ $286 = (14 - ($285))|0;
+ $287 = $281 << $284;
+ $288 = $287 >>> 15;
+ $289 = (($286) + ($288))|0;
+ $290 = $289 << 1;
+ $291 = (($289) + 7)|0;
+ $292 = $266 >>> $291;
+ $293 = $292 & 1;
+ $294 = $293 | $290;
+ $$0358$i = $294;
}
}
- $278 = (33448 + ($$0358$i<<2)|0);
- $279 = HEAP32[$278>>2]|0;
- $280 = ($279|0)==(0|0);
- L117: do {
- if ($280) {
- $$2355$i = 0;$$3$i201 = 0;$$3350$i = $252;
- label = 81;
+ $295 = (35756 + ($$0358$i<<2)|0);
+ $296 = HEAP32[$295>>2]|0;
+ $297 = ($296|0)==(0|0);
+ L128: do {
+ if ($297) {
+ $$2355$i = 0;$$3$i202 = 0;$$3350$i = $269;
+ label = 90;
} else {
- $281 = ($$0358$i|0)==(31);
- $282 = $$0358$i >>> 1;
- $283 = (25 - ($282))|0;
- $284 = $281 ? 0 : $283;
- $285 = $249 << $284;
- $$0342$i = 0;$$0347$i = $252;$$0353$i = $279;$$0359$i = $285;$$0362$i = 0;
+ $298 = ($$0358$i|0)==(31);
+ $299 = $$0358$i >>> 1;
+ $300 = (25 - ($299))|0;
+ $301 = $298 ? 0 : $300;
+ $302 = $266 << $301;
+ $$0342$i = 0;$$0347$i = $269;$$0353$i = $296;$$0359$i = $302;$$0362$i = 0;
while(1) {
- $286 = ((($$0353$i)) + 4|0);
- $287 = HEAP32[$286>>2]|0;
- $288 = $287 & -8;
- $289 = (($288) - ($249))|0;
- $290 = ($289>>>0)<($$0347$i>>>0);
- if ($290) {
- $291 = ($289|0)==(0);
- if ($291) {
+ $303 = ((($$0353$i)) + 4|0);
+ $304 = HEAP32[$303>>2]|0;
+ $305 = $304 & -8;
+ $306 = (($305) - ($266))|0;
+ $307 = ($306>>>0)<($$0347$i>>>0);
+ if ($307) {
+ $308 = ($306|0)==(0);
+ if ($308) {
$$415$i = $$0353$i;$$435114$i = 0;$$435713$i = $$0353$i;
- label = 85;
- break L117;
+ label = 94;
+ break L128;
} else {
- $$1343$i = $$0353$i;$$1348$i = $289;
+ $$1343$i = $$0353$i;$$1348$i = $306;
}
} else {
$$1343$i = $$0342$i;$$1348$i = $$0347$i;
}
- $292 = ((($$0353$i)) + 20|0);
- $293 = HEAP32[$292>>2]|0;
- $294 = $$0359$i >>> 31;
- $295 = (((($$0353$i)) + 16|0) + ($294<<2)|0);
- $296 = HEAP32[$295>>2]|0;
- $297 = ($293|0)==(0|0);
- $298 = ($293|0)==($296|0);
- $or$cond2$i = $297 | $298;
- $$1363$i = $or$cond2$i ? $$0362$i : $293;
- $299 = ($296|0)==(0|0);
- $not$8$i = $299 ^ 1;
- $300 = $not$8$i&1;
- $$0359$$i = $$0359$i << $300;
- if ($299) {
- $$2355$i = $$1363$i;$$3$i201 = $$1343$i;$$3350$i = $$1348$i;
- label = 81;
+ $309 = ((($$0353$i)) + 20|0);
+ $310 = HEAP32[$309>>2]|0;
+ $311 = $$0359$i >>> 31;
+ $312 = (((($$0353$i)) + 16|0) + ($311<<2)|0);
+ $313 = HEAP32[$312>>2]|0;
+ $314 = ($310|0)==(0|0);
+ $315 = ($310|0)==($313|0);
+ $or$cond2$i = $314 | $315;
+ $$1363$i = $or$cond2$i ? $$0362$i : $310;
+ $316 = ($313|0)==(0|0);
+ $not$8$i = $316 ^ 1;
+ $317 = $not$8$i&1;
+ $$0359$$i = $$0359$i << $317;
+ if ($316) {
+ $$2355$i = $$1363$i;$$3$i202 = $$1343$i;$$3350$i = $$1348$i;
+ label = 90;
break;
} else {
- $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $296;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
+ $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $313;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
}
}
}
} while(0);
- if ((label|0) == 81) {
- $301 = ($$2355$i|0)==(0|0);
- $302 = ($$3$i201|0)==(0|0);
- $or$cond$i = $301 & $302;
+ if ((label|0) == 90) {
+ $318 = ($$2355$i|0)==(0|0);
+ $319 = ($$3$i202|0)==(0|0);
+ $or$cond$i = $318 & $319;
if ($or$cond$i) {
- $303 = 2 << $$0358$i;
- $304 = (0 - ($303))|0;
- $305 = $303 | $304;
- $306 = $250 & $305;
- $307 = ($306|0)==(0);
- if ($307) {
- $$0197 = $249;
+ $320 = 2 << $$0358$i;
+ $321 = (0 - ($320))|0;
+ $322 = $320 | $321;
+ $323 = $267 & $322;
+ $324 = ($323|0)==(0);
+ if ($324) {
+ $$0198 = $266;
+ label = 153;
break;
}
- $308 = (0 - ($306))|0;
- $309 = $306 & $308;
- $310 = (($309) + -1)|0;
- $311 = $310 >>> 12;
- $312 = $311 & 16;
- $313 = $310 >>> $312;
- $314 = $313 >>> 5;
- $315 = $314 & 8;
- $316 = $315 | $312;
- $317 = $313 >>> $315;
- $318 = $317 >>> 2;
- $319 = $318 & 4;
- $320 = $316 | $319;
- $321 = $317 >>> $319;
- $322 = $321 >>> 1;
- $323 = $322 & 2;
- $324 = $320 | $323;
- $325 = $321 >>> $323;
- $326 = $325 >>> 1;
- $327 = $326 & 1;
- $328 = $324 | $327;
- $329 = $325 >>> $327;
- $330 = (($328) + ($329))|0;
- $331 = (33448 + ($330<<2)|0);
- $332 = HEAP32[$331>>2]|0;
- $$4$ph$i = 0;$$4357$ph$i = $332;
+ $325 = (0 - ($323))|0;
+ $326 = $323 & $325;
+ $327 = (($326) + -1)|0;
+ $328 = $327 >>> 12;
+ $329 = $328 & 16;
+ $330 = $327 >>> $329;
+ $331 = $330 >>> 5;
+ $332 = $331 & 8;
+ $333 = $332 | $329;
+ $334 = $330 >>> $332;
+ $335 = $334 >>> 2;
+ $336 = $335 & 4;
+ $337 = $333 | $336;
+ $338 = $334 >>> $336;
+ $339 = $338 >>> 1;
+ $340 = $339 & 2;
+ $341 = $337 | $340;
+ $342 = $338 >>> $340;
+ $343 = $342 >>> 1;
+ $344 = $343 & 1;
+ $345 = $341 | $344;
+ $346 = $342 >>> $344;
+ $347 = (($345) + ($346))|0;
+ $348 = (35756 + ($347<<2)|0);
+ $349 = HEAP32[$348>>2]|0;
+ $$4$ph$i = 0;$$4357$ph$i = $349;
} else {
- $$4$ph$i = $$3$i201;$$4357$ph$i = $$2355$i;
+ $$4$ph$i = $$3$i202;$$4357$ph$i = $$2355$i;
}
- $333 = ($$4357$ph$i|0)==(0|0);
- if ($333) {
+ $350 = ($$4357$ph$i|0)==(0|0);
+ if ($350) {
$$4$lcssa$i = $$4$ph$i;$$4351$lcssa$i = $$3350$i;
} else {
$$415$i = $$4$ph$i;$$435114$i = $$3350$i;$$435713$i = $$4357$ph$i;
- label = 85;
+ label = 94;
}
}
- if ((label|0) == 85) {
+ if ((label|0) == 94) {
while(1) {
label = 0;
- $334 = ((($$435713$i)) + 4|0);
- $335 = HEAP32[$334>>2]|0;
- $336 = $335 & -8;
- $337 = (($336) - ($249))|0;
- $338 = ($337>>>0)<($$435114$i>>>0);
- $$$4351$i = $338 ? $337 : $$435114$i;
- $$4357$$4$i = $338 ? $$435713$i : $$415$i;
- $339 = ((($$435713$i)) + 16|0);
- $340 = HEAP32[$339>>2]|0;
- $not$1$i203 = ($340|0)==(0|0);
- $$sink2$i204 = $not$1$i203&1;
- $341 = (((($$435713$i)) + 16|0) + ($$sink2$i204<<2)|0);
- $342 = HEAP32[$341>>2]|0;
- $343 = ($342|0)==(0|0);
- if ($343) {
+ $351 = ((($$435713$i)) + 4|0);
+ $352 = HEAP32[$351>>2]|0;
+ $353 = $352 & -8;
+ $354 = (($353) - ($266))|0;
+ $355 = ($354>>>0)<($$435114$i>>>0);
+ $$$4351$i = $355 ? $354 : $$435114$i;
+ $$4357$$4$i = $355 ? $$435713$i : $$415$i;
+ $356 = ((($$435713$i)) + 16|0);
+ $357 = HEAP32[$356>>2]|0;
+ $not$1$i204 = ($357|0)==(0|0);
+ $$sink2$i205 = $not$1$i204&1;
+ $358 = (((($$435713$i)) + 16|0) + ($$sink2$i205<<2)|0);
+ $359 = HEAP32[$358>>2]|0;
+ $360 = ($359|0)==(0|0);
+ if ($360) {
$$4$lcssa$i = $$4357$$4$i;$$4351$lcssa$i = $$$4351$i;
break;
} else {
- $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $342;
- label = 85;
+ $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $359;
+ label = 94;
}
}
}
- $344 = ($$4$lcssa$i|0)==(0|0);
- if ($344) {
- $$0197 = $249;
+ $361 = ($$4$lcssa$i|0)==(0|0);
+ if ($361) {
+ $$0198 = $266;
+ label = 153;
} else {
- $345 = HEAP32[(33152)>>2]|0;
- $346 = (($345) - ($249))|0;
- $347 = ($$4351$lcssa$i>>>0)<($346>>>0);
- if ($347) {
- $348 = HEAP32[(33160)>>2]|0;
- $349 = ($$4$lcssa$i>>>0)<($348>>>0);
- if ($349) {
+ $362 = HEAP32[(35460)>>2]|0;
+ $363 = (($362) - ($266))|0;
+ $364 = ($$4351$lcssa$i>>>0)<($363>>>0);
+ if ($364) {
+ $365 = HEAP32[(35468)>>2]|0;
+ $366 = ($$4$lcssa$i>>>0)<($365>>>0);
+ if ($366) {
_abort();
// unreachable;
}
- $350 = (($$4$lcssa$i) + ($249)|0);
- $351 = ($$4$lcssa$i>>>0)<($350>>>0);
- if (!($351)) {
+ $367 = (($$4$lcssa$i) + ($266)|0);
+ $368 = ($$4$lcssa$i>>>0)<($367>>>0);
+ if (!($368)) {
_abort();
// unreachable;
}
- $352 = ((($$4$lcssa$i)) + 24|0);
- $353 = HEAP32[$352>>2]|0;
- $354 = ((($$4$lcssa$i)) + 12|0);
- $355 = HEAP32[$354>>2]|0;
- $356 = ($355|0)==($$4$lcssa$i|0);
+ $369 = ((($$4$lcssa$i)) + 24|0);
+ $370 = HEAP32[$369>>2]|0;
+ $371 = ((($$4$lcssa$i)) + 12|0);
+ $372 = HEAP32[$371>>2]|0;
+ $373 = ($372|0)==($$4$lcssa$i|0);
do {
- if ($356) {
- $366 = ((($$4$lcssa$i)) + 20|0);
- $367 = HEAP32[$366>>2]|0;
- $368 = ($367|0)==(0|0);
- if ($368) {
- $369 = ((($$4$lcssa$i)) + 16|0);
- $370 = HEAP32[$369>>2]|0;
- $371 = ($370|0)==(0|0);
- if ($371) {
+ if ($373) {
+ $383 = ((($$4$lcssa$i)) + 20|0);
+ $384 = HEAP32[$383>>2]|0;
+ $385 = ($384|0)==(0|0);
+ if ($385) {
+ $386 = ((($$4$lcssa$i)) + 16|0);
+ $387 = HEAP32[$386>>2]|0;
+ $388 = ($387|0)==(0|0);
+ if ($388) {
$$3372$i = 0;
break;
} else {
- $$1370$i = $370;$$1374$i = $369;
+ $$1370$i = $387;$$1374$i = $386;
}
} else {
- $$1370$i = $367;$$1374$i = $366;
+ $$1370$i = $384;$$1374$i = $383;
}
while(1) {
- $372 = ((($$1370$i)) + 20|0);
- $373 = HEAP32[$372>>2]|0;
- $374 = ($373|0)==(0|0);
- if (!($374)) {
- $$1370$i = $373;$$1374$i = $372;
+ $389 = ((($$1370$i)) + 20|0);
+ $390 = HEAP32[$389>>2]|0;
+ $391 = ($390|0)==(0|0);
+ if (!($391)) {
+ $$1370$i = $390;$$1374$i = $389;
continue;
}
- $375 = ((($$1370$i)) + 16|0);
- $376 = HEAP32[$375>>2]|0;
- $377 = ($376|0)==(0|0);
- if ($377) {
+ $392 = ((($$1370$i)) + 16|0);
+ $393 = HEAP32[$392>>2]|0;
+ $394 = ($393|0)==(0|0);
+ if ($394) {
break;
} else {
- $$1370$i = $376;$$1374$i = $375;
+ $$1370$i = $393;$$1374$i = $392;
}
}
- $378 = ($$1374$i>>>0)<($348>>>0);
- if ($378) {
+ $395 = ($$1374$i>>>0)<($365>>>0);
+ if ($395) {
_abort();
// unreachable;
} else {
@@ -24368,27 +30666,27 @@ function _malloc($0) {
break;
}
} else {
- $357 = ((($$4$lcssa$i)) + 8|0);
- $358 = HEAP32[$357>>2]|0;
- $359 = ($358>>>0)<($348>>>0);
- if ($359) {
+ $374 = ((($$4$lcssa$i)) + 8|0);
+ $375 = HEAP32[$374>>2]|0;
+ $376 = ($375>>>0)<($365>>>0);
+ if ($376) {
_abort();
// unreachable;
}
- $360 = ((($358)) + 12|0);
- $361 = HEAP32[$360>>2]|0;
- $362 = ($361|0)==($$4$lcssa$i|0);
- if (!($362)) {
+ $377 = ((($375)) + 12|0);
+ $378 = HEAP32[$377>>2]|0;
+ $379 = ($378|0)==($$4$lcssa$i|0);
+ if (!($379)) {
_abort();
// unreachable;
}
- $363 = ((($355)) + 8|0);
- $364 = HEAP32[$363>>2]|0;
- $365 = ($364|0)==($$4$lcssa$i|0);
- if ($365) {
- HEAP32[$360>>2] = $355;
- HEAP32[$363>>2] = $358;
- $$3372$i = $355;
+ $380 = ((($372)) + 8|0);
+ $381 = HEAP32[$380>>2]|0;
+ $382 = ($381|0)==($$4$lcssa$i|0);
+ if ($382) {
+ HEAP32[$377>>2] = $372;
+ HEAP32[$380>>2] = $375;
+ $$3372$i = $372;
break;
} else {
_abort();
@@ -24396,273 +30694,275 @@ function _malloc($0) {
}
}
} while(0);
- $379 = ($353|0)==(0|0);
- L164: do {
- if ($379) {
- $470 = $250;
+ $396 = ($370|0)==(0|0);
+ L175: do {
+ if ($396) {
+ $487 = $267;
} else {
- $380 = ((($$4$lcssa$i)) + 28|0);
- $381 = HEAP32[$380>>2]|0;
- $382 = (33448 + ($381<<2)|0);
- $383 = HEAP32[$382>>2]|0;
- $384 = ($$4$lcssa$i|0)==($383|0);
+ $397 = ((($$4$lcssa$i)) + 28|0);
+ $398 = HEAP32[$397>>2]|0;
+ $399 = (35756 + ($398<<2)|0);
+ $400 = HEAP32[$399>>2]|0;
+ $401 = ($$4$lcssa$i|0)==($400|0);
do {
- if ($384) {
- HEAP32[$382>>2] = $$3372$i;
- $cond$i208 = ($$3372$i|0)==(0|0);
- if ($cond$i208) {
- $385 = 1 << $381;
- $386 = $385 ^ -1;
- $387 = $250 & $386;
- HEAP32[(33148)>>2] = $387;
- $470 = $387;
- break L164;
+ if ($401) {
+ HEAP32[$399>>2] = $$3372$i;
+ $cond$i209 = ($$3372$i|0)==(0|0);
+ if ($cond$i209) {
+ $402 = 1 << $398;
+ $403 = $402 ^ -1;
+ $404 = $267 & $403;
+ HEAP32[(35456)>>2] = $404;
+ $487 = $404;
+ break L175;
}
} else {
- $388 = HEAP32[(33160)>>2]|0;
- $389 = ($353>>>0)<($388>>>0);
- if ($389) {
+ $405 = HEAP32[(35468)>>2]|0;
+ $406 = ($370>>>0)<($405>>>0);
+ if ($406) {
_abort();
// unreachable;
} else {
- $390 = ((($353)) + 16|0);
- $391 = HEAP32[$390>>2]|0;
- $not$$i209 = ($391|0)!=($$4$lcssa$i|0);
- $$sink3$i = $not$$i209&1;
- $392 = (((($353)) + 16|0) + ($$sink3$i<<2)|0);
- HEAP32[$392>>2] = $$3372$i;
- $393 = ($$3372$i|0)==(0|0);
- if ($393) {
- $470 = $250;
- break L164;
+ $407 = ((($370)) + 16|0);
+ $408 = HEAP32[$407>>2]|0;
+ $not$$i210 = ($408|0)!=($$4$lcssa$i|0);
+ $$sink3$i = $not$$i210&1;
+ $409 = (((($370)) + 16|0) + ($$sink3$i<<2)|0);
+ HEAP32[$409>>2] = $$3372$i;
+ $410 = ($$3372$i|0)==(0|0);
+ if ($410) {
+ $487 = $267;
+ break L175;
} else {
break;
}
}
}
} while(0);
- $394 = HEAP32[(33160)>>2]|0;
- $395 = ($$3372$i>>>0)<($394>>>0);
- if ($395) {
+ $411 = HEAP32[(35468)>>2]|0;
+ $412 = ($$3372$i>>>0)<($411>>>0);
+ if ($412) {
_abort();
// unreachable;
}
- $396 = ((($$3372$i)) + 24|0);
- HEAP32[$396>>2] = $353;
- $397 = ((($$4$lcssa$i)) + 16|0);
- $398 = HEAP32[$397>>2]|0;
- $399 = ($398|0)==(0|0);
+ $413 = ((($$3372$i)) + 24|0);
+ HEAP32[$413>>2] = $370;
+ $414 = ((($$4$lcssa$i)) + 16|0);
+ $415 = HEAP32[$414>>2]|0;
+ $416 = ($415|0)==(0|0);
do {
- if (!($399)) {
- $400 = ($398>>>0)<($394>>>0);
- if ($400) {
+ if (!($416)) {
+ $417 = ($415>>>0)<($411>>>0);
+ if ($417) {
_abort();
// unreachable;
} else {
- $401 = ((($$3372$i)) + 16|0);
- HEAP32[$401>>2] = $398;
- $402 = ((($398)) + 24|0);
- HEAP32[$402>>2] = $$3372$i;
+ $418 = ((($$3372$i)) + 16|0);
+ HEAP32[$418>>2] = $415;
+ $419 = ((($415)) + 24|0);
+ HEAP32[$419>>2] = $$3372$i;
break;
}
}
} while(0);
- $403 = ((($$4$lcssa$i)) + 20|0);
- $404 = HEAP32[$403>>2]|0;
- $405 = ($404|0)==(0|0);
- if ($405) {
- $470 = $250;
+ $420 = ((($$4$lcssa$i)) + 20|0);
+ $421 = HEAP32[$420>>2]|0;
+ $422 = ($421|0)==(0|0);
+ if ($422) {
+ $487 = $267;
} else {
- $406 = HEAP32[(33160)>>2]|0;
- $407 = ($404>>>0)<($406>>>0);
- if ($407) {
+ $423 = HEAP32[(35468)>>2]|0;
+ $424 = ($421>>>0)<($423>>>0);
+ if ($424) {
_abort();
// unreachable;
} else {
- $408 = ((($$3372$i)) + 20|0);
- HEAP32[$408>>2] = $404;
- $409 = ((($404)) + 24|0);
- HEAP32[$409>>2] = $$3372$i;
- $470 = $250;
+ $425 = ((($$3372$i)) + 20|0);
+ HEAP32[$425>>2] = $421;
+ $426 = ((($421)) + 24|0);
+ HEAP32[$426>>2] = $$3372$i;
+ $487 = $267;
break;
}
}
}
} while(0);
- $410 = ($$4351$lcssa$i>>>0)<(16);
+ $427 = ($$4351$lcssa$i>>>0)<(16);
do {
- if ($410) {
- $411 = (($$4351$lcssa$i) + ($249))|0;
- $412 = $411 | 3;
- $413 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$413>>2] = $412;
- $414 = (($$4$lcssa$i) + ($411)|0);
- $415 = ((($414)) + 4|0);
- $416 = HEAP32[$415>>2]|0;
- $417 = $416 | 1;
- HEAP32[$415>>2] = $417;
+ if ($427) {
+ $428 = (($$4351$lcssa$i) + ($266))|0;
+ $429 = $428 | 3;
+ $430 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$430>>2] = $429;
+ $431 = (($$4$lcssa$i) + ($428)|0);
+ $432 = ((($431)) + 4|0);
+ $433 = HEAP32[$432>>2]|0;
+ $434 = $433 | 1;
+ HEAP32[$432>>2] = $434;
} else {
- $418 = $249 | 3;
- $419 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$419>>2] = $418;
- $420 = $$4351$lcssa$i | 1;
- $421 = ((($350)) + 4|0);
- HEAP32[$421>>2] = $420;
- $422 = (($350) + ($$4351$lcssa$i)|0);
- HEAP32[$422>>2] = $$4351$lcssa$i;
- $423 = $$4351$lcssa$i >>> 3;
- $424 = ($$4351$lcssa$i>>>0)<(256);
- if ($424) {
- $425 = $423 << 1;
- $426 = (33184 + ($425<<2)|0);
- $427 = HEAP32[8286]|0;
- $428 = 1 << $423;
- $429 = $427 & $428;
- $430 = ($429|0)==(0);
- if ($430) {
- $431 = $427 | $428;
- HEAP32[8286] = $431;
- $$pre$i210 = ((($426)) + 8|0);
- $$0368$i = $426;$$pre$phi$i211Z2D = $$pre$i210;
- } else {
- $432 = ((($426)) + 8|0);
- $433 = HEAP32[$432>>2]|0;
- $434 = HEAP32[(33160)>>2]|0;
- $435 = ($433>>>0)<($434>>>0);
- if ($435) {
+ $435 = $266 | 3;
+ $436 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$436>>2] = $435;
+ $437 = $$4351$lcssa$i | 1;
+ $438 = ((($367)) + 4|0);
+ HEAP32[$438>>2] = $437;
+ $439 = (($367) + ($$4351$lcssa$i)|0);
+ HEAP32[$439>>2] = $$4351$lcssa$i;
+ $440 = $$4351$lcssa$i >>> 3;
+ $441 = ($$4351$lcssa$i>>>0)<(256);
+ if ($441) {
+ $442 = $440 << 1;
+ $443 = (35492 + ($442<<2)|0);
+ $444 = HEAP32[8863]|0;
+ $445 = 1 << $440;
+ $446 = $444 & $445;
+ $447 = ($446|0)==(0);
+ do {
+ if ($447) {
+ $448 = $444 | $445;
+ HEAP32[8863] = $448;
+ $$pre$i211 = ((($443)) + 8|0);
+ $$0368$i = $443;$$pre$phi$i212Z2D = $$pre$i211;
+ } else {
+ $449 = ((($443)) + 8|0);
+ $450 = HEAP32[$449>>2]|0;
+ $451 = HEAP32[(35468)>>2]|0;
+ $452 = ($450>>>0)<($451>>>0);
+ if (!($452)) {
+ $$0368$i = $450;$$pre$phi$i212Z2D = $449;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $$0368$i = $433;$$pre$phi$i211Z2D = $432;
}
- }
- HEAP32[$$pre$phi$i211Z2D>>2] = $350;
- $436 = ((($$0368$i)) + 12|0);
- HEAP32[$436>>2] = $350;
- $437 = ((($350)) + 8|0);
- HEAP32[$437>>2] = $$0368$i;
- $438 = ((($350)) + 12|0);
- HEAP32[$438>>2] = $426;
+ } while(0);
+ HEAP32[$$pre$phi$i212Z2D>>2] = $367;
+ $453 = ((($$0368$i)) + 12|0);
+ HEAP32[$453>>2] = $367;
+ $454 = ((($367)) + 8|0);
+ HEAP32[$454>>2] = $$0368$i;
+ $455 = ((($367)) + 12|0);
+ HEAP32[$455>>2] = $443;
break;
}
- $439 = $$4351$lcssa$i >>> 8;
- $440 = ($439|0)==(0);
- if ($440) {
+ $456 = $$4351$lcssa$i >>> 8;
+ $457 = ($456|0)==(0);
+ if ($457) {
$$0361$i = 0;
} else {
- $441 = ($$4351$lcssa$i>>>0)>(16777215);
- if ($441) {
+ $458 = ($$4351$lcssa$i>>>0)>(16777215);
+ if ($458) {
$$0361$i = 31;
} else {
- $442 = (($439) + 1048320)|0;
- $443 = $442 >>> 16;
- $444 = $443 & 8;
- $445 = $439 << $444;
- $446 = (($445) + 520192)|0;
- $447 = $446 >>> 16;
- $448 = $447 & 4;
- $449 = $448 | $444;
- $450 = $445 << $448;
- $451 = (($450) + 245760)|0;
- $452 = $451 >>> 16;
- $453 = $452 & 2;
- $454 = $449 | $453;
- $455 = (14 - ($454))|0;
- $456 = $450 << $453;
- $457 = $456 >>> 15;
- $458 = (($455) + ($457))|0;
- $459 = $458 << 1;
- $460 = (($458) + 7)|0;
- $461 = $$4351$lcssa$i >>> $460;
- $462 = $461 & 1;
- $463 = $462 | $459;
- $$0361$i = $463;
+ $459 = (($456) + 1048320)|0;
+ $460 = $459 >>> 16;
+ $461 = $460 & 8;
+ $462 = $456 << $461;
+ $463 = (($462) + 520192)|0;
+ $464 = $463 >>> 16;
+ $465 = $464 & 4;
+ $466 = $465 | $461;
+ $467 = $462 << $465;
+ $468 = (($467) + 245760)|0;
+ $469 = $468 >>> 16;
+ $470 = $469 & 2;
+ $471 = $466 | $470;
+ $472 = (14 - ($471))|0;
+ $473 = $467 << $470;
+ $474 = $473 >>> 15;
+ $475 = (($472) + ($474))|0;
+ $476 = $475 << 1;
+ $477 = (($475) + 7)|0;
+ $478 = $$4351$lcssa$i >>> $477;
+ $479 = $478 & 1;
+ $480 = $479 | $476;
+ $$0361$i = $480;
}
}
- $464 = (33448 + ($$0361$i<<2)|0);
- $465 = ((($350)) + 28|0);
- HEAP32[$465>>2] = $$0361$i;
- $466 = ((($350)) + 16|0);
- $467 = ((($466)) + 4|0);
- HEAP32[$467>>2] = 0;
- HEAP32[$466>>2] = 0;
- $468 = 1 << $$0361$i;
- $469 = $470 & $468;
- $471 = ($469|0)==(0);
- if ($471) {
- $472 = $470 | $468;
- HEAP32[(33148)>>2] = $472;
- HEAP32[$464>>2] = $350;
- $473 = ((($350)) + 24|0);
- HEAP32[$473>>2] = $464;
- $474 = ((($350)) + 12|0);
- HEAP32[$474>>2] = $350;
- $475 = ((($350)) + 8|0);
- HEAP32[$475>>2] = $350;
+ $481 = (35756 + ($$0361$i<<2)|0);
+ $482 = ((($367)) + 28|0);
+ HEAP32[$482>>2] = $$0361$i;
+ $483 = ((($367)) + 16|0);
+ $484 = ((($483)) + 4|0);
+ HEAP32[$484>>2] = 0;
+ HEAP32[$483>>2] = 0;
+ $485 = 1 << $$0361$i;
+ $486 = $487 & $485;
+ $488 = ($486|0)==(0);
+ if ($488) {
+ $489 = $487 | $485;
+ HEAP32[(35456)>>2] = $489;
+ HEAP32[$481>>2] = $367;
+ $490 = ((($367)) + 24|0);
+ HEAP32[$490>>2] = $481;
+ $491 = ((($367)) + 12|0);
+ HEAP32[$491>>2] = $367;
+ $492 = ((($367)) + 8|0);
+ HEAP32[$492>>2] = $367;
break;
}
- $476 = HEAP32[$464>>2]|0;
- $477 = ($$0361$i|0)==(31);
- $478 = $$0361$i >>> 1;
- $479 = (25 - ($478))|0;
- $480 = $477 ? 0 : $479;
- $481 = $$4351$lcssa$i << $480;
- $$0344$i = $481;$$0345$i = $476;
+ $493 = HEAP32[$481>>2]|0;
+ $494 = ($$0361$i|0)==(31);
+ $495 = $$0361$i >>> 1;
+ $496 = (25 - ($495))|0;
+ $497 = $494 ? 0 : $496;
+ $498 = $$4351$lcssa$i << $497;
+ $$0344$i = $498;$$0345$i = $493;
while(1) {
- $482 = ((($$0345$i)) + 4|0);
- $483 = HEAP32[$482>>2]|0;
- $484 = $483 & -8;
- $485 = ($484|0)==($$4351$lcssa$i|0);
- if ($485) {
- label = 139;
+ $499 = ((($$0345$i)) + 4|0);
+ $500 = HEAP32[$499>>2]|0;
+ $501 = $500 & -8;
+ $502 = ($501|0)==($$4351$lcssa$i|0);
+ if ($502) {
+ label = 148;
break;
}
- $486 = $$0344$i >>> 31;
- $487 = (((($$0345$i)) + 16|0) + ($486<<2)|0);
- $488 = $$0344$i << 1;
- $489 = HEAP32[$487>>2]|0;
- $490 = ($489|0)==(0|0);
- if ($490) {
- label = 136;
+ $503 = $$0344$i >>> 31;
+ $504 = (((($$0345$i)) + 16|0) + ($503<<2)|0);
+ $505 = $$0344$i << 1;
+ $506 = HEAP32[$504>>2]|0;
+ $507 = ($506|0)==(0|0);
+ if ($507) {
+ label = 145;
break;
} else {
- $$0344$i = $488;$$0345$i = $489;
+ $$0344$i = $505;$$0345$i = $506;
}
}
- if ((label|0) == 136) {
- $491 = HEAP32[(33160)>>2]|0;
- $492 = ($487>>>0)<($491>>>0);
- if ($492) {
+ if ((label|0) == 145) {
+ $508 = HEAP32[(35468)>>2]|0;
+ $509 = ($504>>>0)<($508>>>0);
+ if ($509) {
_abort();
// unreachable;
} else {
- HEAP32[$487>>2] = $350;
- $493 = ((($350)) + 24|0);
- HEAP32[$493>>2] = $$0345$i;
- $494 = ((($350)) + 12|0);
- HEAP32[$494>>2] = $350;
- $495 = ((($350)) + 8|0);
- HEAP32[$495>>2] = $350;
+ HEAP32[$504>>2] = $367;
+ $510 = ((($367)) + 24|0);
+ HEAP32[$510>>2] = $$0345$i;
+ $511 = ((($367)) + 12|0);
+ HEAP32[$511>>2] = $367;
+ $512 = ((($367)) + 8|0);
+ HEAP32[$512>>2] = $367;
break;
}
}
- else if ((label|0) == 139) {
- $496 = ((($$0345$i)) + 8|0);
- $497 = HEAP32[$496>>2]|0;
- $498 = HEAP32[(33160)>>2]|0;
- $499 = ($497>>>0)>=($498>>>0);
- $not$9$i = ($$0345$i>>>0)>=($498>>>0);
- $500 = $499 & $not$9$i;
- if ($500) {
- $501 = ((($497)) + 12|0);
- HEAP32[$501>>2] = $350;
- HEAP32[$496>>2] = $350;
- $502 = ((($350)) + 8|0);
- HEAP32[$502>>2] = $497;
- $503 = ((($350)) + 12|0);
- HEAP32[$503>>2] = $$0345$i;
- $504 = ((($350)) + 24|0);
- HEAP32[$504>>2] = 0;
+ else if ((label|0) == 148) {
+ $513 = ((($$0345$i)) + 8|0);
+ $514 = HEAP32[$513>>2]|0;
+ $515 = HEAP32[(35468)>>2]|0;
+ $516 = ($514>>>0)>=($515>>>0);
+ $not$9$i = ($$0345$i>>>0)>=($515>>>0);
+ $517 = $516 & $not$9$i;
+ if ($517) {
+ $518 = ((($514)) + 12|0);
+ HEAP32[$518>>2] = $367;
+ HEAP32[$513>>2] = $367;
+ $519 = ((($367)) + 8|0);
+ HEAP32[$519>>2] = $514;
+ $520 = ((($367)) + 12|0);
+ HEAP32[$520>>2] = $$0345$i;
+ $521 = ((($367)) + 24|0);
+ HEAP32[$521>>2] = 0;
break;
} else {
_abort();
@@ -24671,1200 +30971,1238 @@ function _malloc($0) {
}
}
} while(0);
- $505 = ((($$4$lcssa$i)) + 8|0);
- $$0 = $505;
- STACKTOP = sp;return ($$0|0);
+ $522 = ((($$4$lcssa$i)) + 8|0);
+ $$2 = $522;
} else {
- $$0197 = $249;
+ $$0198 = $266;
+ label = 153;
}
}
}
}
}
} while(0);
- $506 = HEAP32[(33152)>>2]|0;
- $507 = ($506>>>0)<($$0197>>>0);
- if (!($507)) {
- $508 = (($506) - ($$0197))|0;
- $509 = HEAP32[(33164)>>2]|0;
- $510 = ($508>>>0)>(15);
- if ($510) {
- $511 = (($509) + ($$0197)|0);
- HEAP32[(33164)>>2] = $511;
- HEAP32[(33152)>>2] = $508;
- $512 = $508 | 1;
- $513 = ((($511)) + 4|0);
- HEAP32[$513>>2] = $512;
- $514 = (($511) + ($508)|0);
- HEAP32[$514>>2] = $508;
- $515 = $$0197 | 3;
- $516 = ((($509)) + 4|0);
- HEAP32[$516>>2] = $515;
- } else {
- HEAP32[(33152)>>2] = 0;
- HEAP32[(33164)>>2] = 0;
- $517 = $506 | 3;
- $518 = ((($509)) + 4|0);
- HEAP32[$518>>2] = $517;
- $519 = (($509) + ($506)|0);
- $520 = ((($519)) + 4|0);
- $521 = HEAP32[$520>>2]|0;
- $522 = $521 | 1;
- HEAP32[$520>>2] = $522;
- }
- $523 = ((($509)) + 8|0);
- $$0 = $523;
- STACKTOP = sp;return ($$0|0);
- }
- $524 = HEAP32[(33156)>>2]|0;
- $525 = ($524>>>0)>($$0197>>>0);
- if ($525) {
- $526 = (($524) - ($$0197))|0;
- HEAP32[(33156)>>2] = $526;
- $527 = HEAP32[(33168)>>2]|0;
- $528 = (($527) + ($$0197)|0);
- HEAP32[(33168)>>2] = $528;
- $529 = $526 | 1;
- $530 = ((($528)) + 4|0);
- HEAP32[$530>>2] = $529;
- $531 = $$0197 | 3;
- $532 = ((($527)) + 4|0);
- HEAP32[$532>>2] = $531;
- $533 = ((($527)) + 8|0);
- $$0 = $533;
- STACKTOP = sp;return ($$0|0);
- }
- $534 = HEAP32[8404]|0;
- $535 = ($534|0)==(0);
- if ($535) {
- HEAP32[(33624)>>2] = 4096;
- HEAP32[(33620)>>2] = 4096;
- HEAP32[(33628)>>2] = -1;
- HEAP32[(33632)>>2] = -1;
- HEAP32[(33636)>>2] = 0;
- HEAP32[(33588)>>2] = 0;
- $536 = $1;
- $537 = $536 & -16;
- $538 = $537 ^ 1431655768;
- HEAP32[$1>>2] = $538;
- HEAP32[8404] = $538;
- $542 = 4096;
- } else {
- $$pre$i212 = HEAP32[(33624)>>2]|0;
- $542 = $$pre$i212;
- }
- $539 = (($$0197) + 48)|0;
- $540 = (($$0197) + 47)|0;
- $541 = (($542) + ($540))|0;
- $543 = (0 - ($542))|0;
- $544 = $541 & $543;
- $545 = ($544>>>0)>($$0197>>>0);
- if (!($545)) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- $546 = HEAP32[(33584)>>2]|0;
- $547 = ($546|0)==(0);
- if (!($547)) {
- $548 = HEAP32[(33576)>>2]|0;
- $549 = (($548) + ($544))|0;
- $550 = ($549>>>0)<=($548>>>0);
- $551 = ($549>>>0)>($546>>>0);
- $or$cond1$i = $550 | $551;
- if ($or$cond1$i) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $552 = HEAP32[(33588)>>2]|0;
- $553 = $552 & 4;
- $554 = ($553|0)==(0);
- L244: do {
- if ($554) {
- $555 = HEAP32[(33168)>>2]|0;
- $556 = ($555|0)==(0|0);
- L246: do {
- if ($556) {
- label = 163;
+ L230: do {
+ if ((label|0) == 153) {
+ $523 = HEAP32[(35460)>>2]|0;
+ $524 = ($523>>>0)<($$0198>>>0);
+ if (!($524)) {
+ $525 = (($523) - ($$0198))|0;
+ $526 = HEAP32[(35472)>>2]|0;
+ $527 = ($525>>>0)>(15);
+ if ($527) {
+ $528 = (($526) + ($$0198)|0);
+ HEAP32[(35472)>>2] = $528;
+ HEAP32[(35460)>>2] = $525;
+ $529 = $525 | 1;
+ $530 = ((($528)) + 4|0);
+ HEAP32[$530>>2] = $529;
+ $531 = (($528) + ($525)|0);
+ HEAP32[$531>>2] = $525;
+ $532 = $$0198 | 3;
+ $533 = ((($526)) + 4|0);
+ HEAP32[$533>>2] = $532;
} else {
- $$0$i$i = (33592);
- while(1) {
- $557 = HEAP32[$$0$i$i>>2]|0;
- $558 = ($557>>>0)>($555>>>0);
- if (!($558)) {
- $559 = ((($$0$i$i)) + 4|0);
- $560 = HEAP32[$559>>2]|0;
- $561 = (($557) + ($560)|0);
- $562 = ($561>>>0)>($555>>>0);
- if ($562) {
- break;
- }
+ HEAP32[(35460)>>2] = 0;
+ HEAP32[(35472)>>2] = 0;
+ $534 = $523 | 3;
+ $535 = ((($526)) + 4|0);
+ HEAP32[$535>>2] = $534;
+ $536 = (($526) + ($523)|0);
+ $537 = ((($536)) + 4|0);
+ $538 = HEAP32[$537>>2]|0;
+ $539 = $538 | 1;
+ HEAP32[$537>>2] = $539;
+ }
+ $540 = ((($526)) + 8|0);
+ $$2 = $540;
+ break;
+ }
+ $541 = HEAP32[(35464)>>2]|0;
+ $542 = ($541>>>0)>($$0198>>>0);
+ if ($542) {
+ $543 = (($541) - ($$0198))|0;
+ HEAP32[(35464)>>2] = $543;
+ $544 = HEAP32[(35476)>>2]|0;
+ $545 = (($544) + ($$0198)|0);
+ HEAP32[(35476)>>2] = $545;
+ $546 = $543 | 1;
+ $547 = ((($545)) + 4|0);
+ HEAP32[$547>>2] = $546;
+ $548 = $$0198 | 3;
+ $549 = ((($544)) + 4|0);
+ HEAP32[$549>>2] = $548;
+ $550 = ((($544)) + 8|0);
+ $$2 = $550;
+ break;
+ }
+ $551 = HEAP32[8850]|0;
+ $552 = ($551|0)==(0);
+ if ($552) {
+ (___pthread_mutex_lock(35424)|0);
+ $553 = HEAP32[8850]|0;
+ $554 = ($553|0)==(0);
+ if ($554) {
+ HEAP32[(35408)>>2] = 4096;
+ HEAP32[(35404)>>2] = 4096;
+ HEAP32[(35412)>>2] = -1;
+ HEAP32[(35416)>>2] = -1;
+ HEAP32[(35420)>>2] = 2;
+ HEAP32[(35896)>>2] = 2;
+ $555 = (_pthread_mutexattr_init($1)|0);
+ $556 = ($555|0)==(0);
+ if ($556) {
+ $557 = (_pthread_mutex_init((35900),$1)|0);
+ $558 = ($557|0)==(0);
+ if ($558) {
}
- $563 = ((($$0$i$i)) + 8|0);
- $564 = HEAP32[$563>>2]|0;
- $565 = ($564|0)==(0|0);
- if ($565) {
- label = 163;
- break L246;
+ }
+ $559 = $2;
+ $560 = $559 & -16;
+ $561 = $560 ^ 1431655768;
+ HEAP32[$2>>2] = $561;
+ Atomics_store(HEAP32,8850,$561)|0;
+ }
+ (___pthread_mutex_unlock(35424)|0);
+ }
+ $562 = (($$0198) + 48)|0;
+ $563 = HEAP32[(35408)>>2]|0;
+ $564 = (($$0198) + 47)|0;
+ $565 = (($563) + ($564))|0;
+ $566 = (0 - ($563))|0;
+ $567 = $565 & $566;
+ $568 = ($567>>>0)>($$0198>>>0);
+ if ($568) {
+ $569 = HEAP32[(35892)>>2]|0;
+ $570 = ($569|0)==(0);
+ if (!($570)) {
+ $571 = HEAP32[(35884)>>2]|0;
+ $572 = (($571) + ($567))|0;
+ $573 = ($572>>>0)<=($571>>>0);
+ $574 = ($572>>>0)>($569>>>0);
+ $or$cond1$i = $573 | $574;
+ if ($or$cond1$i) {
+ $$2 = 0;
+ break;
+ }
+ }
+ $575 = HEAP32[(35896)>>2]|0;
+ $576 = $575 & 4;
+ $577 = ($576|0)==(0);
+ if ($577) {
+ $578 = HEAP32[(35476)>>2]|0;
+ $579 = ($578|0)==(0|0);
+ L258: do {
+ if ($579) {
+ label = 176;
} else {
- $$0$i$i = $564;
+ $$0$i$i = (35928);
+ while(1) {
+ $580 = HEAP32[$$0$i$i>>2]|0;
+ $581 = ($580>>>0)>($578>>>0);
+ if (!($581)) {
+ $582 = ((($$0$i$i)) + 4|0);
+ $583 = HEAP32[$582>>2]|0;
+ $584 = (($580) + ($583)|0);
+ $585 = ($584>>>0)>($578>>>0);
+ if ($585) {
+ break;
+ }
+ }
+ $586 = ((($$0$i$i)) + 8|0);
+ $587 = HEAP32[$586>>2]|0;
+ $588 = ($587|0)==(0|0);
+ if ($588) {
+ label = 176;
+ break L258;
+ } else {
+ $$0$i$i = $587;
+ }
+ }
+ (___pthread_mutex_lock(35424)|0);
+ $611 = HEAP32[(35464)>>2]|0;
+ $612 = HEAP32[(35408)>>2]|0;
+ $613 = (($564) - ($611))|0;
+ $614 = (($613) + ($612))|0;
+ $615 = (0 - ($612))|0;
+ $616 = $614 & $615;
+ $617 = ($616>>>0)<(2147483647);
+ if ($617) {
+ $618 = (_sbrk(($616|0))|0);
+ $619 = HEAP32[$$0$i$i>>2]|0;
+ $620 = HEAP32[$582>>2]|0;
+ $621 = (($619) + ($620)|0);
+ $622 = ($618|0)==($621|0);
+ if ($622) {
+ $623 = ($618|0)==((-1)|0);
+ if ($623) {
+ $$2234253237$i = $616;
+ label = 190;
+ } else {
+ $$3229$i = $618;$$3235$i = $616;
+ }
+ } else {
+ $$2247$ph$i = $618;$$2253$ph$i = $616;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- }
- $588 = (($541) - ($524))|0;
- $589 = $588 & $543;
- $590 = ($589>>>0)<(2147483647);
- if ($590) {
- $591 = (_sbrk(($589|0))|0);
- $592 = HEAP32[$$0$i$i>>2]|0;
- $593 = HEAP32[$559>>2]|0;
- $594 = (($592) + ($593)|0);
- $595 = ($591|0)==($594|0);
- if ($595) {
- $596 = ($591|0)==((-1)|0);
- if ($596) {
- $$2234253237$i = $589;
+ } while(0);
+ do {
+ if ((label|0) == 176) {
+ (___pthread_mutex_lock(35424)|0);
+ $589 = (_sbrk(0)|0);
+ $590 = ($589|0)==((-1)|0);
+ if ($590) {
+ $$2234253237$i = 0;
+ label = 190;
} else {
- $$723948$i = $589;$$749$i = $591;
- label = 180;
- break L244;
+ $591 = $589;
+ $592 = HEAP32[(35404)>>2]|0;
+ $593 = (($592) + -1)|0;
+ $594 = $593 & $591;
+ $595 = ($594|0)==(0);
+ $596 = (($593) + ($591))|0;
+ $597 = (0 - ($592))|0;
+ $598 = $596 & $597;
+ $599 = (($598) - ($591))|0;
+ $600 = $595 ? 0 : $599;
+ $$$i = (($600) + ($567))|0;
+ $601 = HEAP32[(35884)>>2]|0;
+ $602 = (($$$i) + ($601))|0;
+ $603 = ($$$i>>>0)>($$0198>>>0);
+ $604 = ($$$i>>>0)<(2147483647);
+ $or$cond$i213 = $603 & $604;
+ if ($or$cond$i213) {
+ $605 = HEAP32[(35892)>>2]|0;
+ $606 = ($605|0)==(0);
+ if (!($606)) {
+ $607 = ($602>>>0)<=($601>>>0);
+ $608 = ($602>>>0)>($605>>>0);
+ $or$cond2$i214 = $607 | $608;
+ if ($or$cond2$i214) {
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ }
+ }
+ $609 = (_sbrk(($$$i|0))|0);
+ $610 = ($609|0)==($589|0);
+ if ($610) {
+ $$3229$i = $589;$$3235$i = $$$i;
+ } else {
+ $$2247$ph$i = $609;$$2253$ph$i = $$$i;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- } else {
- $$2247$ph$i = $591;$$2253$ph$i = $589;
- label = 171;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- } while(0);
- do {
- if ((label|0) == 163) {
- $566 = (_sbrk(0)|0);
- $567 = ($566|0)==((-1)|0);
- if ($567) {
- $$2234253237$i = 0;
- } else {
- $568 = $566;
- $569 = HEAP32[(33620)>>2]|0;
- $570 = (($569) + -1)|0;
- $571 = $570 & $568;
- $572 = ($571|0)==(0);
- $573 = (($570) + ($568))|0;
- $574 = (0 - ($569))|0;
- $575 = $573 & $574;
- $576 = (($575) - ($568))|0;
- $577 = $572 ? 0 : $576;
- $$$i = (($577) + ($544))|0;
- $578 = HEAP32[(33576)>>2]|0;
- $579 = (($$$i) + ($578))|0;
- $580 = ($$$i>>>0)>($$0197>>>0);
- $581 = ($$$i>>>0)<(2147483647);
- $or$cond$i214 = $580 & $581;
- if ($or$cond$i214) {
- $582 = HEAP32[(33584)>>2]|0;
- $583 = ($582|0)==(0);
- if (!($583)) {
- $584 = ($579>>>0)<=($578>>>0);
- $585 = ($579>>>0)>($582>>>0);
- $or$cond2$i215 = $584 | $585;
- if ($or$cond2$i215) {
+ } while(0);
+ do {
+ if ((label|0) == 184) {
+ $624 = (0 - ($$2253$ph$i))|0;
+ $625 = ($$2247$ph$i|0)!=((-1)|0);
+ $626 = ($$2253$ph$i>>>0)<(2147483647);
+ $or$cond7$i = $626 & $625;
+ $627 = ($562>>>0)>($$2253$ph$i>>>0);
+ $or$cond10$i = $627 & $or$cond7$i;
+ if (!($or$cond10$i)) {
+ $637 = ($$2247$ph$i|0)==((-1)|0);
+ if ($637) {
$$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
break;
}
}
- $586 = (_sbrk(($$$i|0))|0);
- $587 = ($586|0)==($566|0);
- if ($587) {
- $$723948$i = $$$i;$$749$i = $566;
- label = 180;
- break L244;
+ $628 = HEAP32[(35408)>>2]|0;
+ $629 = (($564) - ($$2253$ph$i))|0;
+ $630 = (($629) + ($628))|0;
+ $631 = (0 - ($628))|0;
+ $632 = $630 & $631;
+ $633 = ($632>>>0)<(2147483647);
+ if ($633) {
+ $634 = (_sbrk(($632|0))|0);
+ $635 = ($634|0)==((-1)|0);
+ if ($635) {
+ (_sbrk(($624|0))|0);
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $636 = (($632) + ($$2253$ph$i))|0;
+ $$3229$i = $$2247$ph$i;$$3235$i = $636;
+ break;
+ }
} else {
- $$2247$ph$i = $586;$$2253$ph$i = $$$i;
- label = 171;
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- }
- } while(0);
- do {
- if ((label|0) == 171) {
- $597 = (0 - ($$2253$ph$i))|0;
- $598 = ($$2247$ph$i|0)!=((-1)|0);
- $599 = ($$2253$ph$i>>>0)<(2147483647);
- $or$cond7$i = $599 & $598;
- $600 = ($539>>>0)>($$2253$ph$i>>>0);
- $or$cond10$i = $600 & $or$cond7$i;
- if (!($or$cond10$i)) {
- $610 = ($$2247$ph$i|0)==((-1)|0);
- if ($610) {
- $$2234253237$i = 0;
- break;
- } else {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- $601 = HEAP32[(33624)>>2]|0;
- $602 = (($540) - ($$2253$ph$i))|0;
- $603 = (($602) + ($601))|0;
- $604 = (0 - ($601))|0;
- $605 = $603 & $604;
- $606 = ($605>>>0)<(2147483647);
- if (!($606)) {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- $607 = (_sbrk(($605|0))|0);
- $608 = ($607|0)==((-1)|0);
- if ($608) {
- (_sbrk(($597|0))|0);
- $$2234253237$i = 0;
- break;
- } else {
- $609 = (($605) + ($$2253$ph$i))|0;
- $$723948$i = $609;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- } while(0);
- $611 = HEAP32[(33588)>>2]|0;
- $612 = $611 | 4;
- HEAP32[(33588)>>2] = $612;
- $$4236$i = $$2234253237$i;
- label = 178;
- } else {
- $$4236$i = 0;
- label = 178;
- }
- } while(0);
- if ((label|0) == 178) {
- $613 = ($544>>>0)<(2147483647);
- if ($613) {
- $614 = (_sbrk(($544|0))|0);
- $615 = (_sbrk(0)|0);
- $616 = ($614|0)!=((-1)|0);
- $617 = ($615|0)!=((-1)|0);
- $or$cond5$i = $616 & $617;
- $618 = ($614>>>0)<($615>>>0);
- $or$cond11$i = $618 & $or$cond5$i;
- $619 = $615;
- $620 = $614;
- $621 = (($619) - ($620))|0;
- $622 = (($$0197) + 40)|0;
- $623 = ($621>>>0)>($622>>>0);
- $$$4236$i = $623 ? $621 : $$4236$i;
- $or$cond11$not$i = $or$cond11$i ^ 1;
- $624 = ($614|0)==((-1)|0);
- $not$$i216 = $623 ^ 1;
- $625 = $624 | $not$$i216;
- $or$cond50$i = $625 | $or$cond11$not$i;
- if (!($or$cond50$i)) {
- $$723948$i = $$$4236$i;$$749$i = $614;
- label = 180;
- }
- }
- }
- if ((label|0) == 180) {
- $626 = HEAP32[(33576)>>2]|0;
- $627 = (($626) + ($$723948$i))|0;
- HEAP32[(33576)>>2] = $627;
- $628 = HEAP32[(33580)>>2]|0;
- $629 = ($627>>>0)>($628>>>0);
- if ($629) {
- HEAP32[(33580)>>2] = $627;
- }
- $630 = HEAP32[(33168)>>2]|0;
- $631 = ($630|0)==(0|0);
- do {
- if ($631) {
- $632 = HEAP32[(33160)>>2]|0;
- $633 = ($632|0)==(0|0);
- $634 = ($$749$i>>>0)<($632>>>0);
- $or$cond12$i = $633 | $634;
- if ($or$cond12$i) {
- HEAP32[(33160)>>2] = $$749$i;
- }
- HEAP32[(33592)>>2] = $$749$i;
- HEAP32[(33596)>>2] = $$723948$i;
- HEAP32[(33604)>>2] = 0;
- $635 = HEAP32[8404]|0;
- HEAP32[(33180)>>2] = $635;
- HEAP32[(33176)>>2] = -1;
- $$01$i$i = 0;
- while(1) {
- $636 = $$01$i$i << 1;
- $637 = (33184 + ($636<<2)|0);
- $638 = ((($637)) + 12|0);
- HEAP32[$638>>2] = $637;
- $639 = ((($637)) + 8|0);
- HEAP32[$639>>2] = $637;
- $640 = (($$01$i$i) + 1)|0;
- $exitcond$i$i = ($640|0)==(32);
- if ($exitcond$i$i) {
- break;
- } else {
- $$01$i$i = $640;
- }
- }
- $641 = (($$723948$i) + -40)|0;
- $642 = ((($$749$i)) + 8|0);
- $643 = $642;
- $644 = $643 & 7;
- $645 = ($644|0)==(0);
- $646 = (0 - ($643))|0;
- $647 = $646 & 7;
- $648 = $645 ? 0 : $647;
- $649 = (($$749$i) + ($648)|0);
- $650 = (($641) - ($648))|0;
- HEAP32[(33168)>>2] = $649;
- HEAP32[(33156)>>2] = $650;
- $651 = $650 | 1;
- $652 = ((($649)) + 4|0);
- HEAP32[$652>>2] = $651;
- $653 = (($649) + ($650)|0);
- $654 = ((($653)) + 4|0);
- HEAP32[$654>>2] = 40;
- $655 = HEAP32[(33632)>>2]|0;
- HEAP32[(33172)>>2] = $655;
- } else {
- $$024371$i = (33592);
- while(1) {
- $656 = HEAP32[$$024371$i>>2]|0;
- $657 = ((($$024371$i)) + 4|0);
- $658 = HEAP32[$657>>2]|0;
- $659 = (($656) + ($658)|0);
- $660 = ($$749$i|0)==($659|0);
- if ($660) {
- label = 190;
- break;
- }
- $661 = ((($$024371$i)) + 8|0);
- $662 = HEAP32[$661>>2]|0;
- $663 = ($662|0)==(0|0);
- if ($663) {
- break;
- } else {
- $$024371$i = $662;
- }
- }
- if ((label|0) == 190) {
- $664 = ((($$024371$i)) + 12|0);
- $665 = HEAP32[$664>>2]|0;
- $666 = $665 & 8;
- $667 = ($666|0)==(0);
- if ($667) {
- $668 = ($630>>>0)>=($656>>>0);
- $669 = ($630>>>0)<($$749$i>>>0);
- $or$cond51$i = $669 & $668;
- if ($or$cond51$i) {
- $670 = (($658) + ($$723948$i))|0;
- HEAP32[$657>>2] = $670;
- $671 = HEAP32[(33156)>>2]|0;
- $672 = ((($630)) + 8|0);
- $673 = $672;
- $674 = $673 & 7;
- $675 = ($674|0)==(0);
- $676 = (0 - ($673))|0;
- $677 = $676 & 7;
- $678 = $675 ? 0 : $677;
- $679 = (($630) + ($678)|0);
- $680 = (($$723948$i) - ($678))|0;
- $681 = (($671) + ($680))|0;
- HEAP32[(33168)>>2] = $679;
- HEAP32[(33156)>>2] = $681;
- $682 = $681 | 1;
- $683 = ((($679)) + 4|0);
- HEAP32[$683>>2] = $682;
- $684 = (($679) + ($681)|0);
- $685 = ((($684)) + 4|0);
- HEAP32[$685>>2] = 40;
- $686 = HEAP32[(33632)>>2]|0;
- HEAP32[(33172)>>2] = $686;
- break;
}
+ } while(0);
+ if ((label|0) == 190) {
+ $638 = HEAP32[(35896)>>2]|0;
+ $639 = $638 | 4;
+ HEAP32[(35896)>>2] = $639;
+ $$3229$i = (-1);$$3235$i = $$2234253237$i;
}
- }
- $687 = HEAP32[(33160)>>2]|0;
- $688 = ($$749$i>>>0)<($687>>>0);
- if ($688) {
- HEAP32[(33160)>>2] = $$749$i;
- $752 = $$749$i;
+ (___pthread_mutex_unlock(35424)|0);
+ $$4230$i = $$3229$i;$$4236$i = $$3235$i;
} else {
- $752 = $687;
- }
- $689 = (($$749$i) + ($$723948$i)|0);
- $$124470$i = (33592);
- while(1) {
- $690 = HEAP32[$$124470$i>>2]|0;
- $691 = ($690|0)==($689|0);
- if ($691) {
- label = 198;
- break;
+ $$4230$i = (-1);$$4236$i = 0;
+ }
+ $640 = ($$4230$i|0)==((-1)|0);
+ $641 = ($567>>>0)<(2147483647);
+ $or$cond9$i = $641 & $640;
+ if ($or$cond9$i) {
+ (___pthread_mutex_lock(35424)|0);
+ $642 = (_sbrk(($567|0))|0);
+ $643 = (_sbrk(0)|0);
+ (___pthread_mutex_unlock(35424)|0);
+ $644 = ($642|0)!=((-1)|0);
+ $645 = ($643|0)!=((-1)|0);
+ $or$cond5$i = $644 & $645;
+ $646 = ($642>>>0)<($643>>>0);
+ $or$cond11$i = $646 & $or$cond5$i;
+ $647 = $643;
+ $648 = $642;
+ $649 = (($647) - ($648))|0;
+ $650 = (($$0198) + 40)|0;
+ $651 = ($649>>>0)>($650>>>0);
+ $$$4236$i = $651 ? $649 : $$4236$i;
+ $$$4230$i = $651 ? $642 : (-1);
+ if ($or$cond11$i) {
+ $$7$i = $$$4230$i;$$7239$i = $$$4236$i;
+ label = 194;
}
- $692 = ((($$124470$i)) + 8|0);
- $693 = HEAP32[$692>>2]|0;
- $694 = ($693|0)==(0|0);
- if ($694) {
- break;
- } else {
- $$124470$i = $693;
- }
- }
- if ((label|0) == 198) {
- $695 = ((($$124470$i)) + 12|0);
- $696 = HEAP32[$695>>2]|0;
- $697 = $696 & 8;
- $698 = ($697|0)==(0);
- if ($698) {
- HEAP32[$$124470$i>>2] = $$749$i;
- $699 = ((($$124470$i)) + 4|0);
- $700 = HEAP32[$699>>2]|0;
- $701 = (($700) + ($$723948$i))|0;
- HEAP32[$699>>2] = $701;
- $702 = ((($$749$i)) + 8|0);
- $703 = $702;
- $704 = $703 & 7;
- $705 = ($704|0)==(0);
- $706 = (0 - ($703))|0;
- $707 = $706 & 7;
- $708 = $705 ? 0 : $707;
- $709 = (($$749$i) + ($708)|0);
- $710 = ((($689)) + 8|0);
- $711 = $710;
- $712 = $711 & 7;
- $713 = ($712|0)==(0);
- $714 = (0 - ($711))|0;
- $715 = $714 & 7;
- $716 = $713 ? 0 : $715;
- $717 = (($689) + ($716)|0);
- $718 = $717;
- $719 = $709;
- $720 = (($718) - ($719))|0;
- $721 = (($709) + ($$0197)|0);
- $722 = (($720) - ($$0197))|0;
- $723 = $$0197 | 3;
- $724 = ((($709)) + 4|0);
- HEAP32[$724>>2] = $723;
- $725 = ($717|0)==($630|0);
+ } else {
+ $$7$i = $$4230$i;$$7239$i = $$4236$i;
+ label = 194;
+ }
+ if ((label|0) == 194) {
+ $652 = ($$7$i|0)==((-1)|0);
+ if (!($652)) {
+ $653 = HEAP32[(35884)>>2]|0;
+ $654 = (($653) + ($$7239$i))|0;
+ HEAP32[(35884)>>2] = $654;
+ $655 = HEAP32[(35888)>>2]|0;
+ $656 = ($654>>>0)>($655>>>0);
+ if ($656) {
+ HEAP32[(35888)>>2] = $654;
+ }
+ $657 = HEAP32[(35476)>>2]|0;
+ $658 = ($657|0)==(0|0);
do {
- if ($725) {
- $726 = HEAP32[(33156)>>2]|0;
- $727 = (($726) + ($722))|0;
- HEAP32[(33156)>>2] = $727;
- HEAP32[(33168)>>2] = $721;
- $728 = $727 | 1;
- $729 = ((($721)) + 4|0);
- HEAP32[$729>>2] = $728;
+ if ($658) {
+ $659 = HEAP32[(35468)>>2]|0;
+ $660 = ($659|0)==(0|0);
+ $661 = ($$7$i>>>0)<($659>>>0);
+ $or$cond12$i = $660 | $661;
+ if ($or$cond12$i) {
+ HEAP32[(35468)>>2] = $$7$i;
+ }
+ HEAP32[(35928)>>2] = $$7$i;
+ HEAP32[(35932)>>2] = $$7239$i;
+ HEAP32[(35940)>>2] = 0;
+ $662 = HEAP32[8850]|0;
+ HEAP32[(35488)>>2] = $662;
+ HEAP32[(35484)>>2] = -1;
+ $$01$i$i = 0;
+ while(1) {
+ $663 = $$01$i$i << 1;
+ $664 = (35492 + ($663<<2)|0);
+ $665 = ((($664)) + 12|0);
+ HEAP32[$665>>2] = $664;
+ $666 = ((($664)) + 8|0);
+ HEAP32[$666>>2] = $664;
+ $667 = (($$01$i$i) + 1)|0;
+ $exitcond$i$i = ($667|0)==(32);
+ if ($exitcond$i$i) {
+ break;
+ } else {
+ $$01$i$i = $667;
+ }
+ }
+ $668 = (($$7239$i) + -40)|0;
+ $669 = ((($$7$i)) + 8|0);
+ $670 = $669;
+ $671 = $670 & 7;
+ $672 = ($671|0)==(0);
+ $673 = (0 - ($670))|0;
+ $674 = $673 & 7;
+ $675 = $672 ? 0 : $674;
+ $676 = (($$7$i) + ($675)|0);
+ $677 = (($668) - ($675))|0;
+ HEAP32[(35476)>>2] = $676;
+ HEAP32[(35464)>>2] = $677;
+ $678 = $677 | 1;
+ $679 = ((($676)) + 4|0);
+ HEAP32[$679>>2] = $678;
+ $680 = (($676) + ($677)|0);
+ $681 = ((($680)) + 4|0);
+ HEAP32[$681>>2] = 40;
+ $682 = HEAP32[(35416)>>2]|0;
+ HEAP32[(35480)>>2] = $682;
} else {
- $730 = HEAP32[(33164)>>2]|0;
- $731 = ($717|0)==($730|0);
- if ($731) {
- $732 = HEAP32[(33152)>>2]|0;
- $733 = (($732) + ($722))|0;
- HEAP32[(33152)>>2] = $733;
- HEAP32[(33164)>>2] = $721;
- $734 = $733 | 1;
- $735 = ((($721)) + 4|0);
- HEAP32[$735>>2] = $734;
- $736 = (($721) + ($733)|0);
- HEAP32[$736>>2] = $733;
- break;
+ $$024363$i = (35928);
+ while(1) {
+ $683 = HEAP32[$$024363$i>>2]|0;
+ $684 = ((($$024363$i)) + 4|0);
+ $685 = HEAP32[$684>>2]|0;
+ $686 = (($683) + ($685)|0);
+ $687 = ($$7$i|0)==($686|0);
+ if ($687) {
+ label = 205;
+ break;
+ }
+ $688 = ((($$024363$i)) + 8|0);
+ $689 = HEAP32[$688>>2]|0;
+ $690 = ($689|0)==(0|0);
+ if ($690) {
+ break;
+ } else {
+ $$024363$i = $689;
+ }
}
- $737 = ((($717)) + 4|0);
- $738 = HEAP32[$737>>2]|0;
- $739 = $738 & 3;
- $740 = ($739|0)==(1);
- if ($740) {
- $741 = $738 & -8;
- $742 = $738 >>> 3;
- $743 = ($738>>>0)<(256);
- L314: do {
- if ($743) {
- $744 = ((($717)) + 8|0);
- $745 = HEAP32[$744>>2]|0;
- $746 = ((($717)) + 12|0);
- $747 = HEAP32[$746>>2]|0;
- $748 = $742 << 1;
- $749 = (33184 + ($748<<2)|0);
- $750 = ($745|0)==($749|0);
- do {
- if (!($750)) {
- $751 = ($745>>>0)<($752>>>0);
- if ($751) {
- _abort();
- // unreachable;
- }
- $753 = ((($745)) + 12|0);
- $754 = HEAP32[$753>>2]|0;
- $755 = ($754|0)==($717|0);
- if ($755) {
- break;
- }
- _abort();
- // unreachable;
+ if ((label|0) == 205) {
+ $691 = ((($$024363$i)) + 12|0);
+ $692 = HEAP32[$691>>2]|0;
+ $693 = $692 & 8;
+ $694 = ($693|0)==(0);
+ if ($694) {
+ $695 = ($657>>>0)>=($683>>>0);
+ $696 = ($657>>>0)<($$7$i>>>0);
+ $or$cond43$i = $696 & $695;
+ if ($or$cond43$i) {
+ $697 = (($685) + ($$7239$i))|0;
+ HEAP32[$684>>2] = $697;
+ $698 = HEAP32[(35464)>>2]|0;
+ $699 = ((($657)) + 8|0);
+ $700 = $699;
+ $701 = $700 & 7;
+ $702 = ($701|0)==(0);
+ $703 = (0 - ($700))|0;
+ $704 = $703 & 7;
+ $705 = $702 ? 0 : $704;
+ $706 = (($657) + ($705)|0);
+ $707 = (($$7239$i) - ($705))|0;
+ $708 = (($698) + ($707))|0;
+ HEAP32[(35476)>>2] = $706;
+ HEAP32[(35464)>>2] = $708;
+ $709 = $708 | 1;
+ $710 = ((($706)) + 4|0);
+ HEAP32[$710>>2] = $709;
+ $711 = (($706) + ($708)|0);
+ $712 = ((($711)) + 4|0);
+ HEAP32[$712>>2] = 40;
+ $713 = HEAP32[(35416)>>2]|0;
+ HEAP32[(35480)>>2] = $713;
+ break;
+ }
+ }
+ }
+ $714 = HEAP32[(35468)>>2]|0;
+ $715 = ($$7$i>>>0)<($714>>>0);
+ if ($715) {
+ HEAP32[(35468)>>2] = $$7$i;
+ $779 = $$7$i;
+ } else {
+ $779 = $714;
+ }
+ $716 = (($$7$i) + ($$7239$i)|0);
+ $$124462$i = (35928);
+ while(1) {
+ $717 = HEAP32[$$124462$i>>2]|0;
+ $718 = ($717|0)==($716|0);
+ if ($718) {
+ label = 213;
+ break;
+ }
+ $719 = ((($$124462$i)) + 8|0);
+ $720 = HEAP32[$719>>2]|0;
+ $721 = ($720|0)==(0|0);
+ if ($721) {
+ break;
+ } else {
+ $$124462$i = $720;
+ }
+ }
+ if ((label|0) == 213) {
+ $722 = ((($$124462$i)) + 12|0);
+ $723 = HEAP32[$722>>2]|0;
+ $724 = $723 & 8;
+ $725 = ($724|0)==(0);
+ if ($725) {
+ HEAP32[$$124462$i>>2] = $$7$i;
+ $726 = ((($$124462$i)) + 4|0);
+ $727 = HEAP32[$726>>2]|0;
+ $728 = (($727) + ($$7239$i))|0;
+ HEAP32[$726>>2] = $728;
+ $729 = ((($$7$i)) + 8|0);
+ $730 = $729;
+ $731 = $730 & 7;
+ $732 = ($731|0)==(0);
+ $733 = (0 - ($730))|0;
+ $734 = $733 & 7;
+ $735 = $732 ? 0 : $734;
+ $736 = (($$7$i) + ($735)|0);
+ $737 = ((($716)) + 8|0);
+ $738 = $737;
+ $739 = $738 & 7;
+ $740 = ($739|0)==(0);
+ $741 = (0 - ($738))|0;
+ $742 = $741 & 7;
+ $743 = $740 ? 0 : $742;
+ $744 = (($716) + ($743)|0);
+ $745 = $744;
+ $746 = $736;
+ $747 = (($745) - ($746))|0;
+ $748 = (($736) + ($$0198)|0);
+ $749 = (($747) - ($$0198))|0;
+ $750 = $$0198 | 3;
+ $751 = ((($736)) + 4|0);
+ HEAP32[$751>>2] = $750;
+ $752 = ($744|0)==($657|0);
+ do {
+ if ($752) {
+ $753 = HEAP32[(35464)>>2]|0;
+ $754 = (($753) + ($749))|0;
+ HEAP32[(35464)>>2] = $754;
+ HEAP32[(35476)>>2] = $748;
+ $755 = $754 | 1;
+ $756 = ((($748)) + 4|0);
+ HEAP32[$756>>2] = $755;
+ } else {
+ $757 = HEAP32[(35472)>>2]|0;
+ $758 = ($744|0)==($757|0);
+ if ($758) {
+ $759 = HEAP32[(35460)>>2]|0;
+ $760 = (($759) + ($749))|0;
+ HEAP32[(35460)>>2] = $760;
+ HEAP32[(35472)>>2] = $748;
+ $761 = $760 | 1;
+ $762 = ((($748)) + 4|0);
+ HEAP32[$762>>2] = $761;
+ $763 = (($748) + ($760)|0);
+ HEAP32[$763>>2] = $760;
+ break;
}
- } while(0);
- $756 = ($747|0)==($745|0);
- if ($756) {
- $757 = 1 << $742;
- $758 = $757 ^ -1;
- $759 = HEAP32[8286]|0;
- $760 = $759 & $758;
- HEAP32[8286] = $760;
- break;
- }
- $761 = ($747|0)==($749|0);
- do {
- if ($761) {
- $$pre10$i$i = ((($747)) + 8|0);
- $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ $764 = ((($744)) + 4|0);
+ $765 = HEAP32[$764>>2]|0;
+ $766 = $765 & 3;
+ $767 = ($766|0)==(1);
+ if ($767) {
+ $768 = $765 & -8;
+ $769 = $765 >>> 3;
+ $770 = ($765>>>0)<(256);
+ L329: do {
+ if ($770) {
+ $771 = ((($744)) + 8|0);
+ $772 = HEAP32[$771>>2]|0;
+ $773 = ((($744)) + 12|0);
+ $774 = HEAP32[$773>>2]|0;
+ $775 = $769 << 1;
+ $776 = (35492 + ($775<<2)|0);
+ $777 = ($772|0)==($776|0);
+ do {
+ if (!($777)) {
+ $778 = ($772>>>0)<($779>>>0);
+ if ($778) {
+ _abort();
+ // unreachable;
+ }
+ $780 = ((($772)) + 12|0);
+ $781 = HEAP32[$780>>2]|0;
+ $782 = ($781|0)==($744|0);
+ if ($782) {
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $783 = ($774|0)==($772|0);
+ if ($783) {
+ $784 = 1 << $769;
+ $785 = $784 ^ -1;
+ $786 = HEAP32[8863]|0;
+ $787 = $786 & $785;
+ HEAP32[8863] = $787;
+ break;
+ }
+ $788 = ($774|0)==($776|0);
+ do {
+ if ($788) {
+ $$pre10$i$i = ((($774)) + 8|0);
+ $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ } else {
+ $789 = ($774>>>0)<($779>>>0);
+ if ($789) {
+ _abort();
+ // unreachable;
+ }
+ $790 = ((($774)) + 8|0);
+ $791 = HEAP32[$790>>2]|0;
+ $792 = ($791|0)==($744|0);
+ if ($792) {
+ $$pre$phi11$i$iZ2D = $790;
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $793 = ((($772)) + 12|0);
+ HEAP32[$793>>2] = $774;
+ HEAP32[$$pre$phi11$i$iZ2D>>2] = $772;
+ } else {
+ $794 = ((($744)) + 24|0);
+ $795 = HEAP32[$794>>2]|0;
+ $796 = ((($744)) + 12|0);
+ $797 = HEAP32[$796>>2]|0;
+ $798 = ($797|0)==($744|0);
+ do {
+ if ($798) {
+ $808 = ((($744)) + 16|0);
+ $809 = ((($808)) + 4|0);
+ $810 = HEAP32[$809>>2]|0;
+ $811 = ($810|0)==(0|0);
+ if ($811) {
+ $812 = HEAP32[$808>>2]|0;
+ $813 = ($812|0)==(0|0);
+ if ($813) {
+ $$3$i$i = 0;
+ break;
+ } else {
+ $$1291$i$i = $812;$$1293$i$i = $808;
+ }
+ } else {
+ $$1291$i$i = $810;$$1293$i$i = $809;
+ }
+ while(1) {
+ $814 = ((($$1291$i$i)) + 20|0);
+ $815 = HEAP32[$814>>2]|0;
+ $816 = ($815|0)==(0|0);
+ if (!($816)) {
+ $$1291$i$i = $815;$$1293$i$i = $814;
+ continue;
+ }
+ $817 = ((($$1291$i$i)) + 16|0);
+ $818 = HEAP32[$817>>2]|0;
+ $819 = ($818|0)==(0|0);
+ if ($819) {
+ break;
+ } else {
+ $$1291$i$i = $818;$$1293$i$i = $817;
+ }
+ }
+ $820 = ($$1293$i$i>>>0)<($779>>>0);
+ if ($820) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1293$i$i>>2] = 0;
+ $$3$i$i = $$1291$i$i;
+ break;
+ }
+ } else {
+ $799 = ((($744)) + 8|0);
+ $800 = HEAP32[$799>>2]|0;
+ $801 = ($800>>>0)<($779>>>0);
+ if ($801) {
+ _abort();
+ // unreachable;
+ }
+ $802 = ((($800)) + 12|0);
+ $803 = HEAP32[$802>>2]|0;
+ $804 = ($803|0)==($744|0);
+ if (!($804)) {
+ _abort();
+ // unreachable;
+ }
+ $805 = ((($797)) + 8|0);
+ $806 = HEAP32[$805>>2]|0;
+ $807 = ($806|0)==($744|0);
+ if ($807) {
+ HEAP32[$802>>2] = $797;
+ HEAP32[$805>>2] = $800;
+ $$3$i$i = $797;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $821 = ($795|0)==(0|0);
+ if ($821) {
+ break;
+ }
+ $822 = ((($744)) + 28|0);
+ $823 = HEAP32[$822>>2]|0;
+ $824 = (35756 + ($823<<2)|0);
+ $825 = HEAP32[$824>>2]|0;
+ $826 = ($744|0)==($825|0);
+ do {
+ if ($826) {
+ HEAP32[$824>>2] = $$3$i$i;
+ $cond$i$i = ($$3$i$i|0)==(0|0);
+ if (!($cond$i$i)) {
+ break;
+ }
+ $827 = 1 << $823;
+ $828 = $827 ^ -1;
+ $829 = HEAP32[(35456)>>2]|0;
+ $830 = $829 & $828;
+ HEAP32[(35456)>>2] = $830;
+ break L329;
+ } else {
+ $831 = HEAP32[(35468)>>2]|0;
+ $832 = ($795>>>0)<($831>>>0);
+ if ($832) {
+ _abort();
+ // unreachable;
+ } else {
+ $833 = ((($795)) + 16|0);
+ $834 = HEAP32[$833>>2]|0;
+ $not$$i$i = ($834|0)!=($744|0);
+ $$sink1$i$i = $not$$i$i&1;
+ $835 = (((($795)) + 16|0) + ($$sink1$i$i<<2)|0);
+ HEAP32[$835>>2] = $$3$i$i;
+ $836 = ($$3$i$i|0)==(0|0);
+ if ($836) {
+ break L329;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $837 = HEAP32[(35468)>>2]|0;
+ $838 = ($$3$i$i>>>0)<($837>>>0);
+ if ($838) {
+ _abort();
+ // unreachable;
+ }
+ $839 = ((($$3$i$i)) + 24|0);
+ HEAP32[$839>>2] = $795;
+ $840 = ((($744)) + 16|0);
+ $841 = HEAP32[$840>>2]|0;
+ $842 = ($841|0)==(0|0);
+ do {
+ if (!($842)) {
+ $843 = ($841>>>0)<($837>>>0);
+ if ($843) {
+ _abort();
+ // unreachable;
+ } else {
+ $844 = ((($$3$i$i)) + 16|0);
+ HEAP32[$844>>2] = $841;
+ $845 = ((($841)) + 24|0);
+ HEAP32[$845>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $846 = ((($840)) + 4|0);
+ $847 = HEAP32[$846>>2]|0;
+ $848 = ($847|0)==(0|0);
+ if ($848) {
+ break;
+ }
+ $849 = HEAP32[(35468)>>2]|0;
+ $850 = ($847>>>0)<($849>>>0);
+ if ($850) {
+ _abort();
+ // unreachable;
+ } else {
+ $851 = ((($$3$i$i)) + 20|0);
+ HEAP32[$851>>2] = $847;
+ $852 = ((($847)) + 24|0);
+ HEAP32[$852>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $853 = (($744) + ($768)|0);
+ $854 = (($768) + ($749))|0;
+ $$0$i17$i = $853;$$0287$i$i = $854;
} else {
- $762 = ($747>>>0)<($752>>>0);
- if ($762) {
- _abort();
- // unreachable;
- }
- $763 = ((($747)) + 8|0);
- $764 = HEAP32[$763>>2]|0;
- $765 = ($764|0)==($717|0);
- if ($765) {
- $$pre$phi11$i$iZ2D = $763;
- break;
- }
- _abort();
- // unreachable;
+ $$0$i17$i = $744;$$0287$i$i = $749;
}
- } while(0);
- $766 = ((($745)) + 12|0);
- HEAP32[$766>>2] = $747;
- HEAP32[$$pre$phi11$i$iZ2D>>2] = $745;
- } else {
- $767 = ((($717)) + 24|0);
- $768 = HEAP32[$767>>2]|0;
- $769 = ((($717)) + 12|0);
- $770 = HEAP32[$769>>2]|0;
- $771 = ($770|0)==($717|0);
- do {
- if ($771) {
- $781 = ((($717)) + 16|0);
- $782 = ((($781)) + 4|0);
- $783 = HEAP32[$782>>2]|0;
- $784 = ($783|0)==(0|0);
- if ($784) {
- $785 = HEAP32[$781>>2]|0;
- $786 = ($785|0)==(0|0);
- if ($786) {
- $$3$i$i = 0;
- break;
+ $855 = ((($$0$i17$i)) + 4|0);
+ $856 = HEAP32[$855>>2]|0;
+ $857 = $856 & -2;
+ HEAP32[$855>>2] = $857;
+ $858 = $$0287$i$i | 1;
+ $859 = ((($748)) + 4|0);
+ HEAP32[$859>>2] = $858;
+ $860 = (($748) + ($$0287$i$i)|0);
+ HEAP32[$860>>2] = $$0287$i$i;
+ $861 = $$0287$i$i >>> 3;
+ $862 = ($$0287$i$i>>>0)<(256);
+ if ($862) {
+ $863 = $861 << 1;
+ $864 = (35492 + ($863<<2)|0);
+ $865 = HEAP32[8863]|0;
+ $866 = 1 << $861;
+ $867 = $865 & $866;
+ $868 = ($867|0)==(0);
+ do {
+ if ($868) {
+ $869 = $865 | $866;
+ HEAP32[8863] = $869;
+ $$pre$i$i = ((($864)) + 8|0);
+ $$0295$i$i = $864;$$pre$phi$i$iZ2D = $$pre$i$i;
} else {
- $$1291$i$i = $785;$$1293$i$i = $781;
+ $870 = ((($864)) + 8|0);
+ $871 = HEAP32[$870>>2]|0;
+ $872 = HEAP32[(35468)>>2]|0;
+ $873 = ($871>>>0)<($872>>>0);
+ if (!($873)) {
+ $$0295$i$i = $871;$$pre$phi$i$iZ2D = $870;
+ break;
+ }
+ _abort();
+ // unreachable;
}
+ } while(0);
+ HEAP32[$$pre$phi$i$iZ2D>>2] = $748;
+ $874 = ((($$0295$i$i)) + 12|0);
+ HEAP32[$874>>2] = $748;
+ $875 = ((($748)) + 8|0);
+ HEAP32[$875>>2] = $$0295$i$i;
+ $876 = ((($748)) + 12|0);
+ HEAP32[$876>>2] = $864;
+ break;
+ }
+ $877 = $$0287$i$i >>> 8;
+ $878 = ($877|0)==(0);
+ do {
+ if ($878) {
+ $$0296$i$i = 0;
} else {
- $$1291$i$i = $783;$$1293$i$i = $782;
- }
- while(1) {
- $787 = ((($$1291$i$i)) + 20|0);
- $788 = HEAP32[$787>>2]|0;
- $789 = ($788|0)==(0|0);
- if (!($789)) {
- $$1291$i$i = $788;$$1293$i$i = $787;
- continue;
- }
- $790 = ((($$1291$i$i)) + 16|0);
- $791 = HEAP32[$790>>2]|0;
- $792 = ($791|0)==(0|0);
- if ($792) {
+ $879 = ($$0287$i$i>>>0)>(16777215);
+ if ($879) {
+ $$0296$i$i = 31;
break;
- } else {
- $$1291$i$i = $791;$$1293$i$i = $790;
}
+ $880 = (($877) + 1048320)|0;
+ $881 = $880 >>> 16;
+ $882 = $881 & 8;
+ $883 = $877 << $882;
+ $884 = (($883) + 520192)|0;
+ $885 = $884 >>> 16;
+ $886 = $885 & 4;
+ $887 = $886 | $882;
+ $888 = $883 << $886;
+ $889 = (($888) + 245760)|0;
+ $890 = $889 >>> 16;
+ $891 = $890 & 2;
+ $892 = $887 | $891;
+ $893 = (14 - ($892))|0;
+ $894 = $888 << $891;
+ $895 = $894 >>> 15;
+ $896 = (($893) + ($895))|0;
+ $897 = $896 << 1;
+ $898 = (($896) + 7)|0;
+ $899 = $$0287$i$i >>> $898;
+ $900 = $899 & 1;
+ $901 = $900 | $897;
+ $$0296$i$i = $901;
}
- $793 = ($$1293$i$i>>>0)<($752>>>0);
- if ($793) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1293$i$i>>2] = 0;
- $$3$i$i = $$1291$i$i;
+ } while(0);
+ $902 = (35756 + ($$0296$i$i<<2)|0);
+ $903 = ((($748)) + 28|0);
+ HEAP32[$903>>2] = $$0296$i$i;
+ $904 = ((($748)) + 16|0);
+ $905 = ((($904)) + 4|0);
+ HEAP32[$905>>2] = 0;
+ HEAP32[$904>>2] = 0;
+ $906 = HEAP32[(35456)>>2]|0;
+ $907 = 1 << $$0296$i$i;
+ $908 = $906 & $907;
+ $909 = ($908|0)==(0);
+ if ($909) {
+ $910 = $906 | $907;
+ HEAP32[(35456)>>2] = $910;
+ HEAP32[$902>>2] = $748;
+ $911 = ((($748)) + 24|0);
+ HEAP32[$911>>2] = $902;
+ $912 = ((($748)) + 12|0);
+ HEAP32[$912>>2] = $748;
+ $913 = ((($748)) + 8|0);
+ HEAP32[$913>>2] = $748;
+ break;
+ }
+ $914 = HEAP32[$902>>2]|0;
+ $915 = ($$0296$i$i|0)==(31);
+ $916 = $$0296$i$i >>> 1;
+ $917 = (25 - ($916))|0;
+ $918 = $915 ? 0 : $917;
+ $919 = $$0287$i$i << $918;
+ $$0288$i$i = $919;$$0289$i$i = $914;
+ while(1) {
+ $920 = ((($$0289$i$i)) + 4|0);
+ $921 = HEAP32[$920>>2]|0;
+ $922 = $921 & -8;
+ $923 = ($922|0)==($$0287$i$i|0);
+ if ($923) {
+ label = 280;
break;
}
- } else {
- $772 = ((($717)) + 8|0);
- $773 = HEAP32[$772>>2]|0;
- $774 = ($773>>>0)<($752>>>0);
- if ($774) {
- _abort();
- // unreachable;
- }
- $775 = ((($773)) + 12|0);
- $776 = HEAP32[$775>>2]|0;
- $777 = ($776|0)==($717|0);
- if (!($777)) {
- _abort();
- // unreachable;
- }
- $778 = ((($770)) + 8|0);
- $779 = HEAP32[$778>>2]|0;
- $780 = ($779|0)==($717|0);
- if ($780) {
- HEAP32[$775>>2] = $770;
- HEAP32[$778>>2] = $773;
- $$3$i$i = $770;
+ $924 = $$0288$i$i >>> 31;
+ $925 = (((($$0289$i$i)) + 16|0) + ($924<<2)|0);
+ $926 = $$0288$i$i << 1;
+ $927 = HEAP32[$925>>2]|0;
+ $928 = ($927|0)==(0|0);
+ if ($928) {
+ label = 277;
break;
} else {
- _abort();
- // unreachable;
+ $$0288$i$i = $926;$$0289$i$i = $927;
}
}
- } while(0);
- $794 = ($768|0)==(0|0);
- if ($794) {
- break;
- }
- $795 = ((($717)) + 28|0);
- $796 = HEAP32[$795>>2]|0;
- $797 = (33448 + ($796<<2)|0);
- $798 = HEAP32[$797>>2]|0;
- $799 = ($717|0)==($798|0);
- do {
- if ($799) {
- HEAP32[$797>>2] = $$3$i$i;
- $cond$i$i = ($$3$i$i|0)==(0|0);
- if (!($cond$i$i)) {
- break;
- }
- $800 = 1 << $796;
- $801 = $800 ^ -1;
- $802 = HEAP32[(33148)>>2]|0;
- $803 = $802 & $801;
- HEAP32[(33148)>>2] = $803;
- break L314;
- } else {
- $804 = HEAP32[(33160)>>2]|0;
- $805 = ($768>>>0)<($804>>>0);
- if ($805) {
+ if ((label|0) == 277) {
+ $929 = HEAP32[(35468)>>2]|0;
+ $930 = ($925>>>0)<($929>>>0);
+ if ($930) {
_abort();
// unreachable;
} else {
- $806 = ((($768)) + 16|0);
- $807 = HEAP32[$806>>2]|0;
- $not$$i17$i = ($807|0)!=($717|0);
- $$sink1$i$i = $not$$i17$i&1;
- $808 = (((($768)) + 16|0) + ($$sink1$i$i<<2)|0);
- HEAP32[$808>>2] = $$3$i$i;
- $809 = ($$3$i$i|0)==(0|0);
- if ($809) {
- break L314;
- } else {
- break;
- }
+ HEAP32[$925>>2] = $748;
+ $931 = ((($748)) + 24|0);
+ HEAP32[$931>>2] = $$0289$i$i;
+ $932 = ((($748)) + 12|0);
+ HEAP32[$932>>2] = $748;
+ $933 = ((($748)) + 8|0);
+ HEAP32[$933>>2] = $748;
+ break;
}
}
- } while(0);
- $810 = HEAP32[(33160)>>2]|0;
- $811 = ($$3$i$i>>>0)<($810>>>0);
- if ($811) {
- _abort();
- // unreachable;
- }
- $812 = ((($$3$i$i)) + 24|0);
- HEAP32[$812>>2] = $768;
- $813 = ((($717)) + 16|0);
- $814 = HEAP32[$813>>2]|0;
- $815 = ($814|0)==(0|0);
- do {
- if (!($815)) {
- $816 = ($814>>>0)<($810>>>0);
- if ($816) {
+ else if ((label|0) == 280) {
+ $934 = ((($$0289$i$i)) + 8|0);
+ $935 = HEAP32[$934>>2]|0;
+ $936 = HEAP32[(35468)>>2]|0;
+ $937 = ($935>>>0)>=($936>>>0);
+ $not$7$i$i = ($$0289$i$i>>>0)>=($936>>>0);
+ $938 = $937 & $not$7$i$i;
+ if ($938) {
+ $939 = ((($935)) + 12|0);
+ HEAP32[$939>>2] = $748;
+ HEAP32[$934>>2] = $748;
+ $940 = ((($748)) + 8|0);
+ HEAP32[$940>>2] = $935;
+ $941 = ((($748)) + 12|0);
+ HEAP32[$941>>2] = $$0289$i$i;
+ $942 = ((($748)) + 24|0);
+ HEAP32[$942>>2] = 0;
+ break;
+ } else {
_abort();
// unreachable;
- } else {
- $817 = ((($$3$i$i)) + 16|0);
- HEAP32[$817>>2] = $814;
- $818 = ((($814)) + 24|0);
- HEAP32[$818>>2] = $$3$i$i;
- break;
}
}
- } while(0);
- $819 = ((($813)) + 4|0);
- $820 = HEAP32[$819>>2]|0;
- $821 = ($820|0)==(0|0);
- if ($821) {
- break;
}
- $822 = HEAP32[(33160)>>2]|0;
- $823 = ($820>>>0)<($822>>>0);
- if ($823) {
+ } while(0);
+ $1074 = ((($736)) + 8|0);
+ $$2 = $1074;
+ break L230;
+ }
+ }
+ $$0$i$i$i = (35928);
+ while(1) {
+ $943 = HEAP32[$$0$i$i$i>>2]|0;
+ $944 = ($943>>>0)>($657>>>0);
+ if (!($944)) {
+ $945 = ((($$0$i$i$i)) + 4|0);
+ $946 = HEAP32[$945>>2]|0;
+ $947 = (($943) + ($946)|0);
+ $948 = ($947>>>0)>($657>>>0);
+ if ($948) {
+ break;
+ }
+ }
+ $949 = ((($$0$i$i$i)) + 8|0);
+ $950 = HEAP32[$949>>2]|0;
+ $$0$i$i$i = $950;
+ }
+ $951 = ((($947)) + -47|0);
+ $952 = ((($951)) + 8|0);
+ $953 = $952;
+ $954 = $953 & 7;
+ $955 = ($954|0)==(0);
+ $956 = (0 - ($953))|0;
+ $957 = $956 & 7;
+ $958 = $955 ? 0 : $957;
+ $959 = (($951) + ($958)|0);
+ $960 = ((($657)) + 16|0);
+ $961 = ($959>>>0)<($960>>>0);
+ $962 = $961 ? $657 : $959;
+ $963 = ((($962)) + 8|0);
+ $964 = ((($962)) + 24|0);
+ $965 = (($$7239$i) + -40)|0;
+ $966 = ((($$7$i)) + 8|0);
+ $967 = $966;
+ $968 = $967 & 7;
+ $969 = ($968|0)==(0);
+ $970 = (0 - ($967))|0;
+ $971 = $970 & 7;
+ $972 = $969 ? 0 : $971;
+ $973 = (($$7$i) + ($972)|0);
+ $974 = (($965) - ($972))|0;
+ HEAP32[(35476)>>2] = $973;
+ HEAP32[(35464)>>2] = $974;
+ $975 = $974 | 1;
+ $976 = ((($973)) + 4|0);
+ HEAP32[$976>>2] = $975;
+ $977 = (($973) + ($974)|0);
+ $978 = ((($977)) + 4|0);
+ HEAP32[$978>>2] = 40;
+ $979 = HEAP32[(35416)>>2]|0;
+ HEAP32[(35480)>>2] = $979;
+ $980 = ((($962)) + 4|0);
+ HEAP32[$980>>2] = 27;
+ ;HEAP32[$963>>2]=HEAP32[(35928)>>2]|0;HEAP32[$963+4>>2]=HEAP32[(35928)+4>>2]|0;HEAP32[$963+8>>2]=HEAP32[(35928)+8>>2]|0;HEAP32[$963+12>>2]=HEAP32[(35928)+12>>2]|0;
+ HEAP32[(35928)>>2] = $$7$i;
+ HEAP32[(35932)>>2] = $$7239$i;
+ HEAP32[(35940)>>2] = 0;
+ HEAP32[(35936)>>2] = $963;
+ $982 = $964;
+ while(1) {
+ $981 = ((($982)) + 4|0);
+ HEAP32[$981>>2] = 7;
+ $983 = ((($982)) + 8|0);
+ $984 = ($983>>>0)<($947>>>0);
+ if ($984) {
+ $982 = $981;
+ } else {
+ break;
+ }
+ }
+ $985 = ($962|0)==($657|0);
+ if (!($985)) {
+ $986 = $962;
+ $987 = $657;
+ $988 = (($986) - ($987))|0;
+ $989 = HEAP32[$980>>2]|0;
+ $990 = $989 & -2;
+ HEAP32[$980>>2] = $990;
+ $991 = $988 | 1;
+ $992 = ((($657)) + 4|0);
+ HEAP32[$992>>2] = $991;
+ HEAP32[$962>>2] = $988;
+ $993 = $988 >>> 3;
+ $994 = ($988>>>0)<(256);
+ if ($994) {
+ $995 = $993 << 1;
+ $996 = (35492 + ($995<<2)|0);
+ $997 = HEAP32[8863]|0;
+ $998 = 1 << $993;
+ $999 = $997 & $998;
+ $1000 = ($999|0)==(0);
+ do {
+ if ($1000) {
+ $1001 = $997 | $998;
+ HEAP32[8863] = $1001;
+ $$pre$i18$i = ((($996)) + 8|0);
+ $$0211$i$i = $996;$$pre$phi$i19$iZ2D = $$pre$i18$i;
+ } else {
+ $1002 = ((($996)) + 8|0);
+ $1003 = HEAP32[$1002>>2]|0;
+ $1004 = HEAP32[(35468)>>2]|0;
+ $1005 = ($1003>>>0)<($1004>>>0);
+ if (!($1005)) {
+ $$0211$i$i = $1003;$$pre$phi$i19$iZ2D = $1002;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $824 = ((($$3$i$i)) + 20|0);
- HEAP32[$824>>2] = $820;
- $825 = ((($820)) + 24|0);
- HEAP32[$825>>2] = $$3$i$i;
- break;
}
- }
- } while(0);
- $826 = (($717) + ($741)|0);
- $827 = (($741) + ($722))|0;
- $$0$i18$i = $826;$$0287$i$i = $827;
- } else {
- $$0$i18$i = $717;$$0287$i$i = $722;
- }
- $828 = ((($$0$i18$i)) + 4|0);
- $829 = HEAP32[$828>>2]|0;
- $830 = $829 & -2;
- HEAP32[$828>>2] = $830;
- $831 = $$0287$i$i | 1;
- $832 = ((($721)) + 4|0);
- HEAP32[$832>>2] = $831;
- $833 = (($721) + ($$0287$i$i)|0);
- HEAP32[$833>>2] = $$0287$i$i;
- $834 = $$0287$i$i >>> 3;
- $835 = ($$0287$i$i>>>0)<(256);
- if ($835) {
- $836 = $834 << 1;
- $837 = (33184 + ($836<<2)|0);
- $838 = HEAP32[8286]|0;
- $839 = 1 << $834;
- $840 = $838 & $839;
- $841 = ($840|0)==(0);
+ } while(0);
+ HEAP32[$$pre$phi$i19$iZ2D>>2] = $657;
+ $1006 = ((($$0211$i$i)) + 12|0);
+ HEAP32[$1006>>2] = $657;
+ $1007 = ((($657)) + 8|0);
+ HEAP32[$1007>>2] = $$0211$i$i;
+ $1008 = ((($657)) + 12|0);
+ HEAP32[$1008>>2] = $996;
+ break;
+ }
+ $1009 = $988 >>> 8;
+ $1010 = ($1009|0)==(0);
do {
- if ($841) {
- $842 = $838 | $839;
- HEAP32[8286] = $842;
- $$pre$i19$i = ((($837)) + 8|0);
- $$0295$i$i = $837;$$pre$phi$i20$iZ2D = $$pre$i19$i;
+ if ($1010) {
+ $$0212$i$i = 0;
} else {
- $843 = ((($837)) + 8|0);
- $844 = HEAP32[$843>>2]|0;
- $845 = HEAP32[(33160)>>2]|0;
- $846 = ($844>>>0)<($845>>>0);
- if (!($846)) {
- $$0295$i$i = $844;$$pre$phi$i20$iZ2D = $843;
+ $1011 = ($988>>>0)>(16777215);
+ if ($1011) {
+ $$0212$i$i = 31;
break;
}
- _abort();
- // unreachable;
+ $1012 = (($1009) + 1048320)|0;
+ $1013 = $1012 >>> 16;
+ $1014 = $1013 & 8;
+ $1015 = $1009 << $1014;
+ $1016 = (($1015) + 520192)|0;
+ $1017 = $1016 >>> 16;
+ $1018 = $1017 & 4;
+ $1019 = $1018 | $1014;
+ $1020 = $1015 << $1018;
+ $1021 = (($1020) + 245760)|0;
+ $1022 = $1021 >>> 16;
+ $1023 = $1022 & 2;
+ $1024 = $1019 | $1023;
+ $1025 = (14 - ($1024))|0;
+ $1026 = $1020 << $1023;
+ $1027 = $1026 >>> 15;
+ $1028 = (($1025) + ($1027))|0;
+ $1029 = $1028 << 1;
+ $1030 = (($1028) + 7)|0;
+ $1031 = $988 >>> $1030;
+ $1032 = $1031 & 1;
+ $1033 = $1032 | $1029;
+ $$0212$i$i = $1033;
}
} while(0);
- HEAP32[$$pre$phi$i20$iZ2D>>2] = $721;
- $847 = ((($$0295$i$i)) + 12|0);
- HEAP32[$847>>2] = $721;
- $848 = ((($721)) + 8|0);
- HEAP32[$848>>2] = $$0295$i$i;
- $849 = ((($721)) + 12|0);
- HEAP32[$849>>2] = $837;
- break;
- }
- $850 = $$0287$i$i >>> 8;
- $851 = ($850|0)==(0);
- do {
- if ($851) {
- $$0296$i$i = 0;
- } else {
- $852 = ($$0287$i$i>>>0)>(16777215);
- if ($852) {
- $$0296$i$i = 31;
- break;
- }
- $853 = (($850) + 1048320)|0;
- $854 = $853 >>> 16;
- $855 = $854 & 8;
- $856 = $850 << $855;
- $857 = (($856) + 520192)|0;
- $858 = $857 >>> 16;
- $859 = $858 & 4;
- $860 = $859 | $855;
- $861 = $856 << $859;
- $862 = (($861) + 245760)|0;
- $863 = $862 >>> 16;
- $864 = $863 & 2;
- $865 = $860 | $864;
- $866 = (14 - ($865))|0;
- $867 = $861 << $864;
- $868 = $867 >>> 15;
- $869 = (($866) + ($868))|0;
- $870 = $869 << 1;
- $871 = (($869) + 7)|0;
- $872 = $$0287$i$i >>> $871;
- $873 = $872 & 1;
- $874 = $873 | $870;
- $$0296$i$i = $874;
- }
- } while(0);
- $875 = (33448 + ($$0296$i$i<<2)|0);
- $876 = ((($721)) + 28|0);
- HEAP32[$876>>2] = $$0296$i$i;
- $877 = ((($721)) + 16|0);
- $878 = ((($877)) + 4|0);
- HEAP32[$878>>2] = 0;
- HEAP32[$877>>2] = 0;
- $879 = HEAP32[(33148)>>2]|0;
- $880 = 1 << $$0296$i$i;
- $881 = $879 & $880;
- $882 = ($881|0)==(0);
- if ($882) {
- $883 = $879 | $880;
- HEAP32[(33148)>>2] = $883;
- HEAP32[$875>>2] = $721;
- $884 = ((($721)) + 24|0);
- HEAP32[$884>>2] = $875;
- $885 = ((($721)) + 12|0);
- HEAP32[$885>>2] = $721;
- $886 = ((($721)) + 8|0);
- HEAP32[$886>>2] = $721;
- break;
- }
- $887 = HEAP32[$875>>2]|0;
- $888 = ($$0296$i$i|0)==(31);
- $889 = $$0296$i$i >>> 1;
- $890 = (25 - ($889))|0;
- $891 = $888 ? 0 : $890;
- $892 = $$0287$i$i << $891;
- $$0288$i$i = $892;$$0289$i$i = $887;
- while(1) {
- $893 = ((($$0289$i$i)) + 4|0);
- $894 = HEAP32[$893>>2]|0;
- $895 = $894 & -8;
- $896 = ($895|0)==($$0287$i$i|0);
- if ($896) {
- label = 265;
+ $1034 = (35756 + ($$0212$i$i<<2)|0);
+ $1035 = ((($657)) + 28|0);
+ HEAP32[$1035>>2] = $$0212$i$i;
+ $1036 = ((($657)) + 20|0);
+ HEAP32[$1036>>2] = 0;
+ HEAP32[$960>>2] = 0;
+ $1037 = HEAP32[(35456)>>2]|0;
+ $1038 = 1 << $$0212$i$i;
+ $1039 = $1037 & $1038;
+ $1040 = ($1039|0)==(0);
+ if ($1040) {
+ $1041 = $1037 | $1038;
+ HEAP32[(35456)>>2] = $1041;
+ HEAP32[$1034>>2] = $657;
+ $1042 = ((($657)) + 24|0);
+ HEAP32[$1042>>2] = $1034;
+ $1043 = ((($657)) + 12|0);
+ HEAP32[$1043>>2] = $657;
+ $1044 = ((($657)) + 8|0);
+ HEAP32[$1044>>2] = $657;
break;
}
- $897 = $$0288$i$i >>> 31;
- $898 = (((($$0289$i$i)) + 16|0) + ($897<<2)|0);
- $899 = $$0288$i$i << 1;
- $900 = HEAP32[$898>>2]|0;
- $901 = ($900|0)==(0|0);
- if ($901) {
- label = 262;
- break;
- } else {
- $$0288$i$i = $899;$$0289$i$i = $900;
+ $1045 = HEAP32[$1034>>2]|0;
+ $1046 = ($$0212$i$i|0)==(31);
+ $1047 = $$0212$i$i >>> 1;
+ $1048 = (25 - ($1047))|0;
+ $1049 = $1046 ? 0 : $1048;
+ $1050 = $988 << $1049;
+ $$0206$i$i = $1050;$$0207$i$i = $1045;
+ while(1) {
+ $1051 = ((($$0207$i$i)) + 4|0);
+ $1052 = HEAP32[$1051>>2]|0;
+ $1053 = $1052 & -8;
+ $1054 = ($1053|0)==($988|0);
+ if ($1054) {
+ label = 307;
+ break;
+ }
+ $1055 = $$0206$i$i >>> 31;
+ $1056 = (((($$0207$i$i)) + 16|0) + ($1055<<2)|0);
+ $1057 = $$0206$i$i << 1;
+ $1058 = HEAP32[$1056>>2]|0;
+ $1059 = ($1058|0)==(0|0);
+ if ($1059) {
+ label = 304;
+ break;
+ } else {
+ $$0206$i$i = $1057;$$0207$i$i = $1058;
+ }
}
- }
- if ((label|0) == 262) {
- $902 = HEAP32[(33160)>>2]|0;
- $903 = ($898>>>0)<($902>>>0);
- if ($903) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$898>>2] = $721;
- $904 = ((($721)) + 24|0);
- HEAP32[$904>>2] = $$0289$i$i;
- $905 = ((($721)) + 12|0);
- HEAP32[$905>>2] = $721;
- $906 = ((($721)) + 8|0);
- HEAP32[$906>>2] = $721;
- break;
+ if ((label|0) == 304) {
+ $1060 = HEAP32[(35468)>>2]|0;
+ $1061 = ($1056>>>0)<($1060>>>0);
+ if ($1061) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$1056>>2] = $657;
+ $1062 = ((($657)) + 24|0);
+ HEAP32[$1062>>2] = $$0207$i$i;
+ $1063 = ((($657)) + 12|0);
+ HEAP32[$1063>>2] = $657;
+ $1064 = ((($657)) + 8|0);
+ HEAP32[$1064>>2] = $657;
+ break;
+ }
}
- }
- else if ((label|0) == 265) {
- $907 = ((($$0289$i$i)) + 8|0);
- $908 = HEAP32[$907>>2]|0;
- $909 = HEAP32[(33160)>>2]|0;
- $910 = ($908>>>0)>=($909>>>0);
- $not$7$i$i = ($$0289$i$i>>>0)>=($909>>>0);
- $911 = $910 & $not$7$i$i;
- if ($911) {
- $912 = ((($908)) + 12|0);
- HEAP32[$912>>2] = $721;
- HEAP32[$907>>2] = $721;
- $913 = ((($721)) + 8|0);
- HEAP32[$913>>2] = $908;
- $914 = ((($721)) + 12|0);
- HEAP32[$914>>2] = $$0289$i$i;
- $915 = ((($721)) + 24|0);
- HEAP32[$915>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
+ else if ((label|0) == 307) {
+ $1065 = ((($$0207$i$i)) + 8|0);
+ $1066 = HEAP32[$1065>>2]|0;
+ $1067 = HEAP32[(35468)>>2]|0;
+ $1068 = ($1066>>>0)>=($1067>>>0);
+ $not$$i21$i = ($$0207$i$i>>>0)>=($1067>>>0);
+ $1069 = $1068 & $not$$i21$i;
+ if ($1069) {
+ $1070 = ((($1066)) + 12|0);
+ HEAP32[$1070>>2] = $657;
+ HEAP32[$1065>>2] = $657;
+ $1071 = ((($657)) + 8|0);
+ HEAP32[$1071>>2] = $1066;
+ $1072 = ((($657)) + 12|0);
+ HEAP32[$1072>>2] = $$0207$i$i;
+ $1073 = ((($657)) + 24|0);
+ HEAP32[$1073>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
}
}
}
} while(0);
- $1047 = ((($709)) + 8|0);
- $$0 = $1047;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $$0$i$i$i = (33592);
- while(1) {
- $916 = HEAP32[$$0$i$i$i>>2]|0;
- $917 = ($916>>>0)>($630>>>0);
- if (!($917)) {
- $918 = ((($$0$i$i$i)) + 4|0);
- $919 = HEAP32[$918>>2]|0;
- $920 = (($916) + ($919)|0);
- $921 = ($920>>>0)>($630>>>0);
- if ($921) {
+ $1075 = HEAP32[(35464)>>2]|0;
+ $1076 = ($1075>>>0)>($$0198>>>0);
+ if ($1076) {
+ $1077 = (($1075) - ($$0198))|0;
+ HEAP32[(35464)>>2] = $1077;
+ $1078 = HEAP32[(35476)>>2]|0;
+ $1079 = (($1078) + ($$0198)|0);
+ HEAP32[(35476)>>2] = $1079;
+ $1080 = $1077 | 1;
+ $1081 = ((($1079)) + 4|0);
+ HEAP32[$1081>>2] = $1080;
+ $1082 = $$0198 | 3;
+ $1083 = ((($1078)) + 4|0);
+ HEAP32[$1083>>2] = $1082;
+ $1084 = ((($1078)) + 8|0);
+ $$2 = $1084;
break;
}
}
- $922 = ((($$0$i$i$i)) + 8|0);
- $923 = HEAP32[$922>>2]|0;
- $$0$i$i$i = $923;
- }
- $924 = ((($920)) + -47|0);
- $925 = ((($924)) + 8|0);
- $926 = $925;
- $927 = $926 & 7;
- $928 = ($927|0)==(0);
- $929 = (0 - ($926))|0;
- $930 = $929 & 7;
- $931 = $928 ? 0 : $930;
- $932 = (($924) + ($931)|0);
- $933 = ((($630)) + 16|0);
- $934 = ($932>>>0)<($933>>>0);
- $935 = $934 ? $630 : $932;
- $936 = ((($935)) + 8|0);
- $937 = ((($935)) + 24|0);
- $938 = (($$723948$i) + -40)|0;
- $939 = ((($$749$i)) + 8|0);
- $940 = $939;
- $941 = $940 & 7;
- $942 = ($941|0)==(0);
- $943 = (0 - ($940))|0;
- $944 = $943 & 7;
- $945 = $942 ? 0 : $944;
- $946 = (($$749$i) + ($945)|0);
- $947 = (($938) - ($945))|0;
- HEAP32[(33168)>>2] = $946;
- HEAP32[(33156)>>2] = $947;
- $948 = $947 | 1;
- $949 = ((($946)) + 4|0);
- HEAP32[$949>>2] = $948;
- $950 = (($946) + ($947)|0);
- $951 = ((($950)) + 4|0);
- HEAP32[$951>>2] = 40;
- $952 = HEAP32[(33632)>>2]|0;
- HEAP32[(33172)>>2] = $952;
- $953 = ((($935)) + 4|0);
- HEAP32[$953>>2] = 27;
- ;HEAP32[$936>>2]=HEAP32[(33592)>>2]|0;HEAP32[$936+4>>2]=HEAP32[(33592)+4>>2]|0;HEAP32[$936+8>>2]=HEAP32[(33592)+8>>2]|0;HEAP32[$936+12>>2]=HEAP32[(33592)+12>>2]|0;
- HEAP32[(33592)>>2] = $$749$i;
- HEAP32[(33596)>>2] = $$723948$i;
- HEAP32[(33604)>>2] = 0;
- HEAP32[(33600)>>2] = $936;
- $955 = $937;
- while(1) {
- $954 = ((($955)) + 4|0);
- HEAP32[$954>>2] = 7;
- $956 = ((($955)) + 8|0);
- $957 = ($956>>>0)<($920>>>0);
- if ($957) {
- $955 = $954;
- } else {
- break;
- }
- }
- $958 = ($935|0)==($630|0);
- if (!($958)) {
- $959 = $935;
- $960 = $630;
- $961 = (($959) - ($960))|0;
- $962 = HEAP32[$953>>2]|0;
- $963 = $962 & -2;
- HEAP32[$953>>2] = $963;
- $964 = $961 | 1;
- $965 = ((($630)) + 4|0);
- HEAP32[$965>>2] = $964;
- HEAP32[$935>>2] = $961;
- $966 = $961 >>> 3;
- $967 = ($961>>>0)<(256);
- if ($967) {
- $968 = $966 << 1;
- $969 = (33184 + ($968<<2)|0);
- $970 = HEAP32[8286]|0;
- $971 = 1 << $966;
- $972 = $970 & $971;
- $973 = ($972|0)==(0);
- if ($973) {
- $974 = $970 | $971;
- HEAP32[8286] = $974;
- $$pre$i$i = ((($969)) + 8|0);
- $$0211$i$i = $969;$$pre$phi$i$iZ2D = $$pre$i$i;
- } else {
- $975 = ((($969)) + 8|0);
- $976 = HEAP32[$975>>2]|0;
- $977 = HEAP32[(33160)>>2]|0;
- $978 = ($976>>>0)<($977>>>0);
- if ($978) {
- _abort();
- // unreachable;
- } else {
- $$0211$i$i = $976;$$pre$phi$i$iZ2D = $975;
- }
- }
- HEAP32[$$pre$phi$i$iZ2D>>2] = $630;
- $979 = ((($$0211$i$i)) + 12|0);
- HEAP32[$979>>2] = $630;
- $980 = ((($630)) + 8|0);
- HEAP32[$980>>2] = $$0211$i$i;
- $981 = ((($630)) + 12|0);
- HEAP32[$981>>2] = $969;
- break;
- }
- $982 = $961 >>> 8;
- $983 = ($982|0)==(0);
- if ($983) {
- $$0212$i$i = 0;
- } else {
- $984 = ($961>>>0)>(16777215);
- if ($984) {
- $$0212$i$i = 31;
- } else {
- $985 = (($982) + 1048320)|0;
- $986 = $985 >>> 16;
- $987 = $986 & 8;
- $988 = $982 << $987;
- $989 = (($988) + 520192)|0;
- $990 = $989 >>> 16;
- $991 = $990 & 4;
- $992 = $991 | $987;
- $993 = $988 << $991;
- $994 = (($993) + 245760)|0;
- $995 = $994 >>> 16;
- $996 = $995 & 2;
- $997 = $992 | $996;
- $998 = (14 - ($997))|0;
- $999 = $993 << $996;
- $1000 = $999 >>> 15;
- $1001 = (($998) + ($1000))|0;
- $1002 = $1001 << 1;
- $1003 = (($1001) + 7)|0;
- $1004 = $961 >>> $1003;
- $1005 = $1004 & 1;
- $1006 = $1005 | $1002;
- $$0212$i$i = $1006;
- }
- }
- $1007 = (33448 + ($$0212$i$i<<2)|0);
- $1008 = ((($630)) + 28|0);
- HEAP32[$1008>>2] = $$0212$i$i;
- $1009 = ((($630)) + 20|0);
- HEAP32[$1009>>2] = 0;
- HEAP32[$933>>2] = 0;
- $1010 = HEAP32[(33148)>>2]|0;
- $1011 = 1 << $$0212$i$i;
- $1012 = $1010 & $1011;
- $1013 = ($1012|0)==(0);
- if ($1013) {
- $1014 = $1010 | $1011;
- HEAP32[(33148)>>2] = $1014;
- HEAP32[$1007>>2] = $630;
- $1015 = ((($630)) + 24|0);
- HEAP32[$1015>>2] = $1007;
- $1016 = ((($630)) + 12|0);
- HEAP32[$1016>>2] = $630;
- $1017 = ((($630)) + 8|0);
- HEAP32[$1017>>2] = $630;
- break;
- }
- $1018 = HEAP32[$1007>>2]|0;
- $1019 = ($$0212$i$i|0)==(31);
- $1020 = $$0212$i$i >>> 1;
- $1021 = (25 - ($1020))|0;
- $1022 = $1019 ? 0 : $1021;
- $1023 = $961 << $1022;
- $$0206$i$i = $1023;$$0207$i$i = $1018;
- while(1) {
- $1024 = ((($$0207$i$i)) + 4|0);
- $1025 = HEAP32[$1024>>2]|0;
- $1026 = $1025 & -8;
- $1027 = ($1026|0)==($961|0);
- if ($1027) {
- label = 292;
- break;
- }
- $1028 = $$0206$i$i >>> 31;
- $1029 = (((($$0207$i$i)) + 16|0) + ($1028<<2)|0);
- $1030 = $$0206$i$i << 1;
- $1031 = HEAP32[$1029>>2]|0;
- $1032 = ($1031|0)==(0|0);
- if ($1032) {
- label = 289;
- break;
- } else {
- $$0206$i$i = $1030;$$0207$i$i = $1031;
- }
- }
- if ((label|0) == 289) {
- $1033 = HEAP32[(33160)>>2]|0;
- $1034 = ($1029>>>0)<($1033>>>0);
- if ($1034) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$1029>>2] = $630;
- $1035 = ((($630)) + 24|0);
- HEAP32[$1035>>2] = $$0207$i$i;
- $1036 = ((($630)) + 12|0);
- HEAP32[$1036>>2] = $630;
- $1037 = ((($630)) + 8|0);
- HEAP32[$1037>>2] = $630;
- break;
- }
- }
- else if ((label|0) == 292) {
- $1038 = ((($$0207$i$i)) + 8|0);
- $1039 = HEAP32[$1038>>2]|0;
- $1040 = HEAP32[(33160)>>2]|0;
- $1041 = ($1039>>>0)>=($1040>>>0);
- $not$$i$i = ($$0207$i$i>>>0)>=($1040>>>0);
- $1042 = $1041 & $not$$i$i;
- if ($1042) {
- $1043 = ((($1039)) + 12|0);
- HEAP32[$1043>>2] = $630;
- HEAP32[$1038>>2] = $630;
- $1044 = ((($630)) + 8|0);
- HEAP32[$1044>>2] = $1039;
- $1045 = ((($630)) + 12|0);
- HEAP32[$1045>>2] = $$0207$i$i;
- $1046 = ((($630)) + 24|0);
- HEAP32[$1046>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
}
+ $1085 = (___errno_location()|0);
+ HEAP32[$1085>>2] = 12;
+ $$2 = 0;
+ } else {
+ $$2 = 0;
}
- } while(0);
- $1048 = HEAP32[(33156)>>2]|0;
- $1049 = ($1048>>>0)>($$0197>>>0);
- if ($1049) {
- $1050 = (($1048) - ($$0197))|0;
- HEAP32[(33156)>>2] = $1050;
- $1051 = HEAP32[(33168)>>2]|0;
- $1052 = (($1051) + ($$0197)|0);
- HEAP32[(33168)>>2] = $1052;
- $1053 = $1050 | 1;
- $1054 = ((($1052)) + 4|0);
- HEAP32[$1054>>2] = $1053;
- $1055 = $$0197 | 3;
- $1056 = ((($1051)) + 4|0);
- HEAP32[$1056>>2] = $1055;
- $1057 = ((($1051)) + 8|0);
- $$0 = $1057;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $1058 = (___errno_location()|0);
- HEAP32[$1058>>2] = 12;
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
+ }
+ } while(0);
+ $1086 = HEAP32[(35896)>>2]|0;
+ $1087 = $1086 & 2;
+ $1088 = ($1087|0)==(0);
+ if ($1088) {
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
+ }
+ (___pthread_mutex_unlock((35900))|0);
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
}
function _free($0) {
$0 = $0|0;
@@ -25881,488 +32219,213 @@ function _free($0) {
var $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0;
var $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0;
var $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0;
- var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
- var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0;
- var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0;
- var $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0;
- var $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
+ var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = ($0|0)==(0|0);
if ($1) {
return;
}
$2 = ((($0)) + -8|0);
- $3 = HEAP32[(33160)>>2]|0;
- $4 = ($2>>>0)<($3>>>0);
- if ($4) {
+ $3 = HEAP32[(35896)>>2]|0;
+ $4 = $3 & 2;
+ $5 = ($4|0)==(0);
+ if (!($5)) {
+ $6 = (___pthread_mutex_lock((35900))|0);
+ $7 = ($6|0)==(0);
+ if (!($7)) {
+ return;
+ }
+ }
+ $8 = HEAP32[(35468)>>2]|0;
+ $9 = ($2>>>0)<($8>>>0);
+ if ($9) {
_abort();
// unreachable;
}
- $5 = ((($0)) + -4|0);
- $6 = HEAP32[$5>>2]|0;
- $7 = $6 & 3;
- $8 = ($7|0)==(1);
- if ($8) {
+ $10 = ((($0)) + -4|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = $11 & 3;
+ $13 = ($12|0)==(1);
+ if ($13) {
_abort();
// unreachable;
}
- $9 = $6 & -8;
- $10 = (($2) + ($9)|0);
- $11 = $6 & 1;
- $12 = ($11|0)==(0);
- L10: do {
- if ($12) {
- $13 = HEAP32[$2>>2]|0;
- $14 = ($7|0)==(0);
- if ($14) {
- return;
- }
- $15 = (0 - ($13))|0;
- $16 = (($2) + ($15)|0);
- $17 = (($13) + ($9))|0;
- $18 = ($16>>>0)<($3>>>0);
- if ($18) {
- _abort();
- // unreachable;
- }
- $19 = HEAP32[(33164)>>2]|0;
- $20 = ($16|0)==($19|0);
- if ($20) {
- $104 = ((($10)) + 4|0);
- $105 = HEAP32[$104>>2]|0;
- $106 = $105 & 3;
- $107 = ($106|0)==(3);
- if (!($107)) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
+ $14 = $11 & -8;
+ $15 = (($2) + ($14)|0);
+ $16 = $11 & 1;
+ $17 = ($16|0)==(0);
+ L14: do {
+ if ($17) {
+ $18 = HEAP32[$2>>2]|0;
+ $19 = ($12|0)==(0);
+ if (!($19)) {
+ $20 = (0 - ($18))|0;
+ $21 = (($2) + ($20)|0);
+ $22 = (($18) + ($14))|0;
+ $23 = ($21>>>0)<($8>>>0);
+ if ($23) {
+ _abort();
+ // unreachable;
}
- $108 = (($16) + ($17)|0);
- $109 = ((($16)) + 4|0);
- $110 = $17 | 1;
- $111 = $105 & -2;
- HEAP32[(33152)>>2] = $17;
- HEAP32[$104>>2] = $111;
- HEAP32[$109>>2] = $110;
- HEAP32[$108>>2] = $17;
- return;
- }
- $21 = $13 >>> 3;
- $22 = ($13>>>0)<(256);
- if ($22) {
- $23 = ((($16)) + 8|0);
- $24 = HEAP32[$23>>2]|0;
- $25 = ((($16)) + 12|0);
- $26 = HEAP32[$25>>2]|0;
- $27 = $21 << 1;
- $28 = (33184 + ($27<<2)|0);
- $29 = ($24|0)==($28|0);
- if (!($29)) {
- $30 = ($24>>>0)<($3>>>0);
- if ($30) {
- _abort();
- // unreachable;
- }
- $31 = ((($24)) + 12|0);
- $32 = HEAP32[$31>>2]|0;
- $33 = ($32|0)==($16|0);
- if (!($33)) {
- _abort();
- // unreachable;
+ $24 = HEAP32[(35472)>>2]|0;
+ $25 = ($21|0)==($24|0);
+ if ($25) {
+ $109 = ((($15)) + 4|0);
+ $110 = HEAP32[$109>>2]|0;
+ $111 = $110 & 3;
+ $112 = ($111|0)==(3);
+ if (!($112)) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break;
}
- }
- $34 = ($26|0)==($24|0);
- if ($34) {
- $35 = 1 << $21;
- $36 = $35 ^ -1;
- $37 = HEAP32[8286]|0;
- $38 = $37 & $36;
- HEAP32[8286] = $38;
- $$1 = $16;$$1382 = $17;$113 = $16;
+ $113 = (($21) + ($22)|0);
+ $114 = ((($21)) + 4|0);
+ $115 = $22 | 1;
+ $116 = $110 & -2;
+ HEAP32[(35460)>>2] = $22;
+ HEAP32[$109>>2] = $116;
+ HEAP32[$114>>2] = $115;
+ HEAP32[$113>>2] = $22;
break;
}
- $39 = ($26|0)==($28|0);
- if ($39) {
- $$pre444 = ((($26)) + 8|0);
- $$pre$phi445Z2D = $$pre444;
- } else {
- $40 = ($26>>>0)<($3>>>0);
- if ($40) {
- _abort();
- // unreachable;
- }
- $41 = ((($26)) + 8|0);
- $42 = HEAP32[$41>>2]|0;
- $43 = ($42|0)==($16|0);
- if ($43) {
- $$pre$phi445Z2D = $41;
- } else {
- _abort();
- // unreachable;
- }
- }
- $44 = ((($24)) + 12|0);
- HEAP32[$44>>2] = $26;
- HEAP32[$$pre$phi445Z2D>>2] = $24;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- $45 = ((($16)) + 24|0);
- $46 = HEAP32[$45>>2]|0;
- $47 = ((($16)) + 12|0);
- $48 = HEAP32[$47>>2]|0;
- $49 = ($48|0)==($16|0);
- do {
- if ($49) {
- $59 = ((($16)) + 16|0);
- $60 = ((($59)) + 4|0);
- $61 = HEAP32[$60>>2]|0;
- $62 = ($61|0)==(0|0);
- if ($62) {
- $63 = HEAP32[$59>>2]|0;
- $64 = ($63|0)==(0|0);
- if ($64) {
- $$3 = 0;
- break;
- } else {
- $$1387 = $63;$$1390 = $59;
- }
- } else {
- $$1387 = $61;$$1390 = $60;
- }
- while(1) {
- $65 = ((($$1387)) + 20|0);
- $66 = HEAP32[$65>>2]|0;
- $67 = ($66|0)==(0|0);
- if (!($67)) {
- $$1387 = $66;$$1390 = $65;
- continue;
+ $26 = $18 >>> 3;
+ $27 = ($18>>>0)<(256);
+ if ($27) {
+ $28 = ((($21)) + 8|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = ((($21)) + 12|0);
+ $31 = HEAP32[$30>>2]|0;
+ $32 = $26 << 1;
+ $33 = (35492 + ($32<<2)|0);
+ $34 = ($29|0)==($33|0);
+ if (!($34)) {
+ $35 = ($29>>>0)<($8>>>0);
+ if ($35) {
+ _abort();
+ // unreachable;
}
- $68 = ((($$1387)) + 16|0);
- $69 = HEAP32[$68>>2]|0;
- $70 = ($69|0)==(0|0);
- if ($70) {
- break;
- } else {
- $$1387 = $69;$$1390 = $68;
+ $36 = ((($29)) + 12|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($37|0)==($21|0);
+ if (!($38)) {
+ _abort();
+ // unreachable;
}
}
- $71 = ($$1390>>>0)<($3>>>0);
- if ($71) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1390>>2] = 0;
- $$3 = $$1387;
+ $39 = ($31|0)==($29|0);
+ if ($39) {
+ $40 = 1 << $26;
+ $41 = $40 ^ -1;
+ $42 = HEAP32[8863]|0;
+ $43 = $42 & $41;
+ HEAP32[8863] = $43;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- } else {
- $50 = ((($16)) + 8|0);
- $51 = HEAP32[$50>>2]|0;
- $52 = ($51>>>0)<($3>>>0);
- if ($52) {
- _abort();
- // unreachable;
- }
- $53 = ((($51)) + 12|0);
- $54 = HEAP32[$53>>2]|0;
- $55 = ($54|0)==($16|0);
- if (!($55)) {
- _abort();
- // unreachable;
- }
- $56 = ((($48)) + 8|0);
- $57 = HEAP32[$56>>2]|0;
- $58 = ($57|0)==($16|0);
- if ($58) {
- HEAP32[$53>>2] = $48;
- HEAP32[$56>>2] = $51;
- $$3 = $48;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
- } while(0);
- $72 = ($46|0)==(0|0);
- if ($72) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $73 = ((($16)) + 28|0);
- $74 = HEAP32[$73>>2]|0;
- $75 = (33448 + ($74<<2)|0);
- $76 = HEAP32[$75>>2]|0;
- $77 = ($16|0)==($76|0);
- do {
- if ($77) {
- HEAP32[$75>>2] = $$3;
- $cond421 = ($$3|0)==(0|0);
- if ($cond421) {
- $78 = 1 << $74;
- $79 = $78 ^ -1;
- $80 = HEAP32[(33148)>>2]|0;
- $81 = $80 & $79;
- HEAP32[(33148)>>2] = $81;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- }
+ $44 = ($31|0)==($33|0);
+ if ($44) {
+ $$pre444 = ((($31)) + 8|0);
+ $$pre$phi445Z2D = $$pre444;
} else {
- $82 = HEAP32[(33160)>>2]|0;
- $83 = ($46>>>0)<($82>>>0);
- if ($83) {
+ $45 = ($31>>>0)<($8>>>0);
+ if ($45) {
_abort();
// unreachable;
- } else {
- $84 = ((($46)) + 16|0);
- $85 = HEAP32[$84>>2]|0;
- $not$405 = ($85|0)!=($16|0);
- $$sink3 = $not$405&1;
- $86 = (((($46)) + 16|0) + ($$sink3<<2)|0);
- HEAP32[$86>>2] = $$3;
- $87 = ($$3|0)==(0|0);
- if ($87) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- } else {
- break;
- }
}
- }
- } while(0);
- $88 = HEAP32[(33160)>>2]|0;
- $89 = ($$3>>>0)<($88>>>0);
- if ($89) {
- _abort();
- // unreachable;
- }
- $90 = ((($$3)) + 24|0);
- HEAP32[$90>>2] = $46;
- $91 = ((($16)) + 16|0);
- $92 = HEAP32[$91>>2]|0;
- $93 = ($92|0)==(0|0);
- do {
- if (!($93)) {
- $94 = ($92>>>0)<($88>>>0);
- if ($94) {
+ $46 = ((($31)) + 8|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ($47|0)==($21|0);
+ if ($48) {
+ $$pre$phi445Z2D = $46;
+ } else {
_abort();
// unreachable;
- } else {
- $95 = ((($$3)) + 16|0);
- HEAP32[$95>>2] = $92;
- $96 = ((($92)) + 24|0);
- HEAP32[$96>>2] = $$3;
- break;
}
}
- } while(0);
- $97 = ((($91)) + 4|0);
- $98 = HEAP32[$97>>2]|0;
- $99 = ($98|0)==(0|0);
- if ($99) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $100 = HEAP32[(33160)>>2]|0;
- $101 = ($98>>>0)<($100>>>0);
- if ($101) {
- _abort();
- // unreachable;
- } else {
- $102 = ((($$3)) + 20|0);
- HEAP32[$102>>2] = $98;
- $103 = ((($98)) + 24|0);
- HEAP32[$103>>2] = $$3;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- }
- }
- } else {
- $$1 = $2;$$1382 = $9;$113 = $2;
- }
- } while(0);
- $112 = ($113>>>0)<($10>>>0);
- if (!($112)) {
- _abort();
- // unreachable;
- }
- $114 = ((($10)) + 4|0);
- $115 = HEAP32[$114>>2]|0;
- $116 = $115 & 1;
- $117 = ($116|0)==(0);
- if ($117) {
- _abort();
- // unreachable;
- }
- $118 = $115 & 2;
- $119 = ($118|0)==(0);
- if ($119) {
- $120 = HEAP32[(33168)>>2]|0;
- $121 = ($10|0)==($120|0);
- $122 = HEAP32[(33164)>>2]|0;
- if ($121) {
- $123 = HEAP32[(33156)>>2]|0;
- $124 = (($123) + ($$1382))|0;
- HEAP32[(33156)>>2] = $124;
- HEAP32[(33168)>>2] = $$1;
- $125 = $124 | 1;
- $126 = ((($$1)) + 4|0);
- HEAP32[$126>>2] = $125;
- $127 = ($$1|0)==($122|0);
- if (!($127)) {
- return;
- }
- HEAP32[(33164)>>2] = 0;
- HEAP32[(33152)>>2] = 0;
- return;
- }
- $128 = ($10|0)==($122|0);
- if ($128) {
- $129 = HEAP32[(33152)>>2]|0;
- $130 = (($129) + ($$1382))|0;
- HEAP32[(33152)>>2] = $130;
- HEAP32[(33164)>>2] = $113;
- $131 = $130 | 1;
- $132 = ((($$1)) + 4|0);
- HEAP32[$132>>2] = $131;
- $133 = (($113) + ($130)|0);
- HEAP32[$133>>2] = $130;
- return;
- }
- $134 = $115 & -8;
- $135 = (($134) + ($$1382))|0;
- $136 = $115 >>> 3;
- $137 = ($115>>>0)<(256);
- L108: do {
- if ($137) {
- $138 = ((($10)) + 8|0);
- $139 = HEAP32[$138>>2]|0;
- $140 = ((($10)) + 12|0);
- $141 = HEAP32[$140>>2]|0;
- $142 = $136 << 1;
- $143 = (33184 + ($142<<2)|0);
- $144 = ($139|0)==($143|0);
- if (!($144)) {
- $145 = HEAP32[(33160)>>2]|0;
- $146 = ($139>>>0)<($145>>>0);
- if ($146) {
- _abort();
- // unreachable;
- }
- $147 = ((($139)) + 12|0);
- $148 = HEAP32[$147>>2]|0;
- $149 = ($148|0)==($10|0);
- if (!($149)) {
- _abort();
- // unreachable;
- }
- }
- $150 = ($141|0)==($139|0);
- if ($150) {
- $151 = 1 << $136;
- $152 = $151 ^ -1;
- $153 = HEAP32[8286]|0;
- $154 = $153 & $152;
- HEAP32[8286] = $154;
+ $49 = ((($29)) + 12|0);
+ HEAP32[$49>>2] = $31;
+ HEAP32[$$pre$phi445Z2D>>2] = $29;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- $155 = ($141|0)==($143|0);
- if ($155) {
- $$pre442 = ((($141)) + 8|0);
- $$pre$phi443Z2D = $$pre442;
- } else {
- $156 = HEAP32[(33160)>>2]|0;
- $157 = ($141>>>0)<($156>>>0);
- if ($157) {
- _abort();
- // unreachable;
- }
- $158 = ((($141)) + 8|0);
- $159 = HEAP32[$158>>2]|0;
- $160 = ($159|0)==($10|0);
- if ($160) {
- $$pre$phi443Z2D = $158;
- } else {
- _abort();
- // unreachable;
- }
- }
- $161 = ((($139)) + 12|0);
- HEAP32[$161>>2] = $141;
- HEAP32[$$pre$phi443Z2D>>2] = $139;
- } else {
- $162 = ((($10)) + 24|0);
- $163 = HEAP32[$162>>2]|0;
- $164 = ((($10)) + 12|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165|0)==($10|0);
+ $50 = ((($21)) + 24|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = ((($21)) + 12|0);
+ $53 = HEAP32[$52>>2]|0;
+ $54 = ($53|0)==($21|0);
do {
- if ($166) {
- $177 = ((($10)) + 16|0);
- $178 = ((($177)) + 4|0);
- $179 = HEAP32[$178>>2]|0;
- $180 = ($179|0)==(0|0);
- if ($180) {
- $181 = HEAP32[$177>>2]|0;
- $182 = ($181|0)==(0|0);
- if ($182) {
- $$3400 = 0;
+ if ($54) {
+ $64 = ((($21)) + 16|0);
+ $65 = ((($64)) + 4|0);
+ $66 = HEAP32[$65>>2]|0;
+ $67 = ($66|0)==(0|0);
+ if ($67) {
+ $68 = HEAP32[$64>>2]|0;
+ $69 = ($68|0)==(0|0);
+ if ($69) {
+ $$3 = 0;
break;
} else {
- $$1398 = $181;$$1402 = $177;
+ $$1387 = $68;$$1390 = $64;
}
} else {
- $$1398 = $179;$$1402 = $178;
+ $$1387 = $66;$$1390 = $65;
}
while(1) {
- $183 = ((($$1398)) + 20|0);
- $184 = HEAP32[$183>>2]|0;
- $185 = ($184|0)==(0|0);
- if (!($185)) {
- $$1398 = $184;$$1402 = $183;
+ $70 = ((($$1387)) + 20|0);
+ $71 = HEAP32[$70>>2]|0;
+ $72 = ($71|0)==(0|0);
+ if (!($72)) {
+ $$1387 = $71;$$1390 = $70;
continue;
}
- $186 = ((($$1398)) + 16|0);
- $187 = HEAP32[$186>>2]|0;
- $188 = ($187|0)==(0|0);
- if ($188) {
+ $73 = ((($$1387)) + 16|0);
+ $74 = HEAP32[$73>>2]|0;
+ $75 = ($74|0)==(0|0);
+ if ($75) {
break;
} else {
- $$1398 = $187;$$1402 = $186;
+ $$1387 = $74;$$1390 = $73;
}
}
- $189 = HEAP32[(33160)>>2]|0;
- $190 = ($$1402>>>0)<($189>>>0);
- if ($190) {
+ $76 = ($$1390>>>0)<($8>>>0);
+ if ($76) {
_abort();
// unreachable;
} else {
- HEAP32[$$1402>>2] = 0;
- $$3400 = $$1398;
+ HEAP32[$$1390>>2] = 0;
+ $$3 = $$1387;
break;
}
} else {
- $167 = ((($10)) + 8|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = HEAP32[(33160)>>2]|0;
- $170 = ($168>>>0)<($169>>>0);
- if ($170) {
+ $55 = ((($21)) + 8|0);
+ $56 = HEAP32[$55>>2]|0;
+ $57 = ($56>>>0)<($8>>>0);
+ if ($57) {
_abort();
// unreachable;
}
- $171 = ((($168)) + 12|0);
- $172 = HEAP32[$171>>2]|0;
- $173 = ($172|0)==($10|0);
- if (!($173)) {
+ $58 = ((($56)) + 12|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = ($59|0)==($21|0);
+ if (!($60)) {
_abort();
// unreachable;
}
- $174 = ((($165)) + 8|0);
- $175 = HEAP32[$174>>2]|0;
- $176 = ($175|0)==($10|0);
- if ($176) {
- HEAP32[$171>>2] = $165;
- HEAP32[$174>>2] = $168;
- $$3400 = $165;
+ $61 = ((($53)) + 8|0);
+ $62 = HEAP32[$61>>2]|0;
+ $63 = ($62|0)==($21|0);
+ if ($63) {
+ HEAP32[$58>>2] = $53;
+ HEAP32[$61>>2] = $56;
+ $$3 = $53;
break;
} else {
_abort();
@@ -26370,298 +32433,600 @@ function _free($0) {
}
}
} while(0);
- $191 = ($163|0)==(0|0);
- if (!($191)) {
- $192 = ((($10)) + 28|0);
- $193 = HEAP32[$192>>2]|0;
- $194 = (33448 + ($193<<2)|0);
- $195 = HEAP32[$194>>2]|0;
- $196 = ($10|0)==($195|0);
+ $77 = ($51|0)==(0|0);
+ if ($77) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $78 = ((($21)) + 28|0);
+ $79 = HEAP32[$78>>2]|0;
+ $80 = (35756 + ($79<<2)|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ($21|0)==($81|0);
do {
- if ($196) {
- HEAP32[$194>>2] = $$3400;
- $cond422 = ($$3400|0)==(0|0);
- if ($cond422) {
- $197 = 1 << $193;
- $198 = $197 ^ -1;
- $199 = HEAP32[(33148)>>2]|0;
- $200 = $199 & $198;
- HEAP32[(33148)>>2] = $200;
- break L108;
+ if ($82) {
+ HEAP32[$80>>2] = $$3;
+ $cond421 = ($$3|0)==(0|0);
+ if ($cond421) {
+ $83 = 1 << $79;
+ $84 = $83 ^ -1;
+ $85 = HEAP32[(35456)>>2]|0;
+ $86 = $85 & $84;
+ HEAP32[(35456)>>2] = $86;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
}
} else {
- $201 = HEAP32[(33160)>>2]|0;
- $202 = ($163>>>0)<($201>>>0);
- if ($202) {
+ $87 = HEAP32[(35468)>>2]|0;
+ $88 = ($51>>>0)<($87>>>0);
+ if ($88) {
_abort();
// unreachable;
} else {
- $203 = ((($163)) + 16|0);
- $204 = HEAP32[$203>>2]|0;
- $not$ = ($204|0)!=($10|0);
- $$sink5 = $not$&1;
- $205 = (((($163)) + 16|0) + ($$sink5<<2)|0);
- HEAP32[$205>>2] = $$3400;
- $206 = ($$3400|0)==(0|0);
- if ($206) {
- break L108;
+ $89 = ((($51)) + 16|0);
+ $90 = HEAP32[$89>>2]|0;
+ $not$405 = ($90|0)!=($21|0);
+ $$sink3 = $not$405&1;
+ $91 = (((($51)) + 16|0) + ($$sink3<<2)|0);
+ HEAP32[$91>>2] = $$3;
+ $92 = ($$3|0)==(0|0);
+ if ($92) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
} else {
break;
}
}
}
} while(0);
- $207 = HEAP32[(33160)>>2]|0;
- $208 = ($$3400>>>0)<($207>>>0);
- if ($208) {
+ $93 = HEAP32[(35468)>>2]|0;
+ $94 = ($$3>>>0)<($93>>>0);
+ if ($94) {
_abort();
// unreachable;
}
- $209 = ((($$3400)) + 24|0);
- HEAP32[$209>>2] = $163;
- $210 = ((($10)) + 16|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
+ $95 = ((($$3)) + 24|0);
+ HEAP32[$95>>2] = $51;
+ $96 = ((($21)) + 16|0);
+ $97 = HEAP32[$96>>2]|0;
+ $98 = ($97|0)==(0|0);
do {
- if (!($212)) {
- $213 = ($211>>>0)<($207>>>0);
- if ($213) {
+ if (!($98)) {
+ $99 = ($97>>>0)<($93>>>0);
+ if ($99) {
_abort();
// unreachable;
} else {
- $214 = ((($$3400)) + 16|0);
- HEAP32[$214>>2] = $211;
- $215 = ((($211)) + 24|0);
- HEAP32[$215>>2] = $$3400;
+ $100 = ((($$3)) + 16|0);
+ HEAP32[$100>>2] = $97;
+ $101 = ((($97)) + 24|0);
+ HEAP32[$101>>2] = $$3;
break;
}
}
} while(0);
- $216 = ((($210)) + 4|0);
- $217 = HEAP32[$216>>2]|0;
- $218 = ($217|0)==(0|0);
- if (!($218)) {
- $219 = HEAP32[(33160)>>2]|0;
- $220 = ($217>>>0)<($219>>>0);
- if ($220) {
+ $102 = ((($96)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ($103|0)==(0|0);
+ if ($104) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $105 = HEAP32[(35468)>>2]|0;
+ $106 = ($103>>>0)<($105>>>0);
+ if ($106) {
_abort();
// unreachable;
} else {
- $221 = ((($$3400)) + 20|0);
- HEAP32[$221>>2] = $217;
- $222 = ((($217)) + 24|0);
- HEAP32[$222>>2] = $$3400;
+ $107 = ((($$3)) + 20|0);
+ HEAP32[$107>>2] = $103;
+ $108 = ((($103)) + 24|0);
+ HEAP32[$108>>2] = $$3;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
}
}
}
- } while(0);
- $223 = $135 | 1;
- $224 = ((($$1)) + 4|0);
- HEAP32[$224>>2] = $223;
- $225 = (($113) + ($135)|0);
- HEAP32[$225>>2] = $135;
- $226 = HEAP32[(33164)>>2]|0;
- $227 = ($$1|0)==($226|0);
- if ($227) {
- HEAP32[(33152)>>2] = $135;
- return;
} else {
- $$2 = $135;
+ $$1 = $2;$$1382 = $14;$118 = $2;
+ label = 55;
}
- } else {
- $228 = $115 & -2;
- HEAP32[$114>>2] = $228;
- $229 = $$1382 | 1;
- $230 = ((($$1)) + 4|0);
- HEAP32[$230>>2] = $229;
- $231 = (($113) + ($$1382)|0);
- HEAP32[$231>>2] = $$1382;
- $$2 = $$1382;
- }
- $232 = $$2 >>> 3;
- $233 = ($$2>>>0)<(256);
- if ($233) {
- $234 = $232 << 1;
- $235 = (33184 + ($234<<2)|0);
- $236 = HEAP32[8286]|0;
- $237 = 1 << $232;
- $238 = $236 & $237;
- $239 = ($238|0)==(0);
- if ($239) {
- $240 = $236 | $237;
- HEAP32[8286] = $240;
- $$pre = ((($235)) + 8|0);
- $$0403 = $235;$$pre$phiZ2D = $$pre;
- } else {
- $241 = ((($235)) + 8|0);
- $242 = HEAP32[$241>>2]|0;
- $243 = HEAP32[(33160)>>2]|0;
- $244 = ($242>>>0)<($243>>>0);
- if ($244) {
+ } while(0);
+ do {
+ if ((label|0) == 55) {
+ $117 = ($118>>>0)<($15>>>0);
+ if (!($117)) {
_abort();
// unreachable;
- } else {
- $$0403 = $242;$$pre$phiZ2D = $241;
}
- }
- HEAP32[$$pre$phiZ2D>>2] = $$1;
- $245 = ((($$0403)) + 12|0);
- HEAP32[$245>>2] = $$1;
- $246 = ((($$1)) + 8|0);
- HEAP32[$246>>2] = $$0403;
- $247 = ((($$1)) + 12|0);
- HEAP32[$247>>2] = $235;
- return;
- }
- $248 = $$2 >>> 8;
- $249 = ($248|0)==(0);
- if ($249) {
- $$0396 = 0;
- } else {
- $250 = ($$2>>>0)>(16777215);
- if ($250) {
- $$0396 = 31;
- } else {
- $251 = (($248) + 1048320)|0;
- $252 = $251 >>> 16;
- $253 = $252 & 8;
- $254 = $248 << $253;
- $255 = (($254) + 520192)|0;
- $256 = $255 >>> 16;
- $257 = $256 & 4;
- $258 = $257 | $253;
- $259 = $254 << $257;
- $260 = (($259) + 245760)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 2;
- $263 = $258 | $262;
- $264 = (14 - ($263))|0;
- $265 = $259 << $262;
- $266 = $265 >>> 15;
- $267 = (($264) + ($266))|0;
- $268 = $267 << 1;
- $269 = (($267) + 7)|0;
- $270 = $$2 >>> $269;
- $271 = $270 & 1;
- $272 = $271 | $268;
- $$0396 = $272;
- }
- }
- $273 = (33448 + ($$0396<<2)|0);
- $274 = ((($$1)) + 28|0);
- HEAP32[$274>>2] = $$0396;
- $275 = ((($$1)) + 16|0);
- $276 = ((($$1)) + 20|0);
- HEAP32[$276>>2] = 0;
- HEAP32[$275>>2] = 0;
- $277 = HEAP32[(33148)>>2]|0;
- $278 = 1 << $$0396;
- $279 = $277 & $278;
- $280 = ($279|0)==(0);
- do {
- if ($280) {
- $281 = $277 | $278;
- HEAP32[(33148)>>2] = $281;
- HEAP32[$273>>2] = $$1;
- $282 = ((($$1)) + 24|0);
- HEAP32[$282>>2] = $273;
- $283 = ((($$1)) + 12|0);
- HEAP32[$283>>2] = $$1;
- $284 = ((($$1)) + 8|0);
- HEAP32[$284>>2] = $$1;
- } else {
- $285 = HEAP32[$273>>2]|0;
- $286 = ($$0396|0)==(31);
- $287 = $$0396 >>> 1;
- $288 = (25 - ($287))|0;
- $289 = $286 ? 0 : $288;
- $290 = $$2 << $289;
- $$0383 = $290;$$0384 = $285;
- while(1) {
- $291 = ((($$0384)) + 4|0);
- $292 = HEAP32[$291>>2]|0;
- $293 = $292 & -8;
- $294 = ($293|0)==($$2|0);
- if ($294) {
- label = 124;
+ $119 = ((($15)) + 4|0);
+ $120 = HEAP32[$119>>2]|0;
+ $121 = $120 & 1;
+ $122 = ($121|0)==(0);
+ if ($122) {
+ _abort();
+ // unreachable;
+ }
+ $123 = $120 & 2;
+ $124 = ($123|0)==(0);
+ if ($124) {
+ $125 = HEAP32[(35476)>>2]|0;
+ $126 = ($15|0)==($125|0);
+ $127 = HEAP32[(35472)>>2]|0;
+ if ($126) {
+ $128 = HEAP32[(35464)>>2]|0;
+ $129 = (($128) + ($$1382))|0;
+ HEAP32[(35464)>>2] = $129;
+ HEAP32[(35476)>>2] = $$1;
+ $130 = $129 | 1;
+ $131 = ((($$1)) + 4|0);
+ HEAP32[$131>>2] = $130;
+ $132 = ($$1|0)==($127|0);
+ if (!($132)) {
+ break;
+ }
+ HEAP32[(35472)>>2] = 0;
+ HEAP32[(35460)>>2] = 0;
+ break;
+ }
+ $133 = ($15|0)==($127|0);
+ if ($133) {
+ $134 = HEAP32[(35460)>>2]|0;
+ $135 = (($134) + ($$1382))|0;
+ HEAP32[(35460)>>2] = $135;
+ HEAP32[(35472)>>2] = $118;
+ $136 = $135 | 1;
+ $137 = ((($$1)) + 4|0);
+ HEAP32[$137>>2] = $136;
+ $138 = (($118) + ($135)|0);
+ HEAP32[$138>>2] = $135;
break;
}
- $295 = $$0383 >>> 31;
- $296 = (((($$0384)) + 16|0) + ($295<<2)|0);
- $297 = $$0383 << 1;
- $298 = HEAP32[$296>>2]|0;
- $299 = ($298|0)==(0|0);
- if ($299) {
- label = 121;
+ $139 = $120 & -8;
+ $140 = (($139) + ($$1382))|0;
+ $141 = $120 >>> 3;
+ $142 = ($120>>>0)<(256);
+ L106: do {
+ if ($142) {
+ $143 = ((($15)) + 8|0);
+ $144 = HEAP32[$143>>2]|0;
+ $145 = ((($15)) + 12|0);
+ $146 = HEAP32[$145>>2]|0;
+ $147 = $141 << 1;
+ $148 = (35492 + ($147<<2)|0);
+ $149 = ($144|0)==($148|0);
+ if (!($149)) {
+ $150 = HEAP32[(35468)>>2]|0;
+ $151 = ($144>>>0)<($150>>>0);
+ if ($151) {
+ _abort();
+ // unreachable;
+ }
+ $152 = ((($144)) + 12|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = ($153|0)==($15|0);
+ if (!($154)) {
+ _abort();
+ // unreachable;
+ }
+ }
+ $155 = ($146|0)==($144|0);
+ if ($155) {
+ $156 = 1 << $141;
+ $157 = $156 ^ -1;
+ $158 = HEAP32[8863]|0;
+ $159 = $158 & $157;
+ HEAP32[8863] = $159;
+ break;
+ }
+ $160 = ($146|0)==($148|0);
+ if ($160) {
+ $$pre442 = ((($146)) + 8|0);
+ $$pre$phi443Z2D = $$pre442;
+ } else {
+ $161 = HEAP32[(35468)>>2]|0;
+ $162 = ($146>>>0)<($161>>>0);
+ if ($162) {
+ _abort();
+ // unreachable;
+ }
+ $163 = ((($146)) + 8|0);
+ $164 = HEAP32[$163>>2]|0;
+ $165 = ($164|0)==($15|0);
+ if ($165) {
+ $$pre$phi443Z2D = $163;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ $166 = ((($144)) + 12|0);
+ HEAP32[$166>>2] = $146;
+ HEAP32[$$pre$phi443Z2D>>2] = $144;
+ } else {
+ $167 = ((($15)) + 24|0);
+ $168 = HEAP32[$167>>2]|0;
+ $169 = ((($15)) + 12|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==($15|0);
+ do {
+ if ($171) {
+ $182 = ((($15)) + 16|0);
+ $183 = ((($182)) + 4|0);
+ $184 = HEAP32[$183>>2]|0;
+ $185 = ($184|0)==(0|0);
+ if ($185) {
+ $186 = HEAP32[$182>>2]|0;
+ $187 = ($186|0)==(0|0);
+ if ($187) {
+ $$3400 = 0;
+ break;
+ } else {
+ $$1398 = $186;$$1402 = $182;
+ }
+ } else {
+ $$1398 = $184;$$1402 = $183;
+ }
+ while(1) {
+ $188 = ((($$1398)) + 20|0);
+ $189 = HEAP32[$188>>2]|0;
+ $190 = ($189|0)==(0|0);
+ if (!($190)) {
+ $$1398 = $189;$$1402 = $188;
+ continue;
+ }
+ $191 = ((($$1398)) + 16|0);
+ $192 = HEAP32[$191>>2]|0;
+ $193 = ($192|0)==(0|0);
+ if ($193) {
+ break;
+ } else {
+ $$1398 = $192;$$1402 = $191;
+ }
+ }
+ $194 = HEAP32[(35468)>>2]|0;
+ $195 = ($$1402>>>0)<($194>>>0);
+ if ($195) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1402>>2] = 0;
+ $$3400 = $$1398;
+ break;
+ }
+ } else {
+ $172 = ((($15)) + 8|0);
+ $173 = HEAP32[$172>>2]|0;
+ $174 = HEAP32[(35468)>>2]|0;
+ $175 = ($173>>>0)<($174>>>0);
+ if ($175) {
+ _abort();
+ // unreachable;
+ }
+ $176 = ((($173)) + 12|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ($177|0)==($15|0);
+ if (!($178)) {
+ _abort();
+ // unreachable;
+ }
+ $179 = ((($170)) + 8|0);
+ $180 = HEAP32[$179>>2]|0;
+ $181 = ($180|0)==($15|0);
+ if ($181) {
+ HEAP32[$176>>2] = $170;
+ HEAP32[$179>>2] = $173;
+ $$3400 = $170;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $196 = ($168|0)==(0|0);
+ if (!($196)) {
+ $197 = ((($15)) + 28|0);
+ $198 = HEAP32[$197>>2]|0;
+ $199 = (35756 + ($198<<2)|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($15|0)==($200|0);
+ do {
+ if ($201) {
+ HEAP32[$199>>2] = $$3400;
+ $cond422 = ($$3400|0)==(0|0);
+ if ($cond422) {
+ $202 = 1 << $198;
+ $203 = $202 ^ -1;
+ $204 = HEAP32[(35456)>>2]|0;
+ $205 = $204 & $203;
+ HEAP32[(35456)>>2] = $205;
+ break L106;
+ }
+ } else {
+ $206 = HEAP32[(35468)>>2]|0;
+ $207 = ($168>>>0)<($206>>>0);
+ if ($207) {
+ _abort();
+ // unreachable;
+ } else {
+ $208 = ((($168)) + 16|0);
+ $209 = HEAP32[$208>>2]|0;
+ $not$ = ($209|0)!=($15|0);
+ $$sink5 = $not$&1;
+ $210 = (((($168)) + 16|0) + ($$sink5<<2)|0);
+ HEAP32[$210>>2] = $$3400;
+ $211 = ($$3400|0)==(0|0);
+ if ($211) {
+ break L106;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $212 = HEAP32[(35468)>>2]|0;
+ $213 = ($$3400>>>0)<($212>>>0);
+ if ($213) {
+ _abort();
+ // unreachable;
+ }
+ $214 = ((($$3400)) + 24|0);
+ HEAP32[$214>>2] = $168;
+ $215 = ((($15)) + 16|0);
+ $216 = HEAP32[$215>>2]|0;
+ $217 = ($216|0)==(0|0);
+ do {
+ if (!($217)) {
+ $218 = ($216>>>0)<($212>>>0);
+ if ($218) {
+ _abort();
+ // unreachable;
+ } else {
+ $219 = ((($$3400)) + 16|0);
+ HEAP32[$219>>2] = $216;
+ $220 = ((($216)) + 24|0);
+ HEAP32[$220>>2] = $$3400;
+ break;
+ }
+ }
+ } while(0);
+ $221 = ((($215)) + 4|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
+ if (!($223)) {
+ $224 = HEAP32[(35468)>>2]|0;
+ $225 = ($222>>>0)<($224>>>0);
+ if ($225) {
+ _abort();
+ // unreachable;
+ } else {
+ $226 = ((($$3400)) + 20|0);
+ HEAP32[$226>>2] = $222;
+ $227 = ((($222)) + 24|0);
+ HEAP32[$227>>2] = $$3400;
+ break;
+ }
+ }
+ }
+ }
+ } while(0);
+ $228 = $140 | 1;
+ $229 = ((($$1)) + 4|0);
+ HEAP32[$229>>2] = $228;
+ $230 = (($118) + ($140)|0);
+ HEAP32[$230>>2] = $140;
+ $231 = HEAP32[(35472)>>2]|0;
+ $232 = ($$1|0)==($231|0);
+ if ($232) {
+ HEAP32[(35460)>>2] = $140;
break;
} else {
- $$0383 = $297;$$0384 = $298;
+ $$2 = $140;
}
- }
- if ((label|0) == 121) {
- $300 = HEAP32[(33160)>>2]|0;
- $301 = ($296>>>0)<($300>>>0);
- if ($301) {
- _abort();
- // unreachable;
+ } else {
+ $233 = $120 & -2;
+ HEAP32[$119>>2] = $233;
+ $234 = $$1382 | 1;
+ $235 = ((($$1)) + 4|0);
+ HEAP32[$235>>2] = $234;
+ $236 = (($118) + ($$1382)|0);
+ HEAP32[$236>>2] = $$1382;
+ $$2 = $$1382;
+ }
+ $237 = $$2 >>> 3;
+ $238 = ($$2>>>0)<(256);
+ if ($238) {
+ $239 = $237 << 1;
+ $240 = (35492 + ($239<<2)|0);
+ $241 = HEAP32[8863]|0;
+ $242 = 1 << $237;
+ $243 = $241 & $242;
+ $244 = ($243|0)==(0);
+ if ($244) {
+ $245 = $241 | $242;
+ HEAP32[8863] = $245;
+ $$pre = ((($240)) + 8|0);
+ $$0403 = $240;$$pre$phiZ2D = $$pre;
} else {
- HEAP32[$296>>2] = $$1;
- $302 = ((($$1)) + 24|0);
- HEAP32[$302>>2] = $$0384;
- $303 = ((($$1)) + 12|0);
- HEAP32[$303>>2] = $$1;
- $304 = ((($$1)) + 8|0);
- HEAP32[$304>>2] = $$1;
- break;
+ $246 = ((($240)) + 8|0);
+ $247 = HEAP32[$246>>2]|0;
+ $248 = HEAP32[(35468)>>2]|0;
+ $249 = ($247>>>0)<($248>>>0);
+ if ($249) {
+ _abort();
+ // unreachable;
+ } else {
+ $$0403 = $247;$$pre$phiZ2D = $246;
+ }
}
+ HEAP32[$$pre$phiZ2D>>2] = $$1;
+ $250 = ((($$0403)) + 12|0);
+ HEAP32[$250>>2] = $$1;
+ $251 = ((($$1)) + 8|0);
+ HEAP32[$251>>2] = $$0403;
+ $252 = ((($$1)) + 12|0);
+ HEAP32[$252>>2] = $240;
+ break;
}
- else if ((label|0) == 124) {
- $305 = ((($$0384)) + 8|0);
- $306 = HEAP32[$305>>2]|0;
- $307 = HEAP32[(33160)>>2]|0;
- $308 = ($306>>>0)>=($307>>>0);
- $not$437 = ($$0384>>>0)>=($307>>>0);
- $309 = $308 & $not$437;
- if ($309) {
- $310 = ((($306)) + 12|0);
- HEAP32[$310>>2] = $$1;
- HEAP32[$305>>2] = $$1;
- $311 = ((($$1)) + 8|0);
- HEAP32[$311>>2] = $306;
- $312 = ((($$1)) + 12|0);
- HEAP32[$312>>2] = $$0384;
- $313 = ((($$1)) + 24|0);
- HEAP32[$313>>2] = 0;
- break;
+ $253 = $$2 >>> 8;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $$0396 = 0;
+ } else {
+ $255 = ($$2>>>0)>(16777215);
+ if ($255) {
+ $$0396 = 31;
} else {
- _abort();
- // unreachable;
+ $256 = (($253) + 1048320)|0;
+ $257 = $256 >>> 16;
+ $258 = $257 & 8;
+ $259 = $253 << $258;
+ $260 = (($259) + 520192)|0;
+ $261 = $260 >>> 16;
+ $262 = $261 & 4;
+ $263 = $262 | $258;
+ $264 = $259 << $262;
+ $265 = (($264) + 245760)|0;
+ $266 = $265 >>> 16;
+ $267 = $266 & 2;
+ $268 = $263 | $267;
+ $269 = (14 - ($268))|0;
+ $270 = $264 << $267;
+ $271 = $270 >>> 15;
+ $272 = (($269) + ($271))|0;
+ $273 = $272 << 1;
+ $274 = (($272) + 7)|0;
+ $275 = $$2 >>> $274;
+ $276 = $275 & 1;
+ $277 = $276 | $273;
+ $$0396 = $277;
+ }
+ }
+ $278 = (35756 + ($$0396<<2)|0);
+ $279 = ((($$1)) + 28|0);
+ HEAP32[$279>>2] = $$0396;
+ $280 = ((($$1)) + 16|0);
+ $281 = ((($$1)) + 20|0);
+ HEAP32[$281>>2] = 0;
+ HEAP32[$280>>2] = 0;
+ $282 = HEAP32[(35456)>>2]|0;
+ $283 = 1 << $$0396;
+ $284 = $282 & $283;
+ $285 = ($284|0)==(0);
+ do {
+ if ($285) {
+ $286 = $282 | $283;
+ HEAP32[(35456)>>2] = $286;
+ HEAP32[$278>>2] = $$1;
+ $287 = ((($$1)) + 24|0);
+ HEAP32[$287>>2] = $278;
+ $288 = ((($$1)) + 12|0);
+ HEAP32[$288>>2] = $$1;
+ $289 = ((($$1)) + 8|0);
+ HEAP32[$289>>2] = $$1;
+ } else {
+ $290 = HEAP32[$278>>2]|0;
+ $291 = ($$0396|0)==(31);
+ $292 = $$0396 >>> 1;
+ $293 = (25 - ($292))|0;
+ $294 = $291 ? 0 : $293;
+ $295 = $$2 << $294;
+ $$0383 = $295;$$0384 = $290;
+ while(1) {
+ $296 = ((($$0384)) + 4|0);
+ $297 = HEAP32[$296>>2]|0;
+ $298 = $297 & -8;
+ $299 = ($298|0)==($$2|0);
+ if ($299) {
+ label = 126;
+ break;
+ }
+ $300 = $$0383 >>> 31;
+ $301 = (((($$0384)) + 16|0) + ($300<<2)|0);
+ $302 = $$0383 << 1;
+ $303 = HEAP32[$301>>2]|0;
+ $304 = ($303|0)==(0|0);
+ if ($304) {
+ label = 123;
+ break;
+ } else {
+ $$0383 = $302;$$0384 = $303;
+ }
+ }
+ if ((label|0) == 123) {
+ $305 = HEAP32[(35468)>>2]|0;
+ $306 = ($301>>>0)<($305>>>0);
+ if ($306) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$301>>2] = $$1;
+ $307 = ((($$1)) + 24|0);
+ HEAP32[$307>>2] = $$0384;
+ $308 = ((($$1)) + 12|0);
+ HEAP32[$308>>2] = $$1;
+ $309 = ((($$1)) + 8|0);
+ HEAP32[$309>>2] = $$1;
+ break;
+ }
+ }
+ else if ((label|0) == 126) {
+ $310 = ((($$0384)) + 8|0);
+ $311 = HEAP32[$310>>2]|0;
+ $312 = HEAP32[(35468)>>2]|0;
+ $313 = ($311>>>0)>=($312>>>0);
+ $not$437 = ($$0384>>>0)>=($312>>>0);
+ $314 = $313 & $not$437;
+ if ($314) {
+ $315 = ((($311)) + 12|0);
+ HEAP32[$315>>2] = $$1;
+ HEAP32[$310>>2] = $$1;
+ $316 = ((($$1)) + 8|0);
+ HEAP32[$316>>2] = $311;
+ $317 = ((($$1)) + 12|0);
+ HEAP32[$317>>2] = $$0384;
+ $318 = ((($$1)) + 24|0);
+ HEAP32[$318>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ }
+ } while(0);
+ $319 = HEAP32[(35484)>>2]|0;
+ $320 = (($319) + -1)|0;
+ HEAP32[(35484)>>2] = $320;
+ $321 = ($320|0)==(0);
+ if ($321) {
+ $$0212$in$i = (35936);
+ while(1) {
+ $$0212$i = HEAP32[$$0212$in$i>>2]|0;
+ $322 = ($$0212$i|0)==(0|0);
+ $323 = ((($$0212$i)) + 8|0);
+ if ($322) {
+ break;
+ } else {
+ $$0212$in$i = $323;
+ }
}
+ HEAP32[(35484)>>2] = -1;
}
}
} while(0);
- $314 = HEAP32[(33176)>>2]|0;
- $315 = (($314) + -1)|0;
- HEAP32[(33176)>>2] = $315;
- $316 = ($315|0)==(0);
- if ($316) {
- $$0212$in$i = (33600);
- } else {
+ $324 = HEAP32[(35896)>>2]|0;
+ $325 = $324 & 2;
+ $326 = ($325|0)==(0);
+ if ($326) {
return;
}
- while(1) {
- $$0212$i = HEAP32[$$0212$in$i>>2]|0;
- $317 = ($$0212$i|0)==(0|0);
- $318 = ((($$0212$i)) + 8|0);
- if ($317) {
- break;
- } else {
- $$0212$in$i = $318;
- }
- }
- HEAP32[(33176)>>2] = -1;
+ (___pthread_mutex_unlock((35900))|0);
return;
}
function runPostSets() {
@@ -27095,6 +33460,9 @@ function _roundf(f) {
f = +f;
return f >= +0 ? +Math_floor(f + +0.5) : +Math_ceil(f - +0.5); // TODO: use fround?
}
+function _emscripten_set_current_thread_status(newStatus) {
+ newStatus = newStatus|0;
+}
function _bitshift64Lshr(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
@@ -27106,6 +33474,10 @@ function _bitshift64Lshr(low, high, bits) {
tempRet0 = 0;
return (high >>> (bits - 32))|0;
}
+function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) {
+ expectedStatus = expectedStatus|0;
+ newStatus = newStatus|0;
+}
function _sbrk(increment) {
increment = increment|0;
var oldDynamicTop = 0;
@@ -27113,25 +33485,24 @@ function _sbrk(increment) {
var newDynamicTop = 0;
var totalMemory = 0;
increment = ((increment + 15) & -16)|0;
- oldDynamicTop = HEAP32[DYNAMICTOP_PTR>>2]|0;
- newDynamicTop = oldDynamicTop + increment | 0;
-
- if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
- | (newDynamicTop|0) < 0) { // Also underflow, sbrk() should be able to be used to subtract.
- abortOnCannotGrowMemory()|0;
- ___setErrNo(12);
- return -1;
- }
-
- HEAP32[DYNAMICTOP_PTR>>2] = newDynamicTop;
totalMemory = getTotalMemory()|0;
- if ((newDynamicTop|0) > (totalMemory|0)) {
- if ((enlargeMemory()|0) == 0) {
- ___setErrNo(12);
- HEAP32[DYNAMICTOP_PTR>>2] = oldDynamicTop;
- return -1;
+
+ // Perform a compare-and-swap loop to update the new dynamic top value. This is because
+ // this function can becalled simultaneously in multiple threads.
+ do {
+ oldDynamicTop = Atomics_load(HEAP32, DYNAMICTOP_PTR>>2)|0;
+ newDynamicTop = oldDynamicTop + increment | 0;
+ // Asking to increase dynamic top to a too high value? In pthreads builds we cannot
+ // enlarge memory, so this needs to fail.
+ if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
+ | (newDynamicTop|0) < 0 // Also underflow, sbrk() should be able to be used to subtract.
+ | (newDynamicTop|0) > (totalMemory|0)) {
+ abortOnCannotGrowMemory()|0;
}
- }
+ // Attempt to update the dynamic top to new value. Another thread may have beat this thread to the update,
+ // in which case we will need to start over by iterating the loop body again.
+ oldDynamicTopOnChange = Atomics_compareExchange(HEAP32, DYNAMICTOP_PTR>>2, oldDynamicTop|0, newDynamicTop|0)|0;
+ } while((oldDynamicTopOnChange|0) != (oldDynamicTop|0));
return oldDynamicTop|0;
}
function _bitshift64Shl(low, high, bits) {
@@ -27919,25 +34290,43 @@ var FUNCTION_TABLE_i = [b17,_emscripten_glCreateProgram__wrapper,_emscripten_glG
var FUNCTION_TABLE_vdddddd = [b18,_emscripten_glFrustum__wrapper];
var FUNCTION_TABLE_vdddd = [b19,_emscripten_glRotatef__wrapper,_emscripten_glClearColor__wrapper,_emscripten_glBlendColor__wrapper];
var FUNCTION_TABLE_vdd = [b20,_emscripten_glDepthRange__wrapper,_emscripten_glDepthRangef__wrapper,_emscripten_glPolygonOffset__wrapper];
-var FUNCTION_TABLE_v = [b21,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21,b21];
+var FUNCTION_TABLE_v = [b21,_UpdateDrawFrame,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21];
var FUNCTION_TABLE_viid = [b22,_emscripten_glTexParameterf__wrapper];
var FUNCTION_TABLE_viiii = [b23,_MouseButtonCallback,_emscripten_glBufferData__wrapper,_emscripten_glBufferSubData__wrapper,_emscripten_glUniform3i__wrapper,_emscripten_glUniformMatrix2fv__wrapper,_emscripten_glUniformMatrix3fv__wrapper,_emscripten_glUniformMatrix4fv__wrapper,_emscripten_glGetAttachedShaders__wrapper,_emscripten_glShaderSource__wrapper,_emscripten_glGetShaderSource__wrapper,_emscripten_glGetShaderInfoLog__wrapper,_emscripten_glGetShaderPrecisionFormat__wrapper,_emscripten_glGetProgramInfoLog__wrapper,_emscripten_glFramebufferRenderbuffer__wrapper,_emscripten_glGetFramebufferAttachmentParameteriv__wrapper,_emscripten_glGetInfoLogARB__wrapper,_emscripten_glVertexPointer__wrapper,_emscripten_glTexCoordPointer__wrapper,_emscripten_glColorPointer__wrapper,_emscripten_glDrawElements__wrapper,_emscripten_glDrawArraysInstanced__wrapper,_emscripten_glViewport__wrapper,_emscripten_glScissor__wrapper,_emscripten_glColorMask__wrapper,_emscripten_glRenderbufferStorage__wrapper,_emscripten_glBlendFuncSeparate__wrapper,_emscripten_glStencilFuncSeparate__wrapper,_emscripten_glStencilOpSeparate__wrapper,b23,b23,b23];
- return { _roundf: _roundf, _main: _main, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _fflush: _fflush, _memset: _memset, _sbrk: _sbrk, _memcpy: _memcpy, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, ___uremdi3: ___uremdi3, _i64Subtract: _i64Subtract, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_get_global_libc: _emscripten_get_global_libc, _emscripten_GetProcAddress: _emscripten_GetProcAddress, ___udivdi3: ___udivdi3, ___errno_location: ___errno_location, ___muldsi3: ___muldsi3, _free: _free, _memmove: _memmove, _strstr: _strstr, _malloc: _malloc, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
+ return { _emscripten_sync_run_in_main_thread_3: _emscripten_sync_run_in_main_thread_3, _roundf: _roundf, _bitshift64Shl: _bitshift64Shl, _emscripten_atomic_load_f32: _emscripten_atomic_load_f32, ___uremdi3: ___uremdi3, ___udivdi3: ___udivdi3, _emscripten_atomic_xor_u64: _emscripten_atomic_xor_u64, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _emscripten_atomic_and_u64: _emscripten_atomic_and_u64, _emscripten_sync_run_in_main_thread: _emscripten_sync_run_in_main_thread, _emscripten_sync_run_in_main_thread_4: _emscripten_sync_run_in_main_thread_4, _emscripten_sync_run_in_main_thread_5: _emscripten_sync_run_in_main_thread_5, _emscripten_sync_run_in_main_thread_6: _emscripten_sync_run_in_main_thread_6, _emscripten_sync_run_in_main_thread_7: _emscripten_sync_run_in_main_thread_7, _emscripten_sync_run_in_main_thread_0: _emscripten_sync_run_in_main_thread_0, _emscripten_sync_run_in_main_thread_1: _emscripten_sync_run_in_main_thread_1, _emscripten_sync_run_in_main_thread_2: _emscripten_sync_run_in_main_thread_2, __emscripten_atomic_fetch_and_sub_u64: __emscripten_atomic_fetch_and_sub_u64, _emscripten_atomic_exchange_u32: _emscripten_atomic_exchange_u32, _fflush: _fflush, _emscripten_set_current_thread_status: _emscripten_set_current_thread_status, _emscripten_atomic_cas_u64: _emscripten_atomic_cas_u64, _memset: _memset, _emscripten_atomic_sub_u64: _emscripten_atomic_sub_u64, _emscripten_sync_run_in_main_thread_xprintf_varargs: _emscripten_sync_run_in_main_thread_xprintf_varargs, _i64Subtract: _i64Subtract, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, __emscripten_atomic_fetch_and_and_u64: __emscripten_atomic_fetch_and_and_u64, _emscripten_atomic_add_u64: _emscripten_atomic_add_u64, _emscripten_atomic_store_f64: _emscripten_atomic_store_f64, ___muldsi3: ___muldsi3, __emscripten_atomic_fetch_and_xor_u64: __emscripten_atomic_fetch_and_xor_u64, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_atomic_store_u64: _emscripten_atomic_store_u64, _emscripten_atomic_load_f64: _emscripten_atomic_load_f64, _emscripten_get_global_libc: _emscripten_get_global_libc, __emscripten_atomic_fetch_and_add_u64: __emscripten_atomic_fetch_and_add_u64, __emscripten_atomic_fetch_and_or_u64: __emscripten_atomic_fetch_and_or_u64, _emscripten_GetProcAddress: _emscripten_GetProcAddress, _emscripten_async_run_in_main_thread: _emscripten_async_run_in_main_thread, ___errno_location: ___errno_location, _main: _main, _emscripten_main_thread_process_queued_calls: _emscripten_main_thread_process_queued_calls, _emscripten_atomic_load_u64: _emscripten_atomic_load_u64, _free: _free, _emscripten_atomic_store_f32: _emscripten_atomic_store_f32, _emscripten_atomic_exchange_u64: _emscripten_atomic_exchange_u64, _memmove: _memmove, ___pthread_tsd_run_dtors: ___pthread_tsd_run_dtors, _malloc: _malloc, _memcpy: _memcpy, _emscripten_conditional_set_current_thread_status: _emscripten_conditional_set_current_thread_status, _sbrk: _sbrk, _emscripten_atomic_or_u64: _emscripten_atomic_or_u64, _strstr: _strstr, ___emscripten_pthread_data_constructor: ___emscripten_pthread_data_constructor, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
+var real___emscripten_atomic_fetch_and_xor_u64 = asm["__emscripten_atomic_fetch_and_xor_u64"]; asm["__emscripten_atomic_fetch_and_xor_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_xor_u64.apply(null, arguments);
+};
+
var real__roundf = asm["_roundf"]; asm["_roundf"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__roundf.apply(null, arguments);
};
-var real__main = asm["_main"]; asm["_main"] = function() {
+var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__main.apply(null, arguments);
+return real__bitshift64Shl.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f32 = asm["_emscripten_atomic_load_f32"]; asm["_emscripten_atomic_load_f32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f32.apply(null, arguments);
+};
+
+var real____emscripten_pthread_data_constructor = asm["___emscripten_pthread_data_constructor"]; asm["___emscripten_pthread_data_constructor"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____emscripten_pthread_data_constructor.apply(null, arguments);
};
var real_stackSave = asm["stackSave"]; asm["stackSave"] = function() {
@@ -27946,16 +34335,22 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackSave.apply(null, arguments);
};
-var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
+var real__emscripten_atomic_xor_u64 = asm["_emscripten_atomic_xor_u64"]; asm["_emscripten_atomic_xor_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_getTempRet0.apply(null, arguments);
+return real__emscripten_atomic_xor_u64.apply(null, arguments);
};
-var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
+var real__emscripten_atomic_load_u64 = asm["_emscripten_atomic_load_u64"]; asm["_emscripten_atomic_load_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_setThrew.apply(null, arguments);
+return real__emscripten_atomic_load_u64.apply(null, arguments);
+};
+
+var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivdi3.apply(null, arguments);
};
var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() {
@@ -27964,10 +34359,76 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__bitshift64Lshr.apply(null, arguments);
};
-var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
+var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__bitshift64Shl.apply(null, arguments);
+return real_getTempRet0.apply(null, arguments);
+};
+
+var real__emscripten_atomic_and_u64 = asm["_emscripten_atomic_and_u64"]; asm["_emscripten_atomic_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread = asm["_emscripten_sync_run_in_main_thread"]; asm["_emscripten_sync_run_in_main_thread"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_4 = asm["_emscripten_sync_run_in_main_thread_4"]; asm["_emscripten_sync_run_in_main_thread_4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_4.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_5 = asm["_emscripten_sync_run_in_main_thread_5"]; asm["_emscripten_sync_run_in_main_thread_5"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_5.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_6 = asm["_emscripten_sync_run_in_main_thread_6"]; asm["_emscripten_sync_run_in_main_thread_6"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_6.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_7 = asm["_emscripten_sync_run_in_main_thread_7"]; asm["_emscripten_sync_run_in_main_thread_7"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_7.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_0 = asm["_emscripten_sync_run_in_main_thread_0"]; asm["_emscripten_sync_run_in_main_thread_0"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_0.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_1 = asm["_emscripten_sync_run_in_main_thread_1"]; asm["_emscripten_sync_run_in_main_thread_1"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_1.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_2 = asm["_emscripten_sync_run_in_main_thread_2"]; asm["_emscripten_sync_run_in_main_thread_2"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_2.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_sub_u64 = asm["__emscripten_atomic_fetch_and_sub_u64"]; asm["__emscripten_atomic_fetch_and_sub_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_sub_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_exchange_u32 = asm["_emscripten_atomic_exchange_u32"]; asm["_emscripten_atomic_exchange_u32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_exchange_u32.apply(null, arguments);
};
var real__fflush = asm["_fflush"]; asm["_fflush"] = function() {
@@ -27976,22 +34437,46 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__fflush.apply(null, arguments);
};
+var real__emscripten_set_current_thread_status = asm["_emscripten_set_current_thread_status"]; asm["_emscripten_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_set_current_thread_status.apply(null, arguments);
+};
+
+var real__emscripten_atomic_cas_u64 = asm["_emscripten_atomic_cas_u64"]; asm["_emscripten_atomic_cas_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_cas_u64.apply(null, arguments);
+};
+
var real__llvm_cttz_i32 = asm["_llvm_cttz_i32"]; asm["_llvm_cttz_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__llvm_cttz_i32.apply(null, arguments);
};
-var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+var real__emscripten_atomic_sub_u64 = asm["_emscripten_atomic_sub_u64"]; asm["_emscripten_atomic_sub_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__sbrk.apply(null, arguments);
+return real__emscripten_atomic_sub_u64.apply(null, arguments);
};
-var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
+var real__main = asm["_main"]; asm["_main"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__llvm_bswap_i32.apply(null, arguments);
+return real__main.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_xprintf_varargs = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"]; asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_xprintf_varargs.apply(null, arguments);
+};
+
+var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____errno_location.apply(null, arguments);
};
var real____muldi3 = asm["___muldi3"]; asm["___muldi3"] = function() {
@@ -28000,6 +34485,18 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldi3.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_and_u64 = asm["__emscripten_atomic_fetch_and_and_u64"]; asm["__emscripten_atomic_fetch_and_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_3 = asm["_emscripten_sync_run_in_main_thread_3"]; asm["_emscripten_sync_run_in_main_thread_3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_3.apply(null, arguments);
+};
+
var real____uremdi3 = asm["___uremdi3"]; asm["___uremdi3"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28018,12 +34515,6 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Subtract.apply(null, arguments);
};
-var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
-assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
-assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivmoddi4.apply(null, arguments);
-};
-
var real_setTempRet0 = asm["setTempRet0"]; asm["setTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28036,28 +34527,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Add.apply(null, arguments);
};
+var real__emscripten_atomic_store_u64 = asm["_emscripten_atomic_store_u64"]; asm["_emscripten_atomic_store_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f64 = asm["_emscripten_atomic_load_f64"]; asm["_emscripten_atomic_load_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f64.apply(null, arguments);
+};
+
var real__emscripten_get_global_libc = asm["_emscripten_get_global_libc"]; asm["_emscripten_get_global_libc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_get_global_libc.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_add_u64 = asm["__emscripten_atomic_fetch_and_add_u64"]; asm["__emscripten_atomic_fetch_and_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_add_u64.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_or_u64 = asm["__emscripten_atomic_fetch_and_or_u64"]; asm["__emscripten_atomic_fetch_and_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_or_u64.apply(null, arguments);
+};
+
var real__emscripten_GetProcAddress = asm["_emscripten_GetProcAddress"]; asm["_emscripten_GetProcAddress"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_GetProcAddress.apply(null, arguments);
};
-var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+var real__emscripten_async_run_in_main_thread = asm["_emscripten_async_run_in_main_thread"]; asm["_emscripten_async_run_in_main_thread"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivdi3.apply(null, arguments);
+return real__emscripten_async_run_in_main_thread.apply(null, arguments);
};
-var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____errno_location.apply(null, arguments);
+return real__llvm_bswap_i32.apply(null, arguments);
};
var real____muldsi3 = asm["___muldsi3"]; asm["___muldsi3"] = function() {
@@ -28066,28 +34581,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldsi3.apply(null, arguments);
};
+var real__emscripten_main_thread_process_queued_calls = asm["_emscripten_main_thread_process_queued_calls"]; asm["_emscripten_main_thread_process_queued_calls"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_main_thread_process_queued_calls.apply(null, arguments);
+};
+
+var real__emscripten_atomic_add_u64 = asm["_emscripten_atomic_add_u64"]; asm["_emscripten_atomic_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_add_u64.apply(null, arguments);
+};
+
var real__free = asm["_free"]; asm["_free"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__free.apply(null, arguments);
};
-var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+var real__emscripten_atomic_store_f32 = asm["_emscripten_atomic_store_f32"]; asm["_emscripten_atomic_store_f32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_establishStackSpace.apply(null, arguments);
+return real__emscripten_atomic_store_f32.apply(null, arguments);
};
-var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__memmove.apply(null, arguments);
+return real_setThrew.apply(null, arguments);
};
-var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+var real__emscripten_atomic_exchange_u64 = asm["_emscripten_atomic_exchange_u64"]; asm["_emscripten_atomic_exchange_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__strstr.apply(null, arguments);
+return real__emscripten_atomic_exchange_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_store_f64 = asm["_emscripten_atomic_store_f64"]; asm["_emscripten_atomic_store_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_f64.apply(null, arguments);
+};
+
+var real____pthread_tsd_run_dtors = asm["___pthread_tsd_run_dtors"]; asm["___pthread_tsd_run_dtors"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____pthread_tsd_run_dtors.apply(null, arguments);
};
var real_stackRestore = asm["stackRestore"]; asm["stackRestore"] = function() {
@@ -28096,43 +34635,120 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackRestore.apply(null, arguments);
};
+var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivmoddi4.apply(null, arguments);
+};
+
var real__malloc = asm["_malloc"]; asm["_malloc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__malloc.apply(null, arguments);
};
+
+var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real_establishStackSpace.apply(null, arguments);
+};
+
+var real__emscripten_conditional_set_current_thread_status = asm["_emscripten_conditional_set_current_thread_status"]; asm["_emscripten_conditional_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_conditional_set_current_thread_status.apply(null, arguments);
+};
+
+var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__sbrk.apply(null, arguments);
+};
+
+var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__memmove.apply(null, arguments);
+};
+
+var real__emscripten_atomic_or_u64 = asm["_emscripten_atomic_or_u64"]; asm["_emscripten_atomic_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_or_u64.apply(null, arguments);
+};
+
+var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__strstr.apply(null, arguments);
+};
+var __emscripten_atomic_fetch_and_xor_u64 = Module["__emscripten_atomic_fetch_and_xor_u64"] = asm["__emscripten_atomic_fetch_and_xor_u64"];
var _roundf = Module["_roundf"] = asm["_roundf"];
-var _main = Module["_main"] = asm["_main"];
+var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var _emscripten_atomic_load_f32 = Module["_emscripten_atomic_load_f32"] = asm["_emscripten_atomic_load_f32"];
+var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = asm["___emscripten_pthread_data_constructor"];
var stackSave = Module["stackSave"] = asm["stackSave"];
-var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
-var _memset = Module["_memset"] = asm["_memset"];
-var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_xor_u64 = Module["_emscripten_atomic_xor_u64"] = asm["_emscripten_atomic_xor_u64"];
+var _emscripten_atomic_load_u64 = Module["_emscripten_atomic_load_u64"] = asm["_emscripten_atomic_load_u64"];
+var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
-var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
+var _emscripten_atomic_and_u64 = Module["_emscripten_atomic_and_u64"] = asm["_emscripten_atomic_and_u64"];
+var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = asm["_emscripten_sync_run_in_main_thread"];
+var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = asm["_emscripten_sync_run_in_main_thread_4"];
+var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = asm["_emscripten_sync_run_in_main_thread_5"];
+var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = asm["_emscripten_sync_run_in_main_thread_6"];
+var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = asm["_emscripten_sync_run_in_main_thread_7"];
+var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = asm["_emscripten_sync_run_in_main_thread_0"];
+var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = asm["_emscripten_sync_run_in_main_thread_1"];
+var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = asm["_emscripten_sync_run_in_main_thread_2"];
+var __emscripten_atomic_fetch_and_sub_u64 = Module["__emscripten_atomic_fetch_and_sub_u64"] = asm["__emscripten_atomic_fetch_and_sub_u64"];
+var _emscripten_atomic_exchange_u32 = Module["_emscripten_atomic_exchange_u32"] = asm["_emscripten_atomic_exchange_u32"];
var _fflush = Module["_fflush"] = asm["_fflush"];
+var _emscripten_set_current_thread_status = Module["_emscripten_set_current_thread_status"] = asm["_emscripten_set_current_thread_status"];
+var _emscripten_atomic_cas_u64 = Module["_emscripten_atomic_cas_u64"] = asm["_emscripten_atomic_cas_u64"];
var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"];
-var _sbrk = Module["_sbrk"] = asm["_sbrk"];
+var _emscripten_atomic_sub_u64 = Module["_emscripten_atomic_sub_u64"] = asm["_emscripten_atomic_sub_u64"];
+var _main = Module["_main"] = asm["_main"];
+var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
-var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
var ___muldi3 = Module["___muldi3"] = asm["___muldi3"];
+var __emscripten_atomic_fetch_and_and_u64 = Module["__emscripten_atomic_fetch_and_and_u64"] = asm["__emscripten_atomic_fetch_and_and_u64"];
+var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = asm["_emscripten_sync_run_in_main_thread_3"];
var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"];
var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
-var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _memset = Module["_memset"] = asm["_memset"];
var setTempRet0 = Module["setTempRet0"] = asm["setTempRet0"];
var _i64Add = Module["_i64Add"] = asm["_i64Add"];
+var _emscripten_atomic_store_u64 = Module["_emscripten_atomic_store_u64"] = asm["_emscripten_atomic_store_u64"];
+var _emscripten_atomic_load_f64 = Module["_emscripten_atomic_load_f64"] = asm["_emscripten_atomic_load_f64"];
var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = asm["_emscripten_get_global_libc"];
+var __emscripten_atomic_fetch_and_add_u64 = Module["__emscripten_atomic_fetch_and_add_u64"] = asm["__emscripten_atomic_fetch_and_add_u64"];
+var __emscripten_atomic_fetch_and_or_u64 = Module["__emscripten_atomic_fetch_and_or_u64"] = asm["__emscripten_atomic_fetch_and_or_u64"];
var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = asm["_emscripten_GetProcAddress"];
-var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
-var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
+var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = asm["_emscripten_async_run_in_main_thread"];
+var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var ___muldsi3 = Module["___muldsi3"] = asm["___muldsi3"];
+var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = asm["_emscripten_main_thread_process_queued_calls"];
+var _emscripten_atomic_add_u64 = Module["_emscripten_atomic_add_u64"] = asm["_emscripten_atomic_add_u64"];
var _free = Module["_free"] = asm["_free"];
-var runPostSets = Module["runPostSets"] = asm["runPostSets"];
+var _emscripten_atomic_store_f32 = Module["_emscripten_atomic_store_f32"] = asm["_emscripten_atomic_store_f32"];
+var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_exchange_u64 = Module["_emscripten_atomic_exchange_u64"] = asm["_emscripten_atomic_exchange_u64"];
+var _emscripten_atomic_store_f64 = Module["_emscripten_atomic_store_f64"] = asm["_emscripten_atomic_store_f64"];
+var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = asm["___pthread_tsd_run_dtors"];
+var stackRestore = Module["stackRestore"] = asm["stackRestore"];
+var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _malloc = Module["_malloc"] = asm["_malloc"];
var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"];
+var _emscripten_conditional_set_current_thread_status = Module["_emscripten_conditional_set_current_thread_status"] = asm["_emscripten_conditional_set_current_thread_status"];
+var _sbrk = Module["_sbrk"] = asm["_sbrk"];
var _memmove = Module["_memmove"] = asm["_memmove"];
+var _emscripten_atomic_or_u64 = Module["_emscripten_atomic_or_u64"] = asm["_emscripten_atomic_or_u64"];
var _strstr = Module["_strstr"] = asm["_strstr"];
-var stackRestore = Module["stackRestore"] = asm["stackRestore"];
-var _malloc = Module["_malloc"] = asm["_malloc"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_vd = Module["dynCall_vd"] = asm["dynCall_vd"];
var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"];
@@ -28314,6 +34930,7 @@ function exit(status, implicit) {
if (Module['noExitRuntime']) {
Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');
} else {
+ PThread.terminateAllThreads();
ABORT = true;
EXITSTATUS = status;
@@ -28334,6 +34951,7 @@ Module['exit'] = Module.exit = exit;
var abortDecorators = [];
function abort(what) {
+ if (ENVIRONMENT_IS_PTHREAD) console.error('Pthread aborting at ' + new Error().stack);
if (what !== undefined) {
Module.print(what);
Module.printErr(what);
@@ -28373,7 +34991,7 @@ if (Module['noInitialRun']) {
}
-run();
+if (!ENVIRONMENT_IS_PTHREAD) run();
// {{POST_RUN_ADDITIONS}}
diff --git a/docs/examples/web/physac/physics_restitution.c b/docs/examples/web/physac/physics_restitution.c
index 534d125e..70d0a14a 100644
--- a/docs/examples/web/physac/physics_restitution.c
+++ b/docs/examples/web/physac/physics_restitution.c
@@ -2,9 +2,11 @@
*
* Physac - Physics restitution
*
-* NOTE: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 1: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 2: Physac requires static C library linkage to avoid dependency on MinGW DLL (-static -lpthread)
+*
+* Use the following line to compile:
*
-* Use the following code to compile (-static -lpthread):
* gcc -o $(NAME_PART).exe $(FILE_NAME) -s $(RAYLIB_DIR)\raylib\raylib_icon -static -lraylib -lpthread
* -lglfw3 -lopengl32 -lgdi32 -lopenal32 -lwinmm -std=c99 -Wl,--subsystem,windows -Wl,-allow-multiple-definition
*
@@ -15,104 +17,140 @@
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
-#include "../src/physac.h"
-
+#include "physac.h"
+
+#if defined(PLATFORM_WEB)
+ #include <emscripten/emscripten.h>
+#endif
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+int screenWidth = 800;
+int screenHeight = 450;
+
+// Physac logo drawing position
+int logoX = 0;
+int logoY = 15;
+
+PhysicsBody circleA;
+PhysicsBody circleB;
+PhysicsBody circleC;
+
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void); // Update and Draw one frame
+
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 450;
-
SetConfigFlags(FLAG_MSAA_4X_HINT);
InitWindow(screenWidth, screenHeight, "Physac [raylib] - Physics restitution");
- SetTargetFPS(60);
// Physac logo drawing position
- int logoX = screenWidth - MeasureText("Physac", 30) - 10;
- int logoY = 15;
+ logoX = screenWidth - MeasureText("Physac", 30) - 10;
// Initialize physics and default physics bodies
InitPhysics();
- // Create floor rectangle physics body
- PhysicsBody floor = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, screenWidth, 100, 10);
- floor->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
- floor->restitution = 1;
+ // Create ground rectangle physics body
+ PhysicsBody ground = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, screenWidth, 100, 10);
+ ground->enabled = false; // Disable body state to convert it to static (no dynamics, but collisions)
+ ground->restitution = 1;
// Create circles physics body
- PhysicsBody circleA = CreatePhysicsBodyCircle((Vector2){ screenWidth*0.25f, screenHeight/2 }, 30, 10);
+ circleA = CreatePhysicsBodyCircle((Vector2){ screenWidth*0.25f, screenHeight/2 }, 30, 10);
circleA->restitution = 0;
- PhysicsBody circleB = CreatePhysicsBodyCircle((Vector2){ screenWidth*0.5f, screenHeight/2 }, 30, 10);
+ circleB = CreatePhysicsBodyCircle((Vector2){ screenWidth*0.5f, screenHeight/2 }, 30, 10);
circleB->restitution = 0.5f;
- PhysicsBody circleC = CreatePhysicsBodyCircle((Vector2){ screenWidth*0.75f, screenHeight/2 }, 30, 10);
+ circleC = CreatePhysicsBodyCircle((Vector2){ screenWidth*0.75f, screenHeight/2 }, 30, 10);
circleC->restitution = 1;
- //--------------------------------------------------------------------------------------
+#if defined(PLATFORM_WEB)
+ emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
- // Update
- //----------------------------------------------------------------------------------
- if (IsKeyPressed('R')) // Reset physics input
- {
- // Reset circles physics bodies position and velocity
- circleA->position = (Vector2){ screenWidth*0.25f, screenHeight/2 };
- circleA->velocity = (Vector2){ 0, 0 };
- circleB->position = (Vector2){ screenWidth*0.5f, screenHeight/2 };
- circleB->velocity = (Vector2){ 0, 0 };
- circleC->position = (Vector2){ screenWidth*0.75f, screenHeight/2 };
- circleC->velocity = (Vector2){ 0, 0 };
- }
- //----------------------------------------------------------------------------------
+ UpdateDrawFrame();
+ }
+#endif
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ ClosePhysics(); // Uninitialize physics
- ClearBackground(BLACK);
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
- DrawFPS(screenWidth - 90, screenHeight - 30);
+ return 0;
+}
- // Draw created physics bodies
- int bodiesCount = GetPhysicsBodiesCount();
- for (int i = 0; i < bodiesCount; i++)
- {
- PhysicsBody body = GetPhysicsBody(i);
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+ // Update
+ //----------------------------------------------------------------------------------
+ if (IsKeyPressed('R')) // Reset physics input
+ {
+ // Reset circles physics bodies position and velocity
+ circleA->position = (Vector2){ screenWidth*0.25f, screenHeight/2 };
+ circleA->velocity = (Vector2){ 0, 0 };
+ circleB->position = (Vector2){ screenWidth*0.5f, screenHeight/2 };
+ circleB->velocity = (Vector2){ 0, 0 };
+ circleC->position = (Vector2){ screenWidth*0.75f, screenHeight/2 };
+ circleC->velocity = (Vector2){ 0, 0 };
+ }
+ //----------------------------------------------------------------------------------
- int vertexCount = GetPhysicsShapeVerticesCount(i);
- for (int j = 0; j < vertexCount; j++)
- {
- // Get physics bodies shape vertices to draw lines
- // Note: GetPhysicsShapeVertex() already calculates rotation transformations
- Vector2 vertexA = GetPhysicsShapeVertex(body, j);
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
- int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
- Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
+ ClearBackground(BLACK);
- DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
- }
- }
+ DrawFPS(screenWidth - 90, screenHeight - 30);
- DrawText("Restitution amount", (screenWidth - MeasureText("Restitution amount", 30))/2, 75, 30, WHITE);
- DrawText("0", circleA->position.x - MeasureText("0", 20)/2, circleA->position.y - 7, 20, WHITE);
- DrawText("0.5", circleB->position.x - MeasureText("0.5", 20)/2, circleB->position.y - 7, 20, WHITE);
- DrawText("1", circleC->position.x - MeasureText("1", 20)/2, circleC->position.y - 7, 20, WHITE);
+ // Draw created physics bodies
+ int bodiesCount = GetPhysicsBodiesCount();
+ for (int i = 0; i < bodiesCount; i++)
+ {
+ PhysicsBody body = GetPhysicsBody(i);
- DrawText("Press 'R' to reset example", 10, 10, 10, WHITE);
+ int vertexCount = GetPhysicsShapeVerticesCount(i);
+ for (int j = 0; j < vertexCount; j++)
+ {
+ // Get physics bodies shape vertices to draw lines
+ // Note: GetPhysicsShapeVertex() already calculates rotation transformations
+ Vector2 vertexA = GetPhysicsShapeVertex(body, j);
- DrawText("Physac", logoX, logoY, 30, WHITE);
- DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
+ int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
+ Vector2 vertexB = GetPhysicsShapeVertex(body, jj);
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
+ DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
+ }
+ }
- // De-Initialization
- //--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
+ DrawText("Restitution amount", (screenWidth - MeasureText("Restitution amount", 30))/2, 75, 30, WHITE);
+ DrawText("0", circleA->position.x - MeasureText("0", 20)/2, circleA->position.y - 7, 20, WHITE);
+ DrawText("0.5", circleB->position.x - MeasureText("0.5", 20)/2, circleB->position.y - 7, 20, WHITE);
+ DrawText("1", circleC->position.x - MeasureText("1", 20)/2, circleC->position.y - 7, 20, WHITE);
- return 0;
+ DrawText("Press 'R' to reset example", 10, 10, 10, WHITE);
+
+ DrawText("Physac", logoX, logoY, 30, WHITE);
+ DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
}
diff --git a/docs/examples/web/physac/physics_restitution.js b/docs/examples/web/physac/physics_restitution.js
index b4e626d1..49587f81 100644
--- a/docs/examples/web/physac/physics_restitution.js
+++ b/docs/examples/web/physac/physics_restitution.js
@@ -59,6 +59,11 @@ if (Module['ENVIRONMENT']) {
ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
}
+var ENVIRONMENT_IS_PTHREAD;
+if (!ENVIRONMENT_IS_PTHREAD) ENVIRONMENT_IS_PTHREAD = false; // ENVIRONMENT_IS_PTHREAD=true will have been preset in pthread-main.js. Make it false in the main runtime thread.
+var PthreadWorkerInit; // Collects together variables that are needed at initialization time for the web workers that host pthreads.
+if (!ENVIRONMENT_IS_PTHREAD) PthreadWorkerInit = {};
+var currentScriptUrl = ENVIRONMENT_IS_WORKER ? undefined : document.currentScript.src;
if (ENVIRONMENT_IS_NODE) {
// Expose functionality in the same simple way that the shells work
@@ -1178,9 +1183,14 @@ var STATIC_BASE, STATICTOP, staticSealed; // static area
var STACK_BASE, STACKTOP, STACK_MAX; // stack area
var DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk
+if (!ENVIRONMENT_IS_PTHREAD) { // Pthreads have already initialized these variables in src/pthread-main.js, where they were passed to the thread worker at startup time
STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;
staticSealed = false;
+}
+if (ENVIRONMENT_IS_PTHREAD) {
+ staticSealed = true; // The static memory area has been initialized already in the main thread, pthreads skip this.
+}
// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode.
function writeStackCookie() {
@@ -1207,7 +1217,7 @@ function abortOnCannotGrowMemory() {
function enlargeMemory() {
- abortOnCannotGrowMemory();
+ abort('Cannot enlarge memory arrays, since compiling with pthreads support enabled (-s USE_PTHREADS=1).');
}
@@ -1221,27 +1231,69 @@ assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined'
'JS engine does not provide full typed array support');
-
-// Use a provided buffer, if there is one, or else allocate a new one
-if (Module['buffer']) {
- buffer = Module['buffer'];
- assert(buffer.byteLength === TOTAL_MEMORY, 'provided buffer should be ' + TOTAL_MEMORY + ' bytes, but it is ' + buffer.byteLength);
+if (typeof SharedArrayBuffer !== 'undefined') {
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new SharedArrayBuffer(TOTAL_MEMORY);
+ // Currently SharedArrayBuffer does not have a slice() operation, so polyfill it in.
+ // Adapted from https://github.com/ttaubert/node-arraybuffer-slice, (c) 2014 Tim Taubert <[email protected]>
+ // arraybuffer-slice may be freely distributed under the MIT license.
+ (function (undefined) {
+ "use strict";
+ function clamp(val, length) {
+ val = (val|0) || 0;
+ if (val < 0) return Math.max(val + length, 0);
+ return Math.min(val, length);
+ }
+ if (typeof SharedArrayBuffer !== 'undefined' && !SharedArrayBuffer.prototype.slice) {
+ SharedArrayBuffer.prototype.slice = function (from, to) {
+ var length = this.byteLength;
+ var begin = clamp(from, length);
+ var end = length;
+ if (to !== undefined) end = clamp(to, length);
+ if (begin > end) return new ArrayBuffer(0);
+ var num = end - begin;
+ var target = new ArrayBuffer(num);
+ var targetArray = new Uint8Array(target);
+ var sourceArray = new Uint8Array(this, begin, num);
+ targetArray.set(sourceArray);
+ return target;
+ };
+ }
+ })();
} else {
- // Use a WebAssembly memory where available
- {
- buffer = new ArrayBuffer(TOTAL_MEMORY);
- }
- assert(buffer.byteLength === TOTAL_MEMORY);
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new ArrayBuffer(TOTAL_MEMORY);
}
updateGlobalBufferViews();
+if (typeof Atomics === 'undefined') {
+ // Polyfill singlethreaded atomics ops from http://lars-t-hansen.github.io/ecmascript_sharedmem/shmem.html#Atomics.add
+ // No thread-safety needed since we don't have multithreading support.
+ Atomics = {};
+ Atomics['add'] = function(t, i, v) { var w = t[i]; t[i] += v; return w; }
+ Atomics['and'] = function(t, i, v) { var w = t[i]; t[i] &= v; return w; }
+ Atomics['compareExchange'] = function(t, i, e, r) { var w = t[i]; if (w == e) t[i] = r; return w; }
+ Atomics['exchange'] = function(t, i, v) { var w = t[i]; t[i] = v; return w; }
+ Atomics['wait'] = function(t, i, v, o) { if (t[i] != v) return 'not-equal'; else return 'timed-out'; }
+ Atomics['wake'] = function(t, i, c) { return 0; }
+ Atomics['wakeOrRequeue'] = function(t, i1, c, i2, v) { return 0; }
+ Atomics['isLockFree'] = function(s) { return true; }
+ Atomics['load'] = function(t, i) { return t[i]; }
+ Atomics['or'] = function(t, i, v) { var w = t[i]; t[i] |= v; return w; }
+ Atomics['store'] = function(t, i, v) { t[i] = v; return v; }
+ Atomics['sub'] = function(t, i, v) { var w = t[i]; t[i] -= v; return w; }
+ Atomics['xor'] = function(t, i, v) { var w = t[i]; t[i] ^= v; return w; }
+}
+
function getTotalMemory() {
return TOTAL_MEMORY;
}
// Endianness check (note: assumes compiler arch was little-endian)
+if (!ENVIRONMENT_IS_PTHREAD) {
HEAP32[0] = 0x63736d65; /* 'emsc' */
+} else {
+ if (HEAP32[0] !== 0x63736d65) throw 'Runtime error: The application has corrupted its heap memory area (address zero)!';
+}
HEAP16[1] = 0x6373;
if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!';
@@ -1285,8 +1337,10 @@ var __ATPOSTRUN__ = []; // functions called after the runtime has exited
var runtimeInitialized = false;
var runtimeExited = false;
+if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true; // The runtime is hosted in the main thread, and bits shared to pthreads via SharedArrayBuffer. No need to init again in pthread.
function preRun() {
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['preRun'] at this time
if (Module['preRun']) {
if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
@@ -1299,6 +1353,7 @@ function preRun() {
function ensureInitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
@@ -1306,17 +1361,20 @@ function ensureInitRuntime() {
function preMain() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATEXIT__);
runtimeExited = true;
}
function postRun() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['postRun'] at this time
if (Module['postRun']) {
if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
@@ -1435,6 +1493,18 @@ function reSign(value, bits, ignore) {
return value;
}
+// Atomics.exchange is not yet implemented in the spec, so polyfill that in via compareExchange in the meanwhile.
+// TODO: Keep an eye out for the opportunity to remove this once Atomics.exchange is available.
+if (typeof Atomics !== 'undefined' && !Atomics['exchange']) {
+ Atomics['exchange'] = function(heap, index, val) {
+ var oldVal, oldVal2;
+ do {
+ oldVal = Atomics['load'](heap, index);
+ oldVal2 = Atomics['compareExchange'](heap, index, oldVal, val);
+ } while(oldVal != oldVal2);
+ return oldVal;
+ }
+}
// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
@@ -1504,6 +1574,9 @@ function getUniqueRunDependency(id) {
}
function addRunDependency(id) {
+ // We should never get here in pthreads (could no-op this out if called in pthreads, but that might indicate a bug in caller side,
+ // so good to be very explicit)
+ assert(!ENVIRONMENT_IS_PTHREAD);
runDependencies++;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
@@ -1572,52 +1645,43 @@ var memoryInitializer = null;
-var /* show errors on likely calls to FS when it was not included */ FS = {
- error: function() {
- abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1');
- },
- init: function() { FS.error() },
- createDataFile: function() { FS.error() },
- createPreloadedFile: function() { FS.error() },
- createLazyFile: function() { FS.error() },
- open: function() { FS.error() },
- mkdev: function() { FS.error() },
- registerDevice: function() { FS.error() },
- analyzePath: function() { FS.error() },
- loadFilesFromDB: function() { FS.error() },
-
- ErrnoError: function ErrnoError() { FS.error() },
-};
-Module['FS_createDataFile'] = FS.createDataFile;
-Module['FS_createPreloadedFile'] = FS.createPreloadedFile;
// === Body ===
-var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } }];
+var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } },
+ function() { postMessage({ cmd: 'processQueuedMainThreadWork' }) }];
function _emscripten_asm_const_iii(code, a0, a1) {
return ASM_CONSTS[code](a0, a1);
}
+function _emscripten_asm_const_v(code) {
+ return ASM_CONSTS[code]();
+}
+
STATIC_BASE = 8;
-STATICTOP = STATIC_BASE + 36032;
- /* global initializers */ __ATINIT__.push();
+STATICTOP = STATIC_BASE + 38352;
+ /* global initializers */ if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({ func: function() { ___emscripten_pthread_data_constructor() } });
-/* memory initializer */ allocate([32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,12,0,0,5,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,1,0,0,0,2,0,0,0,183,136,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,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,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,114,101,115,116,105,116,117,116,105,111,110,0,80,104,121,115,97,99,0,82,101,115,116,105,116,117,116,105,111,110,32,97,109,111,117,110,116,0,48,0,48,46,53,0,49,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
-/* memory initializer */ allocate([84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+if (!ENVIRONMENT_IS_PTHREAD) {
+/* memory initializer */ allocate([32,3,0,0,194,1,0,0,15,0,0,0,32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,20,0,0,0,180,11,0,0,5,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,1,0,0,0,2,0,0,0,199,145,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,80,104,121,115,105,99,115,32,114,101,115,116,105,116,117,116,105,111,110,0,80,104,121,115,97,99,0,82,101,115,116,105,116,117,116,105,111,110,32,97,109,111,117,110,116,0,48,0,48,46,53,0,49,0,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,37,50,105,32,70,80,83,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
+/* memory initializer */ allocate([83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,101,109,115,99,114,105,112,116,101,110,95,105,115,95,109,97,105,110,95,114,117,110,116,105,109,101,95,116,104,114,101,97,100,40,41,32,38,38,32,34,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,32,109,117,115,116,32,98,101,32,99,97,108,108,101,100,32,102,114,111,109,32,116,104,101,32,109,97,105,110,32,116,104,114,101,97,100,33,34,0,67,58,92,101,109,115,100,107,92,101,109,115,99,114,105,112,116,101,110,92,49,46,51,55,46,57,92,115,121,115,116,101,109,92,108,105,98,92,112,116,104,114,101,97,100,92,108,105,98,114,97,114,121,95,112,116,104,114,101,97,100,46,99,0,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,0,48,32,38,38,32,34,73,110,118,97,108,105,100,32,69,109,115,99,114,105,112,116,101,110,32,112,116,104,114,101,97,100,32,95,100,111,95,99,97,108,108,32,111,112,99,111,100,101,33,34,0,95,100,111,95,99,97,108,108,0,99,97,108,108,0,101,109,115,99,114,105,112,116,101,110,95,97,115,121,110,99,95,114,117,110,95,105,110,95,109,97,105,110,95,116,104,114,101,97,100,0,112,111,115,116,77,101,115,115,97,103,101,40,123,32,99,109,100,58,32,39,112,114,111,99,101,115,115,81,117,101,117,101,100,77,97,105,110,84,104,114,101,97,100,87,111,114,107,39,32,125,41,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+}
/* no memory initializer */
-var tempDoublePtr = STATICTOP; STATICTOP += 16;
+var tempDoublePtr;
+
+if (!ENVIRONMENT_IS_PTHREAD) tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
@@ -1880,6 +1944,8 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilMaskSeparate(x0, x1) { GLctx['stencilMaskSeparate'](x0, x1) }
+ function ___pthread_setcancelstate() { return 0 }
+
function _emscripten_get_now() { abort() }
@@ -3360,13 +3426,3061 @@ function copyTempDouble(ptr) {
}
- var SYSCALLS={varargs:0,get:function (varargs) {
+
+
+ var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
+
+ var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
+
+ function ___setErrNo(value) {
+ if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
+ else Module.printErr('failed to set errno from JS');
+ return value;
+ }
+
+ var PATH={splitPath:function (filename) {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1);
+ },normalizeArray:function (parts, allowAboveRoot) {
+ // if the path tries to go above the root, `up` ends up > 0
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === '.') {
+ parts.splice(i, 1);
+ } else if (last === '..') {
+ parts.splice(i, 1);
+ up++;
+ } else if (up) {
+ parts.splice(i, 1);
+ up--;
+ }
+ }
+ // if the path is allowed to go above the root, restore leading ..s
+ if (allowAboveRoot) {
+ for (; up--; up) {
+ parts.unshift('..');
+ }
+ }
+ return parts;
+ },normalize:function (path) {
+ var isAbsolute = path.charAt(0) === '/',
+ trailingSlash = path.substr(-1) === '/';
+ // Normalize the path
+ path = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), !isAbsolute).join('/');
+ if (!path && !isAbsolute) {
+ path = '.';
+ }
+ if (path && trailingSlash) {
+ path += '/';
+ }
+ return (isAbsolute ? '/' : '') + path;
+ },dirname:function (path) {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ // No dirname whatsoever
+ return '.';
+ }
+ if (dir) {
+ // It has a dirname, strip trailing slash
+ dir = dir.substr(0, dir.length - 1);
+ }
+ return root + dir;
+ },basename:function (path) {
+ // EMSCRIPTEN return '/'' for '/', not an empty string
+ if (path === '/') return '/';
+ var lastSlash = path.lastIndexOf('/');
+ if (lastSlash === -1) return path;
+ return path.substr(lastSlash+1);
+ },extname:function (path) {
+ return PATH.splitPath(path)[3];
+ },join:function () {
+ var paths = Array.prototype.slice.call(arguments, 0);
+ return PATH.normalize(paths.join('/'));
+ },join2:function (l, r) {
+ return PATH.normalize(l + '/' + r);
+ },resolve:function () {
+ var resolvedPath = '',
+ resolvedAbsolute = false;
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = (i >= 0) ? arguments[i] : FS.cwd();
+ // Skip empty and invalid entries
+ if (typeof path !== 'string') {
+ throw new TypeError('Arguments to path.resolve must be strings');
+ } else if (!path) {
+ return ''; // an invalid portion invalidates the whole thing
+ }
+ resolvedPath = path + '/' + resolvedPath;
+ resolvedAbsolute = path.charAt(0) === '/';
+ }
+ // At this point the path should be resolved to a full absolute path, but
+ // handle relative paths to be safe (might happen when process.cwd() fails)
+ resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
+ return !!p;
+ }), !resolvedAbsolute).join('/');
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+ },relative:function (from, to) {
+ from = PATH.resolve(from).substr(1);
+ to = PATH.resolve(to).substr(1);
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== '') break;
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== '') break;
+ }
+ if (start > end) return [];
+ return arr.slice(start, end - start + 1);
+ }
+ var fromParts = trim(from.split('/'));
+ var toParts = trim(to.split('/'));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break;
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push('..');
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join('/');
+ }};
+
+ var TTY={ttys:[],init:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // currently, FS.init does not distinguish if process.stdin is a file or TTY
+ // // device, it always assumes it's a TTY device. because of this, we're forcing
+ // // process.stdin to UTF8 encoding to at least make stdin reading compatible
+ // // with text files until FS.init can be refactored.
+ // process['stdin']['setEncoding']('utf8');
+ // }
+ },shutdown:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
+ // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
+ // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
+ // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
+ // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
+ // process['stdin']['pause']();
+ // }
+ },register:function (dev, ops) {
+ TTY.ttys[dev] = { input: [], output: [], ops: ops };
+ FS.registerDevice(dev, TTY.stream_ops);
+ },stream_ops:{open:function (stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ stream.tty = tty;
+ stream.seekable = false;
+ },close:function (stream) {
+ // flush any pending line data
+ stream.tty.ops.flush(stream.tty);
+ },flush:function (stream) {
+ stream.tty.ops.flush(stream.tty);
+ },read:function (stream, buffer, offset, length, pos /* ignored */) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ for (var i = 0; i < length; i++) {
+ try {
+ stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }},default_tty_ops:{get_char:function (tty) {
+ if (!tty.input.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ // we will read data by chunks of BUFSIZE
+ var BUFSIZE = 256;
+ var buf = new Buffer(BUFSIZE);
+ var bytesRead = 0;
+
+ var isPosixPlatform = (process.platform != 'win32'); // Node doesn't offer a direct check, so test by exclusion
+
+ var fd = process.stdin.fd;
+ if (isPosixPlatform) {
+ // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync)
+ var usingDevice = false;
+ try {
+ fd = fs.openSync('/dev/stdin', 'r');
+ usingDevice = true;
+ } catch (e) {}
+ }
+
+ try {
+ bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
+ } catch(e) {
+ // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes,
+ // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0.
+ if (e.toString().indexOf('EOF') != -1) bytesRead = 0;
+ else throw e;
+ }
+
+ if (usingDevice) { fs.closeSync(fd); }
+ if (bytesRead > 0) {
+ result = buf.slice(0, bytesRead).toString('utf-8');
+ } else {
+ result = null;
+ }
+
+ } else if (typeof window != 'undefined' &&
+ typeof window.prompt == 'function') {
+ // Browser.
+ result = window.prompt('Input: '); // returns null on cancel
+ if (result !== null) {
+ result += '\n';
+ }
+ } else if (typeof readline == 'function') {
+ // Command line.
+ result = readline();
+ if (result !== null) {
+ result += '\n';
+ }
+ }
+ if (!result) {
+ return null;
+ }
+ tty.input = intArrayFromString(result, true);
+ }
+ return tty.input.shift();
+ },put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle.
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }},default_tty1_ops:{put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val);
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }}};
+
+ var MEMFS={ops_table:null,mount:function (mount) {
+ return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ // no supported
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (!MEMFS.ops_table) {
+ MEMFS.ops_table = {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap,
+ msync: MEMFS.stream_ops.msync
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ }
+ };
+ }
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {};
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity.
+ // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
+ // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
+ // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
+ node.contents = null;
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream;
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream;
+ }
+ node.timestamp = Date.now();
+ // add the new node to the parent
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },getFileDataAsRegularArray:function (node) {
+ if (node.contents && node.contents.subarray) {
+ var arr = [];
+ for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
+ return arr; // Returns a copy of the original data.
+ }
+ return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
+ },getFileDataAsTypedArray:function (node) {
+ if (!node.contents) return new Uint8Array;
+ if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
+ return new Uint8Array(node.contents);
+ },expandFileStorage:function (node, newCapacity) {
+ // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
+ // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
+ // increase the size.
+ if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
+ node.contents = MEMFS.getFileDataAsRegularArray(node);
+ node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
+ }
+
+ if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well.
+ var prevCapacity = node.contents ? node.contents.length : 0;
+ if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
+ // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
+ // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
+ // avoid overshooting the allocation cap by a very large margin.
+ var CAPACITY_DOUBLING_MAX = 1024 * 1024;
+ newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);
+ if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newCapacity); // Allocate new storage.
+ if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
+ return;
+ }
+ // Not using a typed array to back the file storage. Use a standard JS array instead.
+ if (!node.contents && newCapacity > 0) node.contents = [];
+ while (node.contents.length < newCapacity) node.contents.push(0);
+ },resizeFileStorage:function (node, newSize) {
+ if (node.usedBytes == newSize) return;
+ if (newSize == 0) {
+ node.contents = null; // Fully decommit when requesting a resize to zero.
+ node.usedBytes = 0;
+ return;
+ }
+ if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
+ if (oldContents) {
+ node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.
+ }
+ node.usedBytes = newSize;
+ return;
+ }
+ // Backing with a JS array.
+ if (!node.contents) node.contents = [];
+ if (node.contents.length > newSize) node.contents.length = newSize;
+ else while (node.contents.length < newSize) node.contents.push(0);
+ node.usedBytes = newSize;
+ },node_ops:{getattr:function (node) {
+ var attr = {};
+ // device numbers reuse inode numbers.
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096;
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.usedBytes;
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length;
+ } else {
+ attr.size = 0;
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
+ // but this is not required by the standard.
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr;
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ if (attr.size !== undefined) {
+ MEMFS.resizeFileStorage(node, attr.size);
+ }
+ },lookup:function (parent, name) {
+ throw FS.genericErrors[ERRNO_CODES.ENOENT];
+ },mknod:function (parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev);
+ },rename:function (old_node, new_dir, new_name) {
+ // if we're overwriting a directory at new_name, make sure it's empty.
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ }
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ }
+ }
+ // do the internal rewiring
+ delete old_node.parent.contents[old_node.name];
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ old_node.parent = new_dir;
+ },unlink:function (parent, name) {
+ delete parent.contents[name];
+ },rmdir:function (parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ delete parent.contents[name];
+ },readdir:function (node) {
+ var entries = ['.', '..']
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
+ node.link = oldpath;
+ return node;
+ },readlink:function (node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return node.link;
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= stream.node.usedBytes) return 0;
+ var size = Math.min(stream.node.usedBytes - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) { // non-trivial, and typed array
+ buffer.set(contents.subarray(position, position + size), offset);
+ } else {
+ for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
+ }
+ return size;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (!length) return 0;
+ var node = stream.node;
+ node.timestamp = Date.now();
+
+ if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array?
+ if (canOwn) {
+ assert(position === 0, 'canOwn must imply no weird position inside the file');
+ node.contents = buffer.subarray(offset, offset + length);
+ node.usedBytes = length;
+ return length;
+ } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
+ node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
+ node.usedBytes = length;
+ return length;
+ } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ return length;
+ }
+ }
+
+ // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
+ MEMFS.expandFileStorage(node, position+length);
+ if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.
+ else {
+ for (var i = 0; i < length; i++) {
+ node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
+ }
+ }
+ node.usedBytes = Math.max(node.usedBytes, position+length);
+ return length;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.usedBytes;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ },allocate:function (stream, offset, length) {
+ MEMFS.expandFileStorage(stream.node, offset + length);
+ stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ // Only make a new copy when MAP_PRIVATE is specified.
+ if ( !(flags & 2) &&
+ (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
+ // We can't emulate MAP_SHARED when the file is not backed by the buffer
+ // we're mapping to (e.g. the HEAP buffer).
+ allocated = false;
+ ptr = contents.byteOffset;
+ } else {
+ // Try to avoid unnecessary slices.
+ if (position > 0 || position + length < stream.node.usedBytes) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length);
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length);
+ }
+ }
+ allocated = true;
+ ptr = _malloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
+ }
+ buffer.set(contents, ptr);
+ }
+ return { ptr: ptr, allocated: allocated };
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (mmapFlags & 2) {
+ // MAP_PRIVATE calls need not to be synced back to underlying fs
+ return 0;
+ }
+
+ var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
+ // should we check if bytesWritten and length are the same?
+ return 0;
+ }}};
+
+ var IDBFS={dbs:{},indexedDB:function () {
+ if (typeof indexedDB !== 'undefined') return indexedDB;
+ var ret = null;
+ if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ assert(ret, 'IDBFS used, but indexedDB not supported');
+ return ret;
+ },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
+ // reuse all of the core MEMFS functionality
+ return MEMFS.mount.apply(null, arguments);
+ },syncfs:function (mount, populate, callback) {
+ IDBFS.getLocalSet(mount, function(err, local) {
+ if (err) return callback(err);
+
+ IDBFS.getRemoteSet(mount, function(err, remote) {
+ if (err) return callback(err);
+
+ var src = populate ? remote : local;
+ var dst = populate ? local : remote;
+
+ IDBFS.reconcile(src, dst, callback);
+ });
+ });
+ },getDB:function (name, callback) {
+ // check the cache first
+ var db = IDBFS.dbs[name];
+ if (db) {
+ return callback(null, db);
+ }
+
+ var req;
+ try {
+ req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
+ } catch (e) {
+ return callback(e);
+ }
+ if (!req) {
+ return callback("Unable to connect to IndexedDB");
+ }
+ req.onupgradeneeded = function(e) {
+ var db = e.target.result;
+ var transaction = e.target.transaction;
+
+ var fileStore;
+
+ if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
+ fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ } else {
+ fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
+ }
+
+ if (!fileStore.indexNames.contains('timestamp')) {
+ fileStore.createIndex('timestamp', 'timestamp', { unique: false });
+ }
+ };
+ req.onsuccess = function() {
+ db = req.result;
+
+ // add to the cache
+ IDBFS.dbs[name] = db;
+ callback(null, db);
+ };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },getLocalSet:function (mount, callback) {
+ var entries = {};
+
+ function isRealDir(p) {
+ return p !== '.' && p !== '..';
+ };
+ function toAbsolute(root) {
+ return function(p) {
+ return PATH.join2(root, p);
+ }
+ };
+
+ var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
+
+ while (check.length) {
+ var path = check.pop();
+ var stat;
+
+ try {
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
+ }
+
+ entries[path] = { timestamp: stat.mtime };
+ }
+
+ return callback(null, { type: 'local', entries: entries });
+ },getRemoteSet:function (mount, callback) {
+ var entries = {};
+
+ IDBFS.getDB(mount.mountpoint, function(err, db) {
+ if (err) return callback(err);
+
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
+ transaction.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ var index = store.index('timestamp');
+
+ index.openKeyCursor().onsuccess = function(event) {
+ var cursor = event.target.result;
+
+ if (!cursor) {
+ return callback(null, { type: 'remote', db: db, entries: entries });
+ }
+
+ entries[cursor.primaryKey] = { timestamp: cursor.key };
+
+ cursor.continue();
+ };
+ });
+ },loadLocalEntry:function (path, callback) {
+ var stat, node;
+
+ try {
+ var lookup = FS.lookupPath(path);
+ node = lookup.node;
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode });
+ } else if (FS.isFile(stat.mode)) {
+ // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
+ // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
+ node.contents = MEMFS.getFileDataAsTypedArray(node);
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+ },storeLocalEntry:function (path, entry, callback) {
+ try {
+ if (FS.isDir(entry.mode)) {
+ FS.mkdir(path, entry.mode);
+ } else if (FS.isFile(entry.mode)) {
+ FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+
+ FS.chmod(path, entry.mode);
+ FS.utime(path, entry.timestamp, entry.timestamp);
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },removeLocalEntry:function (path, callback) {
+ try {
+ var lookup = FS.lookupPath(path);
+ var stat = FS.stat(path);
+
+ if (FS.isDir(stat.mode)) {
+ FS.rmdir(path);
+ } else if (FS.isFile(stat.mode)) {
+ FS.unlink(path);
+ }
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },loadRemoteEntry:function (store, path, callback) {
+ var req = store.get(path);
+ req.onsuccess = function(event) { callback(null, event.target.result); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },storeRemoteEntry:function (store, path, entry, callback) {
+ var req = store.put(entry, path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },removeRemoteEntry:function (store, path, callback) {
+ var req = store.delete(path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },reconcile:function (src, dst, callback) {
+ var total = 0;
+
+ var create = [];
+ Object.keys(src.entries).forEach(function (key) {
+ var e = src.entries[key];
+ var e2 = dst.entries[key];
+ if (!e2 || e.timestamp > e2.timestamp) {
+ create.push(key);
+ total++;
+ }
+ });
+
+ var remove = [];
+ Object.keys(dst.entries).forEach(function (key) {
+ var e = dst.entries[key];
+ var e2 = src.entries[key];
+ if (!e2) {
+ remove.push(key);
+ total++;
+ }
+ });
+
+ if (!total) {
+ return callback(null);
+ }
+
+ var errored = false;
+ var completed = 0;
+ var db = src.type === 'remote' ? src.db : dst.db;
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return callback(err);
+ }
+ return;
+ }
+ if (++completed >= total) {
+ return callback(null);
+ }
+ };
+
+ transaction.onerror = function(e) {
+ done(this.error);
+ e.preventDefault();
+ };
+
+ // sort paths in ascending order so directory entries are created
+ // before the files inside them
+ create.sort().forEach(function (path) {
+ if (dst.type === 'local') {
+ IDBFS.loadRemoteEntry(store, path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeLocalEntry(path, entry, done);
+ });
+ } else {
+ IDBFS.loadLocalEntry(path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeRemoteEntry(store, path, entry, done);
+ });
+ }
+ });
+
+ // sort paths in descending order so files are deleted before their
+ // parent directories
+ remove.sort().reverse().forEach(function(path) {
+ if (dst.type === 'local') {
+ IDBFS.removeLocalEntry(path, done);
+ } else {
+ IDBFS.removeRemoteEntry(store, path, done);
+ }
+ });
+ }};
+
+ var NODEFS={isWindows:false,staticInit:function () {
+ NODEFS.isWindows = !!process.platform.match(/^win/);
+ },mount:function (mount) {
+ assert(ENVIRONMENT_IS_NODE);
+ return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node = FS.createNode(parent, name, mode);
+ node.node_ops = NODEFS.node_ops;
+ node.stream_ops = NODEFS.stream_ops;
+ return node;
+ },getMode:function (path) {
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ if (NODEFS.isWindows) {
+ // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
+ // propagate write bits to execute bits.
+ stat.mode = stat.mode | ((stat.mode & 146) >> 1);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return stat.mode;
+ },realPath:function (node) {
+ var parts = [];
+ while (node.parent !== node) {
+ parts.push(node.name);
+ node = node.parent;
+ }
+ parts.push(node.mount.opts.root);
+ parts.reverse();
+ return PATH.join.apply(null, parts);
+ },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
+ flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process.
+ if (flags in NODEFS.flagsToPermissionStringMap) {
+ return NODEFS.flagsToPermissionStringMap[flags];
+ } else {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ },node_ops:{getattr:function (node) {
+ var path = NODEFS.realPath(node);
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
+ // See http://support.microsoft.com/kb/140365
+ if (NODEFS.isWindows && !stat.blksize) {
+ stat.blksize = 4096;
+ }
+ if (NODEFS.isWindows && !stat.blocks) {
+ stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
+ }
+ return {
+ dev: stat.dev,
+ ino: stat.ino,
+ mode: stat.mode,
+ nlink: stat.nlink,
+ uid: stat.uid,
+ gid: stat.gid,
+ rdev: stat.rdev,
+ size: stat.size,
+ atime: stat.atime,
+ mtime: stat.mtime,
+ ctime: stat.ctime,
+ blksize: stat.blksize,
+ blocks: stat.blocks
+ };
+ },setattr:function (node, attr) {
+ var path = NODEFS.realPath(node);
+ try {
+ if (attr.mode !== undefined) {
+ fs.chmodSync(path, attr.mode);
+ // update the common node structure mode as well
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ var date = new Date(attr.timestamp);
+ fs.utimesSync(path, date, date);
+ }
+ if (attr.size !== undefined) {
+ fs.truncateSync(path, attr.size);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },lookup:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ var mode = NODEFS.getMode(path);
+ return NODEFS.createNode(parent, name, mode);
+ },mknod:function (parent, name, mode, dev) {
+ var node = NODEFS.createNode(parent, name, mode, dev);
+ // create the backing node for this in the fs root as well
+ var path = NODEFS.realPath(node);
+ try {
+ if (FS.isDir(node.mode)) {
+ fs.mkdirSync(path, node.mode);
+ } else {
+ fs.writeFileSync(path, '', { mode: node.mode });
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return node;
+ },rename:function (oldNode, newDir, newName) {
+ var oldPath = NODEFS.realPath(oldNode);
+ var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
+ try {
+ fs.renameSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },unlink:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.unlinkSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },rmdir:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.rmdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readdir:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },symlink:function (parent, newName, oldPath) {
+ var newPath = PATH.join2(NODEFS.realPath(parent), newName);
+ try {
+ fs.symlinkSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readlink:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ path = fs.readlinkSync(path);
+ path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
+ return path;
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }},stream_ops:{open:function (stream) {
+ var path = NODEFS.realPath(stream.node);
+ try {
+ if (FS.isFile(stream.node.mode)) {
+ stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },close:function (stream) {
+ try {
+ if (FS.isFile(stream.node.mode) && stream.nfd) {
+ fs.closeSync(stream.nfd);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },read:function (stream, buffer, offset, length, position) {
+ if (length === 0) return 0; // node errors on 0 length reads
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(length);
+ var res;
+ try {
+ res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ if (res > 0) {
+ for (var i = 0; i < res; i++) {
+ buffer[offset + i] = nbuffer[i];
+ }
+ }
+ return res;
+ },write:function (stream, buffer, offset, length, position) {
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
+ var res;
+ try {
+ res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return res;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ try {
+ var stat = fs.fstatSync(stream.nfd);
+ position += stat.size;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }
+ }
+
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ return position;
+ }}};
+
+ var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) {
+ assert(ENVIRONMENT_IS_WORKER);
+ if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();
+ var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0);
+ var createdParents = {};
+ function ensureParent(path) {
+ // return the parent node, creating subdirs as necessary
+ var parts = path.split('/');
+ var parent = root;
+ for (var i = 0; i < parts.length-1; i++) {
+ var curr = parts.slice(0, i+1).join('/');
+ // Issue 4254: Using curr as a node name will prevent the node
+ // from being found in FS.nameTable when FS.open is called on
+ // a path which holds a child of this node,
+ // given that all FS functions assume node names
+ // are just their corresponding parts within their given path,
+ // rather than incremental aggregates which include their parent's
+ // directories.
+ if (!createdParents[curr]) {
+ createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0);
+ }
+ parent = createdParents[curr];
+ }
+ return parent;
+ }
+ function base(path) {
+ var parts = path.split('/');
+ return parts[parts.length-1];
+ }
+ // We also accept FileList here, by using Array.prototype
+ Array.prototype.forEach.call(mount.opts["files"] || [], function(file) {
+ WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
+ });
+ (mount.opts["blobs"] || []).forEach(function(obj) {
+ WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
+ });
+ (mount.opts["packages"] || []).forEach(function(pack) {
+ pack['metadata'].files.forEach(function(file) {
+ var name = file.filename.substr(1); // remove initial slash
+ WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end));
+ });
+ });
+ return root;
+ },createNode:function (parent, name, mode, dev, contents, mtime) {
+ var node = FS.createNode(parent, name, mode);
+ node.mode = mode;
+ node.node_ops = WORKERFS.node_ops;
+ node.stream_ops = WORKERFS.stream_ops;
+ node.timestamp = (mtime || new Date).getTime();
+ assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
+ if (mode === WORKERFS.FILE_MODE) {
+ node.size = contents.size;
+ node.contents = contents;
+ } else {
+ node.size = 4096;
+ node.contents = {};
+ }
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },node_ops:{getattr:function (node) {
+ return {
+ dev: 1,
+ ino: undefined,
+ mode: node.mode,
+ nlink: 1,
+ uid: 0,
+ gid: 0,
+ rdev: undefined,
+ size: node.size,
+ atime: new Date(node.timestamp),
+ mtime: new Date(node.timestamp),
+ ctime: new Date(node.timestamp),
+ blksize: 4096,
+ blocks: Math.ceil(node.size / 4096),
+ };
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ },lookup:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ },mknod:function (parent, name, mode, dev) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rename:function (oldNode, newDir, newName) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },unlink:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rmdir:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readdir:function (node) {
+ var entries = ['.', '..'];
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newName, oldPath) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readlink:function (node) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ if (position >= stream.node.size) return 0;
+ var chunk = stream.node.contents.slice(position, position + length);
+ var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
+ buffer.set(new Uint8Array(ab), offset);
+ return chunk.size;
+ },write:function (stream, buffer, offset, length, position) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.size;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ }}};
+
+ var _stdin; if (ENVIRONMENT_IS_PTHREAD) _stdin = PthreadWorkerInit._stdin; else PthreadWorkerInit._stdin = _stdin = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stdout; if (ENVIRONMENT_IS_PTHREAD) _stdout = PthreadWorkerInit._stdout; else PthreadWorkerInit._stdout = _stdout = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stderr; if (ENVIRONMENT_IS_PTHREAD) _stderr = PthreadWorkerInit._stderr; else PthreadWorkerInit._stderr = _stderr = allocate(1, "i32*", ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function (e) {
+ if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
+ return ___setErrNo(e.errno);
+ },lookupPath:function (path, opts) {
+ path = PATH.resolve(FS.cwd(), path);
+ opts = opts || {};
+
+ if (!path) return { path: '', node: null };
+
+ var defaults = {
+ follow_mount: true,
+ recurse_count: 0
+ };
+ for (var key in defaults) {
+ if (opts[key] === undefined) {
+ opts[key] = defaults[key];
+ }
+ }
+
+ if (opts.recurse_count > 8) { // max recursive lookup of 8
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+
+ // split the path
+ var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), false);
+
+ // start at the root
+ var current = FS.root;
+ var current_path = '/';
+
+ for (var i = 0; i < parts.length; i++) {
+ var islast = (i === parts.length-1);
+ if (islast && opts.parent) {
+ // stop resolving
+ break;
+ }
+
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+
+ // jump to the mount's root node if this is a mountpoint
+ if (FS.isMountpoint(current)) {
+ if (!islast || (islast && opts.follow_mount)) {
+ current = current.mounted.root;
+ }
+ }
+
+ // by default, lookupPath will not follow a symlink if it is the final path component.
+ // setting opts.follow = true will override this behavior.
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH.resolve(PATH.dirname(current_path), link);
+
+ var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
+ current = lookup.node;
+
+ if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+ }
+ }
+ }
+
+ return { path: current_path, node: current };
+ },getPath:function (node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path) return mount;
+ return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
+ }
+ path = path ? node.name + '/' + path : node.name;
+ node = node.parent;
+ }
+ },hashName:function (parentid, name) {
+ var hash = 0;
+
+
+ for (var i = 0; i < name.length; i++) {
+ hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
+ }
+ return ((parentid + hash) >>> 0) % FS.nameTable.length;
+ },hashAddNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node;
+ },hashRemoveNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next;
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break;
+ }
+ current = current.name_next;
+ }
+ }
+ },lookupNode:function (parent, name) {
+ var err = FS.mayLookup(parent);
+ if (err) {
+ throw new FS.ErrnoError(err, parent);
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node;
+ }
+ }
+ // if we failed to find it in the cache, call into the VFS
+ return FS.lookup(parent, name);
+ },createNode:function (parent, name, mode, rdev) {
+ if (!FS.FSNode) {
+ FS.FSNode = function(parent, name, mode, rdev) {
+ if (!parent) {
+ parent = this; // root node sets parent to itself
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ this.mounted = null;
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev;
+ };
+
+ FS.FSNode.prototype = {};
+
+ // compatibility
+ var readMode = 292 | 73;
+ var writeMode = 146;
+
+ // NOTE we must use Object.defineProperties instead of individual calls to
+ // Object.defineProperty in order to make closure compiler happy
+ Object.defineProperties(FS.FSNode.prototype, {
+ read: {
+ get: function() { return (this.mode & readMode) === readMode; },
+ set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
+ },
+ write: {
+ get: function() { return (this.mode & writeMode) === writeMode; },
+ set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
+ },
+ isFolder: {
+ get: function() { return FS.isDir(this.mode); }
+ },
+ isDevice: {
+ get: function() { return FS.isChrdev(this.mode); }
+ }
+ });
+ }
+
+ var node = new FS.FSNode(parent, name, mode, rdev);
+
+ FS.hashAddNode(node);
+
+ return node;
+ },destroyNode:function (node) {
+ FS.hashRemoveNode(node);
+ },isRoot:function (node) {
+ return node === node.parent;
+ },isMountpoint:function (node) {
+ return !!node.mounted;
+ },isFile:function (mode) {
+ return (mode & 61440) === 32768;
+ },isDir:function (mode) {
+ return (mode & 61440) === 16384;
+ },isLink:function (mode) {
+ return (mode & 61440) === 40960;
+ },isChrdev:function (mode) {
+ return (mode & 61440) === 8192;
+ },isBlkdev:function (mode) {
+ return (mode & 61440) === 24576;
+ },isFIFO:function (mode) {
+ return (mode & 61440) === 4096;
+ },isSocket:function (mode) {
+ return (mode & 49152) === 49152;
+ },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
+ var flags = FS.flagModes[str];
+ if (typeof flags === 'undefined') {
+ throw new Error('Unknown file open mode: ' + str);
+ }
+ return flags;
+ },flagsToPermissionString:function (flag) {
+ var perms = ['r', 'w', 'rw'][flag & 3];
+ if ((flag & 512)) {
+ perms += 'w';
+ }
+ return perms;
+ },nodePermissions:function (node, perms) {
+ if (FS.ignorePermissions) {
+ return 0;
+ }
+ // return 0 if any user, group or owner bits are set.
+ if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
+ return ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },mayLookup:function (dir) {
+ var err = FS.nodePermissions(dir, 'x');
+ if (err) return err;
+ if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
+ return 0;
+ },mayCreate:function (dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return ERRNO_CODES.EEXIST;
+ } catch (e) {
+ }
+ return FS.nodePermissions(dir, 'wx');
+ },mayDelete:function (dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name);
+ } catch (e) {
+ return e.errno;
+ }
+ var err = FS.nodePermissions(dir, 'wx');
+ if (err) {
+ return err;
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return ERRNO_CODES.ENOTDIR;
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return ERRNO_CODES.EBUSY;
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return 0;
+ },mayOpen:function (node, flags) {
+ if (!node) {
+ return ERRNO_CODES.ENOENT;
+ }
+ if (FS.isLink(node.mode)) {
+ return ERRNO_CODES.ELOOP;
+ } else if (FS.isDir(node.mode)) {
+ if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write
+ (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only)
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
+ },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
+ fd_start = fd_start || 0;
+ fd_end = fd_end || FS.MAX_OPEN_FDS;
+ for (var fd = fd_start; fd <= fd_end; fd++) {
+ if (!FS.streams[fd]) {
+ return fd;
+ }
+ }
+ throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
+ },getStream:function (fd) {
+ return FS.streams[fd];
+ },createStream:function (stream, fd_start, fd_end) {
+ if (!FS.FSStream) {
+ FS.FSStream = function(){};
+ FS.FSStream.prototype = {};
+ // compatibility
+ Object.defineProperties(FS.FSStream.prototype, {
+ object: {
+ get: function() { return this.node; },
+ set: function(val) { this.node = val; }
+ },
+ isRead: {
+ get: function() { return (this.flags & 2097155) !== 1; }
+ },
+ isWrite: {
+ get: function() { return (this.flags & 2097155) !== 0; }
+ },
+ isAppend: {
+ get: function() { return (this.flags & 1024); }
+ }
+ });
+ }
+ // clone it, so we can return an instance of FSStream
+ var newStream = new FS.FSStream();
+ for (var p in stream) {
+ newStream[p] = stream[p];
+ }
+ stream = newStream;
+ var fd = FS.nextfd(fd_start, fd_end);
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream;
+ },closeStream:function (fd) {
+ FS.streams[fd] = null;
+ },chrdev_stream_ops:{open:function (stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ // override node's stream ops with the device's
+ stream.stream_ops = device.stream_ops;
+ // forward the open call
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ },llseek:function () {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }},major:function (dev) {
+ return ((dev) >> 8);
+ },minor:function (dev) {
+ return ((dev) & 0xff);
+ },makedev:function (ma, mi) {
+ return ((ma) << 8 | (mi));
+ },registerDevice:function (dev, ops) {
+ FS.devices[dev] = { stream_ops: ops };
+ },getDevice:function (dev) {
+ return FS.devices[dev];
+ },getMounts:function (mount) {
+ var mounts = [];
+ var check = [mount];
+
+ while (check.length) {
+ var m = check.pop();
+
+ mounts.push(m);
+
+ check.push.apply(check, m.mounts);
+ }
+
+ return mounts;
+ },syncfs:function (populate, callback) {
+ if (typeof(populate) === 'function') {
+ callback = populate;
+ populate = false;
+ }
+
+ FS.syncFSRequests++;
+
+ if (FS.syncFSRequests > 1) {
+ console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work');
+ }
+
+ var mounts = FS.getMounts(FS.root.mount);
+ var completed = 0;
+
+ function doCallback(err) {
+ assert(FS.syncFSRequests > 0);
+ FS.syncFSRequests--;
+ return callback(err);
+ }
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return doCallback(err);
+ }
+ return;
+ }
+ if (++completed >= mounts.length) {
+ doCallback(null);
+ }
+ };
+
+ // sync all mounts
+ mounts.forEach(function (mount) {
+ if (!mount.type.syncfs) {
+ return done(null);
+ }
+ mount.type.syncfs(mount, populate, done);
+ });
+ },mount:function (type, opts, mountpoint) {
+ var root = mountpoint === '/';
+ var pseudo = !mountpoint;
+ var node;
+
+ if (root && FS.root) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ } else if (!root && !pseudo) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ mountpoint = lookup.path; // use the absolute path
+ node = lookup.node;
+
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+
+ if (!FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ }
+
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ mounts: []
+ };
+
+ // create a root node for the fs
+ var mountRoot = type.mount(mount);
+ mountRoot.mount = mount;
+ mount.root = mountRoot;
+
+ if (root) {
+ FS.root = mountRoot;
+ } else if (node) {
+ // set as a mountpoint
+ node.mounted = mount;
+
+ // add the new mount to the current mount's children
+ if (node.mount) {
+ node.mount.mounts.push(mount);
+ }
+ }
+
+ return mountRoot;
+ },unmount:function (mountpoint) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ if (!FS.isMountpoint(lookup.node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ // destroy the nodes for this mount, and all its child mounts
+ var node = lookup.node;
+ var mount = node.mounted;
+ var mounts = FS.getMounts(mount);
+
+ Object.keys(FS.nameTable).forEach(function (hash) {
+ var current = FS.nameTable[hash];
+
+ while (current) {
+ var next = current.name_next;
+
+ if (mounts.indexOf(current.mount) !== -1) {
+ FS.destroyNode(current);
+ }
+
+ current = next;
+ }
+ });
+
+ // no longer a mountpoint
+ node.mounted = null;
+
+ // remove this mount from the child mounts
+ var idx = node.mount.mounts.indexOf(mount);
+ assert(idx !== -1);
+ node.mount.mounts.splice(idx, 1);
+ },lookup:function (parent, name) {
+ return parent.node_ops.lookup(parent, name);
+ },mknod:function (path, mode, dev) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ if (!name || name === '.' || name === '..') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.mayCreate(parent, name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev);
+ },create:function (path, mode) {
+ mode = mode !== undefined ? mode : 438 /* 0666 */;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0);
+ },mkdir:function (path, mode) {
+ mode = mode !== undefined ? mode : 511 /* 0777 */;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0);
+ },mkdirTree:function (path, mode) {
+ var dirs = path.split('/');
+ var d = '';
+ for (var i = 0; i < dirs.length; ++i) {
+ if (!dirs[i]) continue;
+ d += '/' + dirs[i];
+ try {
+ FS.mkdir(d, mode);
+ } catch(e) {
+ if (e.errno != ERRNO_CODES.EEXIST) throw e;
+ }
+ }
+ },mkdev:function (path, mode, dev) {
+ if (typeof(dev) === 'undefined') {
+ dev = mode;
+ mode = 438 /* 0666 */;
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev);
+ },symlink:function (oldpath, newpath) {
+ if (!PATH.resolve(oldpath)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var lookup = FS.lookupPath(newpath, { parent: true });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var newname = PATH.basename(newpath);
+ var err = FS.mayCreate(parent, newname);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath);
+ },rename:function (old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ // parents must exist
+ var lookup, old_dir, new_dir;
+ try {
+ lookup = FS.lookupPath(old_path, { parent: true });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, { parent: true });
+ new_dir = lookup.node;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ // need to be part of the same mount
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
+ }
+ // source must exist
+ var old_node = FS.lookupNode(old_dir, old_name);
+ // old path should not be an ancestor of the new path
+ var relative = PATH.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ // new path should not be an ancestor of the old path
+ relative = PATH.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ // see if the new path already exists
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ // not fatal
+ }
+ // early out if nothing needs to change
+ if (old_node === new_node) {
+ return;
+ }
+ // we'll need to delete the old entry
+ var isdir = FS.isDir(old_node.mode);
+ var err = FS.mayDelete(old_dir, old_name, isdir);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ // need delete permissions if we'll be overwriting.
+ // need create permissions if new doesn't already exist.
+ err = new_node ?
+ FS.mayDelete(new_dir, new_name, isdir) :
+ FS.mayCreate(new_dir, new_name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ // if we are going to change the parent, check write permissions
+ if (new_dir !== old_dir) {
+ err = FS.nodePermissions(old_dir, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['willMovePath']) {
+ FS.trackingDelegate['willMovePath'](old_path, new_path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ // remove the node from the lookup hash
+ FS.hashRemoveNode(old_node);
+ // do the underlying fs rename
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name);
+ } catch (e) {
+ throw e;
+ } finally {
+ // add the node back to the hash (in case node_ops.rename
+ // changed its name)
+ FS.hashAddNode(old_node);
+ }
+ try {
+ if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ },rmdir:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, true);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ return node.node_ops.readdir(node);
+ },unlink:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, false);
+ if (err) {
+ // According to POSIX, we should map EISDIR to EPERM, but
+ // we instead do what Linux does (and we must, as we use
+ // the musl linux libc).
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readlink:function (path) {
+ var lookup = FS.lookupPath(path);
+ var link = lookup.node;
+ if (!link) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
+ },stat:function (path, dontFollow) {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ var node = lookup.node;
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return node.node_ops.getattr(node);
+ },lstat:function (path) {
+ return FS.stat(path, true);
+ },chmod:function (path, mode, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ mode: (mode & 4095) | (node.mode & ~4095),
+ timestamp: Date.now()
+ });
+ },lchmod:function (path, mode) {
+ FS.chmod(path, mode, true);
+ },fchmod:function (fd, mode) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chmod(stream.node, mode);
+ },chown:function (path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ // we ignore the uid / gid for now
+ });
+ },lchown:function (path, uid, gid) {
+ FS.chown(path, uid, gid, true);
+ },fchown:function (fd, uid, gid) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chown(stream.node, uid, gid);
+ },truncate:function (path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.nodePermissions(node, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ });
+ },ftruncate:function (fd, len) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ FS.truncate(stream.node, len);
+ },utime:function (path, atime, mtime) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ });
+ },open:function (path, flags, mode, fd_start, fd_end) {
+ if (path === "") {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
+ mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
+ if ((flags & 64)) {
+ mode = (mode & 4095) | 32768;
+ } else {
+ mode = 0;
+ }
+ var node;
+ if (typeof path === 'object') {
+ node = path;
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node;
+ } catch (e) {
+ // ignore
+ }
+ }
+ // perhaps we need to create the node
+ var created = false;
+ if ((flags & 64)) {
+ if (node) {
+ // if O_CREAT and O_EXCL are set, error out if the node already exists
+ if ((flags & 128)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
+ }
+ } else {
+ // node doesn't exist, try to create it
+ node = FS.mknod(path, mode, 0);
+ created = true;
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ // can't truncate a device
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512;
+ }
+ // if asked only for a directory, then this must be one
+ if ((flags & 65536) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ // check permissions, if this is not a file we just created now (it is ok to
+ // create and write to a file with read-only permissions; it is read-only
+ // for later use)
+ if (!created) {
+ var err = FS.mayOpen(node, flags);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ // do truncation if necessary
+ if ((flags & 512)) {
+ FS.truncate(node, 0);
+ }
+ // we've already handled these, don't pass down to the underlying vfs
+ flags &= ~(128 | 512);
+
+ // register the stream with the filesystem
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node), // we want the absolute path to the node
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ // used by the file family libc calls (fopen, fwrite, ferror, etc.)
+ ungotten: [],
+ error: false
+ }, fd_start, fd_end);
+ // call the new stream's open function
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ if (Module['logReadFiles'] && !(flags & 1)) {
+ if (!FS.readFiles) FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1;
+ Module['printErr']('read file: ' + path);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['onOpenFile']) {
+ var trackingFlags = 0;
+ if ((flags & 2097155) !== 1) {
+ trackingFlags |= FS.tracking.openFlags.READ;
+ }
+ if ((flags & 2097155) !== 0) {
+ trackingFlags |= FS.tracking.openFlags.WRITE;
+ }
+ FS.trackingDelegate['onOpenFile'](path, trackingFlags);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message);
+ }
+ return stream;
+ },close:function (stream) {
+ if (stream.getdents) stream.getdents = null; // free readdir state
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream);
+ }
+ } catch (e) {
+ throw e;
+ } finally {
+ FS.closeStream(stream.fd);
+ }
+ },llseek:function (stream, offset, whence) {
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ stream.position = stream.stream_ops.llseek(stream, offset, whence);
+ stream.ungotten = [];
+ return stream.position;
+ },read:function (stream, buffer, offset, length, position) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking) stream.position += bytesRead;
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if (stream.flags & 1024) {
+ // seek to the end before writing in append mode
+ FS.llseek(stream, 0, 2);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking) stream.position += bytesWritten;
+ try {
+ if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message);
+ }
+ return bytesWritten;
+ },allocate:function (stream, offset, length) {
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
+ }
+ stream.stream_ops.allocate(stream, offset, length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ // TODO if PROT is PROT_WRITE, make sure we have write access
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EACCES);
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!stream || !stream.stream_ops.msync) {
+ return 0;
+ }
+ return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
+ },munmap:function (stream) {
+ return 0;
+ },ioctl:function (stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg);
+ },readFile:function (path, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'r';
+ opts.encoding = opts.encoding || 'binary';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === 'utf8') {
+ ret = UTF8ArrayToString(buf, 0);
+ } else if (opts.encoding === 'binary') {
+ ret = buf;
+ }
+ FS.close(stream);
+ return ret;
+ },writeFile:function (path, data, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'w';
+ opts.encoding = opts.encoding || 'utf8';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (opts.encoding === 'utf8') {
+ var buf = new Uint8Array(lengthBytesUTF8(data)+1);
+ var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
+ FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);
+ } else if (opts.encoding === 'binary') {
+ FS.write(stream, data, 0, data.length, 0, opts.canOwn);
+ }
+ FS.close(stream);
+ },cwd:function () {
+ return FS.currentPath;
+ },chdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ if (lookup.node === null) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ var err = FS.nodePermissions(lookup.node, 'x');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ FS.currentPath = lookup.path;
+ },createDefaultDirectories:function () {
+ FS.mkdir('/tmp');
+ FS.mkdir('/home');
+ FS.mkdir('/home/web_user');
+ },createDefaultDevices:function () {
+ // create /dev
+ FS.mkdir('/dev');
+ // setup /dev/null
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: function() { return 0; },
+ write: function(stream, buffer, offset, length, pos) { return length; }
+ });
+ FS.mkdev('/dev/null', FS.makedev(1, 3));
+ // setup /dev/tty and /dev/tty1
+ // stderr needs to print output using Module['printErr']
+ // so we register a second tty just for it.
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev('/dev/tty', FS.makedev(5, 0));
+ FS.mkdev('/dev/tty1', FS.makedev(6, 0));
+ // setup /dev/[u]random
+ var random_device;
+ if (typeof crypto !== 'undefined') {
+ // for modern web browsers
+ var randomBuffer = new Uint8Array(1);
+ random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; };
+ } else if (ENVIRONMENT_IS_NODE) {
+ // for nodejs
+ random_device = function() { return require('crypto').randomBytes(1)[0]; };
+ } else {
+ // default for ES5 platforms
+ random_device = function() { return (Math.random()*256)|0; };
+ }
+ FS.createDevice('/dev', 'random', random_device);
+ FS.createDevice('/dev', 'urandom', random_device);
+ // we're not going to emulate the actual shm device,
+ // just create the tmp dirs that reside in it commonly
+ FS.mkdir('/dev/shm');
+ FS.mkdir('/dev/shm/tmp');
+ },createSpecialDirectories:function () {
+ // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname)
+ FS.mkdir('/proc');
+ FS.mkdir('/proc/self');
+ FS.mkdir('/proc/self/fd');
+ FS.mount({
+ mount: function() {
+ var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73);
+ node.node_ops = {
+ lookup: function(parent, name) {
+ var fd = +name;
+ var stream = FS.getStream(fd);
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ var ret = {
+ parent: null,
+ mount: { mountpoint: 'fake' },
+ node_ops: { readlink: function() { return stream.path } }
+ };
+ ret.parent = ret; // make it look like a simple root node
+ return ret;
+ }
+ };
+ return node;
+ }
+ }, {}, '/proc/self/fd');
+ },createStandardStreams:function () {
+ // TODO deprecate the old functionality of a single
+ // input / output callback and that utilizes FS.createDevice
+ // and instead require a unique set of stream ops
+
+ // by default, we symlink the standard streams to the
+ // default tty devices. however, if the standard streams
+ // have been overwritten we create a unique device for
+ // them instead.
+ if (Module['stdin']) {
+ FS.createDevice('/dev', 'stdin', Module['stdin']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdin');
+ }
+ if (Module['stdout']) {
+ FS.createDevice('/dev', 'stdout', null, Module['stdout']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdout');
+ }
+ if (Module['stderr']) {
+ FS.createDevice('/dev', 'stderr', null, Module['stderr']);
+ } else {
+ FS.symlink('/dev/tty1', '/dev/stderr');
+ }
+
+ // open default streams for the stdin, stdout and stderr devices
+ var stdin = FS.open('/dev/stdin', 'r');
+ assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
+
+ var stdout = FS.open('/dev/stdout', 'w');
+ assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
+
+ var stderr = FS.open('/dev/stderr', 'w');
+ assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
+ },ensureErrnoError:function () {
+ if (FS.ErrnoError) return;
+ FS.ErrnoError = function ErrnoError(errno, node) {
+ //Module.printErr(stackTrace()); // useful for debugging
+ this.node = node;
+ this.setErrno = function(errno) {
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break;
+ }
+ }
+ };
+ this.setErrno(errno);
+ this.message = ERRNO_MESSAGES[errno];
+ if (this.stack) this.stack = demangleAll(this.stack);
+ };
+ FS.ErrnoError.prototype = new Error();
+ FS.ErrnoError.prototype.constructor = FS.ErrnoError;
+ // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
+ [ERRNO_CODES.ENOENT].forEach(function(code) {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = '<generic error, no stack>';
+ });
+ },staticInit:function () {
+ FS.ensureErrnoError();
+
+ FS.nameTable = new Array(4096);
+
+ FS.mount(MEMFS, {}, '/');
+
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ FS.createSpecialDirectories();
+
+ FS.filesystems = {
+ 'MEMFS': MEMFS,
+ 'IDBFS': IDBFS,
+ 'NODEFS': NODEFS,
+ 'WORKERFS': WORKERFS,
+ };
+ },init:function (input, output, error) {
+ assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
+ FS.init.initialized = true;
+
+ FS.ensureErrnoError();
+
+ // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
+ Module['stdin'] = input || Module['stdin'];
+ Module['stdout'] = output || Module['stdout'];
+ Module['stderr'] = error || Module['stderr'];
+
+ FS.createStandardStreams();
+ },quit:function () {
+ FS.init.initialized = false;
+ // force-flush all streams, so we get musl std streams printed out
+ var fflush = Module['_fflush'];
+ if (fflush) fflush(0);
+ // close all of our streams
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue;
+ }
+ FS.close(stream);
+ }
+ },getMode:function (canRead, canWrite) {
+ var mode = 0;
+ if (canRead) mode |= 292 | 73;
+ if (canWrite) mode |= 146;
+ return mode;
+ },joinPath:function (parts, forceRelative) {
+ var path = PATH.join.apply(null, parts);
+ if (forceRelative && path[0] == '/') path = path.substr(1);
+ return path;
+ },absolutePath:function (relative, base) {
+ return PATH.resolve(base, relative);
+ },standardizePath:function (path) {
+ return PATH.normalize(path);
+ },findObject:function (path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (ret.exists) {
+ return ret.object;
+ } else {
+ ___setErrNo(ret.error);
+ return null;
+ }
+ },analyzePath:function (path, dontResolveLastLink) {
+ // operate from within the context of the symlink's target
+ try {
+ var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ path = lookup.path;
+ } catch (e) {
+ }
+ var ret = {
+ isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
+ parentExists: false, parentPath: null, parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, { parent: true });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === '/';
+ } catch (e) {
+ ret.error = e.errno;
+ };
+ return ret;
+ },createFolder:function (parent, name, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.mkdir(path, mode);
+ },createPath:function (parent, path, canRead, canWrite) {
+ parent = typeof parent === 'string' ? parent : FS.getPath(parent);
+ var parts = path.split('/').reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part) continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current);
+ } catch (e) {
+ // ignore EEXIST
+ }
+ parent = current;
+ }
+ return current;
+ },createFile:function (parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.create(path, mode);
+ },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
+ var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
+ var mode = FS.getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data === 'string') {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
+ data = arr;
+ }
+ // make sure we can write to the file
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, 'w');
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode);
+ }
+ return node;
+ },createDevice:function (parent, name, input, output) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(!!input, !!output);
+ if (!FS.createDevice.major) FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ // Create a fake device that a set of stream ops to emulate
+ // the old behavior.
+ FS.registerDevice(dev, {
+ open: function(stream) {
+ stream.seekable = false;
+ },
+ close: function(stream) {
+ // flush any pending line data
+ if (output && output.buffer && output.buffer.length) {
+ output(10);
+ }
+ },
+ read: function(stream, buffer, offset, length, pos /* ignored */) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input();
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },
+ write: function(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }
+ });
+ return FS.mkdev(path, mode, dev);
+ },createLink:function (parent, name, target, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ return FS.symlink(target, path);
+ },forceLoadFile:function (obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
+ var success = true;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
+ } else if (Module['read']) {
+ // Command-line.
+ try {
+ // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
+ // read() will try to parse UTF8.
+ obj.contents = intArrayFromString(Module['read'](obj.url), true);
+ obj.usedBytes = obj.contents.length;
+ } catch (e) {
+ success = false;
+ }
+ } else {
+ throw new Error('Cannot load without read() or XMLHttpRequest.');
+ }
+ if (!success) ___setErrNo(ERRNO_CODES.EIO);
+ return success;
+ },createLazyFile:function (parent, name, url, canRead, canWrite) {
+ // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
+ function LazyUint8Array() {
+ this.lengthKnown = false;
+ this.chunks = []; // Loaded chunks. Index is the chunk number
+ }
+ LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
+ if (idx > this.length-1 || idx < 0) {
+ return undefined;
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = (idx / this.chunkSize)|0;
+ return this.getter(chunkNum)[chunkOffset];
+ }
+ LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
+ this.getter = getter;
+ }
+ LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
+ // Find length
+ var xhr = new XMLHttpRequest();
+ xhr.open('HEAD', url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
+
+ var chunkSize = 1024*1024; // Chunk size in bytes
+
+ if (!hasByteServing) chunkSize = datalength;
+
+ // Function to get a range from the remote URL.
+ var doXHR = (function(from, to) {
+ if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
+
+ // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, false);
+ if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+
+ // Some hints to the browser that we want binary data.
+ if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
+ }
+
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || []);
+ } else {
+ return intArrayFromString(xhr.responseText || '', true);
+ }
+ });
+ var lazyArray = this;
+ lazyArray.setDataGetter(function(chunkNum) {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum+1) * chunkSize - 1; // including this byte
+ end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end);
+ }
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum];
+ });
+
+ if (usesGzip || !datalength) {
+ // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length
+ chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file
+ datalength = this.getter(0).length;
+ chunkSize = datalength;
+ console.log("LazyFiles on gzip forces download of the whole file when length is accessed");
+ }
+
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true;
+ }
+ if (typeof XMLHttpRequest !== 'undefined') {
+ if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
+ var lazyArray = new LazyUint8Array();
+ Object.defineProperties(lazyArray, {
+ length: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._length;
+ }
+ },
+ chunkSize: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._chunkSize;
+ }
+ }
+ });
+
+ var properties = { isDevice: false, contents: lazyArray };
+ } else {
+ var properties = { isDevice: false, url: url };
+ }
+
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ // This is a total hack, but I want to get this lazy file code out of the
+ // core of MEMFS. If we want to keep this lazy file concept I feel it should
+ // be its own thin LAZYFS proxying calls to MEMFS.
+ if (properties.contents) {
+ node.contents = properties.contents;
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url;
+ }
+ // Add a function that defers querying the file size until it is asked the first time.
+ Object.defineProperties(node, {
+ usedBytes: {
+ get: function() { return this.contents.length; }
+ }
+ });
+ // override each stream op with one that tries to force load the lazy file first
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach(function(key) {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = function forceLoadLazyFile() {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ return fn.apply(null, arguments);
+ };
+ });
+ // use a custom read function
+ stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) { // normal array
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i];
+ }
+ } else {
+ for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
+ buffer[offset + i] = contents.get(position + i);
+ }
+ }
+ return size;
+ };
+ node.stream_ops = stream_ops;
+ return node;
+ },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
+ Browser.init(); // XXX perhaps this method should move onto Browser?
+ // TODO we should allow people to just pass in a complete filename instead
+ // of parent and name being that we just join them anyways
+ var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
+ var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname
+ function processData(byteArray) {
+ function finish(byteArray) {
+ if (preFinish) preFinish();
+ if (!dontCreateFile) {
+ FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
+ }
+ if (onload) onload();
+ removeRunDependency(dep);
+ }
+ var handled = false;
+ Module['preloadPlugins'].forEach(function(plugin) {
+ if (handled) return;
+ if (plugin['canHandle'](fullname)) {
+ plugin['handle'](byteArray, fullname, finish, function() {
+ if (onerror) onerror();
+ removeRunDependency(dep);
+ });
+ handled = true;
+ }
+ });
+ if (!handled) finish(byteArray);
+ }
+ addRunDependency(dep);
+ if (typeof url == 'string') {
+ Browser.asyncLoad(url, function(byteArray) {
+ processData(byteArray);
+ }, onerror);
+ } else {
+ processData(url);
+ }
+ },indexedDB:function () {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ },DB_NAME:function () {
+ return 'EM_FS_' + window.location.pathname;
+ },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
+ console.log('creating db');
+ var db = openRequest.result;
+ db.createObjectStore(FS.DB_STORE_NAME);
+ };
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var putRequest = files.put(FS.analyzePath(path).object.contents, path);
+ putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
+ putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ },loadFilesFromDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = onerror; // no database to load from
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ try {
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
+ } catch(e) {
+ onerror(e);
+ return;
+ }
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var getRequest = files.get(path);
+ getRequest.onsuccess = function getRequest_onsuccess() {
+ if (FS.analyzePath(path).exists) {
+ FS.unlink(path);
+ }
+ FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
+ ok++;
+ if (ok + fail == total) finish();
+ };
+ getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) {
+ if (path[0] !== '/') {
+ // relative path
+ var dir;
+ if (dirfd === -100) {
+ dir = FS.cwd();
+ } else {
+ var dirstream = FS.getStream(dirfd);
+ if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ dir = dirstream.path;
+ }
+ path = PATH.join2(dir, path);
+ }
+ return path;
+ },doStat:function (func, path, buf) {
+ try {
+ var stat = func(path);
+ } catch (e) {
+ if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
+ // an error occurred while trying to look up the path; we should just report ENOTDIR
+ return -ERRNO_CODES.ENOTDIR;
+ }
+ throw e;
+ }
+ HEAP32[((buf)>>2)]=stat.dev;
+ HEAP32[(((buf)+(4))>>2)]=0;
+ HEAP32[(((buf)+(8))>>2)]=stat.ino;
+ HEAP32[(((buf)+(12))>>2)]=stat.mode;
+ HEAP32[(((buf)+(16))>>2)]=stat.nlink;
+ HEAP32[(((buf)+(20))>>2)]=stat.uid;
+ HEAP32[(((buf)+(24))>>2)]=stat.gid;
+ HEAP32[(((buf)+(28))>>2)]=stat.rdev;
+ HEAP32[(((buf)+(32))>>2)]=0;
+ HEAP32[(((buf)+(36))>>2)]=stat.size;
+ HEAP32[(((buf)+(40))>>2)]=4096;
+ HEAP32[(((buf)+(44))>>2)]=stat.blocks;
+ HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(52))>>2)]=0;
+ HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(60))>>2)]=0;
+ HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(68))>>2)]=0;
+ HEAP32[(((buf)+(72))>>2)]=stat.ino;
+ return 0;
+ },doMsync:function (addr, stream, len, flags) {
+ var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
+ FS.msync(stream, buffer, 0, len, flags);
+ },doMkdir:function (path, mode) {
+ // remove a trailing slash, if one - /a/b/ has basename of '', but
+ // we want to create b in the context of this function
+ path = PATH.normalize(path);
+ if (path[path.length-1] === '/') path = path.substr(0, path.length-1);
+ FS.mkdir(path, mode, 0);
+ return 0;
+ },doMknod:function (path, mode, dev) {
+ // we don't want this in the JS API as it uses mknod to create all nodes.
+ switch (mode & 61440) {
+ case 32768:
+ case 8192:
+ case 24576:
+ case 4096:
+ case 49152:
+ break;
+ default: return -ERRNO_CODES.EINVAL;
+ }
+ FS.mknod(path, mode, dev);
+ return 0;
+ },doReadlink:function (path, buf, bufsize) {
+ if (bufsize <= 0) return -ERRNO_CODES.EINVAL;
+ var ret = FS.readlink(path);
+
+ var len = Math.min(bufsize, lengthBytesUTF8(ret));
+ var endChar = HEAP8[buf+len];
+ stringToUTF8(ret, buf, bufsize+1);
+ // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!)
+ // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write.
+ HEAP8[buf+len] = endChar;
+
+ return len;
+ },doAccess:function (path, amode) {
+ if (amode & ~7) {
+ // need a valid mode
+ return -ERRNO_CODES.EINVAL;
+ }
+ var node;
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ var perms = '';
+ if (amode & 4) perms += 'r';
+ if (amode & 2) perms += 'w';
+ if (amode & 1) perms += 'x';
+ if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) {
+ return -ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },doDup:function (path, flags, suggestFD) {
+ var suggest = FS.getStream(suggestFD);
+ if (suggest) FS.close(suggest);
+ return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
+ },doReadv:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.read(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ if (curr < len) break; // nothing more to read
+ }
+ return ret;
+ },doWritev:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.write(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ }
+ return ret;
+ },varargs:0,get:function (varargs) {
SYSCALLS.varargs += 4;
var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
return ret;
},getStr:function () {
var ret = Pointer_stringify(SYSCALLS.get());
return ret;
+ },getStreamFromFD:function () {
+ var stream = FS.getStream(SYSCALLS.get());
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return stream;
+ },getSocketFromFD:function () {
+ var socket = SOCKFS.getSocket(SYSCALLS.get());
+ if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return socket;
+ },getSocketAddress:function (allowNull) {
+ var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();
+ if (allowNull && addrp === 0) return null;
+ var info = __read_sockaddr(addrp, addrlen);
+ if (info.errno) throw new FS.ErrnoError(info.errno);
+ info.addr = DNS.lookup_addr(info.addr) || info.addr;
+ return info;
},get64:function () {
var low = SYSCALLS.get(), high = SYSCALLS.get();
if (low >= 0) assert(high === 0);
@@ -3374,10 +6488,42 @@ function copyTempDouble(ptr) {
return low;
},getZero:function () {
assert(SYSCALLS.get() === 0);
- }};function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;
+ }};function ___syscall54(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 54, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// ioctl
- return 0;
+ var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();
+ switch (op) {
+ case 21505: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ case 21506: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0; // no-op, not actually adjusting terminal settings
+ }
+ case 21519: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ var argp = SYSCALLS.get();
+ HEAP32[((argp)>>2)]=0;
+ return 0;
+ }
+ case 21520: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return -ERRNO_CODES.EINVAL; // not supported
+ }
+ case 21531: {
+ var argp = SYSCALLS.get();
+ return FS.ioctl(stream, op, argp);
+ }
+ case 21523: {
+ // TODO: in theory we should write to the winsize struct that gets
+ // passed in, but for now musl doesn't read anything on it
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ default: abort('bad ioctl syscall ' + op);
+ }
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4367,6 +7513,29 @@ function copyTempDouble(ptr) {
return 0;
}
+ function _utime(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(12, path, times);
+ // int utime(const char *path, const struct utimbuf *times);
+ // http://pubs.opengroup.org/onlinepubs/009695399/basedefs/utime.h.html
+ var time;
+ if (times) {
+ // NOTE: We don't keep track of access timestamps.
+ var offset = 4;
+ time = HEAP32[(((times)+(offset))>>2)];
+ time *= 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx['copyTexImage2D'](x0, x1, x2, x3, x4, x5, x6, x7) }
function _emscripten_glTexParameterfv(target, pname, params) {
@@ -4374,6 +7543,220 @@ function copyTempDouble(ptr) {
GLctx.texParameterf(target, pname, param);
}
+
+
+
+ var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};
+
+
+ var __pthread_ptr=0;
+
+ var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr, isMainBrowserThread, isMainRuntimeThread) {
+ pthreadPtr = pthreadPtr|0;
+ isMainBrowserThread = isMainBrowserThread|0;
+ isMainRuntimeThread = isMainRuntimeThread|0;
+ __pthread_ptr = pthreadPtr;
+ __pthread_is_main_browser_thread = isMainBrowserThread;
+ __pthread_is_main_runtime_thread = isMainRuntimeThread;
+ }
+
+ var _emscripten_main_thread_process_queued_calls=undefined;var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkerPool:[],runningWorkers:[],initMainThreadBlock:function () {
+ if (ENVIRONMENT_IS_PTHREAD) return undefined;
+ PThread.mainThreadBlock = allocate(244, "i32*", ALLOC_STATIC);
+ __register_pthread_ptr(PThread.mainThreadBlock, /*isMainBrowserThread=*/!ENVIRONMENT_IS_WORKER, /*isMainRuntimeThread=*/1); // Pass the thread address inside the asm.js scope to store it for fast access that avoids the need for a FFI out.
+
+ for (var i = 0; i < 244/4; ++i) HEAPU32[PThread.mainThreadBlock/4+i] = 0;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((PThread.mainThreadBlock)+(24))>>2)]=PThread.mainThreadBlock;
+
+ // Allocate memory for thread-local storage.
+ var tlsMemory = allocate(128 * 4, "i32*", ALLOC_STATIC);
+ for (var i = 0; i < 128; ++i) HEAPU32[tlsMemory/4+i] = 0;
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 52 ) >> 2, PThread.mainThreadBlock); // Main thread ID.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ },pthreads:{},pthreadIdCounter:2,exitHandlers:null,setThreadStatus:function () {},runExitHandlers:function () {
+ if (PThread.exitHandlers !== null) {
+ while (PThread.exitHandlers.length > 0) {
+ PThread.exitHandlers.pop()();
+ }
+ PThread.exitHandlers = null;
+ }
+
+ // Call into the musl function that runs destructors of all thread-specific data.
+ if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors();
+ },threadExit:function (exitCode) {
+ var tb = _pthread_self();
+ if (tb) { // If we haven't yet exited?
+ Atomics.store(HEAPU32, (tb + 4 ) >> 2, exitCode);
+ // When we publish this, the main thread is free to deallocate the thread object and we are done.
+ // Therefore set threadInfoStruct = 0; above to 'release' the object in this worker thread.
+ Atomics.store(HEAPU32, (tb + 0 ) >> 2, 1);
+
+ // Disable all cancellation so that executing the cleanup handlers won't trigger another JS
+ // canceled exception to be thrown.
+ Atomics.store(HEAPU32, (tb + 72 ) >> 2, 1/*PTHREAD_CANCEL_DISABLE*/);
+ Atomics.store(HEAPU32, (tb + 76 ) >> 2, 0/*PTHREAD_CANCEL_DEFERRED*/);
+ PThread.runExitHandlers();
+
+ _emscripten_futex_wake(tb + 0, 2147483647);
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ threadInfoStruct = 0;
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // This worker no longer owns any WebGL OffscreenCanvases, so transfer them back to parent thread.
+ var transferList = [];
+
+
+ postMessage({ cmd: 'exit' });
+ }
+ }
+ },threadCancel:function () {
+ PThread.runExitHandlers();
+ Atomics.store(HEAPU32, (threadInfoStruct + 4 ) >> 2, -1/*PTHREAD_CANCELED*/);
+ Atomics.store(HEAPU32, (threadInfoStruct + 0 ) >> 2, 1); // Mark the thread as no longer running.
+ _emscripten_futex_wake(threadInfoStruct + 0, 2147483647); // wake all threads
+ threadInfoStruct = selfThreadId = 0; // Not hosting a pthread anymore in this worker, reset the info structures to null.
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ postMessage({ cmd: 'cancelDone' });
+ },terminateAllThreads:function () {
+ for (var t in PThread.pthreads) {
+ var pthread = PThread.pthreads[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.pthreads = {};
+ for (var t in PThread.unusedWorkerPool) {
+ var pthread = PThread.unusedWorkerPool[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.unusedWorkerPool = [];
+ for (var t in PThread.runningWorkers) {
+ var pthread = PThread.runningWorkers[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.runningWorkers = [];
+ },freeThreadData:function (pthread) {
+ if (!pthread) return;
+ if (pthread.threadInfoStruct) {
+ var tlsMemory = HEAP32[(((pthread.threadInfoStruct)+(116))>>2)];
+ HEAP32[(((pthread.threadInfoStruct)+(116))>>2)]=0;
+ _free(pthread.tlsMemory);
+ _free(pthread.threadInfoStruct);
+ }
+ pthread.threadInfoStruct = 0;
+ if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase);
+ pthread.stackBase = 0;
+ if (pthread.worker) pthread.worker.pthread = null;
+ },receiveObjectTransfer:function (data) {
+ },allocateUnusedWorkers:function (numWorkers, onFinishedLoading) {
+ if (typeof SharedArrayBuffer === 'undefined') return; // No multithreading support, no-op.
+ Module['print']('Preallocating ' + numWorkers + ' workers for a pthread spawn pool.');
+
+ var numWorkersLoaded = 0;
+ for (var i = 0; i < numWorkers; ++i) {
+ var pthreadMainJs = 'pthread-main.js';
+ // Allow HTML module to configure the location where the 'pthread-main.js' file will be loaded from,
+ // either via Module.locateFile() function, or via Module.pthreadMainPrefixURL string. If neither
+ // of these are passed, then the default URL 'pthread-main.js' relative to the main html file is loaded.
+ if (typeof Module['locateFile'] === 'function') pthreadMainJs = Module['locateFile'](pthreadMainJs);
+ else if (Module['pthreadMainPrefixURL']) pthreadMainJs = Module['pthreadMainPrefixURL'] + pthreadMainJs;
+ var worker = new Worker(pthreadMainJs);
+
+ worker.onmessage = function(e) {
+ // If this message is intended to a recipient that is not the main thread, forward it to the target thread.
+ if (e.data.targetThread && e.data.targetThread != _pthread_self()) {
+ var thread = PThread.pthreads[e.data.targetThread];
+ if (thread) {
+ thread.worker.postMessage(e.data, e.data.transferList);
+ } else {
+ console.error('Internal error! Worker sent a message "' + e.data.cmd + '" to target pthread ' + e.data.targetThread + ', but that thread no longer exists!');
+ }
+ return;
+ }
+
+ if (e.data.cmd === 'processQueuedMainThreadWork') {
+ // TODO: Must post message to main Emscripten thread in PROXY_TO_WORKER mode.
+ _emscripten_main_thread_process_queued_calls();
+ } else if (e.data.cmd === 'spawnThread') {
+ __spawn_thread(e.data);
+ } else if (e.data.cmd === 'cleanupThread') {
+ __cleanup_thread(e.data.thread);
+ } else if (e.data.cmd === 'killThread') {
+ __kill_thread(e.data.thread);
+ } else if (e.data.cmd === 'cancelThread') {
+ __cancel_thread(e.data.thread);
+ } else if (e.data.cmd === 'loaded') {
+ ++numWorkersLoaded;
+ if (numWorkersLoaded === numWorkers && onFinishedLoading) {
+ onFinishedLoading();
+ }
+ } else if (e.data.cmd === 'print') {
+ Module['print']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'printErr') {
+ Module['printErr']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'alert') {
+ alert('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'exit') {
+ // currently no-op
+ } else if (e.data.cmd === 'cancelDone') {
+ PThread.freeThreadData(worker.pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ // TODO: Free if detached.
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ } else if (e.data.cmd === 'objectTransfer') {
+ PThread.receiveObjectTransfer(e.data);
+ } else {
+ Module['printErr']("worker sent an unknown command " + e.data.cmd);
+ }
+ };
+
+ worker.onerror = function(e) {
+ Module['printErr']('pthread sent an error! ' + e.filename + ':' + e.lineno + ': ' + e.message);
+ };
+
+ // Allocate tempDoublePtr for the worker. This is done here on the worker's behalf, since we may need to do this statically
+ // if the runtime has not been loaded yet, etc. - so we just use getMemory, which is main-thread only.
+ var tempDoublePtr = getMemory(8); // TODO: leaks. Cleanup after worker terminates.
+
+ // Ask the new worker to load up the Emscripten-compiled page. This is a heavy operation.
+ worker.postMessage({
+ cmd: 'load',
+ url: currentScriptUrl,
+ buffer: HEAPU8.buffer,
+ tempDoublePtr: tempDoublePtr,
+ TOTAL_MEMORY: TOTAL_MEMORY,
+ STATICTOP: STATICTOP,
+ DYNAMIC_BASE: DYNAMIC_BASE,
+ DYNAMICTOP_PTR: DYNAMICTOP_PTR,
+ PthreadWorkerInit: PthreadWorkerInit
+ });
+ PThread.unusedWorkerPool.push(worker);
+ }
+ },getNewWorker:function () {
+ if (PThread.unusedWorkerPool.length == 0) PThread.allocateUnusedWorkers(1);
+ if (PThread.unusedWorkerPool.length > 0) return PThread.unusedWorkerPool.pop();
+ else return null;
+ },busySpinWait:function (msecs) {
+ var t = performance.now() + msecs;
+ while(performance.now() < t) {
+ ;
+ }
+ }};var __pthread_is_main_runtime_thread=0;function _emscripten_is_main_runtime_thread() {
+ return __pthread_is_main_runtime_thread|0; // Semantically the same as testing "!ENVIRONMENT_IS_PTHREAD" outside the asm.js scope
+ }
+
function _emscripten_glLinkProgram(program) {
GLctx.linkProgram(GL.programs[program]);
GL.programInfos[program] = null; // uniforms no longer keep the same names after linking
@@ -4424,6 +7807,11 @@ function copyTempDouble(ptr) {
Module["_memset"] = _memset;
+ function _atexit(func, arg) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(110, func, arg);
+ __ATEXIT__.unshift({ func: func, arg: arg });
+ }
+
function _glfwMakeContextCurrent(winid) {}
function _emscripten_set_touchcancel_callback(target, userData, useCapture, callbackfunc) {
@@ -4621,7 +8009,8 @@ function copyTempDouble(ptr) {
GLctx.uniformMatrix2fv(GL.uniforms[location], !!transpose, view);
}
- function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall6(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 6, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// close
var stream = SYSCALLS.getStreamFromFD();
@@ -4691,7 +8080,8 @@ function copyTempDouble(ptr) {
Module['printErr']('missing function: emscripten_glGetPointerv'); abort(-1);
}
- function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall140(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 140, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// llseek
var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
@@ -4707,34 +8097,12 @@ function copyTempDouble(ptr) {
}
}
- function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall146(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 146, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// writev
- // hack to support printf in NO_FILESYSTEM
- var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
- var ret = 0;
- if (!___syscall146.buffer) {
- ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr
- ___syscall146.printChar = function(stream, curr) {
- var buffer = ___syscall146.buffers[stream];
- assert(buffer);
- if (curr === 0 || curr === 10) {
- (stream === 1 ? Module['print'] : Module['printErr'])(UTF8ArrayToString(buffer, 0));
- buffer.length = 0;
- } else {
- buffer.push(curr);
- }
- };
- }
- for (var i = 0; i < iovcnt; i++) {
- var ptr = HEAP32[(((iov)+(i*8))>>2)];
- var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
- for (var j = 0; j < len; j++) {
- ___syscall146.printChar(stream, HEAPU8[ptr+j]);
- }
- ret += len;
- }
- return ret;
+ var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
+ return SYSCALLS.doWritev(stream, iov, iovcnt);
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4749,6 +8117,41 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilFuncSeparate(x0, x1, x2, x3) { GLctx['stencilFuncSeparate'](x0, x1, x2, x3) }
+
+ var _tzname; if (ENVIRONMENT_IS_PTHREAD) _tzname = PthreadWorkerInit._tzname; else PthreadWorkerInit._tzname = _tzname = allocate(8, "i32*", ALLOC_STATIC);
+
+ var _daylight; if (ENVIRONMENT_IS_PTHREAD) _daylight = PthreadWorkerInit._daylight; else PthreadWorkerInit._daylight = _daylight = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _timezone; if (ENVIRONMENT_IS_PTHREAD) _timezone = PthreadWorkerInit._timezone; else PthreadWorkerInit._timezone = _timezone = allocate(1, "i32*", ALLOC_STATIC);function _tzset() {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_0(119);
+ // TODO: Use (malleable) environment variables instead of system settings.
+ if (_tzset.called) return;
+ _tzset.called = true;
+
+ HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60;
+
+ var winter = new Date(2000, 0, 1);
+ var summer = new Date(2000, 6, 1);
+ HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
+
+ function extractZone(date) {
+ var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
+ return match ? match[1] : "GMT";
+ };
+ var winterName = extractZone(winter);
+ var summerName = extractZone(summer);
+ var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);
+ var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);
+ if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {
+ // Northern hemisphere
+ HEAP32[((_tzname)>>2)]=winterNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr;
+ } else {
+ HEAP32[((_tzname)>>2)]=summerNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=winterNamePtr;
+ }
+ }
+
Module["_i64Subtract"] = _i64Subtract;
@@ -4789,6 +8192,155 @@ function copyTempDouble(ptr) {
return JSEvents.lastGamepadState.length;
}
+ function _sysconf(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(72, name);
+ // long sysconf(int name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
+ switch(name) {
+ case 30: return PAGE_SIZE;
+ case 85:
+ var maxHeapSize = 2*1024*1024*1024 - 16777216;
+ maxHeapSize = HEAPU8.length;
+ return maxHeapSize / PAGE_SIZE;
+ case 132:
+ case 133:
+ case 12:
+ case 137:
+ case 138:
+ case 15:
+ case 235:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 149:
+ case 13:
+ case 10:
+ case 236:
+ case 153:
+ case 9:
+ case 21:
+ case 22:
+ case 159:
+ case 154:
+ case 14:
+ case 77:
+ case 78:
+ case 139:
+ case 80:
+ case 81:
+ case 82:
+ case 68:
+ case 67:
+ case 164:
+ case 11:
+ case 29:
+ case 47:
+ case 48:
+ case 95:
+ case 52:
+ case 51:
+ case 46:
+ return 200809;
+ case 79:
+ return 0;
+ case 27:
+ case 246:
+ case 127:
+ case 128:
+ case 23:
+ case 24:
+ case 160:
+ case 161:
+ case 181:
+ case 182:
+ case 242:
+ case 183:
+ case 184:
+ case 243:
+ case 244:
+ case 245:
+ case 165:
+ case 178:
+ case 179:
+ case 49:
+ case 50:
+ case 168:
+ case 169:
+ case 175:
+ case 170:
+ case 171:
+ case 172:
+ case 97:
+ case 76:
+ case 32:
+ case 173:
+ case 35:
+ return -1;
+ case 176:
+ case 177:
+ case 7:
+ case 155:
+ case 8:
+ case 157:
+ case 125:
+ case 126:
+ case 92:
+ case 93:
+ case 129:
+ case 130:
+ case 131:
+ case 94:
+ case 91:
+ return 1;
+ case 74:
+ case 60:
+ case 69:
+ case 70:
+ case 4:
+ return 1024;
+ case 31:
+ case 42:
+ case 72:
+ return 32;
+ case 87:
+ case 26:
+ case 33:
+ return 2147483647;
+ case 34:
+ case 1:
+ return 47839;
+ case 38:
+ case 36:
+ return 99;
+ case 43:
+ case 37:
+ return 2048;
+ case 0: return 2097152;
+ case 3: return 65536;
+ case 28: return 32768;
+ case 44: return 32767;
+ case 75: return 16384;
+ case 39: return 1000;
+ case 89: return 700;
+ case 71: return 256;
+ case 40: return 255;
+ case 2: return 100;
+ case 180: return 64;
+ case 25: return 20;
+ case 5: return 16;
+ case 6: return 6;
+ case 73: return 4;
+ case 84: {
+ if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;
+ return 1;
+ }
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
function _emscripten_glUniform4iv(location, count, value) {
@@ -4832,6 +8384,7 @@ function copyTempDouble(ptr) {
GL.shaders[shader]);
}
+
function _glUniform4f(location, v0, v1, v2, v3) {
GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3);
}
@@ -4869,6 +8422,13 @@ function copyTempDouble(ptr) {
GLFW.hints = GLFW.defaultHints;
}
+ function _gettimeofday(ptr) {
+ var now = Date.now();
+ HEAP32[((ptr)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((ptr)+(4))>>2)]=((now % 1000)*1000)|0; // microseconds
+ return 0;
+ }
+
function _emscripten_glClearStencil(x0) { GLctx['clearStencil'](x0) }
function _emscripten_glDetachShader(program, shader) {
@@ -4925,6 +8485,70 @@ function copyTempDouble(ptr) {
function _emscripten_glGenerateMipmap(x0) { GLctx['generateMipmap'](x0) }
+
+
+
+
+ var _environ; if (ENVIRONMENT_IS_PTHREAD) _environ = PthreadWorkerInit._environ; else PthreadWorkerInit._environ = _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'] = ENV['LOGNAME'] = 'web_user';
+ ENV['PATH'] = '/';
+ ENV['PWD'] = '/';
+ ENV['HOME'] = '/home/web_user';
+ ENV['LANG'] = 'C';
+ ENV['_'] = Module['thisProgram'];
+ // 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];
+ writeAsciiToMemory(line, poolPtr);
+ HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
+ poolPtr += line.length + 1;
+ }
+ HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
+ }var ENV={};function _clearenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(112, name);
+ // int clearenv (void);
+ // http://www.gnu.org/s/hello/manual/libc/Environment-Access.html#index-clearenv-3107
+ ENV = {};
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glCullFace(x0) { GLctx['cullFace'](x0) }
function _emscripten_glUniform4f(location, v0, v1, v2, v3) {
@@ -5009,9 +8633,14 @@ function copyTempDouble(ptr) {
GLctx.uniform2iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*8)>>2));
}
- function _emscripten_glVertexAttrib1fv(index, v) {
-
- GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ var _emscripten_asm_const=true;
+
+ function _chroot(path) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(37, path);
+ // int chroot(const char *path);
+ // http://pubs.opengroup.org/onlinepubs/7908799/xsh/chroot.html
+ ___setErrNo(ERRNO_CODES.EACCES);
+ return -1;
}
function _glEnable(x0) { GLctx['enable'](x0) }
@@ -5180,13 +8809,57 @@ function copyTempDouble(ptr) {
emscriptenWebGLGetUniform(program, location, params, 'Integer');
}
+ function _unsetenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(114, name);
+ // int unsetenv(const char *name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/unsetenv.html
+ if (name === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ name = Pointer_stringify(name);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name)) {
+ delete ENV[name];
+ ___buildEnvironment(ENV);
+ }
+ return 0;
+ }
+
function _emscripten_glDepthMask(flag) {
GLctx.depthMask(!!flag);
}
+
function _emscripten_glDepthRangef(x0, x1) { GLctx['depthRange'](x0, x1) }
- function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
+
+ function _emscripten_get_now_is_monotonic() {
+ // return whether emscripten_get_now is guaranteed monotonic; the Date.now
+ // implementation is not :(
+ return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
+ ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
+ }function _clock_gettime(clk_id, tp) {
+ // int clock_gettime(clockid_t clk_id, struct timespec *tp);
+ var now;
+ if (clk_id === 0) {
+ now = Date.now();
+ } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
+ now = _emscripten_get_now();
+ } else {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
+ return 0;
+ }function ___clock_gettime() {
+ return _clock_gettime.apply(null, arguments)
+ }
function _emscripten_set_fullscreenchange_callback(target, userData, useCapture, callbackfunc) {
if (typeof JSEvents.fullscreenEnabled() === 'undefined') return -1;
@@ -5202,7 +8875,75 @@ function copyTempDouble(ptr) {
return 0;
}
- function _pthread_join() {}
+ function _emscripten_glVertexAttrib1fv(index, v) {
+
+ GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ }
+
+
+ function __cleanup_thread(pthread_ptr) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _cleanup_thread() can only ever be called from main application thread!';
+ if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _cleanup_thread!';
+ HEAP32[(((pthread_ptr)+(24))>>2)]=0;
+ var pthread = PThread.pthreads[pthread_ptr];
+ var worker = pthread.worker;
+ PThread.freeThreadData(pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ }
+
+ function __pthread_testcancel_js() {
+ if (!ENVIRONMENT_IS_PTHREAD) return;
+ if (!threadInfoStruct) return;
+ var cancelDisabled = Atomics.load(HEAPU32, (threadInfoStruct + 72 ) >> 2);
+ if (cancelDisabled) return;
+ var canceled = Atomics.load(HEAPU32, (threadInfoStruct + 0 ) >> 2);
+ if (canceled == 2) throw 'Canceled!';
+ }function _pthread_join(thread, status) {
+ if (!thread) {
+ Module['printErr']('pthread_join attempted on a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ if (ENVIRONMENT_IS_PTHREAD && selfThreadId == thread) {
+ Module['printErr']('PThread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ else if (!ENVIRONMENT_IS_PTHREAD && PThread.mainThreadBlock == thread) {
+ Module['printErr']('Main thread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_join attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var detached = Atomics.load(HEAPU32, (thread + 80 ) >> 2);
+ if (detached) {
+ Module['printErr']('Attempted to join thread ' + thread + ', which was already detached!');
+ return ERRNO_CODES.EINVAL; // The thread is already detached, can no longer join it!
+ }
+ for (;;) {
+ var threadStatus = Atomics.load(HEAPU32, (thread + 0 ) >> 2);
+ if (threadStatus == 1) { // Exited?
+ var threadExitCode = Atomics.load(HEAPU32, (thread + 4 ) >> 2);
+ if (status) HEAP32[((status)>>2)]=threadExitCode;
+ Atomics.store(HEAPU32, (thread + 80 ) >> 2, 1); // Mark the thread as detached.
+
+ if (!ENVIRONMENT_IS_PTHREAD) __cleanup_thread(thread);
+ else postMessage({ cmd: 'cleanupThread', thread: thread});
+ return 0;
+ }
+ // TODO HACK! Replace the _js variant with just _pthread_testcancel:
+ //_pthread_testcancel();
+ __pthread_testcancel_js();
+ // In main runtime thread (the thread that initialized the Emscripten C runtime and launched main()), assist pthreads in performing operations
+ // that they need to access the Emscripten main runtime for.
+ if (!ENVIRONMENT_IS_PTHREAD) _emscripten_main_thread_process_queued_calls();
+ _emscripten_futex_wait(thread + 0, threadStatus, ENVIRONMENT_IS_PTHREAD ? 100 : 1);
+ }
+ }
@@ -5494,12 +9235,6 @@ function copyTempDouble(ptr) {
win.shouldClose = value;
}
- function _glfwWindowShouldClose(winid) {
- var win = GLFW.WindowFromId(winid);
- if (!win) return 0;
- return win.shouldClose;
- }
-
function _emscripten_glClientActiveTexture() {
Module['printErr']('missing function: emscripten_glClientActiveTexture'); abort(-1);
}
@@ -5551,8 +9286,6 @@ function copyTempDouble(ptr) {
HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target, pname);
}
- function _glfwWaitEvents() {}
-
function _emscripten_glStencilOpSeparate(x0, x1, x2, x3) { GLctx['stencilOpSeparate'](x0, x1, x2, x3) }
function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) {
@@ -5611,45 +9344,45 @@ function copyTempDouble(ptr) {
function _glDepthFunc(x0) { GLctx['depthFunc'](x0) }
-
- var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
- Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
- Module["___udivmoddi4"] = ___udivmoddi4;
- Module["___uremdi3"] = ___uremdi3;
+ var __main_thread_futex_wait_address; if (ENVIRONMENT_IS_PTHREAD) __main_thread_futex_wait_address = PthreadWorkerInit.__main_thread_futex_wait_address; else PthreadWorkerInit.__main_thread_futex_wait_address = __main_thread_futex_wait_address = allocate(1, "i32*", ALLOC_STATIC);function _emscripten_futex_wait(addr, val, timeout) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0) return -22;
+ // dump('futex_wait addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ENVIRONMENT_IS_WORKER) {
+ var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout);
+ // dump('futex_wait done by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ret === 'timed-out') return -110;
+ if (ret === 'not-equal') return -11;
+ if (ret === 'ok') return 0;
+ throw 'Atomics.wait returned an unexpected value ' + ret;
+ } else {
+ // Atomics.wait is not available in the main browser thread, so simulate it via busy spinning.
+ var loadedVal = Atomics.load(HEAP32, addr >> 2);
+ if (val != loadedVal) return -11;
+
+ var tNow = performance.now();
+ var tEnd = tNow + timeout;
+
+
+ // Register globally which address the main thread is simulating to be waiting on. When zero, main thread is not waiting on anything,
+ // and on nonzero, the contents of address pointed by __main_thread_futex_wait_address tell which address the main thread is simulating its wait on.
+ Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr);
+ var ourWaitAddress = addr; // We may recursively re-enter this function while processing queued calls, in which case we'll do a spurious wakeup of the older wait operation.
+ while (addr == ourWaitAddress) {
+ tNow = performance.now();
+ if (tNow > tEnd) {
+ return -110;
+ }
+ _emscripten_main_thread_process_queued_calls(); // We are performing a blocking loop here, so must pump any pthreads if they want to perform operations that are proxied.
+ addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); // Look for a worker thread waking us up.
+ }
+ return 0;
+ }
+ }
function _emscripten_glClearDepthf(x0) { GLctx['clearDepth'](x0) }
function _emscripten_glClear(x0) { GLctx['clear'](x0) }
-
- function _emscripten_get_now_is_monotonic() {
- // return whether emscripten_get_now is guaranteed monotonic; the Date.now
- // implementation is not :(
- return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
- ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
- }
-
- var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
-
- function ___setErrNo(value) {
- if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
- else Module.printErr('failed to set errno from JS');
- return value;
- }function _clock_gettime(clk_id, tp) {
- // int clock_gettime(clockid_t clk_id, struct timespec *tp);
- var now;
- if (clk_id === 0) {
- now = Date.now();
- } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
- now = _emscripten_get_now();
- } else {
- ___setErrNo(ERRNO_CODES.EINVAL);
- return -1;
- }
- HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
- HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
- return 0;
- }
function _emscripten_glBindBuffer(target, buffer) {
var bufferObj = buffer ? GL.buffers[buffer] : null;
@@ -5736,6 +9469,13 @@ function copyTempDouble(ptr) {
return 0;
}
+
+
+ var cttz_i8; if (ENVIRONMENT_IS_PTHREAD) cttz_i8 = PthreadWorkerInit.cttz_i8; else PthreadWorkerInit.cttz_i8 = cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
+ Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
+ Module["___udivmoddi4"] = ___udivmoddi4;
+ Module["___uremdi3"] = ___uremdi3;
+
function _glGetUniformLocation(program, name) {
name = Pointer_stringify(name);
@@ -5830,6 +9570,8 @@ function copyTempDouble(ptr) {
GLFW.setCursorPosCallback(winid, cbfun);
}
+ function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
function _glBindAttribLocation(program, index, name) {
name = Pointer_stringify(name);
GLctx.bindAttribLocation(GL.programs[program], index, name);
@@ -5913,6 +9655,43 @@ function copyTempDouble(ptr) {
GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size));
}
+ function _emscripten_futex_wake(addr, count) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0 || count < 0) return -22;
+ if (count == 0) return 0;
+ // dump('futex_wake addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+
+ // See if main thread is waiting on this address? If so, wake it up by resetting its wake location to zero.
+ // Note that this is not a fair procedure, since we always wake main thread first before any workers, so
+ // this scheme does not adhere to real queue-based waiting.
+ var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2);
+ var mainThreadWoken = 0;
+ if (mainThreadWaitAddress == addr) {
+ var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0);
+ if (loadedAddr == mainThreadWaitAddress) {
+ --count;
+ mainThreadWoken = 1;
+ if (count <= 0) return 1;
+ }
+ }
+
+ // Wake any workers waiting on this address.
+ var ret = Atomics.wake(HEAP32, addr >> 2, count);
+ if (ret >= 0) return ret + mainThreadWoken;
+ throw 'Atomics.wake returned an unexpected value ' + ret;
+ }
+
+ function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
+ var log = GLctx.getProgramInfoLog(GL.programs[program]);
+ if (log === null) log = '(unknown error)';
+
+ if (maxLength > 0 && infoLog) {
+ var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
+ if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
+ } else {
+ if (length) HEAP32[((length)>>2)]=0;
+ }
+ }
+
function _emscripten_glGenFramebuffers(n, ids) {
for (var i = 0; i < n; ++i) {
var framebuffer = GLctx.createFramebuffer();
@@ -6019,8 +9798,181 @@ function copyTempDouble(ptr) {
GLctx.shaderSource(GL.shaders[shader], source);
}
- function _pthread_create() {
- return 11;
+
+ function __spawn_thread(threadParams) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _spawn_thread() can only ever be called from main application thread!';
+
+ var worker = PThread.getNewWorker();
+ if (worker.pthread !== undefined) throw 'Internal error!';
+ if (!threadParams.pthread_ptr) throw 'Internal error, no pthread ptr!';
+ PThread.runningWorkers.push(worker);
+
+ // Allocate memory for thread-local storage and initialize it to zero.
+ var tlsMemory = _malloc(128 * 4);
+ for (var i = 0; i < 128; ++i) {
+ HEAP32[(((tlsMemory)+(i*4))>>2)]=0;
+ }
+
+ var pthread = PThread.pthreads[threadParams.pthread_ptr] = { // Create a pthread info object to represent this thread.
+ worker: worker,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ allocatedOwnStack: threadParams.allocatedOwnStack,
+ thread: threadParams.pthread_ptr,
+ threadInfoStruct: threadParams.pthread_ptr // Info area for this thread in Emscripten HEAP (shared)
+ };
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 0 ) >> 2, 0); // threadStatus <- 0, meaning not yet exited.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 4 ) >> 2, 0); // threadExitCode <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 20 ) >> 2, 0); // profilerBlock <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 80 ) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 60 ) >> 2, 0); // Mark initial status to unused.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 52 ) >> 2, pthread.threadInfoStruct); // Main thread ID.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 96) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 92) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 8) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 12) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 20) >> 2, threadParams.schedPolicy);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 24) >> 2, threadParams.schedPrio);
+
+ var global_libc = _emscripten_get_global_libc();
+ var global_locale = global_libc + 40;
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 188) >> 2, global_locale);
+
+
+ worker.pthread = pthread;
+
+ // Ask the worker to start executing its pthread entry point function.
+ worker.postMessage({
+ cmd: 'run',
+ start_routine: threadParams.startRoutine,
+ arg: threadParams.arg,
+ threadInfoStruct: threadParams.pthread_ptr,
+ selfThreadId: threadParams.pthread_ptr, // TODO: Remove this since thread ID is now the same as the thread address.
+ parentThreadId: threadParams.parent_pthread_ptr,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ }, threadParams.transferList);
+ }
+
+ function _pthread_getschedparam(thread, policy, schedparam) {
+ if (!policy && !schedparam) return ERRNO_CODES.EINVAL;
+
+ if (!thread) {
+ Module['printErr']('pthread_getschedparam called with a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_getschedparam attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var schedPolicy = Atomics.load(HEAPU32, (thread + 120 + 20 ) >> 2);
+ var schedPrio = Atomics.load(HEAPU32, (thread + 120 + 24 ) >> 2);
+
+ if (policy) HEAP32[((policy)>>2)]=schedPolicy;
+ if (schedparam) HEAP32[((schedparam)>>2)]=schedPrio;
+ return 0;
+ }
+
+ function _pthread_self() {
+ return __pthread_ptr|0;
+ }function _pthread_create(pthread_ptr, attr, start_routine, arg) {
+ if (typeof SharedArrayBuffer === 'undefined') {
+ Module['printErr']('Current environment does not support SharedArrayBuffer, pthreads are not available!');
+ return 11;
+ }
+ if (!pthread_ptr) {
+ Module['printErr']('pthread_create called with a null thread pointer!');
+ return 22;
+ }
+
+ var transferList = []; // List of JS objects that will transfer ownership to the Worker hosting the thread
+
+
+ // Synchronously proxy the thread creation to main thread if possible. If we need to transfer ownership of objects, then
+ // proxy asynchronously via postMessage.
+ if (ENVIRONMENT_IS_PTHREAD && transferList.length == 0) {
+ return _emscripten_sync_run_in_main_thread_4(137, pthread_ptr, attr, start_routine, arg);
+ }
+
+ var stackSize = 0;
+ var stackBase = 0;
+ var detached = 0; // Default thread attr is PTHREAD_CREATE_JOINABLE, i.e. start as not detached.
+ var schedPolicy = 0; /*SCHED_OTHER*/
+ var schedPrio = 0;
+ if (attr) {
+ stackSize = HEAP32[((attr)>>2)];
+ stackBase = HEAP32[(((attr)+(8))>>2)];
+ detached = HEAP32[(((attr)+(12))>>2)] != 0/*PTHREAD_CREATE_JOINABLE*/;
+ var inheritSched = HEAP32[(((attr)+(16))>>2)] == 0/*PTHREAD_INHERIT_SCHED*/;
+ if (inheritSched) {
+ var prevSchedPolicy = HEAP32[(((attr)+(20))>>2)];
+ var prevSchedPrio = HEAP32[(((attr)+(24))>>2)];
+ _pthread_getschedparam(_pthread_self(), attr + 20, attr + 24);
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ HEAP32[(((attr)+(20))>>2)]=prevSchedPolicy;
+ HEAP32[(((attr)+(24))>>2)]=prevSchedPrio;
+ } else {
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ }
+ }
+ stackSize += 81920 /*DEFAULT_STACK_SIZE*/;
+ var allocatedOwnStack = stackBase == 0; // If allocatedOwnStack == true, then the pthread impl maintains the stack allocation.
+ if (allocatedOwnStack) {
+ stackBase = _malloc(stackSize); // Allocate a stack if the user doesn't want to place the stack in a custom memory area.
+ } else {
+ // Musl stores the stack base address assuming stack grows downwards, so adjust it to Emscripten convention that the
+ // stack grows upwards instead.
+ stackBase -= stackSize;
+ assert(stackBase > 0);
+ }
+
+ // Allocate thread block (pthread_t structure).
+ var threadInfoStruct = _malloc(244);
+ for (var i = 0; i < 244 >> 2; ++i) HEAPU32[(threadInfoStruct>>2) + i] = 0; // zero-initialize thread structure.
+ HEAP32[((pthread_ptr)>>2)]=threadInfoStruct;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((threadInfoStruct)+(24))>>2)]=threadInfoStruct;
+
+ // pthread struct robust_list head should point to itself.
+ var headPtr = threadInfoStruct + 168;
+ HEAP32[((headPtr)>>2)]=headPtr;
+
+ var threadParams = {
+ stackBase: stackBase,
+ stackSize: stackSize,
+ allocatedOwnStack: allocatedOwnStack,
+ schedPolicy: schedPolicy,
+ schedPrio: schedPrio,
+ detached: detached,
+ startRoutine: start_routine,
+ pthread_ptr: threadInfoStruct,
+ parent_pthread_ptr: _pthread_self(),
+ arg: arg,
+ transferList: transferList
+ };
+
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // The prepopulated pool of web workers that can host pthreads is stored in the main JS thread. Therefore if a
+ // pthread is attempting to spawn a new thread, the thread creation must be deferred to the main JS thread.
+ threadParams.cmd = 'spawnThread';
+ postMessage(threadParams, transferList);
+ } else {
+ // We are the main thread, so we have the pthread warmup pool in this thread and can fire off JS thread creation
+ // directly ourselves.
+ __spawn_thread(threadParams);
+ }
+
+ return 0;
}
function _emscripten_glDrawArrays(mode, first, count) {
@@ -6092,6 +10044,11 @@ function copyTempDouble(ptr) {
GLctx.bindBuffer(target, bufferObj);
}
+
+ function _emscripten_set_current_thread_status_js(newStatus) {
+ }
+ Module["_emscripten_set_current_thread_status"] = _emscripten_set_current_thread_status;
+
function _emscripten_glVertexAttrib4fv(index, v) {
GLctx.vertexAttrib4f(index, HEAPF32[v>>2], HEAPF32[v+4>>2], HEAPF32[v+8>>2], HEAPF32[v+12>>2]);
@@ -6108,6 +10065,61 @@ function copyTempDouble(ptr) {
Module["_bitshift64Lshr"] = _bitshift64Lshr;
+ function _confstr(name, buf, len) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(68, name, buf, len);
+ // size_t confstr(int name, char *buf, size_t len);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/confstr.html
+ var value;
+ switch (name) {
+ case 0:
+ value = ENV['PATH'] || '/';
+ break;
+ case 1:
+ // Mimicking glibc.
+ value = 'POSIX_V6_ILP32_OFF32\nPOSIX_V6_ILP32_OFFBIG';
+ break;
+ case 2:
+ // This JS implementation was tested against this glibc version.
+ value = 'glibc 2.14';
+ break;
+ case 3:
+ // We don't support pthreads.
+ value = '';
+ break;
+ case 1118:
+ case 1122:
+ case 1124:
+ case 1125:
+ case 1126:
+ case 1128:
+ case 1129:
+ case 1130:
+ value = '';
+ break;
+ case 1116:
+ case 1117:
+ case 1121:
+ value = '-m32';
+ break;
+ case 1120:
+ value = '-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64';
+ break;
+ default:
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return 0;
+ }
+ if (len == 0 || buf == 0) {
+ return value.length + 1;
+ } else {
+ var length = Math.min(len, value.length);
+ for (var i = 0; i < length; i++) {
+ HEAP8[(((buf)+(i))>>0)]=value.charCodeAt(i);
+ }
+ if (len > length) HEAP8[(((buf)+(i++))>>0)]=0;
+ return i;
+ }
+ }
+
function _glBufferData(target, size, data, usage) {
if (!data) {
GLctx.bufferData(target, size, usage);
@@ -6122,6 +10134,24 @@ function copyTempDouble(ptr) {
return GLctx.isShader(s);
}
+ function _getenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(111, 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 _emscripten_conditional_set_current_thread_status_js(expectedStatus, newStatus) {
+ }
+ Module["_emscripten_conditional_set_current_thread_status"] = _emscripten_conditional_set_current_thread_status;
+
function _emscripten_glDrawBuffers(n, bufs) {
var bufArray = GL.tempFixedLengthArray[n];
@@ -6200,16 +10230,9 @@ function copyTempDouble(ptr) {
GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);
}
- function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
- var log = GLctx.getProgramInfoLog(GL.programs[program]);
- if (log === null) log = '(unknown error)';
-
- if (maxLength > 0 && infoLog) {
- var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
- if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
- } else {
- if (length) HEAP32[((length)>>2)]=0;
- }
+ function ___assert_fail(condition, filename, line, func) {
+ ABORT = true;
+ throw 'Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + stackTrace();
}
function _emscripten_glVertexAttribDivisor(index, divisor) {
@@ -6248,6 +10271,26 @@ function copyTempDouble(ptr) {
GLctx['bindVertexArray'](GL.vaos[vao]);
}
+ function _setenv(envname, envval, overwrite) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(113, envname, envval, overwrite);
+ // int setenv(const char *envname, const char *envval, int overwrite);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html
+ if (envname === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ var name = Pointer_stringify(envname);
+ var val = Pointer_stringify(envval);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name) && !overwrite) return 0;
+ ENV[name] = val;
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glLoadMatrixf() {
Module['printErr']('missing function: emscripten_glLoadMatrixf'); abort(-1);
}
@@ -6402,6 +10445,16 @@ function copyTempDouble(ptr) {
GLctx.validateProgram(GL.programs[program]);
}
+ function _emscripten_syscall(which, varargs) {
+ switch (which) {
+ case 54: return ___syscall54(which, varargs);
+ case 6: return ___syscall6(which, varargs);
+ case 140: return ___syscall140(which, varargs);
+ case 146: return ___syscall146(which, varargs);
+ default: throw "surprising proxied syscall: " + which;
+ }
+ }
+
function _glTexParameteri(x0, x1, x2) { GLctx['texParameteri'](x0, x1, x2) }
function _glFrontFace(x0) { GLctx['frontFace'](x0) }
@@ -6430,6 +10483,72 @@ function copyTempDouble(ptr) {
}
}
+ function _fpathconf(fildes, name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(46, fildes, name);
+ // long fpathconf(int fildes, int name);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/encrypt.html
+ // NOTE: The first parameter is ignored, so pathconf == fpathconf.
+ // The constants here aren't real values. Just mimicking glibc.
+ switch (name) {
+ case 0:
+ return 32000;
+ case 1:
+ case 2:
+ case 3:
+ return 255;
+ case 4:
+ case 5:
+ case 16:
+ case 17:
+ case 18:
+ return 4096;
+ case 6:
+ case 7:
+ case 20:
+ return 1;
+ case 8:
+ return 0;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 14:
+ case 15:
+ case 19:
+ return -1;
+ case 13:
+ return 64;
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
+ function _putenv(string) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(115, 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 _emscripten_glGenVertexArrays(n, arrays) {
for (var i = 0; i < n; i++) {
@@ -6454,10 +10573,32 @@ function copyTempDouble(ptr) {
return ret;
}
+
function _emscripten_glGetBooleanv(name_, p) {
emscriptenWebGLGet(name_, p, 'Boolean');
}
+ function _utimes(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(13, path, times);
+ var time;
+ if (times) {
+ var offset = 8 + 0;
+ time = HEAP32[(((times)+(offset))>>2)] * 1000;
+ offset = 8 + 4;
+ time += HEAP32[(((times)+(offset))>>2)] / 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCompileShader(shader) {
GLctx.compileShader(GL.shaders[shader]);
}
@@ -6484,8 +10625,14 @@ Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, res
Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) };
+FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;Module["FS_unlink"] = FS.unlink;;
+__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() });;
+if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); };
JSEvents.staticInit();;
-/* flush anything remaining in the buffer during shutdown */ __ATEXIT__.push(function() { var fflush = Module["_fflush"]; if (fflush) fflush(0); var printChar = ___syscall146.printChar; if (!printChar) return; var buffers = ___syscall146.buffers; if (buffers[1].length) printChar(1, 10); if (buffers[2].length) printChar(2, 10); });;
+if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock();;
+if (!ENVIRONMENT_IS_PTHREAD) ___buildEnvironment(ENV);;
+if (!ENVIRONMENT_IS_PTHREAD) {
+ // Only main thread initializes these, pthreads copy them over at thread worker init time (in pthread-main.js)
DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC);
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
@@ -6500,6 +10647,8 @@ staticSealed = true; // seal the static portion of memory
assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
+}
+
function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
@@ -6767,8 +10916,8 @@ function invoke_viiii(index,a1,a2,a3,a4) {
}
Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity };
-
-Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_glUniform4f": _glUniform4f, "_glfwWindowShouldClose": _glfwWindowShouldClose, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "_glLinkProgram": _glLinkProgram, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "___syscall146": ___syscall146, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glGetFloatv": _glGetFloatv, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_glfwWaitEvents": _glfwWaitEvents, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
+Module.asmGlobalArg['Atomics'] = Atomics;
+Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "___assert_fail": ___assert_fail, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_sysconf": _sysconf, "_utime": _utime, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_chroot": _chroot, "_glUniform4f": _glUniform4f, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "__pthread_testcancel_js": __pthread_testcancel_js, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_unsetenv": _unsetenv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "___syscall146": ___syscall146, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_asm_const_v": _emscripten_asm_const_v, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_pthread_self": _pthread_self, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "__register_pthread_ptr": __register_pthread_ptr, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "_gettimeofday": _gettimeofday, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "__spawn_thread": __spawn_thread, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_emscripten_conditional_set_current_thread_status_js": _emscripten_conditional_set_current_thread_status_js, "_putenv": _putenv, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_fpathconf": _fpathconf, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_is_main_runtime_thread": _emscripten_is_main_runtime_thread, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "___buildEnvironment": ___buildEnvironment, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_utimes": _utimes, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_tzset": _tzset, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_glGetFloatv": _glGetFloatv, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "___clock_gettime": ___clock_gettime, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_clearenv": _clearenv, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_getenv": _getenv, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_emscripten_futex_wake": _emscripten_futex_wake, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "__cleanup_thread": __cleanup_thread, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_set_current_thread_status_js": _emscripten_set_current_thread_status_js, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_syscall": _emscripten_syscall, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_glLinkProgram": _glLinkProgram, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_futex_wait": _emscripten_futex_wait, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "___pthread_setcancelstate": ___pthread_setcancelstate, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_confstr": _confstr, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_pthread_getschedparam": _pthread_getschedparam, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_atexit": _atexit, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_setenv": _setenv, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
'use asm';
@@ -6873,7 +11022,6 @@ var asm = (function(global, env, buffer) {
var invoke_viiii=env.invoke_viiii;
var _emscripten_glGetTexParameterfv=env._emscripten_glGetTexParameterfv;
var _glUseProgram=env._glUseProgram;
- var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _glfwCreateWindow=env._glfwCreateWindow;
var _emscripten_glReleaseShaderCompiler=env._emscripten_glReleaseShaderCompiler;
var _emscripten_glBlendFuncSeparate=env._emscripten_glBlendFuncSeparate;
@@ -6884,6 +11032,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilMaskSeparate=env._emscripten_glStencilMaskSeparate;
var _emscripten_glViewport=env._emscripten_glViewport;
var _emscripten_glFrontFace=env._emscripten_glFrontFace;
+ var ___assert_fail=env.___assert_fail;
var _glDeleteProgram=env._glDeleteProgram;
var _emscripten_glUniform3fv=env._emscripten_glUniform3fv;
var _emscripten_glPolygonOffset=env._emscripten_glPolygonOffset;
@@ -6896,25 +11045,26 @@ var asm = (function(global, env, buffer) {
var _emscripten_set_fullscreenchange_callback=env._emscripten_set_fullscreenchange_callback;
var _emscripten_set_touchmove_callback=env._emscripten_set_touchmove_callback;
var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing;
- var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _glDisable=env._glDisable;
var _glBlendFunc=env._glBlendFunc;
var _emscripten_glDisableVertexAttribArray=env._emscripten_glDisableVertexAttribArray;
var _glGetAttribLocation=env._glGetAttribLocation;
var _glDisableVertexAttribArray=env._glDisableVertexAttribArray;
var _glCreateShader=env._glCreateShader;
+ var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _sysconf=env._sysconf;
+ var _utime=env._utime;
var _emscripten_glSampleCoverage=env._emscripten_glSampleCoverage;
var _emscripten_glVertexPointer=env._emscripten_glVertexPointer;
var _emscripten_set_touchstart_callback=env._emscripten_set_touchstart_callback;
var emscriptenWebGLComputeImageSize=env.emscriptenWebGLComputeImageSize;
var _emscripten_glGetBooleanv=env._emscripten_glGetBooleanv;
var _emscripten_glGetShaderSource=env._emscripten_glGetShaderSource;
+ var _chroot=env._chroot;
var _glUniform4f=env._glUniform4f;
- var _glfwWindowShouldClose=env._glfwWindowShouldClose;
var _llvm_stacksave=env._llvm_stacksave;
var _emscripten_glUniform1i=env._emscripten_glUniform1i;
- var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
- var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
var _emscripten_glGenBuffers=env._emscripten_glGenBuffers;
var _emscripten_glDeleteObjectARB=env._emscripten_glDeleteObjectARB;
var _glfwSetWindowSizeCallback=env._glfwSetWindowSizeCallback;
@@ -6926,9 +11076,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glIsFramebuffer=env._emscripten_glIsFramebuffer;
var _emscripten_glIsEnabled=env._emscripten_glIsEnabled;
var _emscripten_glScissor=env._emscripten_glScissor;
+ var __pthread_testcancel_js=env.__pthread_testcancel_js;
var _emscripten_glVertexAttrib4fv=env._emscripten_glVertexAttrib4fv;
var _emscripten_glFramebufferTexture2D=env._emscripten_glFramebufferTexture2D;
var _emscripten_glTexParameteriv=env._emscripten_glTexParameteriv;
+ var _unsetenv=env._unsetenv;
var _emscripten_glBindProgramARB=env._emscripten_glBindProgramARB;
var _emscripten_glStencilOpSeparate=env._emscripten_glStencilOpSeparate;
var _emscripten_glFramebufferRenderbuffer=env._emscripten_glFramebufferRenderbuffer;
@@ -6936,13 +11088,14 @@ var asm = (function(global, env, buffer) {
var _glfwSetErrorCallback=env._glfwSetErrorCallback;
var _glfwDefaultWindowHints=env._glfwDefaultWindowHints;
var _glfwDestroyWindow=env._glfwDestroyWindow;
- var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
+ var ___syscall146=env.___syscall146;
var _emscripten_glGetActiveAttrib=env._emscripten_glGetActiveAttrib;
var _emscripten_glAttachShader=env._emscripten_glAttachShader;
var _emscripten_get_now_is_monotonic=env._emscripten_get_now_is_monotonic;
var _emscripten_glUniform2i=env._emscripten_glUniform2i;
var _emscripten_glUniform2f=env._emscripten_glUniform2f;
var _emscripten_glTexParameterfv=env._emscripten_glTexParameterfv;
+ var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
var _emscripten_glUniformMatrix2fv=env._emscripten_glUniformMatrix2fv;
var _glGetProgramInfoLog=env._glGetProgramInfoLog;
var _glfwSetScrollCallback=env._glfwSetScrollCallback;
@@ -6967,17 +11120,21 @@ var asm = (function(global, env, buffer) {
var _glDepthFunc=env._glDepthFunc;
var _emscripten_glClientActiveTexture=env._emscripten_glClientActiveTexture;
var _emscripten_glVertexAttrib2f=env._emscripten_glVertexAttrib2f;
+ var _emscripten_asm_const_v=env._emscripten_asm_const_v;
var _emscripten_glFlush=env._emscripten_glFlush;
var _emscripten_glBlendFunc=env._emscripten_glBlendFunc;
var _emscripten_glCheckFramebufferStatus=env._emscripten_glCheckFramebufferStatus;
var _emscripten_glGenerateMipmap=env._emscripten_glGenerateMipmap;
var _emscripten_glGetError=env._emscripten_glGetError;
var _emscripten_glClearDepthf=env._emscripten_glClearDepthf;
+ var _pthread_self=env._pthread_self;
var _emscripten_glBufferData=env._emscripten_glBufferData;
var _emscripten_glUniform3i=env._emscripten_glUniform3i;
+ var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
var _emscripten_glRotatef=env._emscripten_glRotatef;
var _emscripten_glDeleteShader=env._emscripten_glDeleteShader;
var _glEnable=env._glEnable;
+ var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
var _emscripten_glReadPixels=env._emscripten_glReadPixels;
var _emscripten_glMatrixMode=env._emscripten_glMatrixMode;
var _glGetString=env._glGetString;
@@ -6985,7 +11142,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glGetUniformLocation=env._emscripten_glGetUniformLocation;
var emscriptenWebGLGet=env.emscriptenWebGLGet;
var _emscripten_glEnableVertexAttribArray=env._emscripten_glEnableVertexAttribArray;
- var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
+ var __register_pthread_ptr=env.__register_pthread_ptr;
var _emscripten_get_now=env._emscripten_get_now;
var _emscripten_glNormalPointer=env._emscripten_glNormalPointer;
var _glAttachShader=env._glAttachShader;
@@ -6994,41 +11151,49 @@ var asm = (function(global, env, buffer) {
var _glCreateProgram=env._glCreateProgram;
var _glUniformMatrix4fv=env._glUniformMatrix4fv;
var _emscripten_glClearDepth=env._emscripten_glClearDepth;
- var _glLinkProgram=env._glLinkProgram;
var ___lock=env.___lock;
var emscriptenWebGLGetTexPixelData=env.emscriptenWebGLGetTexPixelData;
var ___syscall6=env.___syscall6;
- var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
+ var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
var _emscripten_glVertexAttrib3f=env._emscripten_glVertexAttrib3f;
var _time=env._time;
- var ___syscall146=env.___syscall146;
+ var _gettimeofday=env._gettimeofday;
+ var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
var _emscripten_glGetFramebufferAttachmentParameteriv=env._emscripten_glGetFramebufferAttachmentParameteriv;
var _emscripten_glBlendEquationSeparate=env._emscripten_glBlendEquationSeparate;
var _exit=env._exit;
var _emscripten_glEnableClientState=env._emscripten_glEnableClientState;
+ var __spawn_thread=env.__spawn_thread;
var _emscripten_glUniform4i=env._emscripten_glUniform4i;
+ var _emscripten_conditional_set_current_thread_status_js=env._emscripten_conditional_set_current_thread_status_js;
+ var _putenv=env._putenv;
var _pthread_join=env._pthread_join;
var _glCullFace=env._glCullFace;
var _emscripten_glGetPointerv=env._emscripten_glGetPointerv;
var _emscripten_set_keypress_callback=env._emscripten_set_keypress_callback;
var __emscripten_sample_gamepad_data=env.__emscripten_sample_gamepad_data;
+ var _fpathconf=env._fpathconf;
var _emscripten_get_gamepad_status=env._emscripten_get_gamepad_status;
var _emscripten_glUniform4f=env._emscripten_glUniform4f;
var _emscripten_glUniform2fv=env._emscripten_glUniform2fv;
var _glfwGetVideoModes=env._glfwGetVideoModes;
var ___unlock=env.___unlock;
var _emscripten_set_click_callback=env._emscripten_set_click_callback;
+ var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_is_main_runtime_thread=env._emscripten_is_main_runtime_thread;
var _emscripten_glShaderBinary=env._emscripten_glShaderBinary;
var _emscripten_glDrawElements=env._emscripten_glDrawElements;
var _glVertexAttribPointer=env._glVertexAttribPointer;
var _emscripten_get_num_gamepads=env._emscripten_get_num_gamepads;
+ var ___buildEnvironment=env.___buildEnvironment;
var _glCompressedTexImage2D=env._glCompressedTexImage2D;
+ var _utimes=env._utimes;
var _emscripten_glUniform1iv=env._emscripten_glUniform1iv;
var _emscripten_glGetVertexAttribPointerv=env._emscripten_glGetVertexAttribPointerv;
var _glClearDepthf=env._glClearDepthf;
var _emscripten_glCompressedTexSubImage2D=env._emscripten_glCompressedTexSubImage2D;
var emscriptenWebGLGetUniform=env.emscriptenWebGLGetUniform;
- var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
+ var _tzset=env._tzset;
var _emscripten_glDeleteVertexArrays=env._emscripten_glDeleteVertexArrays;
var _glfwSetWindowShouldClose=env._glfwSetWindowShouldClose;
var _emscripten_glUniform1fv=env._emscripten_glUniform1fv;
@@ -7039,29 +11204,33 @@ var asm = (function(global, env, buffer) {
var _emscripten_glHint=env._emscripten_glHint;
var _glfwSetCharCallback=env._glfwSetCharCallback;
var emscriptenWebGLGetVertexAttrib=env.emscriptenWebGLGetVertexAttrib;
- var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
+ var _glGetFloatv=env._glGetFloatv;
var _emscripten_glDeleteProgram=env._emscripten_glDeleteProgram;
var _emscripten_glDeleteRenderbuffers=env._emscripten_glDeleteRenderbuffers;
+ var ___clock_gettime=env.___clock_gettime;
var _emscripten_glDrawElementsInstanced=env._emscripten_glDrawElementsInstanced;
var _emscripten_glVertexAttrib4f=env._emscripten_glVertexAttrib4f;
var _glDrawArrays=env._glDrawArrays;
var _emscripten_glTexSubImage2D=env._emscripten_glTexSubImage2D;
- var _emscripten_memcpy_big=env._emscripten_memcpy_big;
+ var _clearenv=env._clearenv;
var _emscripten_glPixelStorei=env._emscripten_glPixelStorei;
var _glCompileShader=env._glCompileShader;
var _emscripten_get_pointerlock_status=env._emscripten_get_pointerlock_status;
+ var _emscripten_memcpy_big=env._emscripten_memcpy_big;
var _emscripten_glUniformMatrix3fv=env._emscripten_glUniformMatrix3fv;
var _emscripten_glColorPointer=env._emscripten_glColorPointer;
+ var _getenv=env._getenv;
var _emscripten_glDepthRange=env._emscripten_glDepthRange;
var _emscripten_glGetBufferParameteriv=env._emscripten_glGetBufferParameteriv;
var _emscripten_glFinish=env._emscripten_glFinish;
- var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
- var _glGetFloatv=env._glGetFloatv;
+ var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _emscripten_asm_const_iii=env._emscripten_asm_const_iii;
var _emscripten_glDepthMask=env._emscripten_glDepthMask;
var _glfwSetWindowIconifyCallback=env._glfwSetWindowIconifyCallback;
var _emscripten_glDrawBuffers=env._emscripten_glDrawBuffers;
var _glfwTerminate=env._glfwTerminate;
+ var _emscripten_futex_wake=env._emscripten_futex_wake;
var _glFrontFace=env._glFrontFace;
var _emscripten_glGetObjectParameterivARB=env._emscripten_glGetObjectParameterivARB;
var _emscripten_exit_pointerlock=env._emscripten_exit_pointerlock;
@@ -7071,10 +11240,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilFunc=env._emscripten_glStencilFunc;
var _abort=env._abort;
var _emscripten_glGetUniformiv=env._emscripten_glGetUniformiv;
+ var __cleanup_thread=env.__cleanup_thread;
var _glDeleteBuffers=env._glDeleteBuffers;
var _glBufferData=env._glBufferData;
var _glTexImage2D=env._glTexImage2D;
- var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
+ var _emscripten_set_current_thread_status_js=env._emscripten_set_current_thread_status_js;
var _glfwSetKeyCallback=env._glfwSetKeyCallback;
var _emscripten_glGenFramebuffers=env._emscripten_glGenFramebuffers;
var _emscripten_glUniformMatrix4fv=env._emscripten_glUniformMatrix4fv;
@@ -7085,8 +11255,9 @@ var asm = (function(global, env, buffer) {
var _emscripten_glBindFramebuffer=env._emscripten_glBindFramebuffer;
var _emscripten_glIsRenderbuffer=env._emscripten_glIsRenderbuffer;
var _glfwGetTime=env._glfwGetTime;
- var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _emscripten_set_gamepadconnected_callback=env._emscripten_set_gamepadconnected_callback;
+ var _emscripten_syscall=env._emscripten_syscall;
var _emscripten_glGetVertexAttribiv=env._emscripten_glGetVertexAttribiv;
var _emscripten_glBindVertexArray=env._emscripten_glBindVertexArray;
var _emscripten_glDrawArraysInstanced=env._emscripten_glDrawArraysInstanced;
@@ -7096,18 +11267,19 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDeleteTextures=env._emscripten_glDeleteTextures;
var _emscripten_glBindRenderbuffer=env._emscripten_glBindRenderbuffer;
var _glfwGetPrimaryMonitor=env._glfwGetPrimaryMonitor;
- var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
+ var _glLinkProgram=env._glLinkProgram;
var _emscripten_glVertexAttribDivisor=env._emscripten_glVertexAttribDivisor;
var _emscripten_set_touchend_callback=env._emscripten_set_touchend_callback;
var _emscripten_glGetUniformfv=env._emscripten_glGetUniformfv;
var _emscripten_glGetVertexAttribfv=env._emscripten_glGetVertexAttribfv;
var _emscripten_glGetRenderbufferParameteriv=env._emscripten_glGetRenderbufferParameteriv;
+ var _emscripten_futex_wait=env._emscripten_futex_wait;
var _emscripten_glDeleteFramebuffers=env._emscripten_glDeleteFramebuffers;
var _glGetShaderiv=env._glGetShaderiv;
var _emscripten_glVertexAttrib3fv=env._emscripten_glVertexAttrib3fv;
var _glGetUniformLocation=env._glGetUniformLocation;
var _emscripten_glGetInfoLogARB=env._emscripten_glGetInfoLogARB;
- var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
var _glClear=env._glClear;
var _glGenTextures=env._glGenTextures;
var _emscripten_glDisable=env._emscripten_glDisable;
@@ -7117,12 +11289,14 @@ var asm = (function(global, env, buffer) {
var _emscripten_glUniform3f=env._emscripten_glUniform3f;
var _emscripten_glGetShaderInfoLog=env._emscripten_glGetShaderInfoLog;
var _emscripten_glStencilOp=env._emscripten_glStencilOp;
+ var ___pthread_setcancelstate=env.___pthread_setcancelstate;
var _glBindAttribLocation=env._glBindAttribLocation;
var _glPixelStorei=env._glPixelStorei;
var _emscripten_glColorMask=env._emscripten_glColorMask;
var _emscripten_glLinkProgram=env._emscripten_glLinkProgram;
var _emscripten_glBlendEquation=env._emscripten_glBlendEquation;
var _emscripten_glIsTexture=env._emscripten_glIsTexture;
+ var _confstr=env._confstr;
var _emscripten_glGetProgramiv=env._emscripten_glGetProgramiv;
var _emscripten_glVertexAttrib1fv=env._emscripten_glVertexAttrib1fv;
var _emscripten_glBindTexture=env._emscripten_glBindTexture;
@@ -7132,29 +11306,42 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDrawRangeElements=env._emscripten_glDrawRangeElements;
var ___syscall54=env.___syscall54;
var _emscripten_glDeleteBuffers=env._emscripten_glDeleteBuffers;
- var _glfwWaitEvents=env._glfwWaitEvents;
+ var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
var _glfwSwapBuffers=env._glfwSwapBuffers;
var _pthread_create=env._pthread_create;
var _emscripten_set_main_loop=env._emscripten_set_main_loop;
var _emscripten_glGetProgramInfoLog=env._emscripten_glGetProgramInfoLog;
var _glfwWindowHint=env._glfwWindowHint;
+ var _pthread_getschedparam=env._pthread_getschedparam;
var _emscripten_glIsShader=env._emscripten_glIsShader;
var _emscripten_glUniform4fv=env._emscripten_glUniform4fv;
var _emscripten_glGenVertexArrays=env._emscripten_glGenVertexArrays;
var _emscripten_glDrawArrays=env._emscripten_glDrawArrays;
var _emscripten_glCompressedTexImage2D=env._emscripten_glCompressedTexImage2D;
var _emscripten_glClearColor=env._emscripten_glClearColor;
+ var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
var _emscripten_glCreateProgram=env._emscripten_glCreateProgram;
var _emscripten_glCopyTexSubImage2D=env._emscripten_glCopyTexSubImage2D;
+ var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
var _glTexParameteri=env._glTexParameteri;
var _emscripten_glBindBuffer=env._emscripten_glBindBuffer;
+ var _atexit=env._atexit;
var _emscripten_glGetFloatv=env._emscripten_glGetFloatv;
var _emscripten_glDetachShader=env._emscripten_glDetachShader;
var _glClearColor=env._glClearColor;
var _glfwSetCursorPosCallback=env._glfwSetCursorPosCallback;
- var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
+ var _setenv=env._setenv;
var _emscripten_glCopyTexImage2D=env._emscripten_glCopyTexImage2D;
var _emscripten_glTexImage2D=env._emscripten_glTexImage2D;
+ var Atomics_load=global.Atomics.load;
+ var Atomics_store=global.Atomics.store;
+ var Atomics_exchange=global.Atomics.exchange;
+ var Atomics_compareExchange=global.Atomics.compareExchange;
+ var Atomics_add=global.Atomics.add;
+ var Atomics_sub=global.Atomics.sub;
+ var Atomics_and=global.Atomics.and;
+ var Atomics_or=global.Atomics.or;
+ var Atomics_xor=global.Atomics.xor;
var tempFloat = 0.0;
// EMSCRIPTEN_START_FUNCS
@@ -7203,7 +11390,7 @@ function getTempRet0() {
function _InitPhysics() {
var label = 0, sp = 0;
sp = STACKTOP;
- (_pthread_create((14120|0),(0|0),(2|0),(0|0))|0);
+ (_pthread_create((14272|0),(0|0),(2|0),(0|0))|0);
return;
}
function _PhysicsLoop($0) {
@@ -7211,53 +11398,53 @@ function _PhysicsLoop($0) {
var $$0 = 0, $$010 = 0, $$011 = 0, $$09 = 0, $$0912 = 0, $$0913 = 0, $$pr = 0.0, $1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0;
var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3531] = 1;
- HEAPF64[1727] = 0.0;
+ HEAP32[3569] = 1;
+ HEAPF64[1746] = 0.0;
_InitTimer();
- $1 = HEAP32[3531]|0;
+ $1 = HEAP32[3569]|0;
$2 = ($1|0)==(0);
if (!($2)) {
while(1) {
$3 = (+_GetCurrentTime());
- HEAPF64[1728] = $3;
- $4 = +HEAPF64[1729];
+ HEAPF64[1747] = $3;
+ $4 = +HEAPF64[1748];
$5 = $3 - $4;
- HEAPF64[1730] = $5;
- $6 = +HEAPF64[1727];
+ HEAPF64[1749] = $5;
+ $6 = +HEAPF64[1746];
$7 = $5 + $6;
- HEAPF64[1727] = $7;
+ HEAPF64[1746] = $7;
_MathClamp();
- $$pr = +HEAPF64[1727];
+ $$pr = +HEAPF64[1746];
$8 = !($$pr >= 0.016666666666666666);
if (!($8)) {
while(1) {
_PhysicsStep();
- $9 = +HEAPF64[1730];
- $10 = +HEAPF64[1727];
+ $9 = +HEAPF64[1749];
+ $10 = +HEAPF64[1746];
$11 = $10 - $9;
- HEAPF64[1727] = $11;
+ HEAPF64[1746] = $11;
$12 = !($11 >= 0.016666666666666666);
if ($12) {
break;
}
}
}
- $13 = +HEAPF64[1728];
- HEAPF64[1729] = $13;
- $14 = HEAP32[3531]|0;
+ $13 = +HEAPF64[1747];
+ HEAPF64[1748] = $13;
+ $14 = HEAP32[3569]|0;
$15 = ($14|0)==(0);
if ($15) {
break;
}
}
}
- $16 = HEAP32[3598]|0;
+ $16 = HEAP32[3636]|0;
$$0912 = (($16) + -1)|0;
$17 = ($$0912|0)>(-1);
if ($17) {
$$0913 = $$0912;
while(1) {
- $20 = (14396 + ($$0913<<2)|0);
+ $20 = (14548 + ($$0913<<2)|0);
$21 = HEAP32[$20>>2]|0;
_DestroyPhysicsManifold($21);
$$09 = (($$0913) + -1)|0;
@@ -7269,7 +11456,7 @@ function _PhysicsLoop($0) {
}
}
}
- $18 = HEAP32[3533]|0;
+ $18 = HEAP32[3571]|0;
$$010 = (($18) + -1)|0;
$19 = ($$010|0)>(-1);
if ($19) {
@@ -7278,7 +11465,7 @@ function _PhysicsLoop($0) {
return (0|0);
}
while(1) {
- $23 = (14136 + ($$011<<2)|0);
+ $23 = (14288 + ($$011<<2)|0);
$24 = HEAP32[$23>>2]|0;
_DestroyPhysicsBody($24);
$$0 = (($$011) + -1)|0;
@@ -7324,10 +11511,10 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
$5 = sp + 8|0;
$6 = sp;
$7 = (_malloc(500)|0);
- $8 = HEAP32[3532]|0;
+ $8 = HEAP32[3570]|0;
$9 = (($8) + 500)|0;
- HEAP32[3532] = $9;
- $10 = HEAP32[3533]|0;
+ HEAP32[3570] = $9;
+ $10 = HEAP32[3571]|0;
$11 = ($10|0)==(0);
$$0116149 = 0;
L1: while(1) {
@@ -7338,7 +11525,7 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
$$0119144 = 0;
}
while(1) {
- $14 = (14136 + ($$0119144<<2)|0);
+ $14 = (14288 + ($$0119144<<2)|0);
$15 = HEAP32[$14>>2]|0;
$16 = HEAP32[$15>>2]|0;
$17 = ($16|0)==($$0116149|0);
@@ -7534,11 +11721,11 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
HEAP32[$118>>2] = 0;
$119 = ((($7)) + 80|0);
HEAP32[$119>>2] = 0;
- $120 = HEAP32[3533]|0;
- $121 = (14136 + ($120<<2)|0);
+ $120 = HEAP32[3571]|0;
+ $121 = (14288 + ($120<<2)|0);
HEAP32[$121>>2] = $7;
$122 = (($120) + 1)|0;
- HEAP32[3533] = $122;
+ HEAP32[3571] = $122;
STACKTOP = sp;return ($7|0);
}
function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
@@ -7563,10 +11750,10 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$6 = sp + 8|0;
$7 = sp;
$8 = (_malloc(500)|0);
- $9 = HEAP32[3532]|0;
+ $9 = HEAP32[3570]|0;
$10 = (($9) + 500)|0;
- HEAP32[3532] = $10;
- $11 = HEAP32[3533]|0;
+ HEAP32[3570] = $10;
+ $11 = HEAP32[3571]|0;
$12 = ($11|0)==(0);
$$0116149 = 0;
L1: while(1) {
@@ -7577,7 +11764,7 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
$$0119144 = 0;
}
while(1) {
- $15 = (14136 + ($$0119144<<2)|0);
+ $15 = (14288 + ($$0119144<<2)|0);
$16 = HEAP32[$15>>2]|0;
$17 = HEAP32[$16>>2]|0;
$18 = ($17|0)==($$0116149|0);
@@ -7778,11 +11965,11 @@ function _CreatePhysicsBodyRectangle($0,$1,$2,$3) {
HEAP32[$120>>2] = 0;
$121 = ((($8)) + 80|0);
HEAP32[$121>>2] = 0;
- $122 = HEAP32[3533]|0;
- $123 = (14136 + ($122<<2)|0);
+ $122 = HEAP32[3571]|0;
+ $123 = (14288 + ($122<<2)|0);
HEAP32[$123>>2] = $8;
$124 = (($122) + 1)|0;
- HEAP32[3533] = $124;
+ HEAP32[3571] = $124;
STACKTOP = sp;return ($8|0);
}
function _CreateRectanglePolygon($0,$1,$2) {
@@ -8055,16 +12242,16 @@ function _DestroyPhysicsBody($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3533]|0;
+ $3 = HEAP32[3571]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3533]|0;
+ $5 = HEAP32[3571]|0;
$$02023 = 0;
while(1) {
- $6 = (14136 + ($$02023<<2)|0);
+ $6 = (14288 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -8083,24 +12270,24 @@ function _DestroyPhysicsBody($0) {
}
}
} while(0);
- $12 = (14136 + ($$021<<2)|0);
+ $12 = (14288 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3532]|0;
+ $14 = HEAP32[3570]|0;
$15 = (($14) + -500)|0;
- HEAP32[3532] = $15;
+ HEAP32[3570] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3533]|0;
+ $16 = HEAP32[3571]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3533]|0;
+ $18 = HEAP32[3571]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14136 + ($$022<<2)|0);
- $25 = (14136 + ($20<<2)|0);
+ $24 = (14288 + ($$022<<2)|0);
+ $25 = (14288 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -8116,7 +12303,7 @@ function _DestroyPhysicsBody($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3533] = $19;
+ HEAP32[3571] = $19;
return;
}
function _Vector2Subtract_4($0,$1,$2) {
@@ -8161,20 +12348,20 @@ function _MathNormalize($0) {
function _GetPhysicsBodiesCount() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[3533]|0;
+ $0 = HEAP32[3571]|0;
return ($0|0);
}
function _GetPhysicsBody($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3533]|0;
+ $1 = HEAP32[3571]|0;
$2 = ($1>>>0)>($0>>>0);
if (!($2)) {
$$0 = 0;
return ($$0|0);
}
- $3 = (14136 + ($0<<2)|0);
+ $3 = (14288 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$0 = $4;
return ($$0|0);
@@ -8183,11 +12370,11 @@ function _GetPhysicsShapeVerticesCount($0) {
$0 = $0|0;
var $$1 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3533]|0;
+ $1 = HEAP32[3571]|0;
$2 = ($1>>>0)>($0>>>0);
L1: do {
if ($2) {
- $3 = (14136 + ($0<<2)|0);
+ $3 = (14288 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$5 = ($4|0)==(0|0);
if ($5) {
@@ -8313,234 +12500,288 @@ function _Mat2Radians($0,$1) {
function _ClosePhysics() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3531] = 0;
- $0 = HEAP32[3530]|0;
+ HEAP32[3569] = 0;
+ $0 = HEAP32[3568]|0;
(_pthread_join(($0|0),(0|0))|0);
return;
}
function _main() {
- var $$0100102 = 0, $$0101 = 0, $$byval_copy5 = 0, $$byval_copy6 = 0, $$byval_copy7 = 0, $$sroa$0$0$$sroa_idx = 0, $$sroa$026$0$$sroa_idx = 0, $$sroa$029$0$$sroa_idx = 0, $$sroa$032$0$$sroa_idx = 0, $$sroa$035$0$$sroa_idx = 0, $$sroa$038$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx25 = 0, $$sroa$227$0$$sroa_idx28 = 0, $$sroa$230$0$$sroa_idx31 = 0, $$sroa$233$0$$sroa_idx34 = 0, $$sroa$236$0$$sroa_idx37 = 0, $$sroa$239$0$$sroa_idx40 = 0, $0 = 0, $1 = 0, $10 = 0;
- var $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0;
- var $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0;
- var $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0.0, $54 = 0, $55 = 0, $56 = 0.0, $57 = 0.0, $58 = 0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0, $62 = 0.0, $63 = 0, $64 = 0, $65 = 0.0;
- var $66 = 0.0, $67 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0, $71 = 0.0, $72 = 0, $73 = 0, $74 = 0.0, $75 = 0.0, $76 = 0, $77 = 0.0, $78 = 0.0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0;
- var $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $exitcond = 0, $exitcond109 = 0, label = 0, sp = 0;
+ var $$byval_copy3 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0, $17 = 0.0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0.0, $23 = 0.0, $24 = 0, $25 = 0;
+ var $26 = 0, $27 = 0.0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0.0, $32 = 0.0, $33 = 0, $34 = 0, $35 = 0, $36 = 0.0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0, $43 = 0;
+ var $44 = 0, $45 = 0.0, $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 112|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(112|0);
- $$byval_copy7 = sp + 96|0;
- $$byval_copy6 = sp + 88|0;
- $$byval_copy5 = sp + 80|0;
- $0 = sp + 72|0;
- $1 = sp + 64|0;
- $2 = sp + 56|0;
- $3 = sp + 48|0;
- $4 = sp + 108|0;
- $5 = sp + 24|0;
- $6 = sp + 8|0;
- $7 = sp + 104|0;
- $8 = sp + 44|0;
- $9 = sp + 40|0;
- $10 = sp + 36|0;
- $11 = sp + 32|0;
- $12 = sp + 16|0;
- $13 = sp + 4|0;
- $14 = sp;
+ STACKTOP = STACKTOP + 48|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(48|0);
+ $$byval_copy3 = sp + 32|0;
+ $0 = sp + 24|0;
+ $1 = sp + 16|0;
+ $2 = sp + 8|0;
+ $3 = sp;
_SetConfigFlags(32);
- _InitWindow(800,450,3480);
- _SetTargetFPS(60);
- $15 = (_MeasureText(3518,30)|0);
- $16 = (800 - ($15))|0;
- $17 = (($16) + -10)|0;
+ $4 = HEAP32[2]|0;
+ $5 = HEAP32[3]|0;
+ _InitWindow($4,$5,3248);
+ $6 = HEAP32[2]|0;
+ $7 = (_MeasureText(3286,30)|0);
+ $8 = (($6) + -10)|0;
+ $9 = (($8) - ($7))|0;
+ HEAP32[7733] = $9;
_InitPhysics();
- HEAPF32[$0>>2] = 400.0;
- $18 = ((($0)) + 4|0);
- HEAPF32[$18>>2] = 450.0;
- ;HEAP32[$$byval_copy7>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$0+4>>2]|0;
- $19 = (_CreatePhysicsBodyRectangle($$byval_copy7,800.0,100.0,10.0)|0);
- $20 = ((($19)) + 4|0);
- HEAP32[$20>>2] = 0;
- $21 = ((($19)) + 68|0);
- HEAPF32[$21>>2] = 1.0;
- HEAPF32[$1>>2] = 200.0;
- $22 = ((($1)) + 4|0);
- HEAPF32[$22>>2] = 225.0;
- ;HEAP32[$$byval_copy7>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$1+4>>2]|0;
- $23 = (_CreatePhysicsBodyCircle($$byval_copy7,30.0,10.0)|0);
- $24 = ((($23)) + 68|0);
- HEAPF32[$24>>2] = 0.0;
- HEAPF32[$2>>2] = 400.0;
- $25 = ((($2)) + 4|0);
- HEAPF32[$25>>2] = 225.0;
- ;HEAP32[$$byval_copy7>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$2+4>>2]|0;
- $26 = (_CreatePhysicsBodyCircle($$byval_copy7,30.0,10.0)|0);
- $27 = ((($26)) + 68|0);
- HEAPF32[$27>>2] = 0.5;
- HEAPF32[$3>>2] = 600.0;
- $28 = ((($3)) + 4|0);
- HEAPF32[$28>>2] = 225.0;
- ;HEAP32[$$byval_copy7>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy7+4>>2]=HEAP32[$3+4>>2]|0;
- $29 = (_CreatePhysicsBodyCircle($$byval_copy7,30.0,10.0)|0);
- $30 = ((($29)) + 68|0);
- HEAPF32[$30>>2] = 1.0;
- $31 = (_WindowShouldClose()|0);
- $32 = ($31|0)==(0);
- if (!($32)) {
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
- }
- $33 = ((($4)) + 1|0);
- $34 = ((($4)) + 2|0);
- $35 = ((($4)) + 3|0);
- $36 = ((($23)) + 8|0);
- $37 = ((($23)) + 12|0);
- $38 = ((($26)) + 8|0);
- $39 = ((($26)) + 12|0);
- $40 = ((($29)) + 8|0);
- $41 = ((($29)) + 12|0);
- $42 = (($16) + 40)|0;
- $43 = ((($7)) + 1|0);
- $44 = ((($7)) + 2|0);
- $45 = ((($7)) + 3|0);
- $$sroa$038$0$$sroa_idx = ((($23)) + 8|0);
- $$sroa$239$0$$sroa_idx40 = ((($23)) + 12|0);
- $$sroa$035$0$$sroa_idx = ((($23)) + 16|0);
- $$sroa$236$0$$sroa_idx37 = ((($23)) + 20|0);
- $$sroa$032$0$$sroa_idx = ((($26)) + 8|0);
- $$sroa$233$0$$sroa_idx34 = ((($26)) + 12|0);
- $$sroa$029$0$$sroa_idx = ((($26)) + 16|0);
- $$sroa$230$0$$sroa_idx31 = ((($26)) + 20|0);
- $$sroa$026$0$$sroa_idx = ((($29)) + 8|0);
- $$sroa$227$0$$sroa_idx28 = ((($29)) + 12|0);
- $$sroa$0$0$$sroa_idx = ((($29)) + 16|0);
- $$sroa$2$0$$sroa_idx25 = ((($29)) + 20|0);
- while(1) {
- $46 = (_IsKeyPressed(82)|0);
- $47 = ($46|0)==(0);
- if (!($47)) {
- HEAPF32[$$sroa$038$0$$sroa_idx>>2] = 200.0;
- HEAPF32[$$sroa$239$0$$sroa_idx40>>2] = 225.0;
- HEAPF32[$$sroa$035$0$$sroa_idx>>2] = 0.0;
- HEAPF32[$$sroa$236$0$$sroa_idx37>>2] = 0.0;
- HEAPF32[$$sroa$032$0$$sroa_idx>>2] = 400.0;
- HEAPF32[$$sroa$233$0$$sroa_idx34>>2] = 225.0;
- HEAPF32[$$sroa$029$0$$sroa_idx>>2] = 0.0;
- HEAPF32[$$sroa$230$0$$sroa_idx31>>2] = 0.0;
- HEAPF32[$$sroa$026$0$$sroa_idx>>2] = 600.0;
- HEAPF32[$$sroa$227$0$$sroa_idx28>>2] = 225.0;
- HEAPF32[$$sroa$0$0$$sroa_idx>>2] = 0.0;
- HEAPF32[$$sroa$2$0$$sroa_idx25>>2] = 0.0;
- }
- _BeginDrawing();
- HEAP8[$4>>0] = 0;
- HEAP8[$33>>0] = 0;
- HEAP8[$34>>0] = 0;
- HEAP8[$35>>0] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$4>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$4+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$4+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$4+3>>0]|0;
- _ClearBackground($$byval_copy7);
- _DrawFPS(710,420);
- $48 = (_GetPhysicsBodiesCount()|0);
- $49 = ($48|0)>(0);
- if ($49) {
- $$0100102 = 0;
- while(1) {
- $82 = (_GetPhysicsBody($$0100102)|0);
- $83 = (_GetPhysicsShapeVerticesCount($$0100102)|0);
- $84 = ($83|0)>(0);
- if ($84) {
- $$0101 = 0;
- while(1) {
- _GetPhysicsShapeVertex($5,$82,$$0101);
- $86 = (($$0101) + 1)|0;
- $87 = ($86|0)<($83|0);
- $88 = $87 ? $86 : 0;
- _GetPhysicsShapeVertex($6,$82,$88);
- HEAP8[$7>>0] = 0;
- HEAP8[$43>>0] = -28;
- HEAP8[$44>>0] = 48;
- HEAP8[$45>>0] = -1;
- ;HEAP32[$$byval_copy5>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$5+4>>2]|0;
- ;HEAP32[$$byval_copy6>>2]=HEAP32[$6>>2]|0;HEAP32[$$byval_copy6+4>>2]=HEAP32[$6+4>>2]|0;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$7>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$7+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$7+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$7+3>>0]|0;
- _DrawLineV($$byval_copy5,$$byval_copy6,$$byval_copy7);
- $exitcond = ($86|0)==($83|0);
- if ($exitcond) {
- break;
- } else {
- $$0101 = $86;
- }
+ $10 = HEAP32[2]|0;
+ $11 = (($10|0) / 2)&-1;
+ $12 = (+($11|0));
+ HEAPF32[$0>>2] = $12;
+ $13 = ((($0)) + 4|0);
+ $14 = HEAP32[3]|0;
+ $15 = (+($14|0));
+ HEAPF32[$13>>2] = $15;
+ $16 = HEAP32[2]|0;
+ $17 = (+($16|0));
+ ;HEAP32[$$byval_copy3>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[$0+4>>2]|0;
+ $18 = (_CreatePhysicsBodyRectangle($$byval_copy3,$17,100.0,10.0)|0);
+ $19 = ((($18)) + 4|0);
+ HEAP32[$19>>2] = 0;
+ $20 = ((($18)) + 68|0);
+ HEAPF32[$20>>2] = 1.0;
+ $21 = HEAP32[2]|0;
+ $22 = (+($21|0));
+ $23 = $22 * 0.25;
+ HEAPF32[$1>>2] = $23;
+ $24 = ((($1)) + 4|0);
+ $25 = HEAP32[3]|0;
+ $26 = (($25|0) / 2)&-1;
+ $27 = (+($26|0));
+ HEAPF32[$24>>2] = $27;
+ ;HEAP32[$$byval_copy3>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[$1+4>>2]|0;
+ $28 = (_CreatePhysicsBodyCircle($$byval_copy3,30.0,10.0)|0);
+ HEAP32[7734] = $28;
+ $29 = ((($28)) + 68|0);
+ HEAPF32[$29>>2] = 0.0;
+ $30 = HEAP32[2]|0;
+ $31 = (+($30|0));
+ $32 = $31 * 0.5;
+ HEAPF32[$2>>2] = $32;
+ $33 = ((($2)) + 4|0);
+ $34 = HEAP32[3]|0;
+ $35 = (($34|0) / 2)&-1;
+ $36 = (+($35|0));
+ HEAPF32[$33>>2] = $36;
+ ;HEAP32[$$byval_copy3>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[$2+4>>2]|0;
+ $37 = (_CreatePhysicsBodyCircle($$byval_copy3,30.0,10.0)|0);
+ HEAP32[7735] = $37;
+ $38 = ((($37)) + 68|0);
+ HEAPF32[$38>>2] = 0.5;
+ $39 = HEAP32[2]|0;
+ $40 = (+($39|0));
+ $41 = $40 * 0.75;
+ HEAPF32[$3>>2] = $41;
+ $42 = ((($3)) + 4|0);
+ $43 = HEAP32[3]|0;
+ $44 = (($43|0) / 2)&-1;
+ $45 = (+($44|0));
+ HEAPF32[$42>>2] = $45;
+ ;HEAP32[$$byval_copy3>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[$3+4>>2]|0;
+ $46 = (_CreatePhysicsBodyCircle($$byval_copy3,30.0,10.0)|0);
+ HEAP32[7736] = $46;
+ $47 = ((($46)) + 68|0);
+ HEAPF32[$47>>2] = 1.0;
+ _emscripten_set_main_loop((1|0),0,1);
+ _ClosePhysics();
+ _CloseWindow();
+ STACKTOP = sp;return 0;
+}
+function _UpdateDrawFrame() {
+ var $$04142 = 0, $$043 = 0, $$byval_copy1 = 0, $$byval_copy2 = 0, $$byval_copy3 = 0, $$sroa$0$0$$sroa_idx = 0, $$sroa$026$0$$sroa_idx = 0, $$sroa$029$0$$sroa_idx = 0, $$sroa$032$0$$sroa_idx = 0, $$sroa$035$0$$sroa_idx = 0, $$sroa$038$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx25 = 0, $$sroa$227$0$$sroa_idx28 = 0, $$sroa$230$0$$sroa_idx31 = 0, $$sroa$233$0$$sroa_idx34 = 0, $$sroa$236$0$$sroa_idx37 = 0, $$sroa$239$0$$sroa_idx40 = 0, $0 = 0, $1 = 0, $10 = 0;
+ var $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0, $18 = 0, $19 = 0.0, $2 = 0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0.0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0;
+ var $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0.0, $43 = 0, $44 = 0, $45 = 0.0, $46 = 0.0, $47 = 0;
+ var $48 = 0, $49 = 0, $5 = 0, $50 = 0.0, $51 = 0.0, $52 = 0, $53 = 0, $54 = 0, $55 = 0.0, $56 = 0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0.0, $64 = 0.0, $65 = 0;
+ var $66 = 0, $67 = 0, $68 = 0.0, $69 = 0, $7 = 0, $70 = 0, $71 = 0.0, $72 = 0.0, $73 = 0, $74 = 0, $75 = 0, $76 = 0.0, $77 = 0.0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0;
+ var $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $exitcond = 0, $exitcond47 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 80|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(80|0);
+ $$byval_copy3 = sp + 72|0;
+ $$byval_copy2 = sp + 56|0;
+ $$byval_copy1 = sp + 48|0;
+ $0 = sp + 68|0;
+ $1 = sp + 24|0;
+ $2 = sp + 8|0;
+ $3 = sp + 64|0;
+ $4 = sp + 44|0;
+ $5 = sp + 40|0;
+ $6 = sp + 36|0;
+ $7 = sp + 32|0;
+ $8 = sp + 20|0;
+ $9 = sp + 16|0;
+ $10 = sp;
+ $11 = (_IsKeyPressed(82)|0);
+ $12 = ($11|0)==(0);
+ if (!($12)) {
+ $13 = HEAP32[7734]|0;
+ $14 = HEAP32[2]|0;
+ $15 = (+($14|0));
+ $16 = $15 * 0.25;
+ $17 = HEAP32[3]|0;
+ $18 = (($17|0) / 2)&-1;
+ $19 = (+($18|0));
+ $$sroa$038$0$$sroa_idx = ((($13)) + 8|0);
+ HEAPF32[$$sroa$038$0$$sroa_idx>>2] = $16;
+ $$sroa$239$0$$sroa_idx40 = ((($13)) + 12|0);
+ HEAPF32[$$sroa$239$0$$sroa_idx40>>2] = $19;
+ $$sroa$035$0$$sroa_idx = ((($13)) + 16|0);
+ HEAPF32[$$sroa$035$0$$sroa_idx>>2] = 0.0;
+ $$sroa$236$0$$sroa_idx37 = ((($13)) + 20|0);
+ HEAPF32[$$sroa$236$0$$sroa_idx37>>2] = 0.0;
+ $20 = HEAP32[7735]|0;
+ $21 = $15 * 0.5;
+ $$sroa$032$0$$sroa_idx = ((($20)) + 8|0);
+ HEAPF32[$$sroa$032$0$$sroa_idx>>2] = $21;
+ $$sroa$233$0$$sroa_idx34 = ((($20)) + 12|0);
+ HEAPF32[$$sroa$233$0$$sroa_idx34>>2] = $19;
+ $$sroa$029$0$$sroa_idx = ((($20)) + 16|0);
+ HEAPF32[$$sroa$029$0$$sroa_idx>>2] = 0.0;
+ $$sroa$230$0$$sroa_idx31 = ((($20)) + 20|0);
+ HEAPF32[$$sroa$230$0$$sroa_idx31>>2] = 0.0;
+ $22 = HEAP32[7736]|0;
+ $23 = $15 * 0.75;
+ $$sroa$026$0$$sroa_idx = ((($22)) + 8|0);
+ HEAPF32[$$sroa$026$0$$sroa_idx>>2] = $23;
+ $$sroa$227$0$$sroa_idx28 = ((($22)) + 12|0);
+ HEAPF32[$$sroa$227$0$$sroa_idx28>>2] = $19;
+ $$sroa$0$0$$sroa_idx = ((($22)) + 16|0);
+ HEAPF32[$$sroa$0$0$$sroa_idx>>2] = 0.0;
+ $$sroa$2$0$$sroa_idx25 = ((($22)) + 20|0);
+ HEAPF32[$$sroa$2$0$$sroa_idx25>>2] = 0.0;
+ }
+ _BeginDrawing();
+ HEAP8[$0>>0] = 0;
+ $24 = ((($0)) + 1|0);
+ HEAP8[$24>>0] = 0;
+ $25 = ((($0)) + 2|0);
+ HEAP8[$25>>0] = 0;
+ $26 = ((($0)) + 3|0);
+ HEAP8[$26>>0] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$0>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$0+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$0+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$0+3>>0]|0;
+ _ClearBackground($$byval_copy3);
+ $27 = HEAP32[2]|0;
+ $28 = (($27) + -90)|0;
+ $29 = HEAP32[3]|0;
+ $30 = (($29) + -30)|0;
+ _DrawFPS($28,$30);
+ $31 = (_GetPhysicsBodiesCount()|0);
+ $32 = ($31|0)>(0);
+ if ($32) {
+ $33 = ((($3)) + 1|0);
+ $34 = ((($3)) + 2|0);
+ $35 = ((($3)) + 3|0);
+ $$043 = 0;
+ while(1) {
+ $85 = (_GetPhysicsBody($$043)|0);
+ $86 = (_GetPhysicsShapeVerticesCount($$043)|0);
+ $87 = ($86|0)>(0);
+ if ($87) {
+ $$04142 = 0;
+ while(1) {
+ _GetPhysicsShapeVertex($1,$85,$$04142);
+ $89 = (($$04142) + 1)|0;
+ $90 = ($89|0)<($86|0);
+ $91 = $90 ? $89 : 0;
+ _GetPhysicsShapeVertex($2,$85,$91);
+ HEAP8[$3>>0] = 0;
+ HEAP8[$33>>0] = -28;
+ HEAP8[$34>>0] = 48;
+ HEAP8[$35>>0] = -1;
+ ;HEAP32[$$byval_copy1>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$1+4>>2]|0;
+ ;HEAP32[$$byval_copy2>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy2+4>>2]=HEAP32[$2+4>>2]|0;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$3>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$3+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$3+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$3+3>>0]|0;
+ _DrawLineV($$byval_copy1,$$byval_copy2,$$byval_copy3);
+ $exitcond = ($89|0)==($86|0);
+ if ($exitcond) {
+ break;
+ } else {
+ $$04142 = $89;
}
}
- $85 = (($$0100102) + 1)|0;
- $exitcond109 = ($85|0)==($48|0);
- if ($exitcond109) {
- break;
- } else {
- $$0100102 = $85;
- }
- }
- }
- $50 = (_MeasureText(3525,30)|0);
- $51 = (800 - ($50))|0;
- $52 = (($51|0) / 2)&-1;
- HEAP32[$8>>2] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$8>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$8+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$8+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$8+3>>0]|0;
- _DrawText(3525,$52,75,30,$$byval_copy7);
- $53 = +HEAPF32[$36>>2];
- $54 = (_MeasureText(3544,20)|0);
- $55 = (($54|0) / 2)&-1;
- $56 = (+($55|0));
- $57 = $53 - $56;
- $58 = (~~(($57)));
- $59 = +HEAPF32[$37>>2];
- $60 = $59 + -7.0;
- $61 = (~~(($60)));
- HEAP32[$9>>2] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$9+3>>0]|0;
- _DrawText(3544,$58,$61,20,$$byval_copy7);
- $62 = +HEAPF32[$38>>2];
- $63 = (_MeasureText(3546,20)|0);
- $64 = (($63|0) / 2)&-1;
- $65 = (+($64|0));
- $66 = $62 - $65;
- $67 = (~~(($66)));
- $68 = +HEAPF32[$39>>2];
- $69 = $68 + -7.0;
- $70 = (~~(($69)));
- HEAP32[$10>>2] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$10>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$10+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$10+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$10+3>>0]|0;
- _DrawText(3546,$67,$70,20,$$byval_copy7);
- $71 = +HEAPF32[$40>>2];
- $72 = (_MeasureText(3550,20)|0);
- $73 = (($72|0) / 2)&-1;
- $74 = (+($73|0));
- $75 = $71 - $74;
- $76 = (~~(($75)));
- $77 = +HEAPF32[$41>>2];
- $78 = $77 + -7.0;
- $79 = (~~(($78)));
- HEAP32[$11>>2] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$11>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$11+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$11+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$11+3>>0]|0;
- _DrawText(3550,$76,$79,20,$$byval_copy7);
- HEAP32[$12>>2] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$12>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$12+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$12+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$12+3>>0]|0;
- _DrawText(3552,10,10,10,$$byval_copy7);
- HEAP32[$13>>2] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$13>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$13+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$13+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$13+3>>0]|0;
- _DrawText(3518,$17,15,30,$$byval_copy7);
- HEAP32[$14>>2] = -1;
- ;HEAP8[$$byval_copy7>>0]=HEAP8[$14>>0]|0;HEAP8[$$byval_copy7+1>>0]=HEAP8[$14+1>>0]|0;HEAP8[$$byval_copy7+2>>0]=HEAP8[$14+2>>0]|0;HEAP8[$$byval_copy7+3>>0]=HEAP8[$14+3>>0]|0;
- _DrawText(3579,$42,8,10,$$byval_copy7);
- _EndDrawing();
- $80 = (_WindowShouldClose()|0);
- $81 = ($80|0)==(0);
- if (!($81)) {
- break;
+ }
+ $88 = (($$043) + 1)|0;
+ $exitcond47 = ($88|0)==($31|0);
+ if ($exitcond47) {
+ break;
+ } else {
+ $$043 = $88;
+ }
}
}
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
+ $36 = HEAP32[2]|0;
+ $37 = (_MeasureText(3293,30)|0);
+ $38 = (($36) - ($37))|0;
+ $39 = (($38|0) / 2)&-1;
+ HEAP32[$4>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$4>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$4+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$4+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$4+3>>0]|0;
+ _DrawText(3293,$39,75,30,$$byval_copy3);
+ $40 = HEAP32[7734]|0;
+ $41 = ((($40)) + 8|0);
+ $42 = +HEAPF32[$41>>2];
+ $43 = (_MeasureText(3312,20)|0);
+ $44 = (($43|0) / 2)&-1;
+ $45 = (+($44|0));
+ $46 = $42 - $45;
+ $47 = (~~(($46)));
+ $48 = HEAP32[7734]|0;
+ $49 = ((($48)) + 12|0);
+ $50 = +HEAPF32[$49>>2];
+ $51 = $50 + -7.0;
+ $52 = (~~(($51)));
+ HEAP32[$5>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$5>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$5+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$5+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$5+3>>0]|0;
+ _DrawText(3312,$47,$52,20,$$byval_copy3);
+ $53 = HEAP32[7735]|0;
+ $54 = ((($53)) + 8|0);
+ $55 = +HEAPF32[$54>>2];
+ $56 = (_MeasureText(3314,20)|0);
+ $57 = (($56|0) / 2)&-1;
+ $58 = (+($57|0));
+ $59 = $55 - $58;
+ $60 = (~~(($59)));
+ $61 = HEAP32[7735]|0;
+ $62 = ((($61)) + 12|0);
+ $63 = +HEAPF32[$62>>2];
+ $64 = $63 + -7.0;
+ $65 = (~~(($64)));
+ HEAP32[$6>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$6+3>>0]|0;
+ _DrawText(3314,$60,$65,20,$$byval_copy3);
+ $66 = HEAP32[7736]|0;
+ $67 = ((($66)) + 8|0);
+ $68 = +HEAPF32[$67>>2];
+ $69 = (_MeasureText(3318,20)|0);
+ $70 = (($69|0) / 2)&-1;
+ $71 = (+($70|0));
+ $72 = $68 - $71;
+ $73 = (~~(($72)));
+ $74 = HEAP32[7736]|0;
+ $75 = ((($74)) + 12|0);
+ $76 = +HEAPF32[$75>>2];
+ $77 = $76 + -7.0;
+ $78 = (~~(($77)));
+ HEAP32[$7>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$7>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$7+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$7+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$7+3>>0]|0;
+ _DrawText(3318,$73,$78,20,$$byval_copy3);
+ HEAP32[$8>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$8>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$8+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$8+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$8+3>>0]|0;
+ _DrawText(3320,10,10,10,$$byval_copy3);
+ $79 = HEAP32[7733]|0;
+ $80 = HEAP32[4]|0;
+ HEAP32[$9>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$9+3>>0]|0;
+ _DrawText(3286,$79,$80,30,$$byval_copy3);
+ $81 = HEAP32[7733]|0;
+ $82 = (($81) + 50)|0;
+ $83 = HEAP32[4]|0;
+ $84 = (($83) + -7)|0;
+ HEAP32[$10>>2] = -1;
+ ;HEAP8[$$byval_copy3>>0]=HEAP8[$10>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$10+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$10+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$10+3>>0]|0;
+ _DrawText(3347,$82,$84,10,$$byval_copy3);
+ _EndDrawing();
+ STACKTOP = sp;return;
}
function _GetRandomNumber() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
@@ -8555,7 +12796,7 @@ function _InitTimer() {
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetCurrentTime());
- HEAPF64[1729] = $1;
+ HEAPF64[1748] = $1;
return;
}
function _GetCurrentTime() {
@@ -8582,7 +12823,7 @@ function _GetCurrentTime() {
function _MathClamp() {
var $$sink = 0.0, $0 = 0.0, $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1727];
+ $0 = +HEAPF64[1746];
$1 = $0 < 0.0;
if ($1) {
$$sink = 0.0;
@@ -8594,7 +12835,7 @@ function _MathClamp() {
return;
}
}
- HEAPF64[1727] = $$sink;
+ HEAPF64[1746] = $$sink;
return;
}
function _PhysicsStep() {
@@ -8608,16 +12849,16 @@ function _PhysicsStep() {
var $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0;
var $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7695]|0;
+ $0 = HEAP32[7737]|0;
$1 = (($0) + 1)|0;
- HEAP32[7695] = $1;
- $2 = HEAP32[3598]|0;
+ HEAP32[7737] = $1;
+ $2 = HEAP32[3636]|0;
$$0167 = (($2) + -1)|0;
$3 = ($$0167|0)>(-1);
if ($3) {
$$0168 = $$0167;
while(1) {
- $6 = (14396 + ($$0168<<2)|0);
+ $6 = (14548 + ($$0168<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = ($7|0)==(0|0);
if (!($8)) {
@@ -8632,7 +12873,7 @@ function _PhysicsStep() {
}
}
}
- $4 = HEAP32[3533]|0;
+ $4 = HEAP32[3571]|0;
$5 = ($4|0)==(0);
if ($5) {
$17 = $4;
@@ -8640,7 +12881,7 @@ function _PhysicsStep() {
} else {
$$0125165 = 0;
while(1) {
- $11 = (14136 + ($$0125165<<2)|0);
+ $11 = (14288 + ($$0125165<<2)|0);
$12 = HEAP32[$11>>2]|0;
$13 = ((($12)) + 76|0);
HEAP32[$13>>2] = 0;
@@ -8652,24 +12893,24 @@ function _PhysicsStep() {
break;
}
}
- $$pr = HEAP32[3533]|0;
+ $$pr = HEAP32[3571]|0;
$10 = ($$pr|0)==(0);
if (!($10)) {
$$0126163 = 0;
while(1) {
- $19 = (14136 + ($$0126163<<2)|0);
+ $19 = (14288 + ($$0126163<<2)|0);
$20 = HEAP32[$19>>2]|0;
$21 = ($20|0)==(0|0);
if (!($21)) {
$$0130160 = (($$0126163) + 1)|0;
- $22 = HEAP32[3533]|0;
+ $22 = HEAP32[3571]|0;
$23 = ($$0130160>>>0)<($22>>>0);
if ($23) {
$24 = ((($20)) + 56|0);
$25 = ((($20)) + 84|0);
$$0130161 = $$0130160;
while(1) {
- $26 = (14136 + ($$0130161<<2)|0);
+ $26 = (14288 + ($$0130161<<2)|0);
$27 = HEAP32[$26>>2]|0;
$28 = ($27|0)==(0|0);
do {
@@ -8775,7 +13016,7 @@ function _PhysicsStep() {
}
} while(0);
$$0130 = (($$0130161) + 1)|0;
- $29 = HEAP32[3533]|0;
+ $29 = HEAP32[3571]|0;
$30 = ($$0130>>>0)<($29>>>0);
if ($30) {
$$0130161 = $$0130;
@@ -8786,7 +13027,7 @@ function _PhysicsStep() {
}
}
$97 = (($$0126163) + 1)|0;
- $98 = HEAP32[3533]|0;
+ $98 = HEAP32[3571]|0;
$99 = ($97>>>0)<($98>>>0);
if ($99) {
$$0126163 = $97;
@@ -8801,10 +13042,10 @@ function _PhysicsStep() {
if ((label|0) == 8) {
$16 = ($17|0)==(0);
if (!($16)) {
- $18 = HEAP32[3533]|0;
+ $18 = HEAP32[3571]|0;
$$0135158 = 0;
while(1) {
- $103 = (14136 + ($$0135158<<2)|0);
+ $103 = (14288 + ($$0135158<<2)|0);
$104 = HEAP32[$103>>2]|0;
$105 = ($104|0)==(0|0);
if (!($105)) {
@@ -8820,15 +13061,15 @@ function _PhysicsStep() {
}
}
}
- $100 = HEAP32[3598]|0;
+ $100 = HEAP32[3636]|0;
$101 = ($100|0)==(0);
if ($101) {
$$0134155 = 0;$114 = 0;
} else {
- $102 = HEAP32[3598]|0;
+ $102 = HEAP32[3636]|0;
$$0136156 = 0;
while(1) {
- $108 = (14396 + ($$0136156<<2)|0);
+ $108 = (14548 + ($$0136156<<2)|0);
$109 = HEAP32[$108>>2]|0;
$110 = ($109|0)==(0|0);
if (!($110)) {
@@ -8848,12 +13089,12 @@ function _PhysicsStep() {
while(1) {
if ((label|0) == 32) {
label = 0;
- $$pr172 = HEAP32[3598]|0;
+ $$pr172 = HEAP32[3636]|0;
$$0134155 = $$0134155$ph;$114 = $$pr172;
}
$113 = ($114|0)==(0);
if (!($113)) {
- $115 = (14396 + ($$0134155<<2)|0);
+ $115 = (14548 + ($$0134155<<2)|0);
$$0133152 = 0;
while(1) {
$120 = HEAP32[$115>>2]|0;
@@ -8862,7 +13103,7 @@ function _PhysicsStep() {
_IntegratePhysicsImpulses($120);
}
$122 = (($$0133152) + 1)|0;
- $123 = HEAP32[3598]|0;
+ $123 = HEAP32[3636]|0;
$124 = ($122>>>0)<($123>>>0);
if ($124) {
$$0133152 = $122;
@@ -8880,13 +13121,13 @@ function _PhysicsStep() {
label = 32;
}
}
- $116 = HEAP32[3533]|0;
+ $116 = HEAP32[3571]|0;
$117 = ($116|0)==(0);
if (!($117)) {
- $118 = HEAP32[3533]|0;
+ $118 = HEAP32[3571]|0;
$$0131150 = 0;
while(1) {
- $128 = (14136 + ($$0131150<<2)|0);
+ $128 = (14288 + ($$0131150<<2)|0);
$129 = HEAP32[$128>>2]|0;
$130 = ($129|0)==(0|0);
if (!($130)) {
@@ -8901,13 +13142,13 @@ function _PhysicsStep() {
}
}
}
- $125 = HEAP32[3598]|0;
+ $125 = HEAP32[3636]|0;
$126 = ($125|0)==(0);
if (!($126)) {
- $127 = HEAP32[3598]|0;
+ $127 = HEAP32[3636]|0;
$$0129148 = 0;
while(1) {
- $136 = (14396 + ($$0129148<<2)|0);
+ $136 = (14548 + ($$0129148<<2)|0);
$137 = HEAP32[$136>>2]|0;
$138 = ($137|0)==(0|0);
if (!($138)) {
@@ -8922,15 +13163,15 @@ function _PhysicsStep() {
}
}
}
- $133 = HEAP32[3533]|0;
+ $133 = HEAP32[3571]|0;
$134 = ($133|0)==(0);
if ($134) {
return;
}
- $135 = HEAP32[3533]|0;
+ $135 = HEAP32[3571]|0;
$$0127147 = 0;
while(1) {
- $141 = (14136 + ($$0127147<<2)|0);
+ $141 = (14288 + ($$0127147<<2)|0);
$142 = HEAP32[$141>>2]|0;
$143 = ($142|0)==(0|0);
if (!($143)) {
@@ -8961,16 +13202,16 @@ function _DestroyPhysicsManifold($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3598]|0;
+ $3 = HEAP32[3636]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3598]|0;
+ $5 = HEAP32[3636]|0;
$$02023 = 0;
while(1) {
- $6 = (14396 + ($$02023<<2)|0);
+ $6 = (14548 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -8989,24 +13230,24 @@ function _DestroyPhysicsManifold($0) {
}
}
} while(0);
- $12 = (14396 + ($$021<<2)|0);
+ $12 = (14548 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3532]|0;
+ $14 = HEAP32[3570]|0;
$15 = (($14) + -56)|0;
- HEAP32[3532] = $15;
+ HEAP32[3570] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3598]|0;
+ $16 = HEAP32[3636]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3598]|0;
+ $18 = HEAP32[3636]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14396 + ($$022<<2)|0);
- $25 = (14396 + ($20<<2)|0);
+ $24 = (14548 + ($$022<<2)|0);
+ $25 = (14548 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -9022,7 +13263,7 @@ function _DestroyPhysicsManifold($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3598] = $19;
+ HEAP32[3636] = $19;
return;
}
function _CreatePhysicsManifold($0,$1) {
@@ -9032,10 +13273,10 @@ function _CreatePhysicsManifold($0,$1) {
var $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
sp = STACKTOP;
$2 = (_malloc(56)|0);
- $3 = HEAP32[3532]|0;
+ $3 = HEAP32[3570]|0;
$4 = (($3) + 56)|0;
- HEAP32[3532] = $4;
- $5 = HEAP32[3598]|0;
+ HEAP32[3570] = $4;
+ $5 = HEAP32[3636]|0;
$6 = ($5|0)==(0);
$$04457 = 0;
L1: while(1) {
@@ -9046,7 +13287,7 @@ function _CreatePhysicsManifold($0,$1) {
$$04755 = 0;
}
while(1) {
- $9 = (14396 + ($$04755<<2)|0);
+ $9 = (14548 + ($$04755<<2)|0);
$10 = HEAP32[$9>>2]|0;
$11 = HEAP32[$10>>2]|0;
$12 = ($11|0)==($$04457|0);
@@ -9089,11 +13330,11 @@ function _CreatePhysicsManifold($0,$1) {
HEAP32[$17>>2] = $1;
$18 = ((($2)) + 12|0);
dest=$18; stop=dest+44|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
- $19 = HEAP32[3598]|0;
- $20 = (14396 + ($19<<2)|0);
+ $19 = HEAP32[3636]|0;
+ $20 = (14548 + ($19<<2)|0);
HEAP32[$20>>2] = $2;
$21 = (($19) + 1)|0;
- HEAP32[3598] = $21;
+ HEAP32[3636] = $21;
return ($2|0);
}
function _SolvePhysicsManifold($0) {
@@ -9193,7 +13434,7 @@ function _IntegratePhysicsForces($0) {
$8 = +HEAPF32[$7>>2];
$9 = $2 * $8;
$10 = $9;
- $11 = +HEAPF64[1730];
+ $11 = +HEAPF64[1749];
$12 = $11 * 0.5;
$13 = $10 * $12;
$14 = ((($0)) + 16|0);
@@ -9217,7 +13458,7 @@ function _IntegratePhysicsForces($0) {
$30 = HEAP32[$29>>2]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = +HEAPF32[7696];
+ $32 = +HEAPF32[7738];
$33 = $32;
$34 = $12 * $33;
$35 = +HEAPF32[$14>>2];
@@ -9225,7 +13466,7 @@ function _IntegratePhysicsForces($0) {
$37 = $36 + $34;
$38 = $37;
HEAPF32[$14>>2] = $38;
- $39 = +HEAPF32[2];
+ $39 = +HEAPF32[5];
$40 = $39;
$41 = $12 * $40;
$42 = +HEAPF32[$24>>2];
@@ -9310,13 +13551,13 @@ function _InitializePhysicsManifolds($0) {
$39 = ((($7)) + 20|0);
$40 = ((($$byval_copy9)) + 4|0);
$41 = ((($4)) + 4|0);
- $42 = +HEAPF32[7696];
+ $42 = +HEAPF32[7738];
$43 = $42;
- $44 = +HEAPF64[1730];
+ $44 = +HEAPF64[1749];
$45 = $43 * $44;
$46 = $45;
$47 = ((($5)) + 4|0);
- $48 = +HEAPF32[2];
+ $48 = +HEAPF32[5];
$49 = $48;
$50 = $49 * $44;
$51 = $50;
@@ -9813,7 +14054,7 @@ function _IntegratePhysicsVelocity($0) {
$4 = ((($0)) + 16|0);
$5 = +HEAPF32[$4>>2];
$6 = $5;
- $7 = +HEAPF64[1730];
+ $7 = +HEAPF64[1749];
$8 = $6 * $7;
$9 = ((($0)) + 8|0);
$10 = +HEAPF32[$9>>2];
@@ -12234,7 +16475,7 @@ function _ProcessGestureEvent($0) {
$moveDownPosition$byval_copy11 = sp;
$1 = ((($0)) + 4|0);
$2 = HEAP32[$1>>2]|0;
- HEAP32[7698] = $2;
+ HEAP32[7740] = $2;
$3 = ($2|0)<(2);
$4 = HEAP32[$0>>2]|0;
$5 = ($4|0)==(1);
@@ -12247,7 +16488,7 @@ function _ProcessGestureEvent($0) {
$92 = (($89) + 4)|0;
$93 = $92;
$94 = HEAP32[$93>>2]|0;
- $95 = 13848;
+ $95 = 14000;
$96 = $95;
HEAP32[$96>>2] = $91;
$97 = (($95) + 4)|0;
@@ -12260,48 +16501,48 @@ function _ProcessGestureEvent($0) {
$103 = (($100) + 4)|0;
$104 = $103;
$105 = HEAP32[$104>>2]|0;
- $106 = 13888;
+ $106 = 14040;
$107 = $106;
HEAP32[$107>>2] = $102;
$108 = (($106) + 4)|0;
$109 = $108;
HEAP32[$109>>2] = $105;
- $110 = +HEAPF32[3472];
- $111 = +HEAPF32[3462];
+ $110 = +HEAPF32[3510];
+ $111 = +HEAPF32[3500];
$112 = $110 - $111;
- HEAPF32[3474] = $112;
- $113 = +HEAPF32[(13892)>>2];
- $114 = +HEAPF32[(13852)>>2];
+ HEAPF32[3512] = $112;
+ $113 = +HEAPF32[(14044)>>2];
+ $114 = +HEAPF32[(14004)>>2];
$115 = $113 - $114;
- HEAPF32[(13900)>>2] = $115;
- HEAP32[7697] = 4;
+ HEAPF32[(14052)>>2] = $115;
+ HEAP32[7739] = 4;
STACKTOP = sp;return;
}
switch ($4|0) {
case 2: {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13880+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14032+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$116 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- HEAPF32[7703] = $116;
- $117 = 13880;
+ HEAPF32[7745] = $116;
+ $117 = 14032;
$118 = $117;
$119 = HEAP32[$118>>2]|0;
$120 = (($117) + 4)|0;
$121 = $120;
$122 = HEAP32[$121>>2]|0;
- $123 = 13848;
+ $123 = 14000;
$124 = $123;
HEAP32[$124>>2] = $119;
$125 = (($123) + 4)|0;
$126 = $125;
HEAP32[$126>>2] = $122;
- $127 = 13904;
+ $127 = 14056;
$128 = $127;
$129 = HEAP32[$128>>2]|0;
$130 = (($127) + 4)|0;
$131 = $130;
$132 = HEAP32[$131>>2]|0;
- $133 = 13888;
+ $133 = 14040;
$134 = $133;
HEAP32[$134>>2] = $129;
$135 = (($133) + 4)|0;
@@ -12314,7 +16555,7 @@ function _ProcessGestureEvent($0) {
$141 = (($138) + 4)|0;
$142 = $141;
$143 = HEAP32[$142>>2]|0;
- $144 = 13880;
+ $144 = 14032;
$145 = $144;
HEAP32[$145>>2] = $140;
$146 = (($144) + 4)|0;
@@ -12327,27 +16568,27 @@ function _ProcessGestureEvent($0) {
$152 = (($149) + 4)|0;
$153 = $152;
$154 = HEAP32[$153>>2]|0;
- $155 = 13904;
+ $155 = 14056;
$156 = $155;
HEAP32[$156>>2] = $151;
$157 = (($155) + 4)|0;
$158 = $157;
HEAP32[$158>>2] = $154;
- $159 = +HEAPF32[3476];
- $160 = +HEAPF32[3470];
+ $159 = +HEAPF32[3514];
+ $160 = +HEAPF32[3508];
$161 = $159 - $160;
- HEAPF32[3474] = $161;
- $162 = +HEAPF32[(13908)>>2];
- $163 = +HEAPF32[(13884)>>2];
+ HEAPF32[3512] = $161;
+ $162 = +HEAPF32[(14060)>>2];
+ $163 = +HEAPF32[(14036)>>2];
$164 = $162 - $163;
- HEAPF32[(13900)>>2] = $164;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13880+4>>2]|0;
+ HEAPF32[(14052)>>2] = $164;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14032+4>>2]|0;
$165 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$166 = !($165 >= 0.004999999888241291);
if ($166) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13888>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13888+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$167 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$168 = !($167 >= 0.004999999888241291);
if ($168) {
@@ -12359,31 +16600,31 @@ function _ProcessGestureEvent($0) {
label = 29;
}
if ((label|0) == 29) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13880+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14032+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$169 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- $170 = +HEAPF32[7703];
+ $170 = +HEAPF32[7745];
$171 = $169 - $170;
$172 = $171 < 0.0;
$$sink11 = $172 ? 256 : 512;
$$sink16 = $$sink11;
}
- HEAP32[7697] = $$sink16;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13880+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13904>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13904+4>>2]|0;
+ HEAP32[7739] = $$sink16;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14032+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14056>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14056+4>>2]|0;
$173 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$174 = 360.0 - $173;
- HEAPF32[7704] = $174;
+ HEAPF32[7746] = $174;
STACKTOP = sp;return;
break;
}
case 0: {
- HEAPF32[7703] = 0.0;
- HEAPF32[7704] = 0.0;
- HEAPF32[3474] = 0.0;
- HEAPF32[(13900)>>2] = 0.0;
- HEAP32[7698] = 0;
- HEAP32[7697] = 0;
+ HEAPF32[7745] = 0.0;
+ HEAPF32[7746] = 0.0;
+ HEAPF32[3512] = 0.0;
+ HEAPF32[(14052)>>2] = 0.0;
+ HEAP32[7740] = 0;
+ HEAP32[7739] = 0;
STACKTOP = sp;return;
break;
}
@@ -12393,22 +16634,22 @@ function _ProcessGestureEvent($0) {
}
}
if ($5) {
- $6 = HEAP32[7699]|0;
+ $6 = HEAP32[7741]|0;
$7 = (($6) + 1)|0;
- HEAP32[7699] = $7;
- $8 = HEAP32[7697]|0;
+ HEAP32[7741] = $7;
+ $8 = HEAP32[7739]|0;
$9 = ($8|0)==(0);
$10 = ($6|0)>(0);
$or$cond = $10 & $9;
if ($or$cond) {
$11 = ((($0)) + 24|0);
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[$11>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[$11+4>>2]|0;
$12 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$13 = $12 < 0.029999999329447746;
if ($13) {
- HEAP32[7697] = 2;
- HEAP32[7699] = 0;
+ HEAP32[7739] = 2;
+ HEAP32[7741] = 0;
} else {
label = 6;
}
@@ -12416,8 +16657,8 @@ function _ProcessGestureEvent($0) {
label = 6;
}
if ((label|0) == 6) {
- HEAP32[7699] = 1;
- HEAP32[7697] = 1;
+ HEAP32[7741] = 1;
+ HEAP32[7739] = 1;
}
$14 = ((($0)) + 24|0);
$15 = $14;
@@ -12426,19 +16667,19 @@ function _ProcessGestureEvent($0) {
$18 = (($15) + 4)|0;
$19 = $18;
$20 = HEAP32[$19>>2]|0;
- $21 = 13848;
+ $21 = 14000;
$22 = $21;
HEAP32[$22>>2] = $17;
$23 = (($21) + 4)|0;
$24 = $23;
HEAP32[$24>>2] = $20;
- $25 = 13856;
+ $25 = 14008;
$26 = $25;
HEAP32[$26>>2] = $17;
$27 = (($25) + 4)|0;
$28 = $27;
HEAP32[$28>>2] = $20;
- $29 = 13864;
+ $29 = 14016;
$30 = $29;
HEAP32[$30>>2] = $17;
$31 = (($29) + 4)|0;
@@ -12446,14 +16687,14 @@ function _ProcessGestureEvent($0) {
HEAP32[$32>>2] = $20;
$33 = ((($0)) + 8|0);
$34 = HEAP32[$33>>2]|0;
- HEAP32[3] = $34;
- HEAPF32[3468] = 0.0;
- HEAPF32[(13876)>>2] = 0.0;
+ HEAP32[6] = $34;
+ HEAPF32[3506] = 0.0;
+ HEAPF32[(14028)>>2] = 0.0;
STACKTOP = sp;return;
}
switch ($4|0) {
case 0: {
- $35 = HEAP32[7697]|0;
+ $35 = HEAP32[7739]|0;
$36 = ($35|0)==(8);
if ($36) {
$37 = ((($0)) + 24|0);
@@ -12463,31 +16704,31 @@ function _ProcessGestureEvent($0) {
$41 = (($38) + 4)|0;
$42 = $41;
$43 = HEAP32[$42>>2]|0;
- $44 = 13864;
+ $44 = 14016;
$45 = $44;
HEAP32[$45>>2] = $40;
$46 = (($44) + 4)|0;
$47 = $46;
HEAP32[$47>>2] = $43;
}
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13864>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13864+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14016>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14016+4>>2]|0;
$48 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$49 = $48 / 0.0;
- HEAPF32[7700] = $49;
- HEAP32[7701] = 0;
+ HEAPF32[7742] = $49;
+ HEAP32[7743] = 0;
$50 = $49 > 5.0000002374872565E-4;
if ($50) {
- $51 = HEAP32[3]|0;
+ $51 = HEAP32[6]|0;
$52 = ((($0)) + 8|0);
$53 = HEAP32[$52>>2]|0;
$54 = ($51|0)==($53|0);
if ($54) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13864>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13864+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14016>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14016+4>>2]|0;
$55 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$56 = 360.0 - $55;
- HEAPF32[7702] = $56;
+ HEAPF32[7744] = $56;
$57 = $56 < 30.0;
$58 = $56 > 330.0;
$or$cond3 = $57 | $58;
@@ -12518,22 +16759,22 @@ function _ProcessGestureEvent($0) {
label = 16;
}
if ((label|0) == 16) {
- HEAPF32[7700] = 0.0;
- HEAPF32[7702] = 0.0;
+ HEAPF32[7742] = 0.0;
+ HEAPF32[7744] = 0.0;
$$sink10 = 0;
}
- HEAP32[7697] = $$sink10;
- HEAPF32[3464] = 0.0;
- HEAPF32[(13860)>>2] = 0.0;
- HEAP32[7698] = 0;
+ HEAP32[7739] = $$sink10;
+ HEAPF32[3502] = 0.0;
+ HEAPF32[(14012)>>2] = 0.0;
+ HEAP32[7740] = 0;
STACKTOP = sp;return;
break;
}
case 2: {
- $65 = HEAP32[7701]|0;
+ $65 = HEAP32[7743]|0;
$66 = ($65|0)==(0);
if ($66) {
- HEAP32[7701] = 1;
+ HEAP32[7743] = 1;
}
$67 = ((($0)) + 24|0);
$68 = $67;
@@ -12542,31 +16783,31 @@ function _ProcessGestureEvent($0) {
$71 = (($68) + 4)|0;
$72 = $71;
$73 = HEAP32[$72>>2]|0;
- $74 = 13880;
+ $74 = 14032;
$75 = $74;
HEAP32[$75>>2] = $70;
$76 = (($74) + 4)|0;
$77 = $76;
HEAP32[$77>>2] = $73;
- $78 = HEAP32[7697]|0;
+ $78 = HEAP32[7739]|0;
$79 = ($78|0)==(4);
if ($79) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13848>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13848+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13880>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13880+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14000>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14000+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14032>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14032+4>>2]|0;
$80 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$81 = !($80 >= 0.014999999664723873);
if (!($81)) {
- HEAP32[7697] = 8;
+ HEAP32[7739] = 8;
}
}
- $82 = +HEAPF32[3470];
- $83 = +HEAPF32[3464];
+ $82 = +HEAPF32[3508];
+ $83 = +HEAPF32[3502];
$84 = $82 - $83;
- HEAPF32[3468] = $84;
- $85 = +HEAPF32[(13884)>>2];
- $86 = +HEAPF32[(13860)>>2];
+ HEAPF32[3506] = $84;
+ $85 = +HEAPF32[(14036)>>2];
+ $86 = +HEAPF32[(14012)>>2];
$87 = $85 - $86;
- HEAPF32[(13876)>>2] = $87;
+ HEAPF32[(14028)>>2] = $87;
STACKTOP = sp;return;
break;
}
@@ -12578,16 +16819,16 @@ function _ProcessGestureEvent($0) {
function _UpdateGestures() {
var $$off = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $or$cond3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7697]|0;
+ $0 = HEAP32[7739]|0;
$$off = (($0) + -1)|0;
$1 = ($$off>>>0)<(2);
- $2 = HEAP32[7698]|0;
+ $2 = HEAP32[7740]|0;
$3 = ($2|0)<(2);
$or$cond3 = $1 & $3;
if ($or$cond3) {
- HEAP32[7697] = 4;
+ HEAP32[7739] = 4;
}
- $4 = HEAP32[7697]|0;
+ $4 = HEAP32[7739]|0;
$5 = (($4) + -16)|0;
$6 = $5 >>> 4;
$7 = $5 << 28;
@@ -12600,14 +16841,14 @@ function _UpdateGestures() {
return;
}
}
- HEAP32[7697] = 0;
+ HEAP32[7739] = 0;
return;
}
function _GetMousePosition($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = 13912;
+ $1 = 14064;
$2 = $1;
$3 = HEAP32[$2>>2]|0;
$4 = (($1) + 4)|0;
@@ -12624,13 +16865,13 @@ function _GetMousePosition($0) {
function _GetScreenWidth() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7707]|0;
+ $0 = HEAP32[7749]|0;
return ($0|0);
}
function _GetScreenHeight() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7706]|0;
+ $0 = HEAP32[7748]|0;
return ($0|0);
}
function _InitWindow($0,$1,$2) {
@@ -12641,29 +16882,29 @@ function _InitWindow($0,$1,$2) {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- _TraceLog(0,3590,$vararg_buffer);
- HEAP32[7709] = $2;
+ _TraceLog(0,3358,$vararg_buffer);
+ HEAP32[7751] = $2;
_InitGraphicsDevice($0,$1);
_LoadDefaultFont();
- _InitTimer_9();
+ _InitTimer_10();
(_emscripten_set_fullscreenchange_callback((0|0),(0|0),1,(4|0))|0);
- (_emscripten_set_keypress_callback((3619|0),(0|0),1,(5|0))|0);
- (_emscripten_set_click_callback((3619|0),(0|0),1,(6|0))|0);
- (_emscripten_set_touchstart_callback((3619|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchend_callback((3619|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchmove_callback((3619|0),(0|0),1,(7|0))|0);
- (_emscripten_set_touchcancel_callback((3619|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_keypress_callback((3387|0),(0|0),1,(5|0))|0);
+ (_emscripten_set_click_callback((3387|0),(0|0),1,(6|0))|0);
+ (_emscripten_set_touchstart_callback((3387|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchend_callback((3387|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchmove_callback((3387|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchcancel_callback((3387|0),(0|0),1,(7|0))|0);
(_emscripten_set_gamepadconnected_callback((0|0),1,(8|0))|0);
(_emscripten_set_gamepaddisconnected_callback((0|0),1,(8|0))|0);
- $3 = HEAP32[7707]|0;
+ $3 = HEAP32[7749]|0;
$4 = (+($3|0));
$5 = $4 * 0.5;
- HEAPF32[3478] = $5;
- $6 = HEAP32[7706]|0;
+ HEAPF32[3516] = $5;
+ $6 = HEAP32[7748]|0;
$7 = (+($6|0));
$8 = $7 * 0.5;
- HEAPF32[(13916)>>2] = $8;
- $9 = HEAP32[7710]|0;
+ HEAPF32[(14068)>>2] = $8;
+ $9 = HEAP32[7752]|0;
$10 = ($9|0)==(0);
if ($10) {
STACKTOP = sp;return;
@@ -12682,11 +16923,11 @@ function _TraceLog($0,$1,$varargs) {
$2 = sp;
switch ($0|0) {
case 0: {
- ;HEAP8[13952>>0]=HEAP8[8148>>0]|0;HEAP8[13952+1>>0]=HEAP8[8148+1>>0]|0;HEAP8[13952+2>>0]=HEAP8[8148+2>>0]|0;HEAP8[13952+3>>0]=HEAP8[8148+3>>0]|0;HEAP8[13952+4>>0]=HEAP8[8148+4>>0]|0;HEAP8[13952+5>>0]=HEAP8[8148+5>>0]|0;HEAP8[13952+6>>0]=HEAP8[8148+6>>0]|0;
+ ;HEAP8[14104>>0]=HEAP8[7916>>0]|0;HEAP8[14104+1>>0]=HEAP8[7916+1>>0]|0;HEAP8[14104+2>>0]=HEAP8[7916+2>>0]|0;HEAP8[14104+3>>0]=HEAP8[7916+3>>0]|0;HEAP8[14104+4>>0]=HEAP8[7916+4>>0]|0;HEAP8[14104+5>>0]=HEAP8[7916+5>>0]|0;HEAP8[14104+6>>0]=HEAP8[7916+6>>0]|0;
break;
}
case 1: {
- $3 = 13952;
+ $3 = 14104;
$4 = $3;
HEAP32[$4>>2] = 1330795077;
$5 = (($3) + 4)|0;
@@ -12695,11 +16936,11 @@ function _TraceLog($0,$1,$varargs) {
break;
}
case 2: {
- dest=13952; src=8155; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
+ dest=14104; src=7923; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
break;
}
case 3: {
- $7 = 13952;
+ $7 = 14104;
$8 = $7;
HEAP32[$8>>2] = 1430406468;
$9 = (($7) + 4)|0;
@@ -12710,16 +16951,16 @@ function _TraceLog($0,$1,$varargs) {
default: {
}
}
- (_strcat(13952,$1)|0);
- $strlen = (_strlen(13952)|0);
- $endptr = (13952 + ($strlen)|0);
+ (_strcat(14104,$1)|0);
+ $strlen = (_strlen(14104)|0);
+ $endptr = (14104 + ($strlen)|0);
HEAP8[$endptr>>0]=10&255;HEAP8[$endptr+1>>0]=10>>8;
HEAP32[$2>>2] = $varargs;
$11 = ($0|0)==(3);
if ($11) {
STACKTOP = sp;return;
}
- (_vprintf(13952,$2)|0);
+ (_vprintf(14104,$2)|0);
$12 = ($0|0)==(1);
if ($12) {
_exit(1);
@@ -12751,22 +16992,22 @@ function _InitGraphicsDevice($0,$1) {
$vararg_buffer = sp;
$2 = sp + 72|0;
$3 = sp + 140|0;
- HEAP32[7707] = $0;
- HEAP32[7706] = $1;
+ HEAP32[7749] = $0;
+ HEAP32[7748] = $1;
_MatrixIdentity($2);
- dest=30916; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31084; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_glfwSetErrorCallback((1|0))|0);
$4 = (_glfwInit()|0);
$5 = ($4|0)==(0);
if ($5) {
- _TraceLog(1,4290,$vararg_buffer);
+ _TraceLog(1,4058,$vararg_buffer);
}
- $6 = HEAP32[7707]|0;
- HEAP32[7745] = $6;
- $7 = HEAP32[7706]|0;
- HEAP32[7746] = $7;
+ $6 = HEAP32[7749]|0;
+ HEAP32[7787] = $6;
+ $7 = HEAP32[7748]|0;
+ HEAP32[7788] = $7;
_glfwDefaultWindowHints();
- $8 = HEAP8[33640]|0;
+ $8 = HEAP8[35960]|0;
$9 = $8 & 4;
$10 = ($9<<24>>24)==(0);
if ($10) {
@@ -12774,18 +17015,18 @@ function _InitGraphicsDevice($0,$1) {
} else {
_glfwWindowHint(131075,1);
}
- $11 = HEAP8[33640]|0;
+ $11 = HEAP8[35960]|0;
$12 = $11 & 8;
$13 = ($12<<24>>24)==(0);
if (!($13)) {
_glfwWindowHint(131077,1);
}
- $14 = HEAP8[33640]|0;
+ $14 = HEAP8[35960]|0;
$15 = $14 & 32;
$16 = ($15<<24>>24)==(0);
if (!($16)) {
_glfwWindowHint(135181,4);
- _TraceLog(0,4316,$vararg_buffer1);
+ _TraceLog(0,4084,$vararg_buffer1);
}
$17 = (_rlGetVersion()|0);
$18 = ($17|0)==(2);
@@ -12802,18 +17043,18 @@ function _InitGraphicsDevice($0,$1) {
_glfwWindowHint(139270,0);
}
}
- $21 = HEAP32[7747]|0;
+ $21 = HEAP32[7789]|0;
$22 = ($21|0)==(0);
if ($22) {
- $47 = HEAP32[7707]|0;
- $48 = HEAP32[7706]|0;
- $49 = HEAP32[7709]|0;
+ $47 = HEAP32[7749]|0;
+ $48 = HEAP32[7748]|0;
+ $49 = HEAP32[7751]|0;
$50 = (_glfwCreateWindow(($47|0),($48|0),($49|0),(0|0),(0|0))|0);
- HEAP32[7705] = $50;
- $51 = HEAP32[7707]|0;
- HEAP32[7748] = $51;
- $52 = HEAP32[7706]|0;
- HEAP32[7749] = $52;
+ HEAP32[7747] = $50;
+ $51 = HEAP32[7749]|0;
+ HEAP32[7790] = $51;
+ $52 = HEAP32[7748]|0;
+ HEAP32[7791] = $52;
$54 = $50;
} else {
$23 = (_glfwGetPrimaryMonitor()|0);
@@ -12822,9 +17063,9 @@ function _InitGraphicsDevice($0,$1) {
$26 = ($25|0)>(0);
L22: do {
if ($26) {
- $27 = HEAP32[7707]|0;
+ $27 = HEAP32[7749]|0;
$28 = HEAP32[$$byval_copy>>2]|0;
- $29 = HEAP32[7706]|0;
+ $29 = HEAP32[7748]|0;
$$015 = 0;
while(1) {
$30 = (($24) + (($$015*24)|0)|0);
@@ -12846,87 +17087,87 @@ function _InitGraphicsDevice($0,$1) {
break L22;
}
}
- HEAP32[7745] = $31;
- HEAP32[7746] = $34;
+ HEAP32[7787] = $31;
+ HEAP32[7788] = $34;
}
} while(0);
- $38 = HEAP32[7745]|0;
- $39 = HEAP32[7746]|0;
+ $38 = HEAP32[7787]|0;
+ $39 = HEAP32[7788]|0;
HEAP32[$vararg_buffer3>>2] = $38;
$vararg_ptr5 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr5>>2] = $39;
- _TraceLog(2,4341,$vararg_buffer3);
- $40 = HEAP32[7745]|0;
- $41 = HEAP32[7746]|0;
+ _TraceLog(2,4109,$vararg_buffer3);
+ $40 = HEAP32[7787]|0;
+ $41 = HEAP32[7788]|0;
_SetupFramebufferSize($40,$41);
- $42 = HEAP32[7745]|0;
- $43 = HEAP32[7746]|0;
- $44 = HEAP32[7709]|0;
+ $42 = HEAP32[7787]|0;
+ $43 = HEAP32[7788]|0;
+ $44 = HEAP32[7751]|0;
$45 = (_glfwGetPrimaryMonitor()|0);
$46 = (_glfwCreateWindow(($42|0),($43|0),($44|0),($45|0),(0|0))|0);
- HEAP32[7705] = $46;
+ HEAP32[7747] = $46;
$54 = $46;
}
$53 = ($54|0)==(0|0);
if ($53) {
_glfwTerminate();
- _TraceLog(1,4379,$vararg_buffer6);
+ _TraceLog(1,4147,$vararg_buffer6);
} else {
- _TraceLog(0,4412,$vararg_buffer8);
- $55 = HEAP32[7748]|0;
- $56 = HEAP32[7749]|0;
+ _TraceLog(0,4180,$vararg_buffer8);
+ $55 = HEAP32[7790]|0;
+ $56 = HEAP32[7791]|0;
HEAP32[$vararg_buffer10>>2] = $55;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $56;
- _TraceLog(0,4452,$vararg_buffer10);
- $57 = HEAP32[7707]|0;
- $58 = HEAP32[7706]|0;
+ _TraceLog(0,4220,$vararg_buffer10);
+ $57 = HEAP32[7749]|0;
+ $58 = HEAP32[7748]|0;
HEAP32[$vararg_buffer14>>2] = $57;
$vararg_ptr17 = ((($vararg_buffer14)) + 4|0);
HEAP32[$vararg_ptr17>>2] = $58;
- _TraceLog(0,4473,$vararg_buffer14);
- $59 = HEAP32[7750]|0;
- $60 = HEAP32[7751]|0;
+ _TraceLog(0,4241,$vararg_buffer14);
+ $59 = HEAP32[7792]|0;
+ $60 = HEAP32[7793]|0;
HEAP32[$vararg_buffer18>>2] = $59;
$vararg_ptr21 = ((($vararg_buffer18)) + 4|0);
HEAP32[$vararg_ptr21>>2] = $60;
- _TraceLog(0,4494,$vararg_buffer18);
+ _TraceLog(0,4262,$vararg_buffer18);
}
- $61 = HEAP32[7705]|0;
+ $61 = HEAP32[7747]|0;
(_glfwSetWindowSizeCallback(($61|0),(1|0))|0);
- $62 = HEAP32[7705]|0;
+ $62 = HEAP32[7747]|0;
(_glfwSetCursorEnterCallback(($62|0),(2|0))|0);
- $63 = HEAP32[7705]|0;
+ $63 = HEAP32[7747]|0;
(_glfwSetKeyCallback(($63|0),(1|0))|0);
- $64 = HEAP32[7705]|0;
+ $64 = HEAP32[7747]|0;
(_glfwSetMouseButtonCallback(($64|0),(1|0))|0);
- $65 = HEAP32[7705]|0;
+ $65 = HEAP32[7747]|0;
(_glfwSetCursorPosCallback(($65|0),(1|0))|0);
- $66 = HEAP32[7705]|0;
+ $66 = HEAP32[7747]|0;
(_glfwSetCharCallback(($66|0),(3|0))|0);
- $67 = HEAP32[7705]|0;
+ $67 = HEAP32[7747]|0;
(_glfwSetScrollCallback(($67|0),(2|0))|0);
- $68 = HEAP32[7705]|0;
+ $68 = HEAP32[7747]|0;
(_glfwSetWindowIconifyCallback(($68|0),(4|0))|0);
- $69 = HEAP32[7705]|0;
+ $69 = HEAP32[7747]|0;
_glfwMakeContextCurrent(($69|0));
_glfwSwapInterval(0);
- $70 = HEAP8[33640]|0;
+ $70 = HEAP8[35960]|0;
$71 = $70 & 64;
$72 = ($71<<24>>24)==(0);
if ($72) {
- $73 = HEAP32[7707]|0;
- $74 = HEAP32[7706]|0;
+ $73 = HEAP32[7749]|0;
+ $74 = HEAP32[7748]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7748]|0;
- $76 = HEAP32[7750]|0;
+ $75 = HEAP32[7790]|0;
+ $76 = HEAP32[7792]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7749]|0;
- $80 = HEAP32[7751]|0;
+ $79 = HEAP32[7791]|0;
+ $80 = HEAP32[7793]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -12944,19 +17185,19 @@ function _InitGraphicsDevice($0,$1) {
STACKTOP = sp;return;
}
_glfwSwapInterval(1);
- _TraceLog(0,4519,$vararg_buffer22);
- $73 = HEAP32[7707]|0;
- $74 = HEAP32[7706]|0;
+ _TraceLog(0,4287,$vararg_buffer22);
+ $73 = HEAP32[7749]|0;
+ $74 = HEAP32[7748]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7748]|0;
- $76 = HEAP32[7750]|0;
+ $75 = HEAP32[7790]|0;
+ $76 = HEAP32[7792]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7749]|0;
- $80 = HEAP32[7751]|0;
+ $79 = HEAP32[7791]|0;
+ $80 = HEAP32[7793]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -12984,12 +17225,12 @@ function _LoadDefaultFont() {
$vararg_buffer = sp;
$0 = sp + 4|0;
$1 = sp + 24|0;
- HEAP32[(30884)>>2] = 224;
+ HEAP32[(31052)>>2] = 224;
$2 = (_malloc(65536)|0);
_memset(($2|0),0,65536)|0;
$$095104 = 0;$$096103 = 0;
while(1) {
- $3 = (16 + ($$095104<<2)|0);
+ $3 = (28 + ($$095104<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$097102 = 31;
while(1) {
@@ -13025,27 +17266,27 @@ function _LoadDefaultFont() {
_free($2);
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_LoadTextureFromImage($1,$$byval_copy1);
- ;HEAP32[30860>>2]=HEAP32[$1>>2]|0;HEAP32[30860+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[30860+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[30860+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[30860+16>>2]=HEAP32[$1+16>>2]|0;
+ ;HEAP32[31028>>2]=HEAP32[$1>>2]|0;HEAP32[31028+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[31028+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[31028+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[31028+16>>2]=HEAP32[$1+16>>2]|0;
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_UnloadImage($$byval_copy1);
- $5 = HEAP32[(30884)>>2]|0;
+ $5 = HEAP32[(31052)>>2]|0;
$6 = $5 << 5;
$7 = (_malloc($6)|0);
- HEAP32[(30888)>>2] = $7;
+ HEAP32[(31056)>>2] = $7;
$8 = ($5|0)>(0);
if (!($8)) {
$$lcssa = $7;
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30880)>>2] = $23;
- $24 = HEAP32[7715]|0;
+ HEAP32[(31048)>>2] = $23;
+ $24 = HEAP32[7757]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3814,$vararg_buffer);
+ _TraceLog(0,3582,$vararg_buffer);
STACKTOP = sp;return;
}
- $9 = HEAP32[(30864)>>2]|0;
- $10 = HEAP32[(30884)>>2]|0;
- $11 = HEAP32[(30888)>>2]|0;
+ $9 = HEAP32[(31032)>>2]|0;
+ $10 = HEAP32[(31052)>>2]|0;
+ $11 = HEAP32[(31056)>>2]|0;
$$0101 = 0;$$090100 = 1;$$09299 = 0;$27 = $7;
while(1) {
$25 = (($$0101) + 32)|0;
@@ -13057,7 +17298,7 @@ function _LoadDefaultFont() {
$30 = (($29) + 1)|0;
$31 = (((($27) + ($$0101<<5)|0)) + 8|0);
HEAP32[$31>>2] = $30;
- $32 = (2064 + ($$0101<<2)|0);
+ $32 = (2076 + ($$0101<<2)|0);
$33 = HEAP32[$32>>2]|0;
$34 = (((($27) + ($$0101<<5)|0)) + 12|0);
HEAP32[$34>>2] = $33;
@@ -13094,19 +17335,19 @@ function _LoadDefaultFont() {
}
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30880)>>2] = $23;
- $24 = HEAP32[7715]|0;
+ HEAP32[(31048)>>2] = $23;
+ $24 = HEAP32[7757]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3814,$vararg_buffer);
+ _TraceLog(0,3582,$vararg_buffer);
STACKTOP = sp;return;
}
-function _InitTimer_9() {
+function _InitTimer_10() {
var $0 = 0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetTime());
- HEAPF64[1743] = $1;
+ HEAPF64[1762] = $1;
return;
}
function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
@@ -13136,7 +17377,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr8>>2] = $10;
$vararg_ptr9 = ((($vararg_buffer4)) + 12|0);
HEAP32[$vararg_ptr9>>2] = $12;
- _TraceLog(0,3747,$vararg_buffer4);
+ _TraceLog(0,3515,$vararg_buffer4);
STACKTOP = sp;return 0;
} else {
HEAP32[$vararg_buffer>>2] = $6;
@@ -13146,7 +17387,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr2>>2] = $10;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $12;
- _TraceLog(0,3678,$vararg_buffer);
+ _TraceLog(0,3446,$vararg_buffer);
STACKTOP = sp;return 0;
}
return (0)|0;
@@ -13162,7 +17403,7 @@ function _EmscriptenKeyboardCallback($0,$1,$2) {
return 0;
}
$4 = ((($1)) + 32|0);
- $5 = (_strcmp($4,3671)|0);
+ $5 = (_strcmp($4,3439)|0);
$6 = ($5|0)==(0);
if (!($6)) {
return 0;
@@ -13265,7 +17506,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$28 = (($25) + 4)|0;
$29 = $28;
$30 = HEAP32[$29>>2]|0;
- $31 = 13928;
+ $31 = 14080;
$32 = $31;
HEAP32[$32>>2] = $27;
$33 = (($31) + 4)|0;
@@ -13278,7 +17519,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$39 = (($36) + 4)|0;
$40 = $39;
$41 = HEAP32[$40>>2]|0;
- $42 = (13936);
+ $42 = (14088);
$43 = $42;
HEAP32[$43>>2] = $38;
$44 = (($42) + 4)|0;
@@ -13334,7 +17575,7 @@ function _EmscriptenGamepadCallback($0,$1,$2) {
}
$9 = ((($1)) + 1300|0);
$10 = HEAP32[$9>>2]|0;
- $11 = (30844 + ($10<<2)|0);
+ $11 = (31012 + ($10<<2)|0);
HEAP32[$11>>2] = $$sink;
return 0;
}
@@ -13348,19 +17589,19 @@ function _SetTargetFPS($0) {
$2 = (+($0|0));
$3 = 1.0 / $2;
$$ = $1 ? 0.0 : $3;
- HEAPF64[1740] = $$;
+ HEAPF64[1759] = $$;
$4 = $3;
$$op = $4 * 1000.0;
$5 = $$op;
$6 = $1 ? 0.0 : $5;
HEAPF64[$vararg_buffer>>3] = $6;
- _TraceLog(0,3627,$vararg_buffer);
+ _TraceLog(0,3395,$vararg_buffer);
STACKTOP = sp;return;
}
function _LogoAnimation() {
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7710] = 0;
+ HEAP32[7752] = 0;
return;
}
function _GetTime() {
@@ -13459,7 +17700,7 @@ function _ImageFormat($0,$1) {
$6 = ($1|0)<(8);
$or$cond = $6 & $5;
if (!($or$cond)) {
- _TraceLog(2,4190,$vararg_buffer);
+ _TraceLog(2,3958,$vararg_buffer);
STACKTOP = sp;return;
}
;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[$0+16>>2]|0;
@@ -13936,52 +18177,52 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$5 = sp + 68|0;
_glBindTexture(3553,0);
HEAP32[$5>>2] = 0;
- $6 = HEAP32[7723]|0;
+ $6 = HEAP32[7765]|0;
$7 = ($6|0)==(0);
$8 = $3 & -4;
$switch = ($8|0)==(8);
$or$cond100 = $switch & $7;
if ($or$cond100) {
- _TraceLog(2,3859,$vararg_buffer);
+ _TraceLog(2,3627,$vararg_buffer);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $9 = HEAP32[7724]|0;
+ $9 = HEAP32[7766]|0;
$10 = ($9|0)==(0);
$11 = ($3|0)==(12);
$or$cond7 = $11 & $10;
if ($or$cond7) {
- _TraceLog(2,3903,$vararg_buffer1);
+ _TraceLog(2,3671,$vararg_buffer1);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $12 = HEAP32[7725]|0;
+ $12 = HEAP32[7767]|0;
$13 = ($12|0)==(0);
$$off = (($3) + -13)|0;
$14 = ($$off>>>0)<(2);
$or$cond = $14 & $13;
if ($or$cond) {
- _TraceLog(2,3948,$vararg_buffer3);
+ _TraceLog(2,3716,$vararg_buffer3);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $15 = HEAP32[7726]|0;
+ $15 = HEAP32[7768]|0;
$16 = ($15|0)==(0);
$$off92 = (($3) + -15)|0;
$17 = ($$off92>>>0)<(2);
$or$cond96 = $17 & $16;
if ($or$cond96) {
- _TraceLog(2,3993,$vararg_buffer5);
+ _TraceLog(2,3761,$vararg_buffer5);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $18 = HEAP32[7727]|0;
+ $18 = HEAP32[7769]|0;
$19 = ($18|0)==(0);
$$off93 = (($3) + -17)|0;
$20 = ($$off93>>>0)<(2);
$or$cond98 = $20 & $19;
if ($or$cond98) {
- _TraceLog(2,4038,$vararg_buffer7);
+ _TraceLog(2,3806,$vararg_buffer7);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14019,7 +18260,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 8: {
- $22 = HEAP32[7723]|0;
+ $22 = HEAP32[7765]|0;
$23 = ($22|0)==(0);
if (!($23)) {
_LoadCompressedTexture($0,$1,$2,$4,33776);
@@ -14027,7 +18268,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 9: {
- $24 = HEAP32[7723]|0;
+ $24 = HEAP32[7765]|0;
$25 = ($24|0)==(0);
if (!($25)) {
_LoadCompressedTexture($0,$1,$2,$4,33777);
@@ -14035,7 +18276,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 10: {
- $26 = HEAP32[7723]|0;
+ $26 = HEAP32[7765]|0;
$27 = ($26|0)==(0);
if (!($27)) {
_LoadCompressedTexture($0,$1,$2,$4,33778);
@@ -14043,7 +18284,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 11: {
- $28 = HEAP32[7723]|0;
+ $28 = HEAP32[7765]|0;
$29 = ($28|0)==(0);
if (!($29)) {
_LoadCompressedTexture($0,$1,$2,$4,33779);
@@ -14051,7 +18292,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 12: {
- $30 = HEAP32[7724]|0;
+ $30 = HEAP32[7766]|0;
$31 = ($30|0)==(0);
if (!($31)) {
_LoadCompressedTexture($0,$1,$2,$4,36196);
@@ -14059,7 +18300,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 13: {
- $32 = HEAP32[7725]|0;
+ $32 = HEAP32[7767]|0;
$33 = ($32|0)==(0);
if (!($33)) {
_LoadCompressedTexture($0,$1,$2,$4,37492);
@@ -14067,7 +18308,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 14: {
- $34 = HEAP32[7725]|0;
+ $34 = HEAP32[7767]|0;
$35 = ($34|0)==(0);
if (!($35)) {
_LoadCompressedTexture($0,$1,$2,$4,37496);
@@ -14075,7 +18316,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 15: {
- $36 = HEAP32[7726]|0;
+ $36 = HEAP32[7768]|0;
$37 = ($36|0)==(0);
if (!($37)) {
_LoadCompressedTexture($0,$1,$2,$4,35840);
@@ -14083,7 +18324,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 16: {
- $38 = HEAP32[7726]|0;
+ $38 = HEAP32[7768]|0;
$39 = ($38|0)==(0);
if (!($39)) {
_LoadCompressedTexture($0,$1,$2,$4,35842);
@@ -14091,7 +18332,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 17: {
- $40 = HEAP32[7727]|0;
+ $40 = HEAP32[7769]|0;
$41 = ($40|0)==(0);
if (!($41)) {
_LoadCompressedTexture($0,$1,$2,$4,37808);
@@ -14099,7 +18340,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 18: {
- $42 = HEAP32[7727]|0;
+ $42 = HEAP32[7769]|0;
$43 = ($42|0)==(0);
if (!($43)) {
_LoadCompressedTexture($0,$1,$2,$4,37815);
@@ -14107,11 +18348,11 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
default: {
- _TraceLog(2,4083,$vararg_buffer9);
+ _TraceLog(2,3851,$vararg_buffer9);
}
}
} while(0);
- $44 = HEAP32[7728]|0;
+ $44 = HEAP32[7770]|0;
$45 = ($44|0)==(0);
if ($45) {
_glTexParameteri(3553,10242,33071);
@@ -14126,7 +18367,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$46 = HEAP32[$5>>2]|0;
$47 = ($46|0)==(0);
if ($47) {
- _TraceLog(2,4161,$vararg_buffer15);
+ _TraceLog(2,3929,$vararg_buffer15);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
} else {
@@ -14135,7 +18376,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
HEAP32[$vararg_ptr13>>2] = $1;
$vararg_ptr14 = ((($vararg_buffer11)) + 8|0);
HEAP32[$vararg_ptr14>>2] = $2;
- _TraceLog(0,4112,$vararg_buffer11);
+ _TraceLog(0,3880,$vararg_buffer11);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14409,7 +18650,7 @@ function _GetImageData($0) {
break;
}
default: {
- _TraceLog(2,4244,$vararg_buffer);
+ _TraceLog(2,4012,$vararg_buffer);
$$1 = $$0106;
}
}
@@ -14436,7 +18677,7 @@ function _ErrorCallback($0,$1) {
HEAP32[$vararg_buffer>>2] = $0;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $1;
- _TraceLog(2,8110,$vararg_buffer);
+ _TraceLog(2,7878,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlGetVersion() {
@@ -14457,20 +18698,20 @@ function _SetupFramebufferSize($0,$1) {
$vararg_buffer4 = sp + 16|0;
$vararg_buffer = sp;
$2 = sp + 40|0;
- $3 = HEAP32[7707]|0;
+ $3 = HEAP32[7749]|0;
$4 = ($3|0)>($0|0);
if (!($4)) {
- $5 = HEAP32[7706]|0;
+ $5 = HEAP32[7748]|0;
$6 = ($5|0)>($1|0);
if (!($6)) {
$30 = ($3|0)<($0|0);
$31 = ($5|0)<($1|0);
$or$cond = $30 | $31;
if (!($or$cond)) {
- HEAP32[7748] = $3;
- HEAP32[7749] = $5;
- HEAP32[7750] = 0;
- HEAP32[7751] = 0;
+ HEAP32[7790] = $3;
+ HEAP32[7791] = $5;
+ HEAP32[7792] = 0;
+ HEAP32[7793] = 0;
STACKTOP = sp;return;
}
HEAP32[$vararg_buffer8>>2] = $3;
@@ -14480,13 +18721,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr12>>2] = $0;
$vararg_ptr13 = ((($vararg_buffer8)) + 12|0);
HEAP32[$vararg_ptr13>>2] = $1;
- _TraceLog(0,8044,$vararg_buffer8);
+ _TraceLog(0,7812,$vararg_buffer8);
$32 = (+($0|0));
$33 = (+($1|0));
$34 = $32 / $33;
- $35 = HEAP32[7707]|0;
+ $35 = HEAP32[7749]|0;
$36 = (+($35|0));
- $37 = HEAP32[7706]|0;
+ $37 = HEAP32[7748]|0;
$38 = (+($37|0));
$39 = $36 / $38;
$40 = !($34 <= $39);
@@ -14494,26 +18735,26 @@ function _SetupFramebufferSize($0,$1) {
$44 = $34 * $38;
$roundf = (+_roundf((+$44)));
$45 = (~~(($roundf)));
- HEAP32[7748] = $45;
- HEAP32[7749] = $37;
+ HEAP32[7790] = $45;
+ HEAP32[7791] = $37;
$46 = (($45) - ($35))|0;
- HEAP32[7750] = $46;
+ HEAP32[7792] = $46;
$$sink1 = 0;
} else {
- HEAP32[7748] = $35;
+ HEAP32[7790] = $35;
$41 = $36 / $34;
$roundf38 = (+_roundf((+$41)));
$42 = (~~(($roundf38)));
- HEAP32[7749] = $42;
- HEAP32[7750] = 0;
+ HEAP32[7791] = $42;
+ HEAP32[7792] = 0;
$43 = (($42) - ($37))|0;
$$sink1 = $43;
}
- HEAP32[7751] = $$sink1;
+ HEAP32[7793] = $$sink1;
STACKTOP = sp;return;
}
}
- $7 = HEAP32[7706]|0;
+ $7 = HEAP32[7748]|0;
HEAP32[$vararg_buffer>>2] = $3;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $7;
@@ -14521,13 +18762,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr2>>2] = $0;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $1;
- _TraceLog(2,7901,$vararg_buffer);
+ _TraceLog(2,7669,$vararg_buffer);
$8 = (+($0|0));
- $9 = HEAP32[7707]|0;
+ $9 = HEAP32[7749]|0;
$10 = (+($9|0));
$11 = $8 / $10;
$12 = (+($1|0));
- $13 = HEAP32[7706]|0;
+ $13 = HEAP32[7748]|0;
$14 = (+($13|0));
$15 = $12 / $14;
$16 = !($11 <= $15);
@@ -14535,37 +18776,37 @@ function _SetupFramebufferSize($0,$1) {
$22 = $10 * $15;
$roundf39 = (+_roundf((+$22)));
$23 = (~~(($roundf39)));
- HEAP32[7748] = $23;
- HEAP32[7749] = $1;
+ HEAP32[7790] = $23;
+ HEAP32[7791] = $1;
$24 = (($0) - ($23))|0;
- HEAP32[7750] = $24;
+ HEAP32[7792] = $24;
$$sink = 0;
} else {
- HEAP32[7748] = $0;
- $17 = HEAP32[7706]|0;
+ HEAP32[7790] = $0;
+ $17 = HEAP32[7748]|0;
$18 = (+($17|0));
$19 = $11 * $18;
$roundf40 = (+_roundf((+$19)));
$20 = (~~(($roundf40)));
- HEAP32[7749] = $20;
- HEAP32[7750] = 0;
+ HEAP32[7791] = $20;
+ HEAP32[7792] = 0;
$21 = (($1) - ($20))|0;
$$sink = $21;
}
- HEAP32[7751] = $$sink;
- $25 = HEAP32[7748]|0;
+ HEAP32[7793] = $$sink;
+ $25 = HEAP32[7790]|0;
$26 = (+($25|0));
- $27 = HEAP32[7707]|0;
+ $27 = HEAP32[7749]|0;
$28 = (+($27|0));
$29 = $26 / $28;
_MatrixScale($2,$29,$29,$29);
- dest=30916; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7748] = $0;
- HEAP32[7749] = $1;
+ dest=31084; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7790] = $0;
+ HEAP32[7791] = $1;
HEAP32[$vararg_buffer4>>2] = $0;
$vararg_ptr7 = ((($vararg_buffer4)) + 4|0);
HEAP32[$vararg_ptr7>>2] = $1;
- _TraceLog(2,7979,$vararg_buffer4);
+ _TraceLog(2,7747,$vararg_buffer4);
STACKTOP = sp;return;
}
function _WindowSizeCallback($0,$1,$2) {
@@ -14583,10 +18824,10 @@ function _WindowSizeCallback($0,$1,$2) {
_rlMatrixMode(5888);
_rlLoadIdentity();
_rlClearScreenBuffers();
- HEAP32[7707] = $1;
- HEAP32[7706] = $2;
- HEAP32[7748] = $1;
- HEAP32[7749] = $2;
+ HEAP32[7749] = $1;
+ HEAP32[7748] = $2;
+ HEAP32[7790] = $1;
+ HEAP32[7791] = $2;
return;
}
function _CursorEnterCallback($0,$1) {
@@ -14604,7 +18845,7 @@ function _KeyCallback($0,$1,$2,$3,$4) {
$4 = $4|0;
var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $5 = HEAP32[741]|0;
+ $5 = HEAP32[744]|0;
$6 = ($5|0)==($1|0);
$7 = ($3|0)==(1);
$or$cond = $7 & $6;
@@ -14613,12 +18854,12 @@ function _KeyCallback($0,$1,$2,$3,$4) {
return;
}
$8 = $3&255;
- $9 = (33647 + ($1)|0);
+ $9 = (35967 + ($1)|0);
HEAP8[$9>>0] = $8;
if (!($7)) {
return;
}
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _MouseButtonCallback($0,$1,$2,$3) {
@@ -14634,7 +18875,7 @@ function _MouseButtonCallback($0,$1,$2,$3) {
$4 = sp + 8|0;
$5 = sp;
$6 = $2&255;
- $7 = (33641 + ($1)|0);
+ $7 = (35961 + ($1)|0);
HEAP8[$7>>0] = $6;
$8 = (_IsMouseButtonPressed(0)|0);
$9 = ($8|0)==(0);
@@ -14713,7 +18954,7 @@ function _MouseCursorPosCallback($0,$1,$2) {
$12 = (($9) + 4)|0;
$13 = $12;
$14 = HEAP32[$13>>2]|0;
- $15 = 13928;
+ $15 = 14080;
$16 = $15;
HEAP32[$16>>2] = $11;
$17 = (($15) + 4)|0;
@@ -14738,7 +18979,7 @@ function _CharCallback($0,$1) {
$1 = $1|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _ScrollCallback($0,$1,$2) {
@@ -14748,7 +18989,7 @@ function _ScrollCallback($0,$1,$2) {
var $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
$3 = (~~(($2)));
- HEAP32[8121] = $3;
+ HEAP32[8163] = $3;
return;
}
function _WindowIconifyCallback($0,$1) {
@@ -14758,7 +18999,7 @@ function _WindowIconifyCallback($0,$1) {
sp = STACKTOP;
$2 = ($1|0)!=(0);
$$sink = $2&1;
- HEAP32[8120] = $$sink;
+ HEAP32[8162] = $$sink;
return;
}
function _rlglInit($0,$1) {
@@ -14798,16 +19039,16 @@ function _rlglInit($0,$1) {
$6 = sp + 2192|0;
$7 = (_glGetString(7936)|0);
HEAP32[$vararg_buffer>>2] = $7;
- _TraceLog(0,4542,$vararg_buffer);
+ _TraceLog(0,4310,$vararg_buffer);
$8 = (_glGetString(7937)|0);
HEAP32[$vararg_buffer1>>2] = $8;
- _TraceLog(0,4560,$vararg_buffer1);
+ _TraceLog(0,4328,$vararg_buffer1);
$9 = (_glGetString(7938)|0);
HEAP32[$vararg_buffer4>>2] = $9;
- _TraceLog(0,4578,$vararg_buffer4);
+ _TraceLog(0,4346,$vararg_buffer4);
$10 = (_glGetString(35724)|0);
HEAP32[$vararg_buffer7>>2] = $10;
- _TraceLog(0,4596,$vararg_buffer7);
+ _TraceLog(0,4364,$vararg_buffer7);
$11 = (_glGetString(7939)|0);
$12 = (_strlen($11)|0);
$13 = (($12) + 1)|0;
@@ -14815,7 +19056,7 @@ function _rlglInit($0,$1) {
_memcpy(($14|0),($11|0),($13|0))|0;
$$062 = 0;$$sink63 = $14;
while(1) {
- $15 = (_strtok($$sink63,4614)|0);
+ $15 = (_strtok($$sink63,4382)|0);
$16 = (($vararg_buffer7) + ($$062<<2)|0);
HEAP32[$16>>2] = $15;
$17 = ($15|0)==(0|0);
@@ -14829,41 +19070,41 @@ function _rlglInit($0,$1) {
_free($14);
$19 = (($$062) + -1)|0;
HEAP32[$vararg_buffer10>>2] = $19;
- _TraceLog(0,4616,$vararg_buffer10);
+ _TraceLog(0,4384,$vararg_buffer10);
$20 = ($$062|0)>(1);
if ($20) {
$$06167 = 0;
while(1) {
$23 = (($vararg_buffer7) + ($$06167<<2)|0);
$24 = HEAP32[$23>>2]|0;
- $25 = (_strcmp($24,4651)|0);
+ $25 = (_strcmp($24,4419)|0);
$26 = ($25|0)==(0);
if ($26) {
- HEAP32[7786] = 1;
- $27 = (_eglGetProcAddress((4678|0))|0);
- HEAP32[7787] = $27;
- $28 = (_eglGetProcAddress((4699|0))|0);
- HEAP32[7788] = $28;
- $29 = (_eglGetProcAddress((4720|0))|0);
- HEAP32[7789] = $29;
- }
- $30 = (_strcmp($24,4744)|0);
+ HEAP32[7828] = 1;
+ $27 = (_eglGetProcAddress((4446|0))|0);
+ HEAP32[7829] = $27;
+ $28 = (_eglGetProcAddress((4467|0))|0);
+ HEAP32[7830] = $28;
+ $29 = (_eglGetProcAddress((4488|0))|0);
+ HEAP32[7831] = $29;
+ }
+ $30 = (_strcmp($24,4512)|0);
$31 = ($30|0)==(0);
if ($31) {
- HEAP32[7728] = 1;
+ HEAP32[7770] = 1;
}
- $32 = (_strcmp($24,4764)|0);
+ $32 = (_strcmp($24,4532)|0);
$33 = ($32|0)==(0);
if ($33) {
label = 12;
} else {
$34 = HEAP32[$23>>2]|0;
- $35 = (_strcmp($34,4796)|0);
+ $35 = (_strcmp($34,4564)|0);
$36 = ($35|0)==(0);
if ($36) {
label = 12;
} else {
- $37 = (_strcmp($34,4829)|0);
+ $37 = (_strcmp($34,4597)|0);
$38 = ($37|0)==(0);
if ($38) {
label = 12;
@@ -14872,15 +19113,15 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 12) {
label = 0;
- HEAP32[7723] = 1;
+ HEAP32[7765] = 1;
}
- $39 = (_strcmp($24,4869)|0);
+ $39 = (_strcmp($24,4637)|0);
$40 = ($39|0)==(0);
if ($40) {
label = 15;
} else {
$41 = HEAP32[$23>>2]|0;
- $42 = (_strcmp($41,4905)|0);
+ $42 = (_strcmp($41,4673)|0);
$43 = ($42|0)==(0);
if ($43) {
label = 15;
@@ -14888,35 +19129,35 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 15) {
label = 0;
- HEAP32[7724] = 1;
+ HEAP32[7766] = 1;
}
$44 = HEAP32[$23>>2]|0;
- $45 = (_strcmp($44,4938)|0);
+ $45 = (_strcmp($44,4706)|0);
$46 = ($45|0)==(0);
if ($46) {
- HEAP32[7725] = 1;
+ HEAP32[7767] = 1;
}
- $47 = (_strcmp($44,4963)|0);
+ $47 = (_strcmp($44,4731)|0);
$48 = ($47|0)==(0);
if ($48) {
- HEAP32[7726] = 1;
+ HEAP32[7768] = 1;
}
- $49 = (_strcmp($44,4996)|0);
+ $49 = (_strcmp($44,4764)|0);
$50 = ($49|0)==(0);
if ($50) {
- HEAP32[7727] = 1;
+ HEAP32[7769] = 1;
}
- $51 = (_strcmp($44,5032)|0);
+ $51 = (_strcmp($44,4800)|0);
$52 = ($51|0)==(0);
if ($52) {
- HEAP32[7790] = 1;
- _glGetFloatv(34047,(31164|0));
+ HEAP32[7832] = 1;
+ _glGetFloatv(34047,(31332|0));
}
$53 = HEAP32[$23>>2]|0;
- $54 = (_strcmp($53,5066)|0);
+ $54 = (_strcmp($53,4834)|0);
$55 = ($54|0)==(0);
if ($55) {
- HEAP32[7792] = 1;
+ HEAP32[7834] = 1;
}
$56 = (($$06167) + 1)|0;
$exitcond70 = ($56|0)==($19|0);
@@ -14927,77 +19168,77 @@ function _rlglInit($0,$1) {
}
}
}
- $21 = HEAP32[7786]|0;
+ $21 = HEAP32[7828]|0;
$22 = ($21|0)==(0);
if ($22) {
- _TraceLog(2,5169,$vararg_buffer15);
+ _TraceLog(2,4937,$vararg_buffer15);
} else {
- _TraceLog(0,5094,$vararg_buffer13);
+ _TraceLog(0,4862,$vararg_buffer13);
}
- $57 = HEAP32[7728]|0;
+ $57 = HEAP32[7770]|0;
$58 = ($57|0)==(0);
if ($58) {
- _TraceLog(2,5305,$vararg_buffer19);
+ _TraceLog(2,5073,$vararg_buffer19);
} else {
- _TraceLog(0,5230,$vararg_buffer17);
+ _TraceLog(0,4998,$vararg_buffer17);
}
- $59 = HEAP32[7723]|0;
+ $59 = HEAP32[7765]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- _TraceLog(0,5397,$vararg_buffer21);
+ _TraceLog(0,5165,$vararg_buffer21);
}
- $61 = HEAP32[7724]|0;
+ $61 = HEAP32[7766]|0;
$62 = ($61|0)==(0);
if (!($62)) {
- _TraceLog(0,5443,$vararg_buffer23);
+ _TraceLog(0,5211,$vararg_buffer23);
}
- $63 = HEAP32[7725]|0;
+ $63 = HEAP32[7767]|0;
$64 = ($63|0)==(0);
if (!($64)) {
- _TraceLog(0,5490,$vararg_buffer25);
+ _TraceLog(0,5258,$vararg_buffer25);
}
- $65 = HEAP32[7726]|0;
+ $65 = HEAP32[7768]|0;
$66 = ($65|0)==(0);
if (!($66)) {
- _TraceLog(0,5541,$vararg_buffer27);
+ _TraceLog(0,5309,$vararg_buffer27);
}
- $67 = HEAP32[7727]|0;
+ $67 = HEAP32[7769]|0;
$68 = ($67|0)==(0);
if (!($68)) {
- _TraceLog(0,5588,$vararg_buffer29);
+ _TraceLog(0,5356,$vararg_buffer29);
}
- $69 = HEAP32[7790]|0;
+ $69 = HEAP32[7832]|0;
$70 = ($69|0)==(0);
if (!($70)) {
- $71 = +HEAPF32[7791];
+ $71 = +HEAPF32[7833];
$72 = $71;
HEAPF64[$vararg_buffer31>>3] = $72;
- _TraceLog(0,5635,$vararg_buffer31);
+ _TraceLog(0,5403,$vararg_buffer31);
}
- $73 = HEAP32[7792]|0;
+ $73 = HEAP32[7834]|0;
$74 = ($73|0)==(0);
if (!($74)) {
- _TraceLog(0,5701,$vararg_buffer34);
+ _TraceLog(0,5469,$vararg_buffer34);
}
HEAP32[$vararg_buffer10>>2] = -1;
$75 = (_rlglLoadTexture($vararg_buffer10,1,1,7,1)|0);
- HEAP32[7793] = $75;
+ HEAP32[7835] = $75;
$76 = ($75|0)==(0);
if ($76) {
- _TraceLog(2,5805,$vararg_buffer39);
+ _TraceLog(2,5573,$vararg_buffer39);
} else {
HEAP32[$vararg_buffer36>>2] = $75;
- _TraceLog(0,5754,$vararg_buffer36);
+ _TraceLog(0,5522,$vararg_buffer36);
}
_LoadDefaultShader($2);
- dest=31176; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31232; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31344; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31400; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_LoadDefaultBuffers();
$77 = (_malloc(49152)|0);
- HEAP32[7822] = $77;
+ HEAP32[7864] = $77;
$$06066 = 0;
while(1) {
- $79 = HEAP32[7822]|0;
+ $79 = HEAP32[7864]|0;
$80 = (($79) + (($$06066*12)|0)|0);
_VectorZero($3);
;HEAP32[$80>>2]=HEAP32[$3>>2]|0;HEAP32[$80+4>>2]=HEAP32[$3+4>>2]|0;HEAP32[$80+8>>2]=HEAP32[$3+8>>2]|0;
@@ -15010,7 +19251,7 @@ function _rlglInit($0,$1) {
}
}
$78 = (_malloc(36864)|0);
- HEAP32[7823] = $78;
+ HEAP32[7865] = $78;
$$05965 = 0;
while(1) {
$82 = (((($78) + (($$05965*144)|0)|0)) + 8|0);
@@ -15025,48 +19266,48 @@ function _rlglInit($0,$1) {
$$05965 = $84;
}
}
- HEAP32[7824] = 1;
- $85 = HEAP32[7793]|0;
+ HEAP32[7866] = 1;
+ $85 = HEAP32[7835]|0;
$86 = ((($78)) + 8|0);
HEAP32[$86>>2] = $85;
- HEAP32[7825] = 4;
+ HEAP32[7867] = 4;
_MatrixIdentity($4);
- dest=31304; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31472; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31368); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31536); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31432); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31600); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31496); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31664); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31560); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31728); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31624); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31792); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31688); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31856); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31752); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31920); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31816); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31984); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31880); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32048); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31944); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32112); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32008); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32176); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32072); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32240); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32136); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32304); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32200); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32368); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32264); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32432); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($5);
- dest=31012; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31180; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($6);
- dest=31076; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7752] = 31076;
+ dest=31244; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7794] = 31244;
_glDepthFunc(515);
_glDisable(2929);
_glBlendFunc(770,771);
@@ -15077,21 +19318,21 @@ function _rlglInit($0,$1) {
_glClearColor(0.0,0.0,0.0,1.0);
_glClearDepthf(1.0);
_glClear(16640);
- HEAP32[8082] = $0;
- HEAP32[8083] = $1;
- _TraceLog(0,5844,$vararg_buffer41);
+ HEAP32[8124] = $0;
+ HEAP32[8125] = $1;
+ _TraceLog(0,5612,$vararg_buffer41);
STACKTOP = sp;return;
}
function _SetupViewport() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7750]|0;
+ $0 = HEAP32[7792]|0;
$1 = (($0|0) / 2)&-1;
- $2 = HEAP32[7751]|0;
+ $2 = HEAP32[7793]|0;
$3 = (($2|0) / 2)&-1;
- $4 = HEAP32[7748]|0;
+ $4 = HEAP32[7790]|0;
$5 = (($4) - ($0))|0;
- $6 = HEAP32[7749]|0;
+ $6 = HEAP32[7791]|0;
$7 = (($6) - ($2))|0;
_rlViewport($1,$3,$5,$7);
return;
@@ -15102,12 +19343,12 @@ function _rlMatrixMode($0) {
sp = STACKTOP;
switch ($0|0) {
case 5889: {
- $modelview$sink = 31012;
+ $modelview$sink = 31180;
label = 3;
break;
}
case 5888: {
- $modelview$sink = 31076;
+ $modelview$sink = 31244;
label = 3;
break;
}
@@ -15115,9 +19356,9 @@ function _rlMatrixMode($0) {
}
}
if ((label|0) == 3) {
- HEAP32[7752] = $modelview$sink;
+ HEAP32[7794] = $modelview$sink;
}
- HEAP32[7785] = $0;
+ HEAP32[7827] = $0;
return;
}
function _rlLoadIdentity() {
@@ -15125,7 +19366,7 @@ function _rlLoadIdentity() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$0 = sp;
- $1 = HEAP32[7752]|0;
+ $1 = HEAP32[7794]|0;
_MatrixIdentity($0);
dest=$1; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
@@ -15146,7 +19387,7 @@ function _rlOrtho($0,$1,$2,$3,$4,$5) {
$7 = sp;
_MatrixOrtho($6,$0,$1,$2,$3,$4,$5);
_MatrixTranspose($6);
- $8 = HEAP32[7752]|0;
+ $8 = HEAP32[7794]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy,$$byval_copy1);
@@ -15205,17 +19446,17 @@ function _LoadDefaultShader($0) {
$1 = sp + 16|0;
$2 = sp + 513|0;
$3 = sp + 72|0;
- _memcpy(($2|0),(6420|0),489)|0;
- _memcpy(($3|0),(6909|0),441)|0;
+ _memcpy(($2|0),(6188|0),489)|0;
+ _memcpy(($3|0),(6677|0),441)|0;
$4 = (_LoadShaderProgram($2,$3)|0);
HEAP32[$1>>2] = $4;
$5 = ($4|0)==(0);
if ($5) {
HEAP32[$vararg_buffer1>>2] = $4;
- _TraceLog(2,7398,$vararg_buffer1);
+ _TraceLog(2,7166,$vararg_buffer1);
} else {
HEAP32[$vararg_buffer>>2] = $4;
- _TraceLog(0,7350,$vararg_buffer);
+ _TraceLog(0,7118,$vararg_buffer);
}
$6 = HEAP32[$1>>2]|0;
$7 = ($6|0)==(0);
@@ -15243,15 +19484,15 @@ function _LoadDefaultBuffers() {
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
$0 = (_malloc(24576)|0);
- HEAP32[(32348)>>2] = $0;
+ HEAP32[(32516)>>2] = $0;
$1 = (_malloc(8192)|0);
- HEAP32[(32356)>>2] = $1;
- HEAP32[(32352)>>2] = 0;
- HEAP32[(32360)>>2] = 0;
+ HEAP32[(32524)>>2] = $1;
+ HEAP32[(32520)>>2] = 0;
+ HEAP32[(32528)>>2] = 0;
_memset(($0|0),0,24576)|0;
$$05972 = 0;
while(1) {
- $2 = HEAP32[(32356)>>2]|0;
+ $2 = HEAP32[(32524)>>2]|0;
$3 = (($2) + ($$05972)|0);
HEAP8[$3>>0] = 0;
$4 = (($$05972) + 1)|0;
@@ -15262,19 +19503,19 @@ function _LoadDefaultBuffers() {
$$05972 = $4;
}
}
- HEAP32[8084] = 0;
- HEAP32[(32344)>>2] = 0;
- HEAP32[(32340)>>2] = 0;
+ HEAP32[8126] = 0;
+ HEAP32[(32512)>>2] = 0;
+ HEAP32[(32508)>>2] = 0;
$5 = (_malloc(73728)|0);
- HEAP32[(32396)>>2] = $5;
+ HEAP32[(32564)>>2] = $5;
$6 = (_malloc(24576)|0);
- HEAP32[(32404)>>2] = $6;
- HEAP32[(32400)>>2] = 0;
- HEAP32[(32408)>>2] = 0;
+ HEAP32[(32572)>>2] = $6;
+ HEAP32[(32568)>>2] = 0;
+ HEAP32[(32576)>>2] = 0;
_memset(($5|0),0,73728)|0;
$$05770 = 0;
while(1) {
- $7 = HEAP32[(32404)>>2]|0;
+ $7 = HEAP32[(32572)>>2]|0;
$8 = (($7) + ($$05770)|0);
HEAP8[$8>>0] = 0;
$9 = (($$05770) + 1)|0;
@@ -15285,24 +19526,24 @@ function _LoadDefaultBuffers() {
$$05770 = $9;
}
}
- HEAP32[8096] = 0;
- HEAP32[(32392)>>2] = 0;
- HEAP32[(32388)>>2] = 0;
+ HEAP32[8138] = 0;
+ HEAP32[(32560)>>2] = 0;
+ HEAP32[(32556)>>2] = 0;
$10 = (_malloc(49152)|0);
- HEAP32[(32444)>>2] = $10;
+ HEAP32[(32612)>>2] = $10;
$11 = (_malloc(32768)|0);
- HEAP32[(32448)>>2] = $11;
+ HEAP32[(32616)>>2] = $11;
$12 = (_malloc(16384)|0);
- HEAP32[(32452)>>2] = $12;
+ HEAP32[(32620)>>2] = $12;
$13 = (_malloc(12288)|0);
- HEAP32[(32456)>>2] = $13;
- $14 = HEAP32[(32444)>>2]|0;
+ HEAP32[(32624)>>2] = $13;
+ $14 = HEAP32[(32612)>>2]|0;
_memset(($14|0),0,49152)|0;
- $15 = HEAP32[(32448)>>2]|0;
+ $15 = HEAP32[(32616)>>2]|0;
_memset(($15|0),0,32768)|0;
$$05467 = 0;
while(1) {
- $17 = HEAP32[(32452)>>2]|0;
+ $17 = HEAP32[(32620)>>2]|0;
$18 = (($17) + ($$05467)|0);
HEAP8[$18>>0] = 0;
$19 = (($$05467) + 1)|0;
@@ -15313,7 +19554,7 @@ function _LoadDefaultBuffers() {
$$05467 = $19;
}
}
- $16 = HEAP32[(32456)>>2]|0;
+ $16 = HEAP32[(32624)>>2]|0;
$$05365 = 0;$$066 = 0;
while(1) {
$22 = $$05365 << 2;
@@ -15350,140 +19591,140 @@ function _LoadDefaultBuffers() {
$$05365 = $41;$$066 = $42;
}
}
- HEAP32[8108] = 0;
- HEAP32[(32436)>>2] = 0;
- HEAP32[(32440)>>2] = 0;
- _TraceLog(0,5891,$vararg_buffer);
- $20 = HEAP32[7786]|0;
+ HEAP32[8150] = 0;
+ HEAP32[(32604)>>2] = 0;
+ HEAP32[(32608)>>2] = 0;
+ _TraceLog(0,5659,$vararg_buffer);
+ $20 = HEAP32[7828]|0;
$21 = ($20|0)==(0);
if (!($21)) {
- $43 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$43 & 63](1,(32364));
- $44 = HEAP32[7788]|0;
- $45 = HEAP32[(32364)>>2]|0;
+ $43 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$43 & 63](1,(32532));
+ $44 = HEAP32[7830]|0;
+ $45 = HEAP32[(32532)>>2]|0;
FUNCTION_TABLE_vi[$44 & 31]($45);
}
- _glGenBuffers(2,((32368)|0));
- $46 = HEAP32[(32368)>>2]|0;
+ _glGenBuffers(2,((32536)|0));
+ $46 = HEAP32[(32536)>>2]|0;
_glBindBuffer(34962,($46|0));
- $47 = HEAP32[(32348)>>2]|0;
+ $47 = HEAP32[(32516)>>2]|0;
_glBufferData(34962,24576,($47|0),35048);
- $48 = HEAP32[(31236)>>2]|0;
+ $48 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($48|0));
- $49 = HEAP32[(31236)>>2]|0;
+ $49 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($49|0),3,5126,0,0,(0|0));
- _glGenBuffers(2,((32372)|0));
- $50 = HEAP32[(32372)>>2]|0;
+ _glGenBuffers(2,((32540)|0));
+ $50 = HEAP32[(32540)>>2]|0;
_glBindBuffer(34962,($50|0));
- $51 = HEAP32[(32356)>>2]|0;
+ $51 = HEAP32[(32524)>>2]|0;
_glBufferData(34962,8192,($51|0),35048);
- $52 = HEAP32[(31256)>>2]|0;
+ $52 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($52|0));
- $53 = HEAP32[(31256)>>2]|0;
+ $53 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($53|0),4,5121,1,0,(0|0));
- $54 = HEAP32[7786]|0;
+ $54 = HEAP32[7828]|0;
$55 = ($54|0)==(0);
if ($55) {
- $57 = HEAP32[(32368)>>2]|0;
- $58 = HEAP32[(32372)>>2]|0;
+ $57 = HEAP32[(32536)>>2]|0;
+ $58 = HEAP32[(32540)>>2]|0;
HEAP32[$vararg_buffer3>>2] = $57;
$vararg_ptr6 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr6>>2] = $58;
- _TraceLog(0,6029,$vararg_buffer3);
+ _TraceLog(0,5797,$vararg_buffer3);
} else {
- $56 = HEAP32[(32364)>>2]|0;
+ $56 = HEAP32[(32532)>>2]|0;
HEAP32[$vararg_buffer1>>2] = $56;
- _TraceLog(0,5964,$vararg_buffer1);
+ _TraceLog(0,5732,$vararg_buffer1);
}
- $59 = HEAP32[7786]|0;
+ $59 = HEAP32[7828]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- $61 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$61 & 63](1,(32412));
- $62 = HEAP32[7788]|0;
- $63 = HEAP32[(32412)>>2]|0;
+ $61 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$61 & 63](1,(32580));
+ $62 = HEAP32[7830]|0;
+ $63 = HEAP32[(32580)>>2]|0;
FUNCTION_TABLE_vi[$62 & 31]($63);
}
- _glGenBuffers(1,((32416)|0));
- $64 = HEAP32[(32416)>>2]|0;
+ _glGenBuffers(1,((32584)|0));
+ $64 = HEAP32[(32584)>>2]|0;
_glBindBuffer(34962,($64|0));
- $65 = HEAP32[(32396)>>2]|0;
+ $65 = HEAP32[(32564)>>2]|0;
_glBufferData(34962,73728,($65|0),35048);
- $66 = HEAP32[(31236)>>2]|0;
+ $66 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($66|0));
- $67 = HEAP32[(31236)>>2]|0;
+ $67 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($67|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32420)|0));
- $68 = HEAP32[(32420)>>2]|0;
+ _glGenBuffers(1,((32588)|0));
+ $68 = HEAP32[(32588)>>2]|0;
_glBindBuffer(34962,($68|0));
- $69 = HEAP32[(32404)>>2]|0;
+ $69 = HEAP32[(32572)>>2]|0;
_glBufferData(34962,24576,($69|0),35048);
- $70 = HEAP32[(31256)>>2]|0;
+ $70 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($70|0));
- $71 = HEAP32[(31256)>>2]|0;
+ $71 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($71|0),4,5121,1,0,(0|0));
- $72 = HEAP32[7786]|0;
+ $72 = HEAP32[7828]|0;
$73 = ($72|0)==(0);
if ($73) {
- $75 = HEAP32[(32416)>>2]|0;
- $76 = HEAP32[(32420)>>2]|0;
+ $75 = HEAP32[(32584)>>2]|0;
+ $76 = HEAP32[(32588)>>2]|0;
HEAP32[$vararg_buffer10>>2] = $75;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $76;
- _TraceLog(0,6175,$vararg_buffer10);
+ _TraceLog(0,5943,$vararg_buffer10);
} else {
- $74 = HEAP32[(32412)>>2]|0;
+ $74 = HEAP32[(32580)>>2]|0;
HEAP32[$vararg_buffer7>>2] = $74;
- _TraceLog(0,6106,$vararg_buffer7);
+ _TraceLog(0,5874,$vararg_buffer7);
}
- $77 = HEAP32[7786]|0;
+ $77 = HEAP32[7828]|0;
$78 = ($77|0)==(0);
if (!($78)) {
- $79 = HEAP32[7787]|0;
- FUNCTION_TABLE_vii[$79 & 63](1,(32460));
- $80 = HEAP32[7788]|0;
- $81 = HEAP32[(32460)>>2]|0;
+ $79 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$79 & 63](1,(32628));
+ $80 = HEAP32[7830]|0;
+ $81 = HEAP32[(32628)>>2]|0;
FUNCTION_TABLE_vi[$80 & 31]($81);
}
- _glGenBuffers(1,((32464)|0));
- $82 = HEAP32[(32464)>>2]|0;
+ _glGenBuffers(1,((32632)|0));
+ $82 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($82|0));
- $83 = HEAP32[(32444)>>2]|0;
+ $83 = HEAP32[(32612)>>2]|0;
_glBufferData(34962,49152,($83|0),35048);
- $84 = HEAP32[(31236)>>2]|0;
+ $84 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($84|0));
- $85 = HEAP32[(31236)>>2]|0;
+ $85 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($85|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32468)|0));
- $86 = HEAP32[(32468)>>2]|0;
+ _glGenBuffers(1,((32636)|0));
+ $86 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34962,($86|0));
- $87 = HEAP32[(32448)>>2]|0;
+ $87 = HEAP32[(32616)>>2]|0;
_glBufferData(34962,32768,($87|0),35048);
- $88 = HEAP32[(31240)>>2]|0;
+ $88 = HEAP32[(31408)>>2]|0;
_glEnableVertexAttribArray(($88|0));
- $89 = HEAP32[(31240)>>2]|0;
+ $89 = HEAP32[(31408)>>2]|0;
_glVertexAttribPointer(($89|0),2,5126,0,0,(0|0));
- _glGenBuffers(1,((32472)|0));
- $90 = HEAP32[(32472)>>2]|0;
+ _glGenBuffers(1,((32640)|0));
+ $90 = HEAP32[(32640)>>2]|0;
_glBindBuffer(34962,($90|0));
- $91 = HEAP32[(32452)>>2]|0;
+ $91 = HEAP32[(32620)>>2]|0;
_glBufferData(34962,16384,($91|0),35048);
- $92 = HEAP32[(31256)>>2]|0;
+ $92 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($92|0));
- $93 = HEAP32[(31256)>>2]|0;
+ $93 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($93|0),4,5121,1,0,(0|0));
- _glGenBuffers(1,((32476)|0));
- $94 = HEAP32[(32476)>>2]|0;
+ _glGenBuffers(1,((32644)|0));
+ $94 = HEAP32[(32644)>>2]|0;
_glBindBuffer(34963,($94|0));
- $95 = HEAP32[(32456)>>2]|0;
+ $95 = HEAP32[(32624)>>2]|0;
_glBufferData(34963,12288,($95|0),35044);
- $96 = HEAP32[7786]|0;
+ $96 = HEAP32[7828]|0;
$97 = ($96|0)==(0);
if ($97) {
- $99 = HEAP32[(32464)>>2]|0;
- $100 = HEAP32[(32468)>>2]|0;
- $101 = HEAP32[(32472)>>2]|0;
- $102 = HEAP32[(32476)>>2]|0;
+ $99 = HEAP32[(32632)>>2]|0;
+ $100 = HEAP32[(32636)>>2]|0;
+ $101 = HEAP32[(32640)>>2]|0;
+ $102 = HEAP32[(32644)>>2]|0;
HEAP32[$vararg_buffer17>>2] = $99;
$vararg_ptr20 = ((($vararg_buffer17)) + 4|0);
HEAP32[$vararg_ptr20>>2] = $100;
@@ -15491,18 +19732,18 @@ function _LoadDefaultBuffers() {
HEAP32[$vararg_ptr21>>2] = $101;
$vararg_ptr22 = ((($vararg_buffer17)) + 12|0);
HEAP32[$vararg_ptr22>>2] = $102;
- _TraceLog(0,6321,$vararg_buffer17);
+ _TraceLog(0,6089,$vararg_buffer17);
} else {
- $98 = HEAP32[(32460)>>2]|0;
+ $98 = HEAP32[(32628)>>2]|0;
HEAP32[$vararg_buffer14>>2] = $98;
- _TraceLog(0,6256,$vararg_buffer14);
+ _TraceLog(0,6024,$vararg_buffer14);
}
- $103 = HEAP32[7786]|0;
+ $103 = HEAP32[7828]|0;
$104 = ($103|0)==(0);
if ($104) {
STACKTOP = sp;return;
}
- $105 = HEAP32[7788]|0;
+ $105 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$105 & 31](0);
STACKTOP = sp;return;
}
@@ -15539,10 +19780,10 @@ function _LoadShaderProgram($0,$1) {
$9 = ($8|0)==(1);
if ($9) {
HEAP32[$vararg_buffer4>>2] = $6;
- _TraceLog(0,7654,$vararg_buffer4);
+ _TraceLog(0,7422,$vararg_buffer4);
} else {
HEAP32[$vararg_buffer>>2] = $6;
- _TraceLog(2,7602,$vararg_buffer);
+ _TraceLog(2,7370,$vararg_buffer);
HEAP32[$vararg_buffer>>2] = 0;
_glGetShaderiv(($6|0),35716,($vararg_buffer|0));
$10 = HEAP32[$vararg_buffer>>2]|0;
@@ -15552,7 +19793,7 @@ function _LoadShaderProgram($0,$1) {
$13 = HEAP32[$vararg_buffer>>2]|0;
_glGetShaderInfoLog(($6|0),($13|0),($5|0),($12|0));
HEAP32[$vararg_buffer1>>2] = $12;
- _TraceLog(0,7651,$vararg_buffer1);
+ _TraceLog(0,7419,$vararg_buffer1);
_llvm_stackrestore(($11|0));
}
_glCompileShader(($7|0));
@@ -15561,10 +19802,10 @@ function _LoadShaderProgram($0,$1) {
$15 = ($14|0)==(1);
if ($15) {
HEAP32[$vararg_buffer13>>2] = $7;
- _TraceLog(0,7755,$vararg_buffer13);
+ _TraceLog(0,7523,$vararg_buffer13);
} else {
HEAP32[$vararg_buffer7>>2] = $7;
- _TraceLog(2,7704,$vararg_buffer7);
+ _TraceLog(2,7472,$vararg_buffer7);
HEAP32[$vararg_buffer7>>2] = 0;
_glGetShaderiv(($7|0),35716,($vararg_buffer7|0));
$16 = HEAP32[$vararg_buffer7>>2]|0;
@@ -15574,25 +19815,25 @@ function _LoadShaderProgram($0,$1) {
$19 = HEAP32[$vararg_buffer7>>2]|0;
_glGetShaderInfoLog(($7|0),($19|0),($5|0),($18|0));
HEAP32[$vararg_buffer10>>2] = $18;
- _TraceLog(0,7651,$vararg_buffer10);
+ _TraceLog(0,7419,$vararg_buffer10);
_llvm_stackrestore(($17|0));
}
$20 = (_glCreateProgram()|0);
_glAttachShader(($20|0),($6|0));
_glAttachShader(($20|0),($7|0));
- _glBindAttribLocation(($20|0),0,(7446|0));
- _glBindAttribLocation(($20|0),1,(7461|0));
- _glBindAttribLocation(($20|0),2,(7492|0));
- _glBindAttribLocation(($20|0),3,(7519|0));
- _glBindAttribLocation(($20|0),4,(7505|0));
- _glBindAttribLocation(($20|0),5,(7476|0));
+ _glBindAttribLocation(($20|0),0,(7214|0));
+ _glBindAttribLocation(($20|0),1,(7229|0));
+ _glBindAttribLocation(($20|0),2,(7260|0));
+ _glBindAttribLocation(($20|0),3,(7287|0));
+ _glBindAttribLocation(($20|0),4,(7273|0));
+ _glBindAttribLocation(($20|0),5,(7244|0));
_glLinkProgram(($20|0));
_glGetProgramiv(($20|0),35714,($4|0));
$21 = HEAP32[$4>>2]|0;
$22 = ($21|0)==(0);
if ($22) {
HEAP32[$vararg_buffer16>>2] = $20;
- _TraceLog(2,7807,$vararg_buffer16);
+ _TraceLog(2,7575,$vararg_buffer16);
HEAP32[$vararg_buffer16>>2] = 0;
_glGetProgramiv(($20|0),35716,($vararg_buffer16|0));
$23 = HEAP32[$vararg_buffer16>>2]|0;
@@ -15602,7 +19843,7 @@ function _LoadShaderProgram($0,$1) {
$26 = HEAP32[$vararg_buffer16>>2]|0;
_glGetProgramInfoLog(($20|0),($26|0),($5|0),($25|0));
HEAP32[$vararg_buffer19>>2] = $25;
- _TraceLog(0,7651,$vararg_buffer19);
+ _TraceLog(0,7419,$vararg_buffer19);
_glDeleteProgram(($20|0));
_llvm_stackrestore(($24|0));
$$0 = 0;
@@ -15611,7 +19852,7 @@ function _LoadShaderProgram($0,$1) {
STACKTOP = sp;return ($$0|0);
} else {
HEAP32[$vararg_buffer22>>2] = $20;
- _TraceLog(0,7853,$vararg_buffer22);
+ _TraceLog(0,7621,$vararg_buffer22);
$$0 = $20;
_glDeleteShader(($6|0));
_glDeleteShader(($7|0));
@@ -15626,55 +19867,55 @@ function _LoadDefaultShaderLocations($0) {
var sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- $2 = (_glGetAttribLocation(($1|0),(7446|0))|0);
+ $2 = (_glGetAttribLocation(($1|0),(7214|0))|0);
$3 = ((($0)) + 4|0);
HEAP32[$3>>2] = $2;
$4 = HEAP32[$0>>2]|0;
- $5 = (_glGetAttribLocation(($4|0),(7461|0))|0);
+ $5 = (_glGetAttribLocation(($4|0),(7229|0))|0);
$6 = ((($0)) + 8|0);
HEAP32[$6>>2] = $5;
$7 = HEAP32[$0>>2]|0;
- $8 = (_glGetAttribLocation(($7|0),(7476|0))|0);
+ $8 = (_glGetAttribLocation(($7|0),(7244|0))|0);
$9 = ((($0)) + 12|0);
HEAP32[$9>>2] = $8;
$10 = HEAP32[$0>>2]|0;
- $11 = (_glGetAttribLocation(($10|0),(7492|0))|0);
+ $11 = (_glGetAttribLocation(($10|0),(7260|0))|0);
$12 = ((($0)) + 16|0);
HEAP32[$12>>2] = $11;
$13 = HEAP32[$0>>2]|0;
- $14 = (_glGetAttribLocation(($13|0),(7505|0))|0);
+ $14 = (_glGetAttribLocation(($13|0),(7273|0))|0);
$15 = ((($0)) + 20|0);
HEAP32[$15>>2] = $14;
$16 = HEAP32[$0>>2]|0;
- $17 = (_glGetAttribLocation(($16|0),(7519|0))|0);
+ $17 = (_glGetAttribLocation(($16|0),(7287|0))|0);
$18 = ((($0)) + 24|0);
HEAP32[$18>>2] = $17;
$19 = HEAP32[$0>>2]|0;
- $20 = (_glGetUniformLocation(($19|0),(7531|0))|0);
+ $20 = (_glGetUniformLocation(($19|0),(7299|0))|0);
$21 = ((($0)) + 28|0);
HEAP32[$21>>2] = $20;
$22 = HEAP32[$0>>2]|0;
- $23 = (_glGetUniformLocation(($22|0),(7541|0))|0);
+ $23 = (_glGetUniformLocation(($22|0),(7309|0))|0);
$24 = ((($0)) + 32|0);
HEAP32[$24>>2] = $23;
$25 = HEAP32[$0>>2]|0;
- $26 = (_glGetUniformLocation(($25|0),(7552|0))|0);
+ $26 = (_glGetUniformLocation(($25|0),(7320|0))|0);
$27 = ((($0)) + 36|0);
HEAP32[$27>>2] = $26;
$28 = HEAP32[$0>>2]|0;
- $29 = (_glGetUniformLocation(($28|0),(7563|0))|0);
+ $29 = (_glGetUniformLocation(($28|0),(7331|0))|0);
$30 = ((($0)) + 40|0);
HEAP32[$30>>2] = $29;
$31 = HEAP32[$0>>2]|0;
- $32 = (_glGetUniformLocation(($31|0),(7575|0))|0);
+ $32 = (_glGetUniformLocation(($31|0),(7343|0))|0);
$33 = ((($0)) + 44|0);
HEAP32[$33>>2] = $32;
$34 = HEAP32[$0>>2]|0;
- $35 = (_glGetUniformLocation(($34|0),(7584|0))|0);
+ $35 = (_glGetUniformLocation(($34|0),(7352|0))|0);
$36 = ((($0)) + 48|0);
HEAP32[$36>>2] = $35;
$37 = HEAP32[$0>>2]|0;
- $38 = (_glGetUniformLocation(($37|0),(7593|0))|0);
+ $38 = (_glGetUniformLocation(($37|0),(7361|0))|0);
$39 = ((($0)) + 52|0);
HEAP32[$39>>2] = $38;
return;
@@ -15683,9 +19924,9 @@ function _IsMouseButtonPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33641 + ($0)|0);
+ $1 = (35961 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33644 + ($0)|0);
+ $3 = (35964 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -15697,9 +19938,9 @@ function _IsMouseButtonReleased($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33641 + ($0)|0);
+ $1 = (35961 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33644 + ($0)|0);
+ $3 = (35964 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(0);
@@ -15720,10 +19961,10 @@ function _CloseWindow() {
$vararg_buffer = sp;
_UnloadDefaultFont();
_rlglClose();
- $0 = HEAP32[7705]|0;
+ $0 = HEAP32[7747]|0;
_glfwDestroyWindow(($0|0));
_glfwTerminate();
- _TraceLog(0,8165,$vararg_buffer);
+ _TraceLog(0,7933,$vararg_buffer);
STACKTOP = sp;return;
}
function _UnloadDefaultFont() {
@@ -15731,9 +19972,9 @@ function _UnloadDefaultFont() {
sp = STACKTOP;
STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
$$byval_copy = sp;
- ;HEAP32[$$byval_copy>>2]=HEAP32[30860>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[30860+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[30860+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[30860+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[30860+16>>2]|0;
+ ;HEAP32[$$byval_copy>>2]=HEAP32[31028>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[31028+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[31028+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[31028+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[31028+16>>2]|0;
_UnloadTexture($$byval_copy);
- $0 = HEAP32[(30888)>>2]|0;
+ $0 = HEAP32[(31056)>>2]|0;
_free($0);
STACKTOP = sp;return;
}
@@ -15744,11 +19985,11 @@ function _rlglClose() {
$vararg_buffer = sp;
_UnloadDefaultShader();
_UnloadDefaultBuffers();
- _glDeleteTextures(1,(31172|0));
- $0 = HEAP32[7793]|0;
+ _glDeleteTextures(1,(31340|0));
+ $0 = HEAP32[7835]|0;
HEAP32[$vararg_buffer>>2] = $0;
- _TraceLog(0,8192,$vararg_buffer);
- $1 = HEAP32[7823]|0;
+ _TraceLog(0,7960,$vararg_buffer);
+ $1 = HEAP32[7865]|0;
_free($1);
STACKTOP = sp;return;
}
@@ -15756,17 +19997,17 @@ function _UnloadDefaultShader() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
_glUseProgram(0);
- $0 = HEAP32[7794]|0;
+ $0 = HEAP32[7836]|0;
_glDeleteProgram(($0|0));
return;
}
function _UnloadDefaultBuffers() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7786]|0;
+ $0 = HEAP32[7828]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[7788]|0;
+ $2 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$2 & 31](0);
}
_glDisableVertexAttribArray(0);
@@ -15775,39 +20016,39 @@ function _UnloadDefaultBuffers() {
_glDisableVertexAttribArray(3);
_glBindBuffer(34962,0);
_glBindBuffer(34963,0);
- _glDeleteBuffers(1,((32368)|0));
- _glDeleteBuffers(1,((32372)|0));
- _glDeleteBuffers(1,((32416)|0));
- _glDeleteBuffers(1,((32420)|0));
- _glDeleteBuffers(1,((32464)|0));
- _glDeleteBuffers(1,((32468)|0));
- _glDeleteBuffers(1,((32472)|0));
- _glDeleteBuffers(1,((32476)|0));
- $3 = HEAP32[7786]|0;
+ _glDeleteBuffers(1,((32536)|0));
+ _glDeleteBuffers(1,((32540)|0));
+ _glDeleteBuffers(1,((32584)|0));
+ _glDeleteBuffers(1,((32588)|0));
+ _glDeleteBuffers(1,((32632)|0));
+ _glDeleteBuffers(1,((32636)|0));
+ _glDeleteBuffers(1,((32640)|0));
+ _glDeleteBuffers(1,((32644)|0));
+ $3 = HEAP32[7828]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7789]|0;
- FUNCTION_TABLE_vii[$5 & 63](1,(32364));
- $6 = HEAP32[7789]|0;
- FUNCTION_TABLE_vii[$6 & 63](1,(32412));
- $7 = HEAP32[7789]|0;
- FUNCTION_TABLE_vii[$7 & 63](1,(32460));
- }
- $8 = HEAP32[(32348)>>2]|0;
+ $5 = HEAP32[7831]|0;
+ FUNCTION_TABLE_vii[$5 & 63](1,(32532));
+ $6 = HEAP32[7831]|0;
+ FUNCTION_TABLE_vii[$6 & 63](1,(32580));
+ $7 = HEAP32[7831]|0;
+ FUNCTION_TABLE_vii[$7 & 63](1,(32628));
+ }
+ $8 = HEAP32[(32516)>>2]|0;
_free($8);
- $9 = HEAP32[(32356)>>2]|0;
+ $9 = HEAP32[(32524)>>2]|0;
_free($9);
- $10 = HEAP32[(32396)>>2]|0;
+ $10 = HEAP32[(32564)>>2]|0;
_free($10);
- $11 = HEAP32[(32404)>>2]|0;
+ $11 = HEAP32[(32572)>>2]|0;
_free($11);
- $12 = HEAP32[(32444)>>2]|0;
+ $12 = HEAP32[(32612)>>2]|0;
_free($12);
- $13 = HEAP32[(32448)>>2]|0;
+ $13 = HEAP32[(32616)>>2]|0;
_free($13);
- $14 = HEAP32[(32452)>>2]|0;
+ $14 = HEAP32[(32620)>>2]|0;
_free($14);
- $15 = HEAP32[(32456)>>2]|0;
+ $15 = HEAP32[(32624)>>2]|0;
_free($15);
return;
}
@@ -15825,7 +20066,7 @@ function _UnloadTexture($0) {
_rlDeleteTextures($1);
$3 = HEAP32[$0>>2]|0;
HEAP32[$vararg_buffer>>2] = $3;
- _TraceLog(0,8257,$vararg_buffer);
+ _TraceLog(0,8025,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlDeleteTextures($0) {
@@ -15841,41 +20082,22 @@ function _rlDeleteTextures($0) {
}
STACKTOP = sp;return;
}
-function _WindowShouldClose() {
- var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
- sp = STACKTOP;
- $0 = HEAP32[8120]|0;
- $1 = ($0|0)==(0);
- if (!($1)) {
- while(1) {
- _glfwWaitEvents();
- $2 = HEAP32[8120]|0;
- $3 = ($2|0)==(0);
- if ($3) {
- break;
- }
- }
- }
- $4 = HEAP32[7705]|0;
- $5 = (_glfwWindowShouldClose(($4|0))|0);
- return ($5|0);
-}
function _BeginDrawing() {
var $0 = 0.0, $1 = 0.0, $2 = 0.0, $downscaleView$byval_copy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$downscaleView$byval_copy = sp;
$0 = (+_GetTime());
- HEAPF64[1760] = $0;
- $1 = +HEAPF64[1743];
+ HEAPF64[1779] = $0;
+ $1 = +HEAPF64[1762];
$2 = $0 - $1;
- HEAPF64[1761] = $2;
- HEAPF64[1743] = $0;
+ HEAPF64[1780] = $2;
+ HEAPF64[1762] = $0;
_rlClearScreenBuffers();
_rlLoadIdentity();
- dest=$downscaleView$byval_copy; src=30916; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$downscaleView$byval_copy; src=31084; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_MatrixToFloat($downscaleView$byval_copy)|0);
- _rlMultMatrixf(32488);
+ _rlMultMatrixf(32656);
STACKTOP = sp;return;
}
function _MatrixToFloat($0) {
@@ -15884,53 +20106,53 @@ function _MatrixToFloat($0) {
var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- HEAP32[8122] = $1;
+ HEAP32[8164] = $1;
$2 = ((($0)) + 4|0);
$3 = HEAP32[$2>>2]|0;
- HEAP32[(32492)>>2] = $3;
+ HEAP32[(32660)>>2] = $3;
$4 = ((($0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
- HEAP32[(32496)>>2] = $5;
+ HEAP32[(32664)>>2] = $5;
$6 = ((($0)) + 12|0);
$7 = HEAP32[$6>>2]|0;
- HEAP32[(32500)>>2] = $7;
+ HEAP32[(32668)>>2] = $7;
$8 = ((($0)) + 16|0);
$9 = HEAP32[$8>>2]|0;
- HEAP32[(32504)>>2] = $9;
+ HEAP32[(32672)>>2] = $9;
$10 = ((($0)) + 20|0);
$11 = HEAP32[$10>>2]|0;
- HEAP32[(32508)>>2] = $11;
+ HEAP32[(32676)>>2] = $11;
$12 = ((($0)) + 24|0);
$13 = HEAP32[$12>>2]|0;
- HEAP32[(32512)>>2] = $13;
+ HEAP32[(32680)>>2] = $13;
$14 = ((($0)) + 28|0);
$15 = HEAP32[$14>>2]|0;
- HEAP32[(32516)>>2] = $15;
+ HEAP32[(32684)>>2] = $15;
$16 = ((($0)) + 32|0);
$17 = HEAP32[$16>>2]|0;
- HEAP32[(32520)>>2] = $17;
+ HEAP32[(32688)>>2] = $17;
$18 = ((($0)) + 36|0);
$19 = HEAP32[$18>>2]|0;
- HEAP32[(32524)>>2] = $19;
+ HEAP32[(32692)>>2] = $19;
$20 = ((($0)) + 40|0);
$21 = HEAP32[$20>>2]|0;
- HEAP32[(32528)>>2] = $21;
+ HEAP32[(32696)>>2] = $21;
$22 = ((($0)) + 44|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(32532)>>2] = $23;
+ HEAP32[(32700)>>2] = $23;
$24 = ((($0)) + 48|0);
$25 = HEAP32[$24>>2]|0;
- HEAP32[(32536)>>2] = $25;
+ HEAP32[(32704)>>2] = $25;
$26 = ((($0)) + 52|0);
$27 = HEAP32[$26>>2]|0;
- HEAP32[(32540)>>2] = $27;
+ HEAP32[(32708)>>2] = $27;
$28 = ((($0)) + 56|0);
$29 = HEAP32[$28>>2]|0;
- HEAP32[(32544)>>2] = $29;
+ HEAP32[(32712)>>2] = $29;
$30 = ((($0)) + 60|0);
$31 = HEAP32[$30>>2]|0;
- HEAP32[(32548)>>2] = $31;
- return (32488|0);
+ HEAP32[(32716)>>2] = $31;
+ return (32656|0);
}
function _rlMultMatrixf($0) {
$0 = $0|0;
@@ -16005,7 +20227,7 @@ function _rlMultMatrixf($0) {
$47 = ((($0)) + 60|0);
$48 = HEAP32[$47>>2]|0;
HEAP32[$46>>2] = $48;
- $49 = HEAP32[7752]|0;
+ $49 = HEAP32[7794]|0;
dest=$$byval_copy; src=$49; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$$byval_copy,$$byval_copy1);
@@ -16019,15 +20241,15 @@ function _EndDrawing() {
_SwapBuffers();
_PollInputEvents();
$0 = (+_GetTime());
- HEAPF64[1760] = $0;
- $1 = +HEAPF64[1743];
+ HEAPF64[1779] = $0;
+ $1 = +HEAPF64[1762];
$2 = $0 - $1;
- HEAPF64[1762] = $2;
- HEAPF64[1743] = $0;
- $3 = +HEAPF64[1761];
+ HEAPF64[1781] = $2;
+ HEAPF64[1762] = $0;
+ $3 = +HEAPF64[1780];
$4 = $2 + $3;
- HEAPF64[1763] = $4;
- $5 = +HEAPF64[1740];
+ HEAPF64[1782] = $4;
+ $5 = +HEAPF64[1759];
$6 = $4 < $5;
if (!($6)) {
return;
@@ -16037,13 +20259,13 @@ function _EndDrawing() {
$9 = $8;
_Wait($9);
$10 = (+_GetTime());
- HEAPF64[1760] = $10;
- $11 = +HEAPF64[1743];
+ HEAPF64[1779] = $10;
+ $11 = +HEAPF64[1762];
$12 = $10 - $11;
- HEAPF64[1743] = $10;
- $13 = +HEAPF64[1763];
+ HEAPF64[1762] = $10;
+ $13 = +HEAPF64[1782];
$14 = $12 + $13;
- HEAPF64[1763] = $14;
+ HEAPF64[1782] = $14;
return;
}
function _rlglDraw() {
@@ -16056,7 +20278,7 @@ function _rlglDraw() {
function _SwapBuffers() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7705]|0;
+ $0 = HEAP32[7747]|0;
_glfwSwapBuffers(($0|0));
return;
}
@@ -16070,22 +20292,22 @@ function _PollInputEvents() {
$1 = sp + 1432|0;
$2 = sp;
_UpdateGestures();
- HEAP32[740] = -1;
- HEAP32[742] = -1;
- HEAP32[8138] = 0;
- $3 = HEAP32[7705]|0;
+ HEAP32[743] = -1;
+ HEAP32[745] = -1;
+ HEAP32[8180] = 0;
+ $3 = HEAP32[7747]|0;
_glfwGetCursorPos(($3|0),($0|0),($1|0));
$4 = +HEAPF64[$0>>3];
$5 = $4;
- HEAPF32[3478] = $5;
+ HEAPF32[3516] = $5;
$6 = +HEAPF64[$1>>3];
$7 = $6;
- HEAPF32[(13916)>>2] = $7;
- _memcpy((34159|0),(33647|0),512)|0;
- ;HEAP8[33644>>0]=HEAP8[33641>>0]|0;HEAP8[33644+1>>0]=HEAP8[33641+1>>0]|0;HEAP8[33644+2>>0]=HEAP8[33641+2>>0]|0;
- $8 = HEAP32[8121]|0;
- HEAP32[7708] = $8;
- HEAP32[8121] = 0;
+ HEAPF32[(14068)>>2] = $7;
+ _memcpy((36479|0),(35967|0),512)|0;
+ ;HEAP8[35964>>0]=HEAP8[35961>>0]|0;HEAP8[35964+1>>0]=HEAP8[35961+1>>0]|0;HEAP8[35964+2>>0]=HEAP8[35961+2>>0]|0;
+ $8 = HEAP32[8163]|0;
+ HEAP32[7750] = $8;
+ HEAP32[8163] = 0;
$9 = (_emscripten_get_num_gamepads()|0);
$10 = ($9|0)>(0);
if (!($10)) {
@@ -16095,8 +20317,8 @@ function _PollInputEvents() {
$12 = ((($2)) + 8|0);
$$05160 = 0;
while(1) {
- $scevgep = (34671 + ($$05160<<5)|0);
- $scevgep67 = (34799 + ($$05160<<5)|0);
+ $scevgep = (36991 + ($$05160<<5)|0);
+ $scevgep67 = (37119 + ($$05160<<5)|0);
dest=$scevgep; src=$scevgep67; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
$13 = (_emscripten_get_gamepad_status(($$05160|0),($2|0))|0);
$14 = ($13|0)==(0);
@@ -16110,10 +20332,10 @@ function _PollInputEvents() {
$21 = (((($2)) + 1040|0) + ($$04857<<2)|0);
$22 = HEAP32[$21>>2]|0;
$23 = ($22|0)==(1);
- $24 = ((34799 + ($$05160<<5)|0) + ($$04857)|0);
+ $24 = ((37119 + ($$05160<<5)|0) + ($$04857)|0);
if ($23) {
HEAP8[$24>>0] = 1;
- HEAP32[742] = $$04857;
+ HEAP32[745] = $$04857;
} else {
HEAP8[$24>>0] = 0;
}
@@ -16137,7 +20359,7 @@ function _PollInputEvents() {
$29 = (((($2)) + 16|0) + ($$058<<3)|0);
$30 = +HEAPF64[$29>>3];
$31 = $30;
- $32 = ((32556 + ($$05160<<5)|0) + ($$058<<2)|0);
+ $32 = ((32724 + ($$05160<<5)|0) + ($$058<<2)|0);
HEAPF32[$32>>2] = $31;
$33 = (($$058) + 1)|0;
$34 = ($33|0)<($20|0);
@@ -16153,7 +20375,7 @@ function _PollInputEvents() {
} else {
$$lcssa = $18;
}
- HEAP32[8138] = $$lcssa;
+ HEAP32[8180] = $$lcssa;
}
$37 = (($$05160) + 1)|0;
$38 = ($37|0)<($9|0);
@@ -16194,87 +20416,87 @@ function _UpdateDefaultBuffers() {
var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8084]|0;
+ $0 = HEAP32[8126]|0;
$1 = ($0|0)>(0);
if ($1) {
- $2 = HEAP32[7786]|0;
+ $2 = HEAP32[7828]|0;
$3 = ($2|0)==(0);
if (!($3)) {
- $4 = HEAP32[7788]|0;
- $5 = HEAP32[(32364)>>2]|0;
+ $4 = HEAP32[7830]|0;
+ $5 = HEAP32[(32532)>>2]|0;
FUNCTION_TABLE_vi[$4 & 31]($5);
}
- $6 = HEAP32[(32368)>>2]|0;
+ $6 = HEAP32[(32536)>>2]|0;
_glBindBuffer(34962,($6|0));
- $7 = HEAP32[8084]|0;
+ $7 = HEAP32[8126]|0;
$8 = ($7*12)|0;
- $9 = HEAP32[(32348)>>2]|0;
+ $9 = HEAP32[(32516)>>2]|0;
_glBufferSubData(34962,0,($8|0),($9|0));
- $10 = HEAP32[(32372)>>2]|0;
+ $10 = HEAP32[(32540)>>2]|0;
_glBindBuffer(34962,($10|0));
- $11 = HEAP32[(32344)>>2]|0;
+ $11 = HEAP32[(32512)>>2]|0;
$12 = $11 << 2;
- $13 = HEAP32[(32356)>>2]|0;
+ $13 = HEAP32[(32524)>>2]|0;
_glBufferSubData(34962,0,($12|0),($13|0));
}
- $14 = HEAP32[8096]|0;
+ $14 = HEAP32[8138]|0;
$15 = ($14|0)>(0);
if ($15) {
- $16 = HEAP32[7786]|0;
+ $16 = HEAP32[7828]|0;
$17 = ($16|0)==(0);
if (!($17)) {
- $18 = HEAP32[7788]|0;
- $19 = HEAP32[(32412)>>2]|0;
+ $18 = HEAP32[7830]|0;
+ $19 = HEAP32[(32580)>>2]|0;
FUNCTION_TABLE_vi[$18 & 31]($19);
}
- $20 = HEAP32[(32416)>>2]|0;
+ $20 = HEAP32[(32584)>>2]|0;
_glBindBuffer(34962,($20|0));
- $21 = HEAP32[8096]|0;
+ $21 = HEAP32[8138]|0;
$22 = ($21*12)|0;
- $23 = HEAP32[(32396)>>2]|0;
+ $23 = HEAP32[(32564)>>2]|0;
_glBufferSubData(34962,0,($22|0),($23|0));
- $24 = HEAP32[(32420)>>2]|0;
+ $24 = HEAP32[(32588)>>2]|0;
_glBindBuffer(34962,($24|0));
- $25 = HEAP32[(32392)>>2]|0;
+ $25 = HEAP32[(32560)>>2]|0;
$26 = $25 << 2;
- $27 = HEAP32[(32404)>>2]|0;
+ $27 = HEAP32[(32572)>>2]|0;
_glBufferSubData(34962,0,($26|0),($27|0));
}
- $28 = HEAP32[8108]|0;
+ $28 = HEAP32[8150]|0;
$29 = ($28|0)>(0);
if ($29) {
- $30 = HEAP32[7786]|0;
+ $30 = HEAP32[7828]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = HEAP32[7788]|0;
- $33 = HEAP32[(32460)>>2]|0;
+ $32 = HEAP32[7830]|0;
+ $33 = HEAP32[(32628)>>2]|0;
FUNCTION_TABLE_vi[$32 & 31]($33);
}
- $34 = HEAP32[(32464)>>2]|0;
+ $34 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($34|0));
- $35 = HEAP32[8108]|0;
+ $35 = HEAP32[8150]|0;
$36 = ($35*12)|0;
- $37 = HEAP32[(32444)>>2]|0;
+ $37 = HEAP32[(32612)>>2]|0;
_glBufferSubData(34962,0,($36|0),($37|0));
- $38 = HEAP32[(32468)>>2]|0;
+ $38 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34962,($38|0));
- $39 = HEAP32[8108]|0;
+ $39 = HEAP32[8150]|0;
$40 = $39 << 3;
- $41 = HEAP32[(32448)>>2]|0;
+ $41 = HEAP32[(32616)>>2]|0;
_glBufferSubData(34962,0,($40|0),($41|0));
- $42 = HEAP32[(32472)>>2]|0;
+ $42 = HEAP32[(32640)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[8108]|0;
+ $43 = HEAP32[8150]|0;
$44 = $43 << 2;
- $45 = HEAP32[(32452)>>2]|0;
+ $45 = HEAP32[(32620)>>2]|0;
_glBufferSubData(34962,0,($44|0),($45|0));
}
- $46 = HEAP32[7786]|0;
+ $46 = HEAP32[7828]|0;
$47 = ($46|0)==(0);
if ($47) {
return;
}
- $48 = HEAP32[7788]|0;
+ $48 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$48 & 31](0);
return;
}
@@ -16292,9 +20514,9 @@ function _DrawDefaultBuffers() {
$0 = sp + 128|0;
$1 = sp + 64|0;
$2 = sp;
- dest=$0; src=31012; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$1; src=31076; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $3 = HEAP32[8171]|0;
+ dest=$0; src=31180; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$1; src=31244; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ $3 = HEAP32[8213]|0;
$4 = ($3|0)!=(0);
$$ = $4 ? 2 : 1;
$$02932 = 0;
@@ -16304,134 +20526,134 @@ function _DrawDefaultBuffers() {
dest=$$byval_copy2; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetStereoView($$02932,$modelview$byval_copy,$$byval_copy2);
}
- $8 = HEAP32[8084]|0;
+ $8 = HEAP32[8126]|0;
$9 = ($8|0)>(0);
- $10 = HEAP32[8096]|0;
+ $10 = HEAP32[8138]|0;
$11 = ($10|0)>(0);
$or$cond = $9 | $11;
- $12 = HEAP32[8108]|0;
+ $12 = HEAP32[8150]|0;
$13 = ($12|0)>(0);
$or$cond3 = $or$cond | $13;
if ($or$cond3) {
- $14 = HEAP32[7808]|0;
+ $14 = HEAP32[7850]|0;
_glUseProgram(($14|0));
- dest=$modelview$byval_copy; src=31076; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$$byval_copy2; src=31012; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$modelview$byval_copy; src=31244; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$$byval_copy2; src=31180; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$modelview$byval_copy,$$byval_copy2);
- $15 = HEAP32[(31260)>>2]|0;
+ $15 = HEAP32[(31428)>>2]|0;
dest=$$byval_copy2; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$16 = (_MatrixToFloat($$byval_copy2)|0);
_glUniformMatrix4fv(($15|0),1,0,($16|0));
- $17 = HEAP32[(31264)>>2]|0;
+ $17 = HEAP32[(31432)>>2]|0;
_glUniform4f(($17|0),1.0,1.0,1.0,1.0);
- $18 = HEAP32[(31276)>>2]|0;
+ $18 = HEAP32[(31444)>>2]|0;
_glUniform1i(($18|0),0);
}
- $19 = HEAP32[8084]|0;
+ $19 = HEAP32[8126]|0;
$20 = ($19|0)>(0);
if ($20) {
- $21 = HEAP32[7793]|0;
+ $21 = HEAP32[7835]|0;
_glBindTexture(3553,($21|0));
- $22 = HEAP32[7786]|0;
+ $22 = HEAP32[7828]|0;
$23 = ($22|0)==(0);
if ($23) {
- $26 = HEAP32[(32368)>>2]|0;
+ $26 = HEAP32[(32536)>>2]|0;
_glBindBuffer(34962,($26|0));
- $27 = HEAP32[(31236)>>2]|0;
+ $27 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($27|0),3,5126,0,0,(0|0));
- $28 = HEAP32[(31236)>>2]|0;
+ $28 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($28|0));
- $29 = HEAP32[(32372)>>2]|0;
+ $29 = HEAP32[(32540)>>2]|0;
_glBindBuffer(34962,($29|0));
- $30 = HEAP32[(31256)>>2]|0;
+ $30 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($30|0),4,5121,1,0,(0|0));
- $31 = HEAP32[(31256)>>2]|0;
+ $31 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($31|0));
} else {
- $24 = HEAP32[7788]|0;
- $25 = HEAP32[(32364)>>2]|0;
+ $24 = HEAP32[7830]|0;
+ $25 = HEAP32[(32532)>>2]|0;
FUNCTION_TABLE_vi[$24 & 31]($25);
}
- $32 = HEAP32[8084]|0;
+ $32 = HEAP32[8126]|0;
_glDrawArrays(1,0,($32|0));
- $33 = HEAP32[7786]|0;
+ $33 = HEAP32[7828]|0;
$34 = ($33|0)==(0);
if ($34) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $35 = HEAP32[8096]|0;
+ $35 = HEAP32[8138]|0;
$36 = ($35|0)>(0);
if ($36) {
- $37 = HEAP32[7793]|0;
+ $37 = HEAP32[7835]|0;
_glBindTexture(3553,($37|0));
- $38 = HEAP32[7786]|0;
+ $38 = HEAP32[7828]|0;
$39 = ($38|0)==(0);
if ($39) {
- $42 = HEAP32[(32416)>>2]|0;
+ $42 = HEAP32[(32584)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[(31236)>>2]|0;
+ $43 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($43|0),3,5126,0,0,(0|0));
- $44 = HEAP32[(31236)>>2]|0;
+ $44 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($44|0));
- $45 = HEAP32[(32420)>>2]|0;
+ $45 = HEAP32[(32588)>>2]|0;
_glBindBuffer(34962,($45|0));
- $46 = HEAP32[(31256)>>2]|0;
+ $46 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($46|0),4,5121,1,0,(0|0));
- $47 = HEAP32[(31256)>>2]|0;
+ $47 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($47|0));
} else {
- $40 = HEAP32[7788]|0;
- $41 = HEAP32[(32412)>>2]|0;
+ $40 = HEAP32[7830]|0;
+ $41 = HEAP32[(32580)>>2]|0;
FUNCTION_TABLE_vi[$40 & 31]($41);
}
- $48 = HEAP32[8096]|0;
+ $48 = HEAP32[8138]|0;
_glDrawArrays(4,0,($48|0));
- $49 = HEAP32[7786]|0;
+ $49 = HEAP32[7828]|0;
$50 = ($49|0)==(0);
if ($50) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $51 = HEAP32[8108]|0;
+ $51 = HEAP32[8150]|0;
$52 = ($51|0)>(0);
if ($52) {
- $53 = HEAP32[7786]|0;
+ $53 = HEAP32[7828]|0;
$54 = ($53|0)==(0);
if ($54) {
- $57 = HEAP32[(32464)>>2]|0;
+ $57 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($57|0));
- $58 = HEAP32[(31236)>>2]|0;
+ $58 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($58|0),3,5126,0,0,(0|0));
- $59 = HEAP32[(31236)>>2]|0;
+ $59 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($59|0));
- $60 = HEAP32[(32468)>>2]|0;
+ $60 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34962,($60|0));
- $61 = HEAP32[(31240)>>2]|0;
+ $61 = HEAP32[(31408)>>2]|0;
_glVertexAttribPointer(($61|0),2,5126,0,0,(0|0));
- $62 = HEAP32[(31240)>>2]|0;
+ $62 = HEAP32[(31408)>>2]|0;
_glEnableVertexAttribArray(($62|0));
- $63 = HEAP32[(32472)>>2]|0;
+ $63 = HEAP32[(32640)>>2]|0;
_glBindBuffer(34962,($63|0));
- $64 = HEAP32[(31256)>>2]|0;
+ $64 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($64|0),4,5121,1,0,(0|0));
- $65 = HEAP32[(31256)>>2]|0;
+ $65 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($65|0));
- $66 = HEAP32[(32476)>>2]|0;
+ $66 = HEAP32[(32644)>>2]|0;
_glBindBuffer(34963,($66|0));
} else {
- $55 = HEAP32[7788]|0;
- $56 = HEAP32[(32460)>>2]|0;
+ $55 = HEAP32[7830]|0;
+ $56 = HEAP32[(32628)>>2]|0;
FUNCTION_TABLE_vi[$55 & 31]($56);
}
- $67 = HEAP32[7824]|0;
+ $67 = HEAP32[7866]|0;
$68 = ($67|0)>(0);
if ($68) {
$$02830 = 0;$$031 = 0;
while(1) {
- $71 = HEAP32[7823]|0;
+ $71 = HEAP32[7865]|0;
$72 = (($71) + (($$031*144)|0)|0);
$73 = HEAP32[$72>>2]|0;
$74 = (($73|0) / 4)&-1;
@@ -16442,14 +20664,14 @@ function _DrawDefaultBuffers() {
$78 = $$02830 << 1;
$79 = $78;
_glDrawElements(4,($75|0),5123,($79|0));
- $80 = HEAP32[7823]|0;
+ $80 = HEAP32[7865]|0;
$81 = (($80) + (($$031*144)|0)|0);
$82 = HEAP32[$81>>2]|0;
$83 = (($82|0) / 4)&-1;
$84 = ($83*6)|0;
$85 = (($84) + ($$02830))|0;
$86 = (($$031) + 1)|0;
- $87 = HEAP32[7824]|0;
+ $87 = HEAP32[7866]|0;
$88 = ($86|0)<($87|0);
if ($88) {
$$02830 = $85;$$031 = $86;
@@ -16458,7 +20680,7 @@ function _DrawDefaultBuffers() {
}
}
}
- $69 = HEAP32[7786]|0;
+ $69 = HEAP32[7828]|0;
$70 = ($69|0)==(0);
if ($70) {
_glBindBuffer(34962,0);
@@ -16466,10 +20688,10 @@ function _DrawDefaultBuffers() {
}
_glBindTexture(3553,0);
}
- $89 = HEAP32[7786]|0;
+ $89 = HEAP32[7828]|0;
$90 = ($89|0)==(0);
if (!($90)) {
- $91 = HEAP32[7788]|0;
+ $91 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$91 & 31](0);
}
_glUseProgram(0);
@@ -16481,22 +20703,22 @@ function _DrawDefaultBuffers() {
break;
}
}
- HEAP32[7824] = 1;
- $5 = HEAP32[7793]|0;
- $6 = HEAP32[7823]|0;
+ HEAP32[7866] = 1;
+ $5 = HEAP32[7835]|0;
+ $6 = HEAP32[7865]|0;
$7 = ((($6)) + 8|0);
HEAP32[$7>>2] = $5;
HEAP32[$6>>2] = 0;
- HEAP32[8084] = 0;
- HEAP32[(32344)>>2] = 0;
- HEAP32[8096] = 0;
- HEAP32[(32392)>>2] = 0;
- HEAP32[8108] = 0;
- HEAP32[(32436)>>2] = 0;
- HEAP32[(32440)>>2] = 0;
- HEAPF32[743] = -1.0;
- dest=31012; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31076; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[8126] = 0;
+ HEAP32[(32512)>>2] = 0;
+ HEAP32[8138] = 0;
+ HEAP32[(32560)>>2] = 0;
+ HEAP32[8150] = 0;
+ HEAP32[(32604)>>2] = 0;
+ HEAP32[(32608)>>2] = 0;
+ HEAPF32[746] = -1.0;
+ dest=31180; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31244; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
}
function _SetStereoView($0,$1,$2) {
@@ -16511,17 +20733,17 @@ function _SetStereoView($0,$1,$2) {
$3 = sp;
$4 = sp + 128|0;
dest=$3; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $5 = HEAP32[8082]|0;
+ $5 = HEAP32[8124]|0;
$6 = Math_imul($5, $0)|0;
$7 = (($6|0) / 2)&-1;
$8 = (($5|0) / 2)&-1;
- $9 = HEAP32[8083]|0;
+ $9 = HEAP32[8125]|0;
_rlViewport($7,0,$8,$9);
- $10 = (32916 + ($0<<6)|0);
+ $10 = (33084 + ($0<<6)|0);
dest=$$byval_copy; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$10; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy3);
- $11 = (32788 + ($0<<6)|0);
+ $11 = (32956 + ($0<<6)|0);
dest=$3; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetMatrixModelview($$byval_copy3);
@@ -16533,14 +20755,14 @@ function _SetMatrixModelview($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31076; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31244; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _SetMatrixProjection($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=31012; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31180; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _rlPushMatrix() {
@@ -16548,43 +20770,43 @@ function _rlPushMatrix() {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- $0 = HEAP32[8261]|0;
+ $0 = HEAP32[8303]|0;
$1 = ($0|0)==(15);
if ($1) {
HEAP32[$vararg_buffer>>2] = 16;
- _TraceLog(1,8307,$vararg_buffer);
+ _TraceLog(1,8075,$vararg_buffer);
}
- $2 = HEAP32[8261]|0;
- $3 = (31304 + ($2<<6)|0);
- $4 = HEAP32[7752]|0;
+ $2 = HEAP32[8303]|0;
+ $3 = (31472 + ($2<<6)|0);
+ $4 = HEAP32[7794]|0;
dest=$3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_rlLoadIdentity();
- $5 = HEAP32[8261]|0;
+ $5 = HEAP32[8303]|0;
$6 = (($5) + 1)|0;
- HEAP32[8261] = $6;
- $7 = HEAP32[7785]|0;
+ HEAP32[8303] = $6;
+ $7 = HEAP32[7827]|0;
$8 = ($7|0)==(5888);
if (!($8)) {
STACKTOP = sp;return;
}
- HEAP32[8262] = 1;
+ HEAP32[8304] = 1;
STACKTOP = sp;return;
}
function _rlPopMatrix() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8261]|0;
+ $0 = HEAP32[8303]|0;
$1 = ($0|0)>(0);
if (!($1)) {
return;
}
- $2 = HEAP32[8261]|0;
+ $2 = HEAP32[8303]|0;
$3 = (($2) + -1)|0;
- $4 = (31304 + ($3<<6)|0);
- $5 = HEAP32[7752]|0;
+ $4 = (31472 + ($3<<6)|0);
+ $5 = HEAP32[7794]|0;
_memmove(($5|0),($4|0),64)|0;
$6 = (($2) + -1)|0;
- HEAP32[8261] = $6;
+ HEAP32[8303] = $6;
return;
}
function _GetFPS() {
@@ -16598,7 +20820,7 @@ function _GetFPS() {
function _GetFrameTime() {
var $0 = 0.0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1763];
+ $0 = +HEAPF64[1782];
$1 = $0;
return (+$1);
}
@@ -16606,28 +20828,28 @@ function _SetConfigFlags($0) {
$0 = $0|0;
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP8[33640] = $0;
+ HEAP8[35960] = $0;
$1 = $0 & 1;
$2 = ($1<<24>>24)==(0);
if (!($2)) {
- HEAP32[7710] = 1;
+ HEAP32[7752] = 1;
}
- $3 = HEAP8[33640]|0;
+ $3 = HEAP8[35960]|0;
$4 = $3 & 2;
$5 = ($4<<24>>24)==(0);
if ($5) {
return;
}
- HEAP32[7747] = 1;
+ HEAP32[7789] = 1;
return;
}
function _IsKeyPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33647 + ($0)|0);
+ $1 = (35967 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (34159 + ($0)|0);
+ $3 = (36479 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -16648,7 +20870,7 @@ function _rlTranslatef($0,$1,$2) {
$4 = sp;
_MatrixTranslate($3,$0,$1,$2);
_MatrixTranspose($3);
- $5 = HEAP32[7752]|0;
+ $5 = HEAP32[7794]|0;
dest=$$byval_copy; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$3; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy1);
@@ -16681,7 +20903,7 @@ function _rlRotatef($0,$1,$2,$3) {
_MatrixRotate($6,$$byval_copy2,$10);
dest=$4; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixTranspose($4);
- $11 = HEAP32[7752]|0;
+ $11 = HEAP32[7794]|0;
dest=$$byval_copy1; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy2; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy1,$$byval_copy2);
@@ -16692,7 +20914,7 @@ function _rlBegin($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7825] = $0;
+ HEAP32[7867] = $0;
return;
}
function _rlEnd() {
@@ -16708,21 +20930,21 @@ function _rlEnd() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$$byval_copy = sp;
- $0 = HEAP32[8262]|0;
+ $0 = HEAP32[8304]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[8263]|0;
+ $2 = HEAP32[8305]|0;
$3 = ($2|0)>(0);
if ($3) {
$$03956 = 0;
while(1) {
- $6 = HEAP32[7822]|0;
+ $6 = HEAP32[7864]|0;
$7 = (($6) + (($$03956*12)|0)|0);
- $8 = HEAP32[7752]|0;
+ $8 = HEAP32[7794]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_VectorTransform($7,$$byval_copy);
$9 = (($$03956) + 1)|0;
- $5 = HEAP32[8263]|0;
+ $5 = HEAP32[8305]|0;
$10 = ($9|0)<($5|0);
if ($10) {
$$03956 = $9;
@@ -16730,12 +20952,12 @@ function _rlEnd() {
break;
}
}
- HEAP32[8262] = 0;
+ HEAP32[8304] = 0;
$4 = ($5|0)>(0);
if ($4) {
$$04154 = 0;
while(1) {
- $11 = HEAP32[7822]|0;
+ $11 = HEAP32[7864]|0;
$12 = (($11) + (($$04154*12)|0)|0);
$13 = +HEAPF32[$12>>2];
$14 = (((($11) + (($$04154*12)|0)|0)) + 4|0);
@@ -16744,7 +20966,7 @@ function _rlEnd() {
$17 = +HEAPF32[$16>>2];
_rlVertex3f($13,$15,$17);
$18 = (($$04154) + 1)|0;
- $19 = HEAP32[8263]|0;
+ $19 = HEAP32[8305]|0;
$20 = ($18|0)<($19|0);
if ($20) {
$$04154 = $18;
@@ -16754,20 +20976,20 @@ function _rlEnd() {
}
}
} else {
- HEAP32[8262] = 0;
+ HEAP32[8304] = 0;
}
- HEAP32[8263] = 0;
+ HEAP32[8305] = 0;
}
- $21 = HEAP32[7825]|0;
+ $21 = HEAP32[7867]|0;
switch ($21|0) {
case 1: {
- $22 = HEAP32[8084]|0;
- $23 = HEAP32[(32344)>>2]|0;
+ $22 = HEAP32[8126]|0;
+ $23 = HEAP32[(32512)>>2]|0;
$24 = ($22|0)==($23|0);
if ($24) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$25 = (($22) - ($23))|0;
@@ -16775,22 +20997,22 @@ function _rlEnd() {
if ($26) {
$$04347 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $27 = HEAP32[(32356)>>2]|0;
- $28 = HEAP32[(32344)>>2]|0;
+ $27 = HEAP32[(32524)>>2]|0;
+ $28 = HEAP32[(32512)>>2]|0;
$29 = $28 << 2;
$30 = (($29) + -4)|0;
$31 = (($27) + ($30)|0);
$32 = HEAP8[$31>>0]|0;
$33 = (($27) + ($29)|0);
HEAP8[$33>>0] = $32;
- $34 = HEAP32[(32356)>>2]|0;
- $35 = HEAP32[(32344)>>2]|0;
+ $34 = HEAP32[(32524)>>2]|0;
+ $35 = HEAP32[(32512)>>2]|0;
$36 = $35 << 2;
$37 = (($36) + -3)|0;
$38 = (($34) + ($37)|0);
@@ -16798,8 +21020,8 @@ function _rlEnd() {
$40 = $36 | 1;
$41 = (($34) + ($40)|0);
HEAP8[$41>>0] = $39;
- $42 = HEAP32[(32356)>>2]|0;
- $43 = HEAP32[(32344)>>2]|0;
+ $42 = HEAP32[(32524)>>2]|0;
+ $43 = HEAP32[(32512)>>2]|0;
$44 = $43 << 2;
$45 = (($44) + -2)|0;
$46 = (($42) + ($45)|0);
@@ -16807,8 +21029,8 @@ function _rlEnd() {
$48 = $44 | 2;
$49 = (($42) + ($48)|0);
HEAP8[$49>>0] = $47;
- $50 = HEAP32[(32356)>>2]|0;
- $51 = HEAP32[(32344)>>2]|0;
+ $50 = HEAP32[(32524)>>2]|0;
+ $51 = HEAP32[(32512)>>2]|0;
$52 = $51 << 2;
$53 = (($52) + -1)|0;
$54 = (($50) + ($53)|0);
@@ -16816,9 +21038,9 @@ function _rlEnd() {
$56 = $52 | 3;
$57 = (($50) + ($56)|0);
HEAP8[$57>>0] = $55;
- $58 = HEAP32[(32344)>>2]|0;
+ $58 = HEAP32[(32512)>>2]|0;
$59 = (($58) + 1)|0;
- HEAP32[(32344)>>2] = $59;
+ HEAP32[(32512)>>2] = $59;
$60 = (($$04347) + 1)|0;
$exitcond = ($60|0)==($25|0);
if ($exitcond) {
@@ -16827,20 +21049,20 @@ function _rlEnd() {
$$04347 = $60;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 4: {
- $61 = HEAP32[8096]|0;
- $62 = HEAP32[(32392)>>2]|0;
+ $61 = HEAP32[8138]|0;
+ $62 = HEAP32[(32560)>>2]|0;
$63 = ($61|0)==($62|0);
if ($63) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$64 = (($61) - ($62))|0;
@@ -16848,22 +21070,22 @@ function _rlEnd() {
if ($65) {
$$04248 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $66 = HEAP32[(32404)>>2]|0;
- $67 = HEAP32[(32392)>>2]|0;
+ $66 = HEAP32[(32572)>>2]|0;
+ $67 = HEAP32[(32560)>>2]|0;
$68 = $67 << 2;
$69 = (($68) + -4)|0;
$70 = (($66) + ($69)|0);
$71 = HEAP8[$70>>0]|0;
$72 = (($66) + ($68)|0);
HEAP8[$72>>0] = $71;
- $73 = HEAP32[(32404)>>2]|0;
- $74 = HEAP32[(32392)>>2]|0;
+ $73 = HEAP32[(32572)>>2]|0;
+ $74 = HEAP32[(32560)>>2]|0;
$75 = $74 << 2;
$76 = (($75) + -3)|0;
$77 = (($73) + ($76)|0);
@@ -16871,8 +21093,8 @@ function _rlEnd() {
$79 = $75 | 1;
$80 = (($73) + ($79)|0);
HEAP8[$80>>0] = $78;
- $81 = HEAP32[(32404)>>2]|0;
- $82 = HEAP32[(32392)>>2]|0;
+ $81 = HEAP32[(32572)>>2]|0;
+ $82 = HEAP32[(32560)>>2]|0;
$83 = $82 << 2;
$84 = (($83) + -2)|0;
$85 = (($81) + ($84)|0);
@@ -16880,8 +21102,8 @@ function _rlEnd() {
$87 = $83 | 2;
$88 = (($81) + ($87)|0);
HEAP8[$88>>0] = $86;
- $89 = HEAP32[(32404)>>2]|0;
- $90 = HEAP32[(32392)>>2]|0;
+ $89 = HEAP32[(32572)>>2]|0;
+ $90 = HEAP32[(32560)>>2]|0;
$91 = $90 << 2;
$92 = (($91) + -1)|0;
$93 = (($89) + ($92)|0);
@@ -16889,9 +21111,9 @@ function _rlEnd() {
$95 = $91 | 3;
$96 = (($89) + ($95)|0);
HEAP8[$96>>0] = $94;
- $97 = HEAP32[(32392)>>2]|0;
+ $97 = HEAP32[(32560)>>2]|0;
$98 = (($97) + 1)|0;
- HEAP32[(32392)>>2] = $98;
+ HEAP32[(32560)>>2] = $98;
$99 = (($$04248) + 1)|0;
$exitcond60 = ($99|0)==($64|0);
if ($exitcond60) {
@@ -16900,15 +21122,15 @@ function _rlEnd() {
$$04248 = $99;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 7: {
- $100 = HEAP32[8108]|0;
- $101 = HEAP32[(32440)>>2]|0;
+ $100 = HEAP32[8150]|0;
+ $101 = HEAP32[(32608)>>2]|0;
$102 = ($100|0)==($101|0);
if (!($102)) {
$103 = (($100) - ($101))|0;
@@ -16916,16 +21138,16 @@ function _rlEnd() {
if ($104) {
$$04052 = 0;
while(1) {
- $105 = HEAP32[(32452)>>2]|0;
- $106 = HEAP32[(32440)>>2]|0;
+ $105 = HEAP32[(32620)>>2]|0;
+ $106 = HEAP32[(32608)>>2]|0;
$107 = $106 << 2;
$108 = (($107) + -4)|0;
$109 = (($105) + ($108)|0);
$110 = HEAP8[$109>>0]|0;
$111 = (($105) + ($107)|0);
HEAP8[$111>>0] = $110;
- $112 = HEAP32[(32452)>>2]|0;
- $113 = HEAP32[(32440)>>2]|0;
+ $112 = HEAP32[(32620)>>2]|0;
+ $113 = HEAP32[(32608)>>2]|0;
$114 = $113 << 2;
$115 = (($114) + -3)|0;
$116 = (($112) + ($115)|0);
@@ -16933,8 +21155,8 @@ function _rlEnd() {
$118 = $114 | 1;
$119 = (($112) + ($118)|0);
HEAP8[$119>>0] = $117;
- $120 = HEAP32[(32452)>>2]|0;
- $121 = HEAP32[(32440)>>2]|0;
+ $120 = HEAP32[(32620)>>2]|0;
+ $121 = HEAP32[(32608)>>2]|0;
$122 = $121 << 2;
$123 = (($122) + -2)|0;
$124 = (($120) + ($123)|0);
@@ -16942,8 +21164,8 @@ function _rlEnd() {
$126 = $122 | 2;
$127 = (($120) + ($126)|0);
HEAP8[$127>>0] = $125;
- $128 = HEAP32[(32452)>>2]|0;
- $129 = HEAP32[(32440)>>2]|0;
+ $128 = HEAP32[(32620)>>2]|0;
+ $129 = HEAP32[(32608)>>2]|0;
$130 = $129 << 2;
$131 = (($130) + -1)|0;
$132 = (($128) + ($131)|0);
@@ -16951,9 +21173,9 @@ function _rlEnd() {
$134 = $130 | 3;
$135 = (($128) + ($134)|0);
HEAP8[$135>>0] = $133;
- $136 = HEAP32[(32440)>>2]|0;
+ $136 = HEAP32[(32608)>>2]|0;
$137 = (($136) + 1)|0;
- HEAP32[(32440)>>2] = $137;
+ HEAP32[(32608)>>2] = $137;
$138 = (($$04052) + 1)|0;
$exitcond63 = ($138|0)==($103|0);
if ($exitcond63) {
@@ -16964,17 +21186,17 @@ function _rlEnd() {
}
}
}
- $139 = HEAP32[8108]|0;
- $140 = HEAP32[(32436)>>2]|0;
+ $139 = HEAP32[8150]|0;
+ $140 = HEAP32[(32604)>>2]|0;
$141 = ($139|0)>($140|0);
if (!($141)) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
- $142 = HEAP32[(32448)>>2]|0;
- $$promoted = HEAP32[(32436)>>2]|0;
+ $142 = HEAP32[(32616)>>2]|0;
+ $$promoted = HEAP32[(32604)>>2]|0;
$143 = $$promoted << 1;
$scevgep = (($142) + ($143<<2)|0);
$144 = (($139) - ($140))|0;
@@ -16982,17 +21204,17 @@ function _rlEnd() {
_memset(($scevgep|0),0,($145|0))|0;
$146 = (($139) + ($$promoted))|0;
$147 = (($146) - ($140))|0;
- HEAP32[(32436)>>2] = $147;
- $148 = +HEAPF32[743];
+ HEAP32[(32604)>>2] = $147;
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
default: {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
}
@@ -17009,11 +21231,11 @@ function _rlVertex3f($0,$1,$2) {
$vararg_buffer3 = sp + 16|0;
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
- $3 = HEAP32[8262]|0;
+ $3 = HEAP32[8304]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7822]|0;
- $6 = HEAP32[8263]|0;
+ $5 = HEAP32[7864]|0;
+ $6 = HEAP32[8305]|0;
$7 = (($5) + (($6*12)|0)|0);
HEAPF32[$7>>2] = $0;
$8 = (((($5) + (($6*12)|0)|0)) + 4|0);
@@ -17021,16 +21243,16 @@ function _rlVertex3f($0,$1,$2) {
$9 = (((($5) + (($6*12)|0)|0)) + 8|0);
HEAPF32[$9>>2] = $2;
$10 = (($6) + 1)|0;
- HEAP32[8263] = $10;
+ HEAP32[8305] = $10;
STACKTOP = sp;return;
}
- $11 = HEAP32[7825]|0;
+ $11 = HEAP32[7867]|0;
switch ($11|0) {
case 1: {
- $12 = HEAP32[8084]|0;
+ $12 = HEAP32[8126]|0;
$13 = ($12|0)<(2048);
if ($13) {
- $14 = HEAP32[(32348)>>2]|0;
+ $14 = HEAP32[(32516)>>2]|0;
$15 = ($12*3)|0;
$16 = (($14) + ($15<<2)|0);
HEAPF32[$16>>2] = $0;
@@ -17041,19 +21263,19 @@ function _rlVertex3f($0,$1,$2) {
$20 = (($14) + ($19<<2)|0);
HEAPF32[$20>>2] = $2;
$21 = (($12) + 1)|0;
- HEAP32[8084] = $21;
+ HEAP32[8126] = $21;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8345,$vararg_buffer);
+ _TraceLog(1,8113,$vararg_buffer);
STACKTOP = sp;return;
}
break;
}
case 4: {
- $22 = HEAP32[8096]|0;
+ $22 = HEAP32[8138]|0;
$23 = ($22|0)<(6144);
if ($23) {
- $24 = HEAP32[(32396)>>2]|0;
+ $24 = HEAP32[(32564)>>2]|0;
$25 = ($22*3)|0;
$26 = (($24) + ($25<<2)|0);
HEAPF32[$26>>2] = $0;
@@ -17064,19 +21286,19 @@ function _rlVertex3f($0,$1,$2) {
$30 = (($24) + ($29<<2)|0);
HEAPF32[$30>>2] = $2;
$31 = (($22) + 1)|0;
- HEAP32[8096] = $31;
+ HEAP32[8138] = $31;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8370,$vararg_buffer1);
+ _TraceLog(1,8138,$vararg_buffer1);
STACKTOP = sp;return;
}
break;
}
case 7: {
- $32 = HEAP32[8108]|0;
+ $32 = HEAP32[8150]|0;
$33 = ($32|0)<(4096);
if ($33) {
- $34 = HEAP32[(32444)>>2]|0;
+ $34 = HEAP32[(32612)>>2]|0;
$35 = ($32*3)|0;
$36 = (($34) + ($35<<2)|0);
HEAPF32[$36>>2] = $0;
@@ -17087,9 +21309,9 @@ function _rlVertex3f($0,$1,$2) {
$40 = (($34) + ($39<<2)|0);
HEAPF32[$40>>2] = $2;
$41 = (($32) + 1)|0;
- HEAP32[8108] = $41;
- $42 = HEAP32[7823]|0;
- $43 = HEAP32[7824]|0;
+ HEAP32[8150] = $41;
+ $42 = HEAP32[7865]|0;
+ $43 = HEAP32[7866]|0;
$44 = (($43) + -1)|0;
$45 = (($42) + (($44*144)|0)|0);
$46 = HEAP32[$45>>2]|0;
@@ -17097,7 +21319,7 @@ function _rlVertex3f($0,$1,$2) {
HEAP32[$45>>2] = $47;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8399,$vararg_buffer3);
+ _TraceLog(1,8167,$vararg_buffer3);
STACKTOP = sp;return;
}
break;
@@ -17112,7 +21334,7 @@ function _rlVertex2f($0,$1) {
$1 = +$1;
var $2 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = +HEAPF32[743];
+ $2 = +HEAPF32[746];
_rlVertex3f($0,$1,$2);
return;
}
@@ -17121,13 +21343,13 @@ function _rlTexCoord2f($0,$1) {
$1 = +$1;
var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[7825]|0;
+ $2 = HEAP32[7867]|0;
$3 = ($2|0)==(7);
if (!($3)) {
return;
}
- $4 = HEAP32[(32448)>>2]|0;
- $5 = HEAP32[(32436)>>2]|0;
+ $4 = HEAP32[(32616)>>2]|0;
+ $5 = HEAP32[(32604)>>2]|0;
$6 = $5 << 1;
$7 = (($4) + ($6<<2)|0);
HEAPF32[$7>>2] = $0;
@@ -17135,7 +21357,7 @@ function _rlTexCoord2f($0,$1) {
$9 = (($4) + ($8<<2)|0);
HEAPF32[$9>>2] = $1;
$10 = (($5) + 1)|0;
- HEAP32[(32436)>>2] = $10;
+ HEAP32[(32604)>>2] = $10;
return;
}
function _rlNormal3f($0,$1,$2) {
@@ -17154,18 +21376,18 @@ function _rlColor4ub($0,$1,$2,$3) {
var $$sink37 = 0, $$sink38 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $4 = 0, $5 = 0;
var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $4 = HEAP32[7825]|0;
+ $4 = HEAP32[7867]|0;
switch ($4|0) {
case 1: {
- $$sink37 = (32344);$$sink38 = (32356);
+ $$sink37 = (32512);$$sink38 = (32524);
break;
}
case 4: {
- $$sink37 = (32392);$$sink38 = (32404);
+ $$sink37 = (32560);$$sink38 = (32572);
break;
}
case 7: {
- $$sink37 = (32440);$$sink38 = (32452);
+ $$sink37 = (32608);$$sink38 = (32620);
break;
}
default: {
@@ -17204,8 +21426,8 @@ function _rlEnableTexture($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[7823]|0;
- $2 = HEAP32[7824]|0;
+ $1 = HEAP32[7865]|0;
+ $2 = HEAP32[7866]|0;
$3 = (($2) + -1)|0;
$4 = (((($1) + (($3*144)|0)|0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
@@ -17218,9 +21440,9 @@ function _rlEnableTexture($0) {
$9 = ($8|0)>(0);
if ($9) {
$10 = (($2) + 1)|0;
- HEAP32[7824] = $10;
+ HEAP32[7866] = $10;
}
- $11 = HEAP32[7824]|0;
+ $11 = HEAP32[7866]|0;
$12 = (($11) + -1)|0;
$13 = (((($1) + (($12*144)|0)|0)) + 8|0);
HEAP32[$13>>2] = $0;
@@ -17231,7 +21453,7 @@ function _rlEnableTexture($0) {
function _rlDisableTexture() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8108]|0;
+ $0 = HEAP32[8150]|0;
$1 = ($0|0)>(4095);
if (!($1)) {
return;
@@ -17269,7 +21491,7 @@ function _GetDefaultFont($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- ;HEAP32[$0>>2]=HEAP32[30860>>2]|0;HEAP32[$0+4>>2]=HEAP32[30860+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[30860+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[30860+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[30860+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[30860+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[30860+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[30860+28>>2]|0;
+ ;HEAP32[$0>>2]=HEAP32[31028>>2]|0;HEAP32[$0+4>>2]=HEAP32[31028+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[31028+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[31028+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[31028+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[31028+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[31028+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[31028+28>>2]|0;
return;
}
function _MeasureTextEx($0,$1,$2,$3,$4) {
@@ -17745,8 +21967,8 @@ function _FormatText($0,$varargs) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
HEAP32[$1>>2] = $varargs;
- (_vsprintf(34927,$0,$1)|0);
- STACKTOP = sp;return (34927|0);
+ (_vsprintf(37247,$0,$1)|0);
+ STACKTOP = sp;return (37247|0);
}
function _MeasureText($0,$1) {
$0 = $0|0;
@@ -17785,22 +22007,22 @@ function _DrawFPS($0,$1) {
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$$byval_copy = sp;
$2 = sp + 4|0;
- $3 = HEAP32[8264]|0;
- $4 = HEAP32[744]|0;
+ $3 = HEAP32[8306]|0;
+ $4 = HEAP32[747]|0;
$5 = ($3|0)<($4|0);
if ($5) {
$6 = (($3) + 1)|0;
$$sink = $6;
} else {
$7 = (_GetFPS()|0);
- HEAP32[8265] = $7;
- HEAP32[744] = $7;
+ HEAP32[8307] = $7;
+ HEAP32[747] = $7;
$$sink = 0;
}
- HEAP32[8264] = $$sink;
- $8 = HEAP32[8265]|0;
+ HEAP32[8306] = $$sink;
+ $8 = HEAP32[8307]|0;
HEAP32[$$byval_copy>>2] = $8;
- (_FormatText(8424,$$byval_copy)|0);
+ (_FormatText(8192,$$byval_copy)|0);
HEAP8[$2>>0] = 0;
$9 = ((($2)) + 1|0);
HEAP8[$9>>0] = -98;
@@ -17809,7 +22031,7 @@ function _DrawFPS($0,$1) {
$11 = ((($2)) + 3|0);
HEAP8[$11>>0] = -1;
;HEAP8[$$byval_copy>>0]=HEAP8[$2>>0]|0;HEAP8[$$byval_copy+1>>0]=HEAP8[$2+1>>0]|0;HEAP8[$$byval_copy+2>>0]=HEAP8[$2+2>>0]|0;HEAP8[$$byval_copy+3>>0]=HEAP8[$2+3>>0]|0;
- _DrawText(34927,$0,$1,20,$$byval_copy);
+ _DrawText(37247,$0,$1,20,$$byval_copy);
STACKTOP = sp;return;
}
function _emscripten_GetProcAddress($0) {
@@ -17858,7 +22080,7 @@ function _emscripten_GetProcAddress($0) {
$10 = HEAP32[$2>>2]|0;
(_strcpy($9,$10)|0);
$11 = HEAP32[$3>>2]|0;
- $12 = (_strstr($11,8432)|0);
+ $12 = (_strstr($11,8200)|0);
HEAP32[$4>>2] = $12;
$13 = HEAP32[$4>>2]|0;
$14 = ($13|0)!=(0|0);
@@ -17867,7 +22089,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$15>>0] = 0;
}
$16 = HEAP32[$3>>2]|0;
- $17 = (_strstr($16,8436)|0);
+ $17 = (_strstr($16,8204)|0);
HEAP32[$4>>2] = $17;
$18 = HEAP32[$4>>2]|0;
$19 = ($18|0)!=(0|0);
@@ -17876,7 +22098,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$20>>0] = 0;
}
$21 = HEAP32[$3>>2]|0;
- $22 = (_strstr($21,8440)|0);
+ $22 = (_strstr($21,8208)|0);
HEAP32[$4>>2] = $22;
$23 = HEAP32[$4>>2]|0;
$24 = ($23|0)!=(0|0);
@@ -17885,7 +22107,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$25>>0] = 0;
}
$26 = HEAP32[$3>>2]|0;
- $27 = (_strstr($26,8444)|0);
+ $27 = (_strstr($26,8212)|0);
HEAP32[$4>>2] = $27;
$28 = HEAP32[$4>>2]|0;
$29 = ($28|0)!=(0|0);
@@ -17894,1210 +22116,1210 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$30>>0] = 0;
}
$31 = HEAP32[$3>>2]|0;
- $32 = (_strcmp($31,8450)|0);
+ $32 = (_strcmp($31,8218)|0);
$33 = ($32|0)!=(0);
do {
if ($33) {
$34 = HEAP32[$3>>2]|0;
- $35 = (_strcmp($34,8488)|0);
+ $35 = (_strcmp($34,8256)|0);
$36 = ($35|0)!=(0);
if (!($36)) {
- HEAP32[$3>>2] = 8507;
+ HEAP32[$3>>2] = 8275;
break;
}
$37 = HEAP32[$3>>2]|0;
- $38 = (_strcmp($37,8520)|0);
+ $38 = (_strcmp($37,8288)|0);
$39 = ($38|0)!=(0);
if (!($39)) {
- HEAP32[$3>>2] = 8541;
+ HEAP32[$3>>2] = 8309;
break;
}
$40 = HEAP32[$3>>2]|0;
- $41 = (_strcmp($40,8556)|0);
+ $41 = (_strcmp($40,8324)|0);
$42 = ($41|0)!=(0);
if (!($42)) {
- HEAP32[$3>>2] = 8571;
+ HEAP32[$3>>2] = 8339;
break;
}
$43 = HEAP32[$3>>2]|0;
- $44 = (_strcmp($43,8586)|0);
+ $44 = (_strcmp($43,8354)|0);
$45 = ($44|0)!=(0);
if (!($45)) {
- HEAP32[$3>>2] = 8601;
+ HEAP32[$3>>2] = 8369;
}
} else {
- HEAP32[$3>>2] = 8472;
+ HEAP32[$3>>2] = 8240;
}
} while(0);
$46 = HEAP32[$3>>2]|0;
- $47 = (_strcmp($46,8616)|0);
+ $47 = (_strcmp($46,8384)|0);
$48 = ($47|0)!=(0);
do {
if ($48) {
$49 = HEAP32[$3>>2]|0;
- $50 = (_strcmp($49,8630)|0);
+ $50 = (_strcmp($49,8398)|0);
$51 = ($50|0)!=(0);
if (!($51)) {
HEAP32[$1>>2] = 3;
break;
}
$52 = HEAP32[$3>>2]|0;
- $53 = (_strcmp($52,8642)|0);
+ $53 = (_strcmp($52,8410)|0);
$54 = ($53|0)!=(0);
if (!($54)) {
HEAP32[$1>>2] = 6;
break;
}
$55 = HEAP32[$3>>2]|0;
- $56 = (_strcmp($55,8656)|0);
+ $56 = (_strcmp($55,8424)|0);
$57 = ($56|0)!=(0);
if (!($57)) {
HEAP32[$1>>2] = 7;
break;
}
$58 = HEAP32[$3>>2]|0;
- $59 = (_strcmp($58,8668)|0);
+ $59 = (_strcmp($58,8436)|0);
$60 = ($59|0)!=(0);
if (!($60)) {
HEAP32[$1>>2] = 8;
break;
}
$61 = HEAP32[$3>>2]|0;
- $62 = (_strcmp($61,8682)|0);
+ $62 = (_strcmp($61,8450)|0);
$63 = ($62|0)!=(0);
if (!($63)) {
HEAP32[$1>>2] = 9;
break;
}
$64 = HEAP32[$3>>2]|0;
- $65 = (_strcmp($64,8696)|0);
+ $65 = (_strcmp($64,8464)|0);
$66 = ($65|0)!=(0);
if (!($66)) {
HEAP32[$1>>2] = 10;
break;
}
$67 = HEAP32[$3>>2]|0;
- $68 = (_strcmp($67,8713)|0);
+ $68 = (_strcmp($67,8481)|0);
$69 = ($68|0)!=(0);
if (!($69)) {
HEAP32[$1>>2] = 1;
break;
}
$70 = HEAP32[$3>>2]|0;
- $71 = (_strcmp($70,8736)|0);
+ $71 = (_strcmp($70,8504)|0);
$72 = ($71|0)!=(0);
if (!($72)) {
HEAP32[$1>>2] = 1;
break;
}
$73 = HEAP32[$3>>2]|0;
- $74 = (_strcmp($73,8762)|0);
+ $74 = (_strcmp($73,8530)|0);
$75 = ($74|0)!=(0);
if (!($75)) {
HEAP32[$1>>2] = 2;
break;
}
$76 = HEAP32[$3>>2]|0;
- $77 = (_strcmp($76,8775)|0);
+ $77 = (_strcmp($76,8543)|0);
$78 = ($77|0)!=(0);
if (!($78)) {
HEAP32[$1>>2] = 3;
break;
}
$79 = HEAP32[$3>>2]|0;
- $80 = (_strcmp($79,8791)|0);
+ $80 = (_strcmp($79,8559)|0);
$81 = ($80|0)!=(0);
if (!($81)) {
HEAP32[$1>>2] = 1;
break;
}
$82 = HEAP32[$3>>2]|0;
- $83 = (_strcmp($82,8804)|0);
+ $83 = (_strcmp($82,8572)|0);
$84 = ($83|0)!=(0);
if (!($84)) {
HEAP32[$1>>2] = 11;
break;
}
$85 = HEAP32[$3>>2]|0;
- $86 = (_strcmp($85,8818)|0);
+ $86 = (_strcmp($85,8586)|0);
$87 = ($86|0)!=(0);
if (!($87)) {
HEAP32[$1>>2] = 2;
break;
}
$88 = HEAP32[$3>>2]|0;
- $89 = (_strcmp($88,8838)|0);
+ $89 = (_strcmp($88,8606)|0);
$90 = ($89|0)!=(0);
if (!($90)) {
HEAP32[$1>>2] = 3;
break;
}
$91 = HEAP32[$3>>2]|0;
- $92 = (_strcmp($91,8858)|0);
+ $92 = (_strcmp($91,8626)|0);
$93 = ($92|0)!=(0);
if (!($93)) {
HEAP32[$1>>2] = 4;
break;
}
$94 = HEAP32[$3>>2]|0;
- $95 = (_strcmp($94,8875)|0);
+ $95 = (_strcmp($94,8643)|0);
$96 = ($95|0)!=(0);
if (!($96)) {
HEAP32[$1>>2] = 5;
break;
}
$97 = HEAP32[$3>>2]|0;
- $98 = (_strcmp($97,8892)|0);
+ $98 = (_strcmp($97,8660)|0);
$99 = ($98|0)!=(0);
if (!($99)) {
HEAP32[$1>>2] = 4;
break;
}
$100 = HEAP32[$3>>2]|0;
- $101 = (_strcmp($100,8904)|0);
+ $101 = (_strcmp($100,8672)|0);
$102 = ($101|0)!=(0);
if (!($102)) {
HEAP32[$1>>2] = 12;
break;
}
$103 = HEAP32[$3>>2]|0;
- $104 = (_strcmp($103,8917)|0);
+ $104 = (_strcmp($103,8685)|0);
$105 = ($104|0)!=(0);
if (!($105)) {
HEAP32[$1>>2] = 13;
break;
}
$106 = HEAP32[$3>>2]|0;
- $107 = (_strcmp($106,8933)|0);
+ $107 = (_strcmp($106,8701)|0);
$108 = ($107|0)!=(0);
if (!($108)) {
HEAP32[$1>>2] = 6;
break;
}
$109 = HEAP32[$3>>2]|0;
- $110 = (_strcmp($109,8956)|0);
+ $110 = (_strcmp($109,8724)|0);
$111 = ($110|0)!=(0);
if (!($111)) {
HEAP32[$1>>2] = 2;
break;
}
$112 = HEAP32[$3>>2]|0;
- $113 = (_strcmp($112,8969)|0);
+ $113 = (_strcmp($112,8737)|0);
$114 = ($113|0)!=(0);
if (!($114)) {
HEAP32[$1>>2] = 3;
break;
}
$115 = HEAP32[$3>>2]|0;
- $116 = (_strcmp($115,8985)|0);
+ $116 = (_strcmp($115,8753)|0);
$117 = ($116|0)!=(0);
if (!($117)) {
HEAP32[$1>>2] = 5;
break;
}
$118 = HEAP32[$3>>2]|0;
- $119 = (_strcmp($118,8996)|0);
+ $119 = (_strcmp($118,8764)|0);
$120 = ($119|0)!=(0);
if (!($120)) {
HEAP32[$1>>2] = 14;
break;
}
$121 = HEAP32[$3>>2]|0;
- $122 = (_strcmp($121,9015)|0);
+ $122 = (_strcmp($121,8783)|0);
$123 = ($122|0)!=(0);
if (!($123)) {
HEAP32[$1>>2] = 15;
break;
}
$124 = HEAP32[$3>>2]|0;
- $125 = (_strcmp($124,9037)|0);
+ $125 = (_strcmp($124,8805)|0);
$126 = ($125|0)!=(0);
if (!($126)) {
HEAP32[$1>>2] = 16;
break;
}
$127 = HEAP32[$3>>2]|0;
- $128 = (_strcmp($127,9056)|0);
+ $128 = (_strcmp($127,8824)|0);
$129 = ($128|0)!=(0);
if (!($129)) {
HEAP32[$1>>2] = 7;
break;
}
$130 = HEAP32[$3>>2]|0;
- $131 = (_strcmp($130,9085)|0);
+ $131 = (_strcmp($130,8853)|0);
$132 = ($131|0)!=(0);
if (!($132)) {
HEAP32[$1>>2] = 6;
break;
}
$133 = HEAP32[$3>>2]|0;
- $134 = (_strcmp($133,9102)|0);
+ $134 = (_strcmp($133,8870)|0);
$135 = ($134|0)!=(0);
if (!($135)) {
HEAP32[$1>>2] = 8;
break;
}
$136 = HEAP32[$3>>2]|0;
- $137 = (_strcmp($136,9117)|0);
+ $137 = (_strcmp($136,8885)|0);
$138 = ($137|0)!=(0);
if (!($138)) {
HEAP32[$1>>2] = 9;
break;
}
$139 = HEAP32[$3>>2]|0;
- $140 = (_strcmp($139,9132)|0);
+ $140 = (_strcmp($139,8900)|0);
$141 = ($140|0)!=(0);
if (!($141)) {
HEAP32[$1>>2] = 1;
break;
}
$142 = HEAP32[$3>>2]|0;
- $143 = (_strcmp($142,9153)|0);
+ $143 = (_strcmp($142,8921)|0);
$144 = ($143|0)!=(0);
if (!($144)) {
HEAP32[$1>>2] = 10;
break;
}
$145 = HEAP32[$3>>2]|0;
- $146 = (_strcmp($145,9173)|0);
+ $146 = (_strcmp($145,8941)|0);
$147 = ($146|0)!=(0);
if (!($147)) {
HEAP32[$1>>2] = 11;
break;
}
$148 = HEAP32[$3>>2]|0;
- $149 = (_strcmp($148,9193)|0);
+ $149 = (_strcmp($148,8961)|0);
$150 = ($149|0)!=(0);
if (!($150)) {
HEAP32[$1>>2] = 12;
break;
}
$151 = HEAP32[$3>>2]|0;
- $152 = (_strcmp($151,9219)|0);
+ $152 = (_strcmp($151,8987)|0);
$153 = ($152|0)!=(0);
if (!($153)) {
HEAP32[$1>>2] = 2;
break;
}
$154 = HEAP32[$3>>2]|0;
- $155 = (_strcmp($154,9238)|0);
+ $155 = (_strcmp($154,9006)|0);
$156 = ($155|0)!=(0);
if (!($156)) {
HEAP32[$1>>2] = 1;
break;
}
$157 = HEAP32[$3>>2]|0;
- $158 = (_strcmp($157,9250)|0);
+ $158 = (_strcmp($157,9018)|0);
$159 = ($158|0)!=(0);
if (!($159)) {
HEAP32[$1>>2] = 3;
break;
}
$160 = HEAP32[$3>>2]|0;
- $161 = (_strcmp($160,9262)|0);
+ $161 = (_strcmp($160,9030)|0);
$162 = ($161|0)!=(0);
if (!($162)) {
HEAP32[$1>>2] = 1;
break;
}
$163 = HEAP32[$3>>2]|0;
- $164 = (_strcmp($163,9274)|0);
+ $164 = (_strcmp($163,9042)|0);
$165 = ($164|0)!=(0);
if (!($165)) {
HEAP32[$1>>2] = 1;
break;
}
$166 = HEAP32[$3>>2]|0;
- $167 = (_strcmp($166,9286)|0);
+ $167 = (_strcmp($166,9054)|0);
$168 = ($167|0)!=(0);
if (!($168)) {
HEAP32[$1>>2] = 17;
break;
}
$169 = HEAP32[$3>>2]|0;
- $170 = (_strcmp($169,9298)|0);
+ $170 = (_strcmp($169,9066)|0);
$171 = ($170|0)!=(0);
if (!($171)) {
HEAP32[$1>>2] = 13;
break;
}
$172 = HEAP32[$3>>2]|0;
- $173 = (_strcmp($172,9310)|0);
+ $173 = (_strcmp($172,9078)|0);
$174 = ($173|0)!=(0);
if (!($174)) {
HEAP32[$1>>2] = 4;
break;
}
$175 = HEAP32[$3>>2]|0;
- $176 = (_strcmp($175,9322)|0);
+ $176 = (_strcmp($175,9090)|0);
$177 = ($176|0)!=(0);
if (!($177)) {
HEAP32[$1>>2] = 2;
break;
}
$178 = HEAP32[$3>>2]|0;
- $179 = (_strcmp($178,9334)|0);
+ $179 = (_strcmp($178,9102)|0);
$180 = ($179|0)!=(0);
if (!($180)) {
HEAP32[$1>>2] = 14;
break;
}
$181 = HEAP32[$3>>2]|0;
- $182 = (_strcmp($181,9347)|0);
+ $182 = (_strcmp($181,9115)|0);
$183 = ($182|0)!=(0);
if (!($183)) {
HEAP32[$1>>2] = 15;
break;
}
$184 = HEAP32[$3>>2]|0;
- $185 = (_strcmp($184,9360)|0);
+ $185 = (_strcmp($184,9128)|0);
$186 = ($185|0)!=(0);
if (!($186)) {
HEAP32[$1>>2] = 16;
break;
}
$187 = HEAP32[$3>>2]|0;
- $188 = (_strcmp($187,9373)|0);
+ $188 = (_strcmp($187,9141)|0);
$189 = ($188|0)!=(0);
if (!($189)) {
HEAP32[$1>>2] = 17;
break;
}
$190 = HEAP32[$3>>2]|0;
- $191 = (_strcmp($190,9386)|0);
+ $191 = (_strcmp($190,9154)|0);
$192 = ($191|0)!=(0);
if (!($192)) {
HEAP32[$1>>2] = 18;
break;
}
$193 = HEAP32[$3>>2]|0;
- $194 = (_strcmp($193,9399)|0);
+ $194 = (_strcmp($193,9167)|0);
$195 = ($194|0)!=(0);
if (!($195)) {
HEAP32[$1>>2] = 19;
break;
}
$196 = HEAP32[$3>>2]|0;
- $197 = (_strcmp($196,9412)|0);
+ $197 = (_strcmp($196,9180)|0);
$198 = ($197|0)!=(0);
if (!($198)) {
HEAP32[$1>>2] = 20;
break;
}
$199 = HEAP32[$3>>2]|0;
- $200 = (_strcmp($199,9425)|0);
+ $200 = (_strcmp($199,9193)|0);
$201 = ($200|0)!=(0);
if (!($201)) {
HEAP32[$1>>2] = 21;
break;
}
$202 = HEAP32[$3>>2]|0;
- $203 = (_strcmp($202,9438)|0);
+ $203 = (_strcmp($202,9206)|0);
$204 = ($203|0)!=(0);
if (!($204)) {
HEAP32[$1>>2] = 5;
break;
}
$205 = HEAP32[$3>>2]|0;
- $206 = (_strcmp($205,9457)|0);
+ $206 = (_strcmp($205,9225)|0);
$207 = ($206|0)!=(0);
if (!($207)) {
HEAP32[$1>>2] = 6;
break;
}
$208 = HEAP32[$3>>2]|0;
- $209 = (_strcmp($208,9476)|0);
+ $209 = (_strcmp($208,9244)|0);
$210 = ($209|0)!=(0);
if (!($210)) {
HEAP32[$1>>2] = 7;
break;
}
$211 = HEAP32[$3>>2]|0;
- $212 = (_strcmp($211,9495)|0);
+ $212 = (_strcmp($211,9263)|0);
$213 = ($212|0)!=(0);
if (!($213)) {
HEAP32[$1>>2] = 18;
break;
}
$214 = HEAP32[$3>>2]|0;
- $215 = (_strcmp($214,9508)|0);
+ $215 = (_strcmp($214,9276)|0);
$216 = ($215|0)!=(0);
if (!($216)) {
HEAP32[$1>>2] = 19;
break;
}
$217 = HEAP32[$3>>2]|0;
- $218 = (_strcmp($217,9526)|0);
+ $218 = (_strcmp($217,9294)|0);
$219 = ($218|0)!=(0);
if (!($219)) {
HEAP32[$1>>2] = 20;
break;
}
$220 = HEAP32[$3>>2]|0;
- $221 = (_strcmp($220,9544)|0);
+ $221 = (_strcmp($220,9312)|0);
$222 = ($221|0)!=(0);
if (!($222)) {
HEAP32[$1>>2] = 21;
break;
}
$223 = HEAP32[$3>>2]|0;
- $224 = (_strcmp($223,9562)|0);
+ $224 = (_strcmp($223,9330)|0);
$225 = ($224|0)!=(0);
if (!($225)) {
HEAP32[$1>>2] = 22;
break;
}
$226 = HEAP32[$3>>2]|0;
- $227 = (_strcmp($226,9580)|0);
+ $227 = (_strcmp($226,9348)|0);
$228 = ($227|0)!=(0);
if (!($228)) {
HEAP32[$1>>2] = 2;
break;
}
$229 = HEAP32[$3>>2]|0;
- $230 = (_strcmp($229,9600)|0);
+ $230 = (_strcmp($229,9368)|0);
$231 = ($230|0)!=(0);
if (!($231)) {
HEAP32[$1>>2] = 3;
break;
}
$232 = HEAP32[$3>>2]|0;
- $233 = (_strcmp($232,8541)|0);
+ $233 = (_strcmp($232,8309)|0);
$234 = ($233|0)!=(0);
if (!($234)) {
HEAP32[$1>>2] = 7;
break;
}
$235 = HEAP32[$3>>2]|0;
- $236 = (_strcmp($235,9618)|0);
+ $236 = (_strcmp($235,9386)|0);
$237 = ($236|0)!=(0);
if (!($237)) {
HEAP32[$1>>2] = 1;
break;
}
$238 = HEAP32[$3>>2]|0;
- $239 = (_strcmp($238,9633)|0);
+ $239 = (_strcmp($238,9401)|0);
$240 = ($239|0)!=(0);
if (!($240)) {
HEAP32[$1>>2] = 8;
break;
}
$241 = HEAP32[$3>>2]|0;
- $242 = (_strcmp($241,9654)|0);
+ $242 = (_strcmp($241,9422)|0);
$243 = ($242|0)!=(0);
if (!($243)) {
HEAP32[$1>>2] = 9;
break;
}
$244 = HEAP32[$3>>2]|0;
- $245 = (_strcmp($244,9669)|0);
+ $245 = (_strcmp($244,9437)|0);
$246 = ($245|0)!=(0);
if (!($246)) {
HEAP32[$1>>2] = 10;
break;
}
$247 = HEAP32[$3>>2]|0;
- $248 = (_strcmp($247,9687)|0);
+ $248 = (_strcmp($247,9455)|0);
$249 = ($248|0)!=(0);
if (!($249)) {
HEAP32[$1>>2] = 2;
break;
}
$250 = HEAP32[$3>>2]|0;
- $251 = (_strcmp($250,9703)|0);
+ $251 = (_strcmp($250,9471)|0);
$252 = ($251|0)!=(0);
if (!($252)) {
HEAP32[$1>>2] = 11;
break;
}
$253 = HEAP32[$3>>2]|0;
- $254 = (_strcmp($253,9722)|0);
+ $254 = (_strcmp($253,9490)|0);
$255 = ($254|0)!=(0);
if (!($255)) {
HEAP32[$1>>2] = 22;
break;
}
$256 = HEAP32[$3>>2]|0;
- $257 = (_strcmp($256,9736)|0);
+ $257 = (_strcmp($256,9504)|0);
$258 = ($257|0)!=(0);
if (!($258)) {
HEAP32[$1>>2] = 23;
break;
}
$259 = HEAP32[$3>>2]|0;
- $260 = (_strcmp($259,9751)|0);
+ $260 = (_strcmp($259,9519)|0);
$261 = ($260|0)!=(0);
if (!($261)) {
HEAP32[$1>>2] = 8;
break;
}
$262 = HEAP32[$3>>2]|0;
- $263 = (_strcmp($262,8472)|0);
+ $263 = (_strcmp($262,8240)|0);
$264 = ($263|0)!=(0);
if (!($264)) {
HEAP32[$1>>2] = 1;
break;
}
$265 = HEAP32[$3>>2]|0;
- $266 = (_strcmp($265,9762)|0);
+ $266 = (_strcmp($265,9530)|0);
$267 = ($266|0)!=(0);
if (!($267)) {
HEAP32[$1>>2] = 3;
break;
}
$268 = HEAP32[$3>>2]|0;
- $269 = (_strcmp($268,8571)|0);
+ $269 = (_strcmp($268,8339)|0);
$270 = ($269|0)!=(0);
if (!($270)) {
HEAP32[$1>>2] = 23;
break;
}
$271 = HEAP32[$3>>2]|0;
- $272 = (_strcmp($271,8601)|0);
+ $272 = (_strcmp($271,8369)|0);
$273 = ($272|0)!=(0);
if (!($273)) {
HEAP32[$1>>2] = 24;
break;
}
$274 = HEAP32[$3>>2]|0;
- $275 = (_strcmp($274,9778)|0);
+ $275 = (_strcmp($274,9546)|0);
$276 = ($275|0)!=(0);
if (!($276)) {
HEAP32[$1>>2] = 12;
break;
}
$277 = HEAP32[$3>>2]|0;
- $278 = (_strcmp($277,9805)|0);
+ $278 = (_strcmp($277,9573)|0);
$279 = ($278|0)!=(0);
if (!($279)) {
HEAP32[$1>>2] = 4;
break;
}
$280 = HEAP32[$3>>2]|0;
- $281 = (_strcmp($280,9819)|0);
+ $281 = (_strcmp($280,9587)|0);
$282 = ($281|0)!=(0);
if (!($282)) {
HEAP32[$1>>2] = 13;
break;
}
$283 = HEAP32[$3>>2]|0;
- $284 = (_strcmp($283,8507)|0);
+ $284 = (_strcmp($283,8275)|0);
$285 = ($284|0)!=(0);
if (!($285)) {
HEAP32[$1>>2] = 5;
break;
}
$286 = HEAP32[$3>>2]|0;
- $287 = (_strcmp($286,9839)|0);
+ $287 = (_strcmp($286,9607)|0);
$288 = ($287|0)!=(0);
if (!($288)) {
HEAP32[$1>>2] = 6;
break;
}
$289 = HEAP32[$3>>2]|0;
- $290 = (_strcmp($289,9857)|0);
+ $290 = (_strcmp($289,9625)|0);
$291 = ($290|0)!=(0);
if (!($291)) {
HEAP32[$1>>2] = 9;
break;
}
$292 = HEAP32[$3>>2]|0;
- $293 = (_strcmp($292,9869)|0);
+ $293 = (_strcmp($292,9637)|0);
$294 = ($293|0)!=(0);
if (!($294)) {
HEAP32[$1>>2] = 24;
break;
}
$295 = HEAP32[$3>>2]|0;
- $296 = (_strcmp($295,9890)|0);
+ $296 = (_strcmp($295,9658)|0);
$297 = ($296|0)!=(0);
if (!($297)) {
HEAP32[$1>>2] = 25;
break;
}
$298 = HEAP32[$3>>2]|0;
- $299 = (_strcmp($298,9908)|0);
+ $299 = (_strcmp($298,9676)|0);
$300 = ($299|0)!=(0);
if (!($300)) {
HEAP32[$1>>2] = 26;
break;
}
$301 = HEAP32[$3>>2]|0;
- $302 = (_strcmp($301,9926)|0);
+ $302 = (_strcmp($301,9694)|0);
$303 = ($302|0)!=(0);
if (!($303)) {
HEAP32[$1>>2] = 27;
break;
}
$304 = HEAP32[$3>>2]|0;
- $305 = (_strcmp($304,9947)|0);
+ $305 = (_strcmp($304,9715)|0);
$306 = ($305|0)!=(0);
if (!($306)) {
HEAP32[$1>>2] = 14;
break;
}
$307 = HEAP32[$3>>2]|0;
- $308 = (_strcmp($307,9973)|0);
+ $308 = (_strcmp($307,9741)|0);
$309 = ($308|0)!=(0);
if (!($309)) {
HEAP32[$1>>2] = 3;
break;
}
$310 = HEAP32[$3>>2]|0;
- $311 = (_strcmp($310,9996)|0);
+ $311 = (_strcmp($310,9764)|0);
$312 = ($311|0)!=(0);
if (!($312)) {
HEAP32[$1>>2] = 15;
break;
}
$313 = HEAP32[$3>>2]|0;
- $314 = (_strcmp($313,10034)|0);
+ $314 = (_strcmp($313,9802)|0);
$315 = ($314|0)!=(0);
if (!($315)) {
HEAP32[$1>>2] = 10;
break;
}
$316 = HEAP32[$3>>2]|0;
- $317 = (_strcmp($316,10050)|0);
+ $317 = (_strcmp($316,9818)|0);
$318 = ($317|0)!=(0);
if (!($318)) {
HEAP32[$1>>2] = 7;
break;
}
$319 = HEAP32[$3>>2]|0;
- $320 = (_strcmp($319,10065)|0);
+ $320 = (_strcmp($319,9833)|0);
$321 = ($320|0)!=(0);
if (!($321)) {
HEAP32[$1>>2] = 25;
break;
}
$322 = HEAP32[$3>>2]|0;
- $323 = (_strcmp($322,10088)|0);
+ $323 = (_strcmp($322,9856)|0);
$324 = ($323|0)!=(0);
if (!($324)) {
HEAP32[$1>>2] = 16;
break;
}
$325 = HEAP32[$3>>2]|0;
- $326 = (_strcmp($325,10101)|0);
+ $326 = (_strcmp($325,9869)|0);
$327 = ($326|0)!=(0);
if (!($327)) {
HEAP32[$1>>2] = 28;
break;
}
$328 = HEAP32[$3>>2]|0;
- $329 = (_strcmp($328,10115)|0);
+ $329 = (_strcmp($328,9883)|0);
$330 = ($329|0)!=(0);
if (!($330)) {
HEAP32[$1>>2] = 29;
break;
}
$331 = HEAP32[$3>>2]|0;
- $332 = (_strcmp($331,10129)|0);
+ $332 = (_strcmp($331,9897)|0);
$333 = ($332|0)!=(0);
if (!($333)) {
HEAP32[$1>>2] = 1;
break;
}
$334 = HEAP32[$3>>2]|0;
- $335 = (_strcmp($334,10149)|0);
+ $335 = (_strcmp($334,9917)|0);
$336 = ($335|0)!=(0);
if (!($336)) {
HEAP32[$1>>2] = 8;
break;
}
$337 = HEAP32[$3>>2]|0;
- $338 = (_strcmp($337,10169)|0);
+ $338 = (_strcmp($337,9937)|0);
$339 = ($338|0)!=(0);
if (!($339)) {
HEAP32[$1>>2] = 17;
break;
}
$340 = HEAP32[$3>>2]|0;
- $341 = (_strcmp($340,10185)|0);
+ $341 = (_strcmp($340,9953)|0);
$342 = ($341|0)!=(0);
if (!($342)) {
HEAP32[$1>>2] = 18;
break;
}
$343 = HEAP32[$3>>2]|0;
- $344 = (_strcmp($343,10203)|0);
+ $344 = (_strcmp($343,9971)|0);
$345 = ($344|0)!=(0);
if (!($345)) {
HEAP32[$1>>2] = 26;
break;
}
$346 = HEAP32[$3>>2]|0;
- $347 = (_strcmp($346,10219)|0);
+ $347 = (_strcmp($346,9987)|0);
$348 = ($347|0)!=(0);
if (!($348)) {
HEAP32[$1>>2] = 19;
break;
}
$349 = HEAP32[$3>>2]|0;
- $350 = (_strcmp($349,10234)|0);
+ $350 = (_strcmp($349,10002)|0);
$351 = ($350|0)!=(0);
if (!($351)) {
HEAP32[$1>>2] = 9;
break;
}
$352 = HEAP32[$3>>2]|0;
- $353 = (_strcmp($352,10256)|0);
+ $353 = (_strcmp($352,10024)|0);
$354 = ($353|0)!=(0);
if (!($354)) {
HEAP32[$1>>2] = 30;
break;
}
$355 = HEAP32[$3>>2]|0;
- $356 = (_strcmp($355,10274)|0);
+ $356 = (_strcmp($355,10042)|0);
$357 = ($356|0)!=(0);
if (!($357)) {
HEAP32[$1>>2] = 31;
break;
}
$358 = HEAP32[$3>>2]|0;
- $359 = (_strcmp($358,10295)|0);
+ $359 = (_strcmp($358,10063)|0);
$360 = ($359|0)!=(0);
if (!($360)) {
HEAP32[$1>>2] = 10;
break;
}
$361 = HEAP32[$3>>2]|0;
- $362 = (_strcmp($361,10313)|0);
+ $362 = (_strcmp($361,10081)|0);
$363 = ($362|0)!=(0);
if (!($363)) {
HEAP32[$1>>2] = 11;
break;
}
$364 = HEAP32[$3>>2]|0;
- $365 = (_strcmp($364,10326)|0);
+ $365 = (_strcmp($364,10094)|0);
$366 = ($365|0)!=(0);
if (!($366)) {
- HEAP32[$1>>2] = 1;
+ HEAP32[$1>>2] = 2;
break;
}
$367 = HEAP32[$3>>2]|0;
- $368 = (_strcmp($367,10341)|0);
+ $368 = (_strcmp($367,10109)|0);
$369 = ($368|0)!=(0);
if (!($369)) {
HEAP32[$1>>2] = 12;
break;
}
$370 = HEAP32[$3>>2]|0;
- $371 = (_strcmp($370,10355)|0);
+ $371 = (_strcmp($370,10123)|0);
$372 = ($371|0)!=(0);
if (!($372)) {
HEAP32[$1>>2] = 1;
break;
}
$373 = HEAP32[$3>>2]|0;
- $374 = (_strcmp($373,10365)|0);
+ $374 = (_strcmp($373,10133)|0);
$375 = ($374|0)!=(0);
if (!($375)) {
HEAP32[$1>>2] = 1;
break;
}
$376 = HEAP32[$3>>2]|0;
- $377 = (_strcmp($376,10375)|0);
+ $377 = (_strcmp($376,10143)|0);
$378 = ($377|0)!=(0);
if (!($378)) {
HEAP32[$1>>2] = 2;
break;
}
$379 = HEAP32[$3>>2]|0;
- $380 = (_strcmp($379,10397)|0);
+ $380 = (_strcmp($379,10165)|0);
$381 = ($380|0)!=(0);
if (!($381)) {
HEAP32[$1>>2] = 13;
break;
}
$382 = HEAP32[$3>>2]|0;
- $383 = (_strcmp($382,10423)|0);
+ $383 = (_strcmp($382,10191)|0);
$384 = ($383|0)!=(0);
if (!($384)) {
HEAP32[$1>>2] = 14;
break;
}
$385 = HEAP32[$3>>2]|0;
- $386 = (_strcmp($385,10450)|0);
+ $386 = (_strcmp($385,10218)|0);
$387 = ($386|0)!=(0);
if (!($387)) {
HEAP32[$1>>2] = 27;
break;
}
$388 = HEAP32[$3>>2]|0;
- $389 = (_strcmp($388,10463)|0);
+ $389 = (_strcmp($388,10231)|0);
$390 = ($389|0)!=(0);
if (!($390)) {
HEAP32[$1>>2] = 20;
break;
}
$391 = HEAP32[$3>>2]|0;
- $392 = (_strcmp($391,10478)|0);
+ $392 = (_strcmp($391,10246)|0);
$393 = ($392|0)!=(0);
if (!($393)) {
HEAP32[$1>>2] = 4;
break;
}
$394 = HEAP32[$3>>2]|0;
- $395 = (_strcmp($394,10493)|0);
+ $395 = (_strcmp($394,10261)|0);
$396 = ($395|0)!=(0);
if (!($396)) {
- HEAP32[$1>>2] = 2;
+ HEAP32[$1>>2] = 3;
break;
}
$397 = HEAP32[$3>>2]|0;
- $398 = (_strcmp($397,10517)|0);
+ $398 = (_strcmp($397,10285)|0);
$399 = ($398|0)!=(0);
if (!($399)) {
HEAP32[$1>>2] = 2;
break;
}
$400 = HEAP32[$3>>2]|0;
- $401 = (_strcmp($400,10528)|0);
+ $401 = (_strcmp($400,10296)|0);
$402 = ($401|0)!=(0);
if (!($402)) {
HEAP32[$1>>2] = 32;
break;
}
$403 = HEAP32[$3>>2]|0;
- $404 = (_strcmp($403,10550)|0);
+ $404 = (_strcmp($403,10318)|0);
$405 = ($404|0)!=(0);
if (!($405)) {
HEAP32[$1>>2] = 21;
break;
}
$406 = HEAP32[$3>>2]|0;
- $407 = (_strcmp($406,10572)|0);
+ $407 = (_strcmp($406,10340)|0);
$408 = ($407|0)!=(0);
if (!($408)) {
HEAP32[$1>>2] = 5;
break;
}
$409 = HEAP32[$3>>2]|0;
- $410 = (_strcmp($409,10596)|0);
+ $410 = (_strcmp($409,10364)|0);
$411 = ($410|0)!=(0);
if (!($411)) {
- HEAP32[$1>>2] = 3;
+ HEAP32[$1>>2] = 4;
break;
}
$412 = HEAP32[$3>>2]|0;
- $413 = (_strcmp($412,10605)|0);
+ $413 = (_strcmp($412,10373)|0);
$414 = ($413|0)!=(0);
if (!($414)) {
- HEAP32[$1>>2] = 4;
+ HEAP32[$1>>2] = 5;
break;
}
$415 = HEAP32[$3>>2]|0;
- $416 = (_strcmp($415,10613)|0);
+ $416 = (_strcmp($415,10381)|0);
$417 = ($416|0)!=(0);
if (!($417)) {
HEAP32[$1>>2] = 1;
break;
}
$418 = HEAP32[$3>>2]|0;
- $419 = (_strcmp($418,10626)|0);
+ $419 = (_strcmp($418,10394)|0);
$420 = ($419|0)!=(0);
if (!($420)) {
HEAP32[$1>>2] = 2;
break;
}
$421 = HEAP32[$3>>2]|0;
- $422 = (_strcmp($421,10640)|0);
+ $422 = (_strcmp($421,10408)|0);
$423 = ($422|0)!=(0);
if (!($423)) {
HEAP32[$1>>2] = 15;
break;
}
$424 = HEAP32[$3>>2]|0;
- $425 = (_strcmp($424,10652)|0);
+ $425 = (_strcmp($424,10420)|0);
$426 = ($425|0)!=(0);
if (!($426)) {
HEAP32[$1>>2] = 16;
break;
}
$427 = HEAP32[$3>>2]|0;
- $428 = (_strcmp($427,10661)|0);
+ $428 = (_strcmp($427,10429)|0);
$429 = ($428|0)!=(0);
if (!($429)) {
HEAP32[$1>>2] = 17;
break;
}
$430 = HEAP32[$3>>2]|0;
- $431 = (_strcmp($430,10671)|0);
+ $431 = (_strcmp($430,10439)|0);
$432 = ($431|0)!=(0);
if (!($432)) {
HEAP32[$1>>2] = 18;
break;
}
$433 = HEAP32[$3>>2]|0;
- $434 = (_strcmp($433,10683)|0);
+ $434 = (_strcmp($433,10451)|0);
$435 = ($434|0)!=(0);
if (!($435)) {
HEAP32[$1>>2] = 19;
break;
}
$436 = HEAP32[$3>>2]|0;
- $437 = (_strcmp($436,10694)|0);
+ $437 = (_strcmp($436,10462)|0);
$438 = ($437|0)!=(0);
if (!($438)) {
HEAP32[$1>>2] = 20;
break;
}
$439 = HEAP32[$3>>2]|0;
- $440 = (_strcmp($439,10702)|0);
+ $440 = (_strcmp($439,10470)|0);
$441 = ($440|0)!=(0);
if (!($441)) {
HEAP32[$1>>2] = 3;
break;
}
$442 = HEAP32[$3>>2]|0;
- $443 = (_strcmp($442,10714)|0);
+ $443 = (_strcmp($442,10482)|0);
$444 = ($443|0)!=(0);
if (!($444)) {
HEAP32[$1>>2] = 21;
break;
}
$445 = HEAP32[$3>>2]|0;
- $446 = (_strcmp($445,10729)|0);
+ $446 = (_strcmp($445,10497)|0);
$447 = ($446|0)!=(0);
if (!($447)) {
HEAP32[$1>>2] = 22;
break;
}
$448 = HEAP32[$3>>2]|0;
- $449 = (_strcmp($448,10741)|0);
+ $449 = (_strcmp($448,10509)|0);
$450 = ($449|0)!=(0);
if (!($450)) {
HEAP32[$1>>2] = 23;
break;
}
$451 = HEAP32[$3>>2]|0;
- $452 = (_strcmp($451,10755)|0);
+ $452 = (_strcmp($451,10523)|0);
$453 = ($452|0)!=(0);
if (!($453)) {
HEAP32[$1>>2] = 11;
break;
}
$454 = HEAP32[$3>>2]|0;
- $455 = (_strcmp($454,10780)|0);
+ $455 = (_strcmp($454,10548)|0);
$456 = ($455|0)!=(0);
if (!($456)) {
HEAP32[$1>>2] = 24;
break;
}
$457 = HEAP32[$3>>2]|0;
- $458 = (_strcmp($457,10797)|0);
+ $458 = (_strcmp($457,10565)|0);
$459 = ($458|0)!=(0);
if (!($459)) {
HEAP32[$1>>2] = 25;
break;
}
$460 = HEAP32[$3>>2]|0;
- $461 = (_strcmp($460,10813)|0);
+ $461 = (_strcmp($460,10581)|0);
$462 = ($461|0)!=(0);
if (!($462)) {
HEAP32[$1>>2] = 26;
break;
}
$463 = HEAP32[$3>>2]|0;
- $464 = (_strcmp($463,10829)|0);
+ $464 = (_strcmp($463,10597)|0);
$465 = ($464|0)!=(0);
if (!($465)) {
HEAP32[$1>>2] = 12;
break;
}
$466 = HEAP32[$3>>2]|0;
- $467 = (_strcmp($466,10841)|0);
+ $467 = (_strcmp($466,10609)|0);
$468 = ($467|0)!=(0);
if (!($468)) {
HEAP32[$1>>2] = 33;
break;
}
$469 = HEAP32[$3>>2]|0;
- $470 = (_strcmp($469,10853)|0);
+ $470 = (_strcmp($469,10621)|0);
$471 = ($470|0)!=(0);
if (!($471)) {
HEAP32[$1>>2] = 34;
break;
}
$472 = HEAP32[$3>>2]|0;
- $473 = (_strcmp($472,10877)|0);
+ $473 = (_strcmp($472,10645)|0);
$474 = ($473|0)!=(0);
if (!($474)) {
HEAP32[$1>>2] = 1;
break;
}
$475 = HEAP32[$3>>2]|0;
- $476 = (_strcmp($475,10890)|0);
+ $476 = (_strcmp($475,10658)|0);
$477 = ($476|0)!=(0);
if (!($477)) {
HEAP32[$1>>2] = 2;
break;
}
$478 = HEAP32[$3>>2]|0;
- $479 = (_strcmp($478,10904)|0);
+ $479 = (_strcmp($478,10672)|0);
$480 = ($479|0)!=(0);
if (!($480)) {
HEAP32[$1>>2] = 35;
break;
}
$481 = HEAP32[$3>>2]|0;
- $482 = (_strcmp($481,10926)|0);
+ $482 = (_strcmp($481,10694)|0);
$483 = ($482|0)!=(0);
if (!($483)) {
HEAP32[$1>>2] = 36;
break;
}
$484 = HEAP32[$3>>2]|0;
- $485 = (_strcmp($484,10933)|0);
+ $485 = (_strcmp($484,10701)|0);
$486 = ($485|0)!=(0);
if (!($486)) {
HEAP32[$1>>2] = 3;
break;
}
$487 = HEAP32[$3>>2]|0;
- $488 = (_strcmp($487,10949)|0);
+ $488 = (_strcmp($487,10717)|0);
$489 = ($488|0)!=(0);
if (!($489)) {
HEAP32[$1>>2] = 2;
break;
}
$490 = HEAP32[$3>>2]|0;
- $491 = (_strcmp($490,10966)|0);
+ $491 = (_strcmp($490,10734)|0);
$492 = ($491|0)!=(0);
if (!($492)) {
HEAP32[$1>>2] = 1;
break;
}
$493 = HEAP32[$3>>2]|0;
- $494 = (_strcmp($493,10983)|0);
+ $494 = (_strcmp($493,10751)|0);
$495 = ($494|0)!=(0);
if (!($495)) {
HEAP32[$1>>2] = 28;
break;
}
$496 = HEAP32[$3>>2]|0;
- $497 = (_strcmp($496,10999)|0);
+ $497 = (_strcmp($496,10767)|0);
$498 = ($497|0)!=(0);
if (!($498)) {
HEAP32[$1>>2] = 1;
break;
}
$499 = HEAP32[$3>>2]|0;
- $500 = (_strcmp($499,11015)|0);
+ $500 = (_strcmp($499,10783)|0);
$501 = ($500|0)!=(0);
if (!($501)) {
HEAP32[$1>>2] = 4;
break;
}
$502 = HEAP32[$3>>2]|0;
- $503 = (_strcmp($502,11032)|0);
+ $503 = (_strcmp($502,10800)|0);
$504 = ($503|0)!=(0);
if (!($504)) {
HEAP32[$1>>2] = 29;
break;
}
$505 = HEAP32[$3>>2]|0;
- $506 = (_strcmp($505,11046)|0);
+ $506 = (_strcmp($505,10814)|0);
$507 = ($506|0)!=(0);
if (!($507)) {
HEAP32[$1>>2] = 30;
break;
}
$508 = HEAP32[$3>>2]|0;
- $509 = (_strcmp($508,11058)|0);
+ $509 = (_strcmp($508,10826)|0);
$510 = ($509|0)!=(0);
if (!($510)) {
HEAP32[$1>>2] = 22;
break;
}
$511 = HEAP32[$3>>2]|0;
- $512 = (_strcmp($511,11069)|0);
+ $512 = (_strcmp($511,10837)|0);
$513 = ($512|0)!=(0);
if (!($513)) {
HEAP32[$1>>2] = 2;
break;
}
$514 = HEAP32[$3>>2]|0;
- $515 = (_strcmp($514,11082)|0);
+ $515 = (_strcmp($514,10850)|0);
$516 = ($515|0)!=(0);
if (!($516)) {
HEAP32[$1>>2] = 23;
break;
}
$517 = HEAP32[$3>>2]|0;
- $518 = (_strcmp($517,11092)|0);
+ $518 = (_strcmp($517,10860)|0);
$519 = ($518|0)!=(0);
if (!($519)) {
HEAP32[$1>>2] = 2;
break;
}
$520 = HEAP32[$3>>2]|0;
- $521 = (_strcmp($520,11109)|0);
+ $521 = (_strcmp($520,10877)|0);
$522 = ($521|0)!=(0);
if (!($522)) {
HEAP32[$1>>2] = 24;
break;
}
$523 = HEAP32[$3>>2]|0;
- $524 = (_strcmp($523,11121)|0);
+ $524 = (_strcmp($523,10889)|0);
$525 = ($524|0)!=(0);
if (!($525)) {
HEAP32[$1>>2] = 25;
break;
}
$526 = HEAP32[$3>>2]|0;
- $527 = (_strcmp($526,11143)|0);
+ $527 = (_strcmp($526,10911)|0);
$528 = ($527|0)!=(0);
if (!($528)) {
HEAP32[$1>>2] = 26;
break;
}
$529 = HEAP32[$3>>2]|0;
- $530 = (_strcmp($529,11163)|0);
+ $530 = (_strcmp($529,10931)|0);
$531 = ($530|0)!=(0);
if (!($531)) {
HEAP32[$1>>2] = 3;
break;
}
$532 = HEAP32[$3>>2]|0;
- $533 = (_strcmp($532,11176)|0);
+ $533 = (_strcmp($532,10944)|0);
$534 = ($533|0)!=(0);
if (!($534)) {
HEAP32[$1>>2] = 27;
break;
}
$535 = HEAP32[$3>>2]|0;
- $536 = (_strcmp($535,11198)|0);
+ $536 = (_strcmp($535,10966)|0);
$537 = ($536|0)!=(0);
if (!($537)) {
HEAP32[$1>>2] = 28;
break;
}
$538 = HEAP32[$3>>2]|0;
- $539 = (_strcmp($538,11218)|0);
+ $539 = (_strcmp($538,10986)|0);
$540 = ($539|0)!=(0);
if (!($540)) {
HEAP32[$1>>2] = 2;
break;
}
$541 = HEAP32[$3>>2]|0;
- $542 = (_strcmp($541,11235)|0);
+ $542 = (_strcmp($541,11003)|0);
$543 = ($542|0)!=(0);
if (!($543)) {
HEAP32[$1>>2] = 2;
break;
}
$544 = HEAP32[$3>>2]|0;
- $545 = (_strcmp($544,11252)|0);
+ $545 = (_strcmp($544,11020)|0);
$546 = ($545|0)!=(0);
if (!($546)) {
HEAP32[$1>>2] = 3;
break;
}
$547 = HEAP32[$3>>2]|0;
- $548 = (_strcmp($547,11272)|0);
+ $548 = (_strcmp($547,11040)|0);
$549 = ($548|0)!=(0);
if ($549) {
$550 = HEAP32[$2>>2]|0;
@@ -19119,7 +23341,15 @@ function _emscripten_GetProcAddress($0) {
function _emscripten_get_global_libc() {
var label = 0, sp = 0;
sp = STACKTOP;
- return (33064|0);
+ return (33232|0);
+}
+function ___emscripten_pthread_data_constructor() {
+ var $0 = 0, $1 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 188|0);
+ HEAP32[$1>>2] = (33272);
+ return;
}
function ___stdio_close($0) {
$0 = $0|0;
@@ -19129,7 +23359,7 @@ function ___stdio_close($0) {
$vararg_buffer = sp;
$1 = ((($0)) + 60|0);
$2 = HEAP32[$1>>2]|0;
- $3 = (_dummy_738($2)|0);
+ $3 = (_dummy_736($2)|0);
HEAP32[$vararg_buffer>>2] = $3;
$4 = (___syscall6(6,($vararg_buffer|0))|0);
$5 = (___syscall_ret($4)|0);
@@ -19309,12 +23539,7 @@ function ___pthread_self_108() {
$0 = (_pthread_self()|0);
return ($0|0);
}
-function _pthread_self() {
- var label = 0, sp = 0;
- sp = STACKTOP;
- return (2980|0);
-}
-function _dummy_738($0) {
+function _dummy_736($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
@@ -19447,7 +23672,7 @@ function _vsnprintf($0,$1,$2,$3) {
STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
$4 = sp + 124|0;
$5 = sp;
- dest=$5; src=3356; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$5; src=3124; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$6 = (($1) + -1)|0;
$7 = ($6>>>0)>(2147483646);
if ($7) {
@@ -19518,7 +23743,7 @@ function _vfprintf($0,$1,$2) {
$$0 = -1;
} else {
$9 = ((($0)) + 76|0);
- $10 = HEAP32[$9>>2]|0;
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
$11 = ($10|0)>(-1);
if ($11) {
$12 = (___lockfile($0)|0);
@@ -19931,7 +24156,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$133 = HEAP8[$128>>0]|0;
$134 = $133 << 24 >> 24;
$135 = (($134) + -65)|0;
- $136 = ((11388 + (($$0252*58)|0)|0) + ($135)|0);
+ $136 = ((11156 + (($$0252*58)|0)|0) + ($135)|0);
$137 = HEAP8[$136>>0]|0;
$138 = $137&255;
$139 = (($138) + -1)|0;
@@ -20109,7 +24334,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$222 = (($220) + 1)|0;
$223 = $218 | $221;
$$0254$$0254$ = $223 ? $$0254 : $222;
- $$0228 = $216;$$1233 = 0;$$1238 = 11852;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
+ $$0228 = $216;$$1233 = 0;$$1238 = 11620;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
label = 67;
break;
}
@@ -20130,7 +24355,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$235 = (($233) + 4)|0;
$236 = $235;
HEAP32[$236>>2] = $232;
- $$0232 = 1;$$0237 = 11852;$242 = $231;$243 = $232;
+ $$0232 = 1;$$0237 = 11620;$242 = $231;$243 = $232;
label = 66;
break L71;
} else {
@@ -20138,8 +24363,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$238 = ($237|0)==(0);
$239 = $$1263$ & 1;
$240 = ($239|0)==(0);
- $$ = $240 ? 11852 : (11854);
- $$$ = $238 ? $$ : (11853);
+ $$ = $240 ? 11620 : (11622);
+ $$$ = $238 ? $$ : (11621);
$241 = $$1263$ & 2049;
$narrow = ($241|0)!=(0);
$$284$ = $narrow&1;
@@ -20156,7 +24381,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$168 = (($165) + 4)|0;
$169 = $168;
$170 = HEAP32[$169>>2]|0;
- $$0232 = 0;$$0237 = 11852;$242 = $167;$243 = $170;
+ $$0232 = 0;$$0237 = 11620;$242 = $167;$243 = $170;
label = 66;
break;
}
@@ -20169,7 +24394,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$264 = HEAP32[$263>>2]|0;
$265 = $261&255;
HEAP8[$13>>0] = $265;
- $$2 = $13;$$2234 = 0;$$2239 = 11852;$$2251 = $11;$$5 = 1;$$6268 = $164;
+ $$2 = $13;$$2234 = 0;$$2239 = 11620;$$2251 = $11;$$5 = 1;$$6268 = $164;
break;
}
case 109: {
@@ -20183,7 +24408,7 @@ function _printf_core($0,$1,$2,$3,$4) {
case 115: {
$269 = HEAP32[$6>>2]|0;
$270 = ($269|0)!=(0|0);
- $271 = $270 ? $269 : 11862;
+ $271 = $270 ? $269 : 11630;
$$1 = $271;
label = 71;
break;
@@ -20206,7 +24431,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$pre349 = HEAP32[$6>>2]|0;
$284 = ($$0254|0)==(0);
if ($284) {
- _pad_674($0,32,$$1260,0,$$1263$);
+ _pad_672($0,32,$$1260,0,$$1263$);
$$0240$lcssa357 = 0;
label = 84;
} else {
@@ -20223,7 +24448,7 @@ function _printf_core($0,$1,$2,$3,$4) {
break;
}
default: {
- $$2 = $21;$$2234 = 0;$$2239 = 11852;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
+ $$2 = $21;$$2234 = 0;$$2239 = 11620;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
}
}
} while(0);
@@ -20245,8 +24470,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$207 = ($206|0)==(0);
$or$cond283 = $207 | $205;
$208 = $$1236 >> 4;
- $209 = (11852 + ($208)|0);
- $$289 = $or$cond283 ? 11852 : $209;
+ $209 = (11620 + ($208)|0);
+ $$289 = $or$cond283 ? 11620 : $209;
$$290 = $or$cond283 ? 0 : 2;
$$0228 = $202;$$1233 = $$290;$$1238 = $$289;$$2256 = $$1255;$$4266 = $$3265;$248 = $197;$250 = $200;
label = 67;
@@ -20267,7 +24492,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$277 = (($$1) + ($$0254)|0);
$$3257 = $273 ? $$0254 : $276;
$$1250 = $273 ? $277 : $272;
- $$2 = $$1;$$2234 = 0;$$2239 = 11852;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
+ $$2 = $$1;$$2234 = 0;$$2239 = 11620;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
}
else if ((label|0) == 75) {
label = 0;
@@ -20303,7 +24528,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$0 = -1;
break L1;
}
- _pad_674($0,32,$$1260,$$0240$lcssa,$$1263$);
+ _pad_672($0,32,$$1260,$$0240$lcssa,$$1263$);
$295 = ($$0240$lcssa|0)==(0);
if ($295) {
$$0240$lcssa357 = 0;
@@ -20364,7 +24589,7 @@ function _printf_core($0,$1,$2,$3,$4) {
else if ((label|0) == 84) {
label = 0;
$303 = $$1263$ ^ 8192;
- _pad_674($0,32,$$1260,$$0240$lcssa357,$303);
+ _pad_672($0,32,$$1260,$$0240$lcssa357,$303);
$304 = ($$1260|0)>($$0240$lcssa357|0);
$305 = $304 ? $$1260 : $$0240$lcssa357;
$$0243 = $305;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
@@ -20378,14 +24603,14 @@ function _printf_core($0,$1,$2,$3,$4) {
$312 = (($$$5) + ($$2234))|0;
$313 = ($$1260|0)<($312|0);
$$2261 = $313 ? $312 : $$1260;
- _pad_674($0,32,$$2261,$312,$$6268);
+ _pad_672($0,32,$$2261,$312,$$6268);
_out($0,$$2239,$$2234);
$314 = $$6268 ^ 65536;
- _pad_674($0,48,$$2261,$312,$314);
- _pad_674($0,48,$$$5,$310,0);
+ _pad_672($0,48,$$2261,$312,$314);
+ _pad_672($0,48,$$$5,$310,0);
_out($0,$$2,$310);
$315 = $$6268 ^ 8192;
- _pad_674($0,32,$$2261,$312,$315);
+ _pad_672($0,32,$$2261,$312,$315);
$$0243 = $$2261;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
}
L114: do {
@@ -20797,7 +25022,7 @@ function _fmt_x($0,$1,$2,$3) {
$$056 = $2;$15 = $1;$8 = $0;
while(1) {
$7 = $8 & 15;
- $9 = (11904 + ($7)|0);
+ $9 = (11672 + ($7)|0);
$10 = HEAP8[$9>>0]|0;
$11 = $10&255;
$12 = $11 | $3;
@@ -21052,7 +25277,7 @@ function _memchr($0,$1,$2) {
$39 = $38 ? $$2 : 0;
return ($39|0);
}
-function _pad_674($0,$1,$2,$3,$4) {
+function _pad_672($0,$1,$2,$3,$4) {
$0 = $0|0;
$1 = $1|0;
$2 = $2|0;
@@ -21150,25 +25375,25 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$10 = sp + 512|0;
HEAP32[$7>>2] = 0;
$11 = ((($10)) + 12|0);
- (___DOUBLE_BITS_675($1)|0);
+ (___DOUBLE_BITS_673($1)|0);
$12 = tempRet0;
$13 = ($12|0)<(0);
if ($13) {
$14 = -$1;
- $$0471 = $14;$$0520 = 1;$$0521 = 11869;
+ $$0471 = $14;$$0520 = 1;$$0521 = 11637;
} else {
$15 = $4 & 2048;
$16 = ($15|0)==(0);
$17 = $4 & 1;
$18 = ($17|0)==(0);
- $$ = $18 ? (11870) : (11875);
- $$$ = $16 ? $$ : (11872);
+ $$ = $18 ? (11638) : (11643);
+ $$$ = $16 ? $$ : (11640);
$19 = $4 & 2049;
$narrow = ($19|0)!=(0);
$$534$ = $narrow&1;
$$0471 = $1;$$0520 = $$534$;$$0521 = $$$;
}
- (___DOUBLE_BITS_675($$0471)|0);
+ (___DOUBLE_BITS_673($$0471)|0);
$20 = tempRet0;
$21 = $20 & 2146435072;
$22 = ($21>>>0)<(2146435072);
@@ -21261,7 +25486,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$0523 = $8;$$2473 = $$1472;
while(1) {
$80 = (~~(($$2473)));
- $81 = (11904 + ($80)|0);
+ $81 = (11672 + ($80)|0);
$82 = HEAP8[$81>>0]|0;
$83 = $82&255;
$84 = $83 | $42;
@@ -21308,16 +25533,16 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$pn = $or$cond537 ? $103 : $99;
$$0525 = (($100) + ($45))|0;
$104 = (($$0525) + ($$pn))|0;
- _pad_674($0,32,$2,$104,$4);
+ _pad_672($0,32,$2,$104,$4);
_out($0,$$0521$,$45);
$105 = $4 ^ 65536;
- _pad_674($0,48,$2,$104,$105);
+ _pad_672($0,48,$2,$104,$105);
_out($0,$8,$99);
$106 = (($$pn) - ($99))|0;
- _pad_674($0,48,$106,0,0);
+ _pad_672($0,48,$106,0,0);
_out($0,$77,$100);
$107 = $4 ^ 8192;
- _pad_674($0,32,$2,$104,$107);
+ _pad_672($0,32,$2,$104,$107);
$$sink562 = $104;
break;
}
@@ -21815,10 +26040,10 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$319 = (($318) + ($$3477))|0;
$$1526 = (($319) + ($291))|0;
$320 = (($$1526) + ($$pn566))|0;
- _pad_674($0,32,$2,$320,$4);
+ _pad_672($0,32,$2,$320,$4);
_out($0,$$0521,$$0520);
$321 = $4 ^ 65536;
- _pad_674($0,48,$2,$320,$321);
+ _pad_672($0,48,$2,$320,$321);
if ($293) {
$322 = ($$9$ph>>>0)>($$556>>>0);
$$0496$$9 = $322 ? $$556 : $$9$ph;
@@ -21872,7 +26097,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
}
$339 = ($289|0)==(0);
if (!($339)) {
- _out($0,11920,1);
+ _out($0,11688,1);
}
$340 = ($337>>>0)<($$7505>>>0);
$341 = ($$3477|0)>(0);
@@ -21920,7 +26145,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$4478$lcssa = $$3477;
}
$357 = (($$4478$lcssa) + 9)|0;
- _pad_674($0,48,$357,9,0);
+ _pad_672($0,48,$357,9,0);
} else {
$358 = ((($$9$ph)) + 4|0);
$$7505$ = $$lcssa673 ? $$7505 : $358;
@@ -21953,7 +26178,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$2 = $372;
break;
}
- _out($0,11920,1);
+ _out($0,11688,1);
$$2 = $372;
} else {
$369 = ($$0>>>0)>($8>>>0);
@@ -21998,29 +26223,29 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$5$lcssa = $$3477;
}
$383 = (($$5$lcssa) + 18)|0;
- _pad_674($0,48,$383,18,0);
+ _pad_672($0,48,$383,18,0);
$384 = $11;
$385 = $$2513;
$386 = (($384) - ($385))|0;
_out($0,$$2513,$386);
}
$387 = $4 ^ 8192;
- _pad_674($0,32,$2,$320,$387);
+ _pad_672($0,32,$2,$320,$387);
$$sink562 = $320;
} else {
$27 = $5 & 32;
$28 = ($27|0)!=(0);
- $29 = $28 ? 11888 : 11892;
+ $29 = $28 ? 11656 : 11660;
$30 = ($$0471 != $$0471) | (0.0 != 0.0);
- $31 = $28 ? 11896 : 11900;
+ $31 = $28 ? 11664 : 11668;
$$0510 = $30 ? $31 : $29;
$32 = (($$0520) + 3)|0;
$33 = $4 & -65537;
- _pad_674($0,32,$2,$32,$33);
+ _pad_672($0,32,$2,$32,$33);
_out($0,$$0521,$$0520);
_out($0,$$0510,3);
$34 = $4 ^ 8192;
- _pad_674($0,32,$2,$32,$34);
+ _pad_672($0,32,$2,$32,$34);
$$sink562 = $32;
}
} while(0);
@@ -22028,7 +26253,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$555 = $388 ? $2 : $$sink562;
STACKTOP = sp;return ($$555|0);
}
-function ___DOUBLE_BITS_675($0) {
+function ___DOUBLE_BITS_673($0) {
$0 = +$0;
var $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
@@ -22109,10 +26334,10 @@ function _wcrtomb($0,$1,$2) {
$$0 = 1;
break;
}
- $6 = (___pthread_self_448()|0);
+ $6 = (___pthread_self_446()|0);
$7 = ((($6)) + 188|0);
$8 = HEAP32[$7>>2]|0;
- $9 = HEAP32[$8>>2]|0;
+ $9 = (Atomics_load(HEAP32,$8>>2)|0);
$not$ = ($9|0)==(0|0);
if ($not$) {
$10 = $1 & -128;
@@ -22202,7 +26427,7 @@ function _wcrtomb($0,$1,$2) {
} while(0);
return ($$0|0);
}
-function ___pthread_self_448() {
+function ___pthread_self_446() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_pthread_self()|0);
@@ -22222,7 +26447,7 @@ function ___strerror_l($0,$1) {
sp = STACKTOP;
$$016 = 0;
while(1) {
- $3 = (11922 + ($$016)|0);
+ $3 = (11690 + ($$016)|0);
$4 = HEAP8[$3>>0]|0;
$5 = $4&255;
$6 = ($5|0)==($0|0);
@@ -22233,7 +26458,7 @@ function ___strerror_l($0,$1) {
$7 = (($$016) + 1)|0;
$8 = ($7|0)==(87);
if ($8) {
- $$01214 = 12010;$$115 = 87;
+ $$01214 = 11778;$$115 = 87;
label = 5;
break;
} else {
@@ -22243,9 +26468,9 @@ function ___strerror_l($0,$1) {
if ((label|0) == 2) {
$2 = ($$016|0)==(0);
if ($2) {
- $$012$lcssa = 12010;
+ $$012$lcssa = 11778;
} else {
- $$01214 = 12010;$$115 = $$016;
+ $$01214 = 11778;$$115 = $$016;
label = 5;
}
}
@@ -22275,7 +26500,7 @@ function ___strerror_l($0,$1) {
}
}
$14 = ((($1)) + 20|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = (___lctrans($$012$lcssa,$15)|0);
return ($16|0);
}
@@ -22882,13 +27107,13 @@ function ___stpcpy($0,$1) {
function ___ofl_lock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___lock((33128|0));
- return (33136|0);
+ ___lock((33296|0));
+ return (33304|0);
}
function ___ofl_unlock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___unlock((33128|0));
+ ___unlock((33296|0));
return;
}
function _fflush($0) {
@@ -22899,12 +27124,12 @@ function _fflush($0) {
$1 = ($0|0)==(0|0);
do {
if ($1) {
- $8 = HEAP32[838]|0;
+ $8 = (Atomics_load(HEAP32,780)|0);
$9 = ($8|0)==(0|0);
if ($9) {
$29 = 0;
} else {
- $10 = HEAP32[838]|0;
+ $10 = (Atomics_load(HEAP32,780)|0);
$11 = (_fflush($10)|0);
$29 = $11;
}
@@ -22917,7 +27142,7 @@ function _fflush($0) {
$$02327 = $$02325;$$02426 = $29;
while(1) {
$14 = ((($$02327)) + 76|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = ($15|0)>(-1);
if ($16) {
$17 = (___lockfile($$02327)|0);
@@ -22956,7 +27181,7 @@ function _fflush($0) {
$$0 = $$024$lcssa;
} else {
$2 = ((($0)) + 76|0);
- $3 = HEAP32[$2>>2]|0;
+ $3 = (Atomics_load(HEAP32,$2>>2)|0);
$4 = ($3|0)>(-1);
if (!($4)) {
$5 = (___fflush_unlocked($0)|0);
@@ -23728,7 +27953,7 @@ function _srand($0) {
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = (($0) + -1)|0;
- $2 = 14112;
+ $2 = 14264;
$3 = $2;
HEAP32[$3>>2] = $1;
$4 = (($2) + 4)|0;
@@ -23739,7 +27964,7 @@ function _srand($0) {
function _rand() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = 14112;
+ $0 = 14264;
$1 = $0;
$2 = HEAP32[$1>>2]|0;
$3 = (($0) + 4)|0;
@@ -23749,7 +27974,7 @@ function _rand() {
$7 = tempRet0;
$8 = (_i64Add(($6|0),($7|0),1,0)|0);
$9 = tempRet0;
- $10 = 14112;
+ $10 = 14264;
$11 = $10;
HEAP32[$11>>2] = $8;
$12 = (($10) + 4)|0;
@@ -23764,7 +27989,7 @@ function _vprintf($0,$1) {
$1 = $1|0;
var $2 = 0, $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[806]|0;
+ $2 = HEAP32[748]|0;
$3 = (_vfprintf($2,$0,$1)|0);
return ($3|0);
}
@@ -23871,7 +28096,7 @@ function _strtok($0,$1) {
sp = STACKTOP;
$2 = ($0|0)==(0|0);
if ($2) {
- $3 = HEAP32[8285]|0;
+ $3 = HEAP32[8327]|0;
$4 = ($3|0)==(0|0);
if ($4) {
$$0 = 0;
@@ -23890,22 +28115,22 @@ function _strtok($0,$1) {
$7 = HEAP8[$6>>0]|0;
$8 = ($7<<24>>24)==(0);
if ($8) {
- HEAP32[8285] = 0;
+ HEAP32[8327] = 0;
$$0 = 0;
break;
}
$9 = (_strcspn($6,$1)|0);
$10 = (($6) + ($9)|0);
- HEAP32[8285] = $10;
+ HEAP32[8327] = $10;
$11 = HEAP8[$10>>0]|0;
$12 = ($11<<24>>24)==(0);
if ($12) {
- HEAP32[8285] = 0;
+ HEAP32[8327] = 0;
$$0 = $6;
break;
} else {
$13 = ((($10)) + 1|0);
- HEAP32[8285] = $13;
+ HEAP32[8327] = $13;
HEAP8[$10>>0] = 0;
$$0 = $6;
break;
@@ -23914,112 +28139,2175 @@ function _strtok($0,$1) {
} while(0);
return ($$0|0);
}
-function _malloc($0) {
+function __emscripten_atomic_fetch_and_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_and_u64($0,$1,$2) {
$0 = $0|0;
- var $$$0192$i = 0, $$$0193$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0 = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i18$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0197 = 0, $$0199 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
- var $$0212$i$i = 0, $$024371$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1196$i = 0, $$1198$i = 0;
- var $$124470$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i201 = 0, $$3350$i = 0, $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0;
- var $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$723948$i = 0, $$749$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i19$i = 0, $$pre$i210 = 0, $$pre$i212 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i20$iZ2D = 0, $$pre$phi$i211Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0;
- var $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i204 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0;
- var $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0;
- var $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0;
- var $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0;
- var $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0;
- var $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0;
- var $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0;
- var $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0;
- var $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0;
- var $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0;
- var $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0;
- var $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0;
- var $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0;
- var $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0;
- var $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0;
- var $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0;
- var $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0;
- var $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0;
- var $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0;
- var $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0;
- var $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0;
- var $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0;
- var $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0;
- var $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0;
- var $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0;
- var $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0;
- var $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0;
- var $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0;
- var $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0;
- var $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0;
- var $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0;
- var $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0;
- var $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0;
- var $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0;
- var $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0;
- var $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0;
- var $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0;
- var $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0;
- var $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0;
- var $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0;
- var $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0;
- var $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0;
- var $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0;
- var $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0;
- var $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0;
- var $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0;
- var $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0;
- var $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0;
- var $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0;
- var $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0;
- var $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0;
- var $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0;
- var $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0;
- var $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0, $cond$i$i = 0, $cond$i208 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i17$i = 0, $not$$i209 = 0, $not$$i216 = 0, $not$1$i = 0, $not$1$i203 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0;
- var $or$cond$i = 0, $or$cond$i214 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond11$not$i = 0, $or$cond12$i = 0, $or$cond2$i = 0, $or$cond2$i215 = 0, $or$cond5$i = 0, $or$cond50$i = 0, $or$cond51$i = 0, $or$cond7$i = 0, label = 0, sp = 0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_async_run_in_main_thread($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$0$in = 0, $$0$in19 = 0, $$0$lcssa = 0, $$020 = 0, $$expand_i1_val = 0, $$lcssa = 0, $$lcssa18 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, $call_queue$init$val = 0, $call_queue$init$val$pre_trunc = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ($0|0)==(0|0);
+ if ($1) {
+ ___assert_fail((13872|0),(13704|0),260,(13877|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ if (!($3)) {
+ __do_call($0);
+ return;
+ }
+ (___pthread_mutex_lock(33828)|0);
+ $call_queue$init$val$pre_trunc = HEAP8[38343]|0;
+ $call_queue$init$val = $call_queue$init$val$pre_trunc&1;
+ if (!($call_queue$init$val)) {
+ $$expand_i1_val = 1;
+ HEAP8[38343] = $$expand_i1_val;
+ }
+ $4 = (Atomics_load(HEAP32, 8464)|0);
+ $5 = (Atomics_load(HEAP32, 8465)|0);
+ $$0$in19 = (($5) + 1)|0;
+ $$020 = (($$0$in19|0) % 128)&-1;
+ $6 = ($$020|0)==($4|0);
+ if ($6) {
+ $7 = $4;
+ while(1) {
+ (___pthread_mutex_unlock(33828)|0);
+ (_emscripten_futex_wait((33856|0),($7|0),inf)|0);
+ (___pthread_mutex_lock(33828)|0);
+ $8 = (Atomics_load(HEAP32, 8464)|0);
+ $9 = (Atomics_load(HEAP32, 8465)|0);
+ $$0$in = (($9) + 1)|0;
+ $$0 = (($$0$in|0) % 128)&-1;
+ $10 = ($$0|0)==($8|0);
+ if ($10) {
+ $7 = $8;
+ } else {
+ $$0$lcssa = $$0;$$lcssa = $9;$$lcssa18 = $8;
+ break;
+ }
+ }
+ } else {
+ $$0$lcssa = $$020;$$lcssa = $5;$$lcssa18 = $4;
+ }
+ $11 = (33864 + ($$lcssa<<2)|0);
+ HEAP32[$11>>2] = $0;
+ $12 = ($$lcssa18|0)==($$lcssa|0);
+ if ($12) {
+ _emscripten_asm_const_v(1);
+ }
+ $13 = (Atomics_store(HEAP32, 8465, $$0$lcssa)|0);
+ (___pthread_mutex_unlock(33828)|0);
+ return;
+}
+function _emscripten_atomic_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_cas_u64($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $5 = $0;
+ $6 = $5 >>> 3;
+ $7 = $6 & 255;
+ $8 = (34384 + ($7<<2)|0);
+ while(1) {
+ while(1) {
+ $9 = (Atomics_load(HEAP32, $8>>2)|0);
+ $10 = (Atomics_compareExchange(HEAP32, $8>>2, $9, 1)|0);
+ $11 = ($9|0)==($10|0);
+ if ($11) {
+ break;
+ }
+ }
+ $12 = ($9|0)==(0);
+ if ($12) {
+ break;
+ }
+ }
+ $13 = $0;
+ $14 = $13;
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (($13) + 4)|0;
+ $17 = $16;
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($15|0)==($1|0);
+ $20 = ($18|0)==($2|0);
+ $21 = $19 & $20;
+ if (!($21)) {
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+ }
+ $22 = $0;
+ $23 = $22;
+ HEAP32[$23>>2] = $3;
+ $24 = (($22) + 4)|0;
+ $25 = $24;
+ HEAP32[$25>>2] = $4;
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+}
+function _emscripten_atomic_exchange_u32($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ while(1) {
+ $2 = (Atomics_load(HEAP32, $0>>2)|0);
+ $3 = (Atomics_compareExchange(HEAP32, $0>>2, $2, $1)|0);
+ $4 = ($2|0)==($3|0);
+ if ($4) {
+ break;
+ }
+ }
+ return ($2|0);
+}
+function _emscripten_atomic_exchange_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
+ var sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $0;
+ $18 = $17;
+ HEAP32[$18>>2] = $1;
+ $19 = (($17) + 4)|0;
+ $20 = $19;
+ HEAP32[$20>>2] = $2;
+ $21 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_atomic_load_f32($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = (Atomics_load(HEAP32, $0>>2)|0);
+ $2 = (HEAP32[tempDoublePtr>>2]=$1,+HEAPF32[tempDoublePtr>>2]);
+ return (+$2);
+}
+function _emscripten_atomic_load_f64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34384 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = +HEAPF64[$0>>3];
+ $10 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ return (+$9);
+}
+function _emscripten_atomic_load_u64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34384 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = $0;
+ $10 = $9;
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (($9) + 4)|0;
+ $13 = $12;
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ tempRet0 = ($14);
+ return ($11|0);
+}
+function _emscripten_atomic_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_store_f32($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $2 = 0, $3 = 0, $4 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = (HEAPF32[tempDoublePtr>>2]=$1,HEAP32[tempDoublePtr>>2]|0);
+ $3 = (Atomics_store(HEAP32, $0>>2, $2)|0);
+ $4 = (+($3>>>0));
+ return (+$4);
+}
+function _emscripten_atomic_store_f64($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = $0;
+ $3 = $2 >>> 3;
+ $4 = $3 & 255;
+ $5 = (34384 + ($4<<2)|0);
+ while(1) {
+ while(1) {
+ $6 = (Atomics_load(HEAP32, $5>>2)|0);
+ $7 = (Atomics_compareExchange(HEAP32, $5>>2, $6, 1)|0);
+ $8 = ($6|0)==($7|0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = ($6|0)==(0);
+ if ($9) {
+ break;
+ }
+ }
+ HEAPF64[$0>>3] = $1;
+ $10 = (Atomics_store(HEAP32, $5>>2, 0)|0);
+ return (+$1);
+}
+function _emscripten_atomic_store_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ HEAP32[$12>>2] = $1;
+ $13 = (($11) + 4)|0;
+ $14 = $13;
+ HEAP32[$14>>2] = $2;
+ $15 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($2);
+ return ($1|0);
+}
+function _emscripten_atomic_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34384 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_main_thread_process_queued_calls() {
+ var $$0910 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_emscripten_is_main_runtime_thread()|0);
+ $1 = ($0|0)==(0);
+ if ($1) {
+ ___assert_fail((13582|0),(13704|0),424,(13768|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ $4 = HEAP32[8456]|0;
+ $5 = ($4|0)!=(0);
+ $or$cond = $3 | $5;
+ if ($or$cond) {
+ return;
+ }
+ HEAP32[8456] = 1;
+ (___pthread_mutex_lock(33828)|0);
+ $6 = (Atomics_load(HEAP32, 8464)|0);
+ $7 = (Atomics_load(HEAP32, 8465)|0);
+ $8 = ($6|0)==($7|0);
+ (___pthread_mutex_unlock(33828)|0);
+ if (!($8)) {
+ $$0910 = $6;
+ while(1) {
+ $9 = (33864 + ($$0910<<2)|0);
+ $10 = HEAP32[$9>>2]|0;
+ __do_call($10);
+ (___pthread_mutex_lock(33828)|0);
+ $11 = (($$0910) + 1)|0;
+ $12 = (($11|0) % 128)&-1;
+ $13 = (Atomics_store(HEAP32, 8464, $12)|0);
+ $14 = (Atomics_load(HEAP32, 8465)|0);
+ $15 = ($12|0)==($14|0);
+ (___pthread_mutex_unlock(33828)|0);
+ if ($15) {
+ break;
+ } else {
+ $$0910 = $12;
+ }
+ }
+ }
+ (_emscripten_futex_wake((33856|0),2147483647)|0);
+ HEAP32[8456] = 0;
+ return;
+}
+function _emscripten_sync_run_in_main_thread($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ _emscripten_async_run_in_main_thread($0);
+ (_emscripten_wait_for_call_v($0,inf)|0);
+ return;
+}
+function _emscripten_sync_run_in_main_thread_0($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $1 = sp;
+ dest=$1; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$1>>2] = $0;
+ $2 = ((($1)) + 80|0);
+ HEAP32[$2>>2] = 0;
+ _emscripten_async_run_in_main_thread($1);
+ (_emscripten_wait_for_call_v($1,inf)|0);
+ $3 = HEAP32[$2>>2]|0;
+ STACKTOP = sp;return ($3|0);
+}
+function _emscripten_sync_run_in_main_thread_1($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $2 = sp;
+ dest=$2; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$2>>2] = $0;
+ $3 = ((($2)) + 16|0);
+ HEAP32[$3>>2] = $1;
+ $4 = ((($2)) + 80|0);
+ HEAP32[$4>>2] = 0;
+ _emscripten_async_run_in_main_thread($2);
+ (_emscripten_wait_for_call_v($2,inf)|0);
+ $5 = HEAP32[$4>>2]|0;
+ STACKTOP = sp;return ($5|0);
+}
+function _emscripten_sync_run_in_main_thread_2($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $3 = sp;
+ dest=$3; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$3>>2] = $0;
+ $4 = ((($3)) + 16|0);
+ HEAP32[$4>>2] = $1;
+ $5 = ((($3)) + 24|0);
+ HEAP32[$5>>2] = $2;
+ $6 = ((($3)) + 80|0);
+ HEAP32[$6>>2] = 0;
+ _emscripten_async_run_in_main_thread($3);
+ (_emscripten_wait_for_call_v($3,inf)|0);
+ $7 = HEAP32[$6>>2]|0;
+ STACKTOP = sp;return ($7|0);
+}
+function _emscripten_sync_run_in_main_thread_3($0,$1,$2,$3) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $4 = sp;
+ dest=$4; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$4>>2] = $0;
+ $5 = ((($4)) + 16|0);
+ HEAP32[$5>>2] = $1;
+ $6 = ((($4)) + 24|0);
+ HEAP32[$6>>2] = $2;
+ $7 = ((($4)) + 32|0);
+ HEAP32[$7>>2] = $3;
+ $8 = ((($4)) + 80|0);
+ HEAP32[$8>>2] = 0;
+ _emscripten_async_run_in_main_thread($4);
+ (_emscripten_wait_for_call_v($4,inf)|0);
+ $9 = HEAP32[$8>>2]|0;
+ STACKTOP = sp;return ($9|0);
+}
+function _emscripten_sync_run_in_main_thread_4($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $5 = sp;
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $6 = ((($5)) + 16|0);
+ HEAP32[$6>>2] = $1;
+ $7 = ((($5)) + 24|0);
+ HEAP32[$7>>2] = $2;
+ $8 = ((($5)) + 32|0);
+ HEAP32[$8>>2] = $3;
+ $9 = ((($5)) + 40|0);
+ HEAP32[$9>>2] = $4;
+ $10 = ((($5)) + 80|0);
+ HEAP32[$10>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $11 = HEAP32[$10>>2]|0;
+ STACKTOP = sp;return ($11|0);
+}
+function _emscripten_sync_run_in_main_thread_5($0,$1,$2,$3,$4,$5) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $6 = sp;
+ dest=$6; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$6>>2] = $0;
+ $7 = ((($6)) + 16|0);
+ HEAP32[$7>>2] = $1;
+ $8 = ((($6)) + 24|0);
+ HEAP32[$8>>2] = $2;
+ $9 = ((($6)) + 32|0);
+ HEAP32[$9>>2] = $3;
+ $10 = ((($6)) + 40|0);
+ HEAP32[$10>>2] = $4;
+ $11 = ((($6)) + 48|0);
+ HEAP32[$11>>2] = $5;
+ $12 = ((($6)) + 80|0);
+ HEAP32[$12>>2] = 0;
+ _emscripten_async_run_in_main_thread($6);
+ (_emscripten_wait_for_call_v($6,inf)|0);
+ $13 = HEAP32[$12>>2]|0;
+ STACKTOP = sp;return ($13|0);
+}
+function _emscripten_sync_run_in_main_thread_6($0,$1,$2,$3,$4,$5,$6) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $7 = sp;
+ dest=$7; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$7>>2] = $0;
+ $8 = ((($7)) + 16|0);
+ HEAP32[$8>>2] = $1;
+ $9 = ((($7)) + 24|0);
+ HEAP32[$9>>2] = $2;
+ $10 = ((($7)) + 32|0);
+ HEAP32[$10>>2] = $3;
+ $11 = ((($7)) + 40|0);
+ HEAP32[$11>>2] = $4;
+ $12 = ((($7)) + 48|0);
+ HEAP32[$12>>2] = $5;
+ $13 = ((($7)) + 56|0);
+ HEAP32[$13>>2] = $6;
+ $14 = ((($7)) + 80|0);
+ HEAP32[$14>>2] = 0;
+ _emscripten_async_run_in_main_thread($7);
+ (_emscripten_wait_for_call_v($7,inf)|0);
+ $15 = HEAP32[$14>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function _emscripten_sync_run_in_main_thread_7($0,$1,$2,$3,$4,$5,$6,$7) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ $7 = $7|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $8 = sp;
+ dest=$8; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$8>>2] = $0;
+ $9 = ((($8)) + 16|0);
+ HEAP32[$9>>2] = $1;
+ $10 = ((($8)) + 24|0);
+ HEAP32[$10>>2] = $2;
+ $11 = ((($8)) + 32|0);
+ HEAP32[$11>>2] = $3;
+ $12 = ((($8)) + 40|0);
+ HEAP32[$12>>2] = $4;
+ $13 = ((($8)) + 48|0);
+ HEAP32[$13>>2] = $5;
+ $14 = ((($8)) + 56|0);
+ HEAP32[$14>>2] = $6;
+ $15 = ((($8)) + 64|0);
+ HEAP32[$15>>2] = $7;
+ $16 = ((($8)) + 80|0);
+ HEAP32[$16>>2] = 0;
+ _emscripten_async_run_in_main_thread($8);
+ (_emscripten_wait_for_call_v($8,inf)|0);
+ $17 = HEAP32[$16>>2]|0;
+ STACKTOP = sp;return ($17|0);
+}
+function _emscripten_sync_run_in_main_thread_xprintf_varargs($0,$1,$2,$varargs) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $varargs = $varargs|0;
+ var $$0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 240|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(240|0);
+ $3 = sp + 96|0;
+ $4 = sp + 112|0;
+ $5 = sp;
+ HEAP32[$3>>2] = $varargs;
+ $6 = (_vsnprintf($4,128,$2,$3)|0);
+ $7 = ($6|0)>(127);
+ $8 = (($6) + 1)|0;
+ if ($7) {
+ $9 = (_malloc($8)|0);
+ HEAP32[$3>>2] = $varargs;
+ (_vsnprintf($9,$8,$2,$3)|0);
+ $$0 = $9;
+ } else {
+ $$0 = $4;
+ }
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $10 = $1;
+ $11 = ((($5)) + 16|0);
+ HEAP32[$11>>2] = $10;
+ $12 = ((($5)) + 24|0);
+ HEAP32[$12>>2] = $$0;
+ $13 = ((($5)) + 80|0);
+ HEAP32[$13>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $14 = ($$0|0)==($4|0);
+ if ($14) {
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+ }
+ _free($$0);
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function ___pthread_tsd_run_dtors() {
+ var $$02427 = 0, $$026 = 0, $$125 = 0, $$2 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, $exitcond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 60|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ $4 = ((($0)) + 116|0);
+ $$02427 = 0;
+ while(1) {
+ $$026 = 0;$$125 = 0;
+ while(1) {
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (($5) + ($$026<<2)|0);
+ $7 = HEAP32[$6>>2]|0;
+ $8 = ($7|0)==(0|0);
+ if ($8) {
+ $$2 = $$125;
+ } else {
+ $9 = (33312 + ($$026<<2)|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = ($10|0)==(0|0);
+ if ($11) {
+ $$2 = $$125;
+ } else {
+ HEAP32[$6>>2] = 0;
+ $12 = (Atomics_load(HEAP32,$9>>2)|0);
+ FUNCTION_TABLE_vi[$12 & 31]($7);
+ $$2 = 1;
+ }
+ }
+ $13 = (($$026) + 1)|0;
+ $exitcond = ($13|0)==(128);
+ if ($exitcond) {
+ break;
+ } else {
+ $$026 = $13;$$125 = $$2;
+ }
+ }
+ $14 = (($$02427) + 1)|0;
+ $15 = ($$2|0)!=(0);
+ $16 = ($14|0)<(4);
+ $17 = $16 & $15;
+ if ($17) {
+ $$02427 = $14;
+ } else {
+ break;
+ }
+ }
+ return;
+}
+function _emscripten_wait_for_call_v($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $$ = 0, $$01921 = 0.0, $$020$lcssa = 0, $$1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = ((($0)) + 8|0);
+ $3 = (Atomics_load(HEAP32, $2>>2)|0);
+ $4 = ($3|0)==(0);
+ if (!($4)) {
+ $$1 = $3;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+ }
+ $5 = (+_emscripten_get_now());
+ $6 = $5 + $1;
+ _emscripten_set_current_thread_status(5);
+ $7 = $5 < $6;
+ if ($7) {
+ $$01921 = $5;
+ while(1) {
+ $8 = $6 - $$01921;
+ (_emscripten_futex_wait(($2|0),0,(+$8))|0);
+ $9 = (Atomics_load(HEAP32, $2>>2)|0);
+ $10 = (+_emscripten_get_now());
+ $11 = ($9|0)==(0);
+ $12 = $10 < $6;
+ $or$cond = $11 & $12;
+ if ($or$cond) {
+ $$01921 = $10;
+ } else {
+ $$020$lcssa = $9;
+ break;
+ }
+ }
+ } else {
+ $$020$lcssa = 0;
+ }
+ _emscripten_set_current_thread_status(1);
+ $$1 = $$020$lcssa;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+}
+function __do_call($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0;
+ var $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ do {
+ switch ($1|0) {
+ case 12: {
+ $2 = ((($0)) + 16|0);
+ $3 = HEAP32[$2>>2]|0;
+ $4 = ((($0)) + 24|0);
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (_utime(($3|0),($5|0))|0);
+ $7 = ((($0)) + 80|0);
+ HEAP32[$7>>2] = $6;
+ break;
+ }
+ case 13: {
+ $8 = ((($0)) + 16|0);
+ $9 = HEAP32[$8>>2]|0;
+ $10 = ((($0)) + 24|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (_utimes(($9|0),($11|0))|0);
+ $13 = ((($0)) + 80|0);
+ HEAP32[$13>>2] = $12;
+ break;
+ }
+ case 37: {
+ $14 = ((($0)) + 16|0);
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (_chroot(($15|0))|0);
+ $17 = ((($0)) + 80|0);
+ HEAP32[$17>>2] = $16;
+ break;
+ }
+ case 46: {
+ $18 = ((($0)) + 16|0);
+ $19 = HEAP32[$18>>2]|0;
+ $20 = ((($0)) + 24|0);
+ $21 = HEAP32[$20>>2]|0;
+ $22 = (_fpathconf(($19|0),($21|0))|0);
+ $23 = ((($0)) + 80|0);
+ HEAP32[$23>>2] = $22;
+ break;
+ }
+ case 68: {
+ $24 = ((($0)) + 16|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = ((($0)) + 24|0);
+ $27 = HEAP32[$26>>2]|0;
+ $28 = ((($0)) + 32|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = (_confstr(($25|0),($27|0),($29|0))|0);
+ $31 = ((($0)) + 80|0);
+ HEAP32[$31>>2] = $30;
+ break;
+ }
+ case 72: {
+ $32 = ((($0)) + 16|0);
+ $33 = HEAP32[$32>>2]|0;
+ $34 = (_sysconf(($33|0))|0);
+ $35 = ((($0)) + 80|0);
+ HEAP32[$35>>2] = $34;
+ break;
+ }
+ case 110: {
+ $36 = ((($0)) + 16|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = (_atexit(($37|0))|0);
+ $39 = ((($0)) + 80|0);
+ HEAP32[$39>>2] = $38;
+ break;
+ }
+ case 111: {
+ $40 = ((($0)) + 16|0);
+ $41 = HEAP32[$40>>2]|0;
+ $42 = (_getenv(($41|0))|0);
+ $43 = ((($0)) + 80|0);
+ HEAP32[$43>>2] = $42;
+ break;
+ }
+ case 112: {
+ $44 = (_clearenv()|0);
+ $45 = ((($0)) + 80|0);
+ HEAP32[$45>>2] = $44;
+ break;
+ }
+ case 113: {
+ $46 = ((($0)) + 16|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ((($0)) + 24|0);
+ $49 = HEAP32[$48>>2]|0;
+ $50 = ((($0)) + 32|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = (_setenv(($47|0),($49|0),($51|0))|0);
+ $53 = ((($0)) + 80|0);
+ HEAP32[$53>>2] = $52;
+ break;
+ }
+ case 114: {
+ $54 = ((($0)) + 16|0);
+ $55 = HEAP32[$54>>2]|0;
+ $56 = (_unsetenv(($55|0))|0);
+ $57 = ((($0)) + 80|0);
+ HEAP32[$57>>2] = $56;
+ break;
+ }
+ case 115: {
+ $58 = ((($0)) + 16|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = (_putenv(($59|0))|0);
+ $61 = ((($0)) + 80|0);
+ HEAP32[$61>>2] = $60;
+ break;
+ }
+ case 119: {
+ _tzset();
+ break;
+ }
+ case 137: {
+ $62 = ((($0)) + 16|0);
+ $63 = HEAP32[$62>>2]|0;
+ $64 = ((($0)) + 24|0);
+ $65 = HEAP32[$64>>2]|0;
+ $66 = ((($0)) + 32|0);
+ $67 = HEAP32[$66>>2]|0;
+ $68 = ((($0)) + 40|0);
+ $69 = HEAP32[$68>>2]|0;
+ $70 = (_pthread_create(($63|0),($65|0),($67|0),($69|0))|0);
+ $71 = ((($0)) + 80|0);
+ HEAP32[$71>>2] = $70;
+ break;
+ }
+ case 138: {
+ $72 = ((($0)) + 16|0);
+ $73 = HEAP32[$72>>2]|0;
+ $74 = ((($0)) + 24|0);
+ $75 = HEAP32[$74>>2]|0;
+ $76 = (_emscripten_syscall(($73|0),($75|0))|0);
+ $77 = ((($0)) + 80|0);
+ HEAP32[$77>>2] = $76;
+ break;
+ }
+ case 1024: {
+ $78 = ((($0)) + 4|0);
+ $79 = HEAP32[$78>>2]|0;
+ FUNCTION_TABLE_v[$79 & 7]();
+ break;
+ }
+ case 1025: {
+ $80 = ((($0)) + 4|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ((($0)) + 16|0);
+ $83 = HEAP32[$82>>2]|0;
+ FUNCTION_TABLE_vi[$81 & 31]($83);
+ break;
+ }
+ case 1026: {
+ $84 = ((($0)) + 4|0);
+ $85 = HEAP32[$84>>2]|0;
+ $86 = ((($0)) + 16|0);
+ $87 = HEAP32[$86>>2]|0;
+ $88 = ((($0)) + 24|0);
+ $89 = HEAP32[$88>>2]|0;
+ FUNCTION_TABLE_vii[$85 & 63]($87,$89);
+ break;
+ }
+ case 1027: {
+ $90 = ((($0)) + 4|0);
+ $91 = HEAP32[$90>>2]|0;
+ $92 = ((($0)) + 16|0);
+ $93 = HEAP32[$92>>2]|0;
+ $94 = ((($0)) + 24|0);
+ $95 = HEAP32[$94>>2]|0;
+ $96 = ((($0)) + 32|0);
+ $97 = HEAP32[$96>>2]|0;
+ FUNCTION_TABLE_viii[$91 & 31]($93,$95,$97);
+ break;
+ }
+ case 2048: {
+ $98 = ((($0)) + 4|0);
+ $99 = HEAP32[$98>>2]|0;
+ $100 = (FUNCTION_TABLE_i[$99 & 3]()|0);
+ $101 = ((($0)) + 80|0);
+ HEAP32[$101>>2] = $100;
+ break;
+ }
+ case 2049: {
+ $102 = ((($0)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ((($0)) + 16|0);
+ $105 = HEAP32[$104>>2]|0;
+ $106 = (FUNCTION_TABLE_ii[$103 & 15]($105)|0);
+ $107 = ((($0)) + 80|0);
+ HEAP32[$107>>2] = $106;
+ break;
+ }
+ case 2050: {
+ $108 = ((($0)) + 4|0);
+ $109 = HEAP32[$108>>2]|0;
+ $110 = ((($0)) + 16|0);
+ $111 = HEAP32[$110>>2]|0;
+ $112 = ((($0)) + 24|0);
+ $113 = HEAP32[$112>>2]|0;
+ $114 = (FUNCTION_TABLE_iii[$109 & 3]($111,$113)|0);
+ $115 = ((($0)) + 80|0);
+ HEAP32[$115>>2] = $114;
+ break;
+ }
+ case 2051: {
+ $116 = ((($0)) + 4|0);
+ $117 = HEAP32[$116>>2]|0;
+ $118 = ((($0)) + 16|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = ((($0)) + 24|0);
+ $121 = HEAP32[$120>>2]|0;
+ $122 = ((($0)) + 32|0);
+ $123 = HEAP32[$122>>2]|0;
+ $124 = (FUNCTION_TABLE_iiii[$117 & 15]($119,$121,$123)|0);
+ $125 = ((($0)) + 80|0);
+ HEAP32[$125>>2] = $124;
+ break;
+ }
+ default: {
+ ___assert_fail((13812|0),(13704|0),211,(13863|0));
+ // unreachable;
+ }
+ }
+ } while(0);
+ $126 = ((($0)) + 88|0);
+ $127 = HEAP32[$126>>2]|0;
+ $128 = ($127|0)==(0);
+ if ($128) {
+ $129 = ((($0)) + 8|0);
+ HEAP32[$129>>2] = 1;
+ (_emscripten_futex_wake(($129|0),2147483647)|0);
+ return;
+ } else {
+ _free($0);
+ return;
+ }
+}
+function ___pthread_mutex_unlock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$045 = 0, $$pre = 0, $$pre$phiZ2D = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
+ var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $5 = 0, $6 = 0;
+ var $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ((($0)) + 8|0);
+ $2 = (Atomics_load(HEAP32,$1>>2)|0);
+ $3 = HEAP32[$0>>2]|0;
+ $4 = $3 & 15;
+ $5 = $3 & 128;
+ $6 = $5 ^ 128;
+ $7 = ($4|0)==(0);
+ if ($7) {
+ $$pre = ((($0)) + 4|0);
+ $$045 = 0;$$pre$phiZ2D = $$pre;
+ } else {
+ $8 = (_pthread_self()|0);
+ $9 = ((($0)) + 4|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = $10 & 2147483647;
+ $12 = ((($8)) + 52|0);
+ $13 = HEAP32[$12>>2]|0;
+ $14 = ($11|0)==($13|0);
+ if (!($14)) {
+ $$0 = 1;
+ return ($$0|0);
+ }
+ $15 = $3 & 3;
+ $16 = ($15|0)==(1);
+ if ($16) {
+ $17 = ((($0)) + 20|0);
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($18|0)==(0);
+ if (!($19)) {
+ $20 = (($18) + -1)|0;
+ HEAP32[$17>>2] = $20;
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $21 = ($6|0)==(0);
+ $22 = ((($0)) + 16|0);
+ if ($21) {
+ $23 = ((($8)) + 176|0);
+ Atomics_store(HEAP32,$23>>2,$22)|0;
+ ___vm_lock();
+ }
+ $24 = ((($0)) + 12|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = HEAP32[$22>>2]|0;
+ Atomics_store(HEAP32,$25>>2,$26)|0;
+ $27 = ((($8)) + 168|0);
+ $28 = ($26|0)==($27|0);
+ if ($28) {
+ $$045 = $8;$$pre$phiZ2D = $9;
+ } else {
+ $29 = ((($26)) + -4|0);
+ Atomics_store(HEAP32,$29>>2,$25)|0;
+ $$045 = $8;$$pre$phiZ2D = $9;
+ }
+ }
+ $30 = $3 & 8;
+ $31 = ($30|0)!=(0);
+ $32 = $31 ? 2147483647 : 0;
+ while(1) {
+ $33 = (Atomics_load(HEAP32, $$pre$phiZ2D>>2)|0);
+ $34 = (Atomics_compareExchange(HEAP32, $$pre$phiZ2D>>2, $33, $32)|0);
+ $35 = ($34|0)==($33|0);
+ if ($35) {
+ break;
+ }
+ }
+ $36 = ($6|0)!=(0);
+ $or$cond = $7 | $36;
+ if (!($or$cond)) {
+ $37 = ((($$045)) + 176|0);
+ Atomics_store(HEAP32,$37>>2,0)|0;
+ ___vm_unlock();
+ }
+ $38 = ($2|0)!=(0);
+ $39 = ($33|0)<(0);
+ $or$cond3 = $38 | $39;
+ if (!($or$cond3)) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ (_emscripten_futex_wake(($$pre$phiZ2D|0),1)|0);
+ $$0 = 0;
+ return ($$0|0);
+}
+function ___vm_lock() {
+ var $0 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8594, 1)|0);
+ return;
+}
+function ___vm_unlock() {
+ var $0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8594, -1)|0);
+ $1 = ($0|0)==(1);
+ if (!($1)) {
+ return;
+ }
+ $2 = (Atomics_load(HEAP32,(34380)>>2)|0);
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ (_emscripten_futex_wake((34376|0),2147483647)|0);
+ return;
+}
+function ___pthread_mutex_lock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = ($5|0)==(0);
+ if ($6) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $7 = (___pthread_mutex_timedlock($0,0)|0);
+ $$0 = $7;
+ return ($$0|0);
+}
+function ___pthread_mutex_timedlock($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$0 = 0, $$2 = 0, $$pre = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
+ var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
+ var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond40 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = HEAP32[$0>>2]|0;
+ $3 = $2 & 15;
+ $4 = ($3|0)==(0);
+ do {
+ if ($4) {
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_compareExchange(HEAP32, $5>>2, 0, 16)|0);
+ $7 = ($6|0)==(0);
+ if ($7) {
+ $$2 = 0;
+ return ($$2|0);
+ } else {
+ $$pre = HEAP32[$0>>2]|0;
+ $9 = $$pre;
+ break;
+ }
+ } else {
+ $9 = $2;
+ }
+ } while(0);
+ $8 = $9 & 128;
+ $10 = $8 ^ 128;
+ $11 = (___pthread_mutex_trylock($0)|0);
+ $12 = ($11|0)==(16);
+ if (!($12)) {
+ $$2 = $11;
+ return ($$2|0);
+ }
+ $13 = ((($0)) + 4|0);
+ $14 = ((($0)) + 8|0);
+ $$0 = 100;
+ while(1) {
+ $15 = (($$0) + -1)|0;
+ $16 = ($$0|0)==(0);
+ if ($16) {
+ break;
+ }
+ $17 = (Atomics_load(HEAP32,$13>>2)|0);
+ $18 = ($17|0)==(0);
+ if ($18) {
+ break;
+ }
+ $19 = (Atomics_load(HEAP32,$14>>2)|0);
+ $20 = ($19|0)==(0);
+ if ($20) {
+ $$0 = $15;
+ } else {
+ break;
+ }
+ }
+ $21 = (___pthread_mutex_trylock($0)|0);
+ $22 = ($21|0)==(16);
+ if (!($22)) {
+ $$2 = $21;
+ return ($$2|0);
+ }
+ L18: while(1) {
+ $23 = (Atomics_load(HEAP32,$13>>2)|0);
+ $24 = ($23|0)==(0);
+ if (!($24)) {
+ $27 = $23 & 1073741824;
+ $28 = ($27|0)==(0);
+ $29 = HEAP32[$0>>2]|0;
+ $30 = $29 & 4;
+ $31 = ($30|0)==(0);
+ $or$cond40 = $28 | $31;
+ if ($or$cond40) {
+ $32 = $29 & 3;
+ $33 = ($32|0)==(2);
+ if ($33) {
+ $34 = $23 & 2147483647;
+ $35 = (_pthread_self()|0);
+ $36 = ((($35)) + 52|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($34|0)==($37|0);
+ if ($38) {
+ $$2 = 35;
+ label = 17;
+ break;
+ }
+ }
+ $39 = (Atomics_add(HEAP32, $14>>2, 1)|0);
+ $40 = $23 | -2147483648;
+ $41 = (Atomics_compareExchange(HEAP32, $13>>2, $23, $40)|0);
+ $42 = (___timedwait($13,$40,0,$1,$10)|0);
+ $43 = (Atomics_sub(HEAP32, $14>>2, 1)|0);
+ switch ($42|0) {
+ case 0: case 4: {
+ break;
+ }
+ default: {
+ $$2 = $42;
+ label = 17;
+ break L18;
+ }
+ }
+ }
+ }
+ $25 = (___pthread_mutex_trylock($0)|0);
+ $26 = ($25|0)==(16);
+ if (!($26)) {
+ $$2 = $25;
+ label = 17;
+ break;
+ }
+ }
+ if ((label|0) == 17) {
+ return ($$2|0);
+ }
+ return (0)|0;
+}
+function ___timedwait($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ (___pthread_setcancelstate(1,($5|0))|0);
+ _emscripten_conditional_set_current_thread_status(1,4);
+ $6 = (___timedwait_cp($0,$1,$2,$3,$4)|0);
+ _emscripten_conditional_set_current_thread_status(4,1);
+ $7 = HEAP32[$5>>2]|0;
+ (___pthread_setcancelstate(($7|0),(0|0))|0);
+ STACKTOP = sp;return ($6|0);
+}
+function ___timedwait_cp($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $$$0$us = 0.0, $$$045 = 0.0, $$$046$us = 0.0, $$0$us = 0.0, $$0$us53 = 0.0, $$138 = 0, $$138$ph = 0, $$138$ph70 = 0, $$138$ph72 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0;
+ var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $40 = 0;
+ var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ $6 = ($3|0)!=(0|0);
+ if ($6) {
+ $7 = ((($3)) + 4|0);
+ $8 = HEAP32[$7>>2]|0;
+ $9 = ($8>>>0)>(999999999);
+ if ($9) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $10 = (___clock_gettime(($2|0),($5|0))|0);
+ $11 = ($10|0)==(0);
+ if (!($11)) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $12 = HEAP32[$3>>2]|0;
+ $13 = HEAP32[$5>>2]|0;
+ $14 = (($12) - ($13))|0;
+ HEAP32[$5>>2] = $14;
+ $15 = HEAP32[$7>>2]|0;
+ $16 = ((($5)) + 4|0);
+ $17 = HEAP32[$16>>2]|0;
+ $18 = (($15) - ($17))|0;
+ HEAP32[$16>>2] = $18;
+ $19 = ($18|0)<(0);
+ if ($19) {
+ $20 = (($14) + -1)|0;
+ HEAP32[$5>>2] = $20;
+ $21 = (($18) + 1000000000)|0;
+ HEAP32[$16>>2] = $21;
+ $23 = $20;
+ } else {
+ $23 = $14;
+ }
+ $22 = ($23|0)<(0);
+ if ($22) {
+ $$138 = 110;
+ STACKTOP = sp;return ($$138|0);
+ }
+ }
+ $24 = (_emscripten_is_main_runtime_thread()|0);
+ $25 = ($24|0)!=(0);
+ $$$045 = $25 ? 1.0 : 100.0;
+ if ($25) {
+ L15: while(1) {
+ $26 = (_pthread_self()|0);
+ $27 = (__pthread_isduecanceled($26)|0);
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $$138$ph = 125;
+ break;
+ }
+ _emscripten_main_thread_process_queued_calls();
+ if ($6) {
+ $29 = (+__pthread_msecs_until($3));
+ $30 = !($29 <= 0.0);
+ $31 = $29 > 100.0;
+ $$0$us = $31 ? 100.0 : $29;
+ $32 = $$0$us > 1.0;
+ $$$0$us = $32 ? 1.0 : $$0$us;
+ if ($30) {
+ $$$046$us = $$$0$us;
+ } else {
+ $$138$ph = 110;
+ break;
+ }
+ } else {
+ $$$046$us = $$$045;
+ }
+ $33 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$046$us))|0);
+ $34 = (0 - ($33))|0;
+ switch ($34|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph = $34;
+ break L15;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L15;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph;
+ STACKTOP = sp;return ($$138|0);
+ }
+ if (!($6)) {
+ L27: while(1) {
+ $43 = (_pthread_self()|0);
+ $44 = (__pthread_isduecanceled($43)|0);
+ $45 = ($44|0)==(0);
+ if (!($45)) {
+ $$138$ph72 = 125;
+ break;
+ }
+ $46 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$045))|0);
+ $47 = (0 - ($46))|0;
+ switch ($47|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph72 = $47;
+ break L27;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L27;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph72;
+ STACKTOP = sp;return ($$138|0);
+ }
+ L34: while(1) {
+ $35 = (_pthread_self()|0);
+ $36 = (__pthread_isduecanceled($35)|0);
+ $37 = ($36|0)==(0);
+ if (!($37)) {
+ $$138$ph70 = 125;
+ break;
+ }
+ $38 = (+__pthread_msecs_until($3));
+ $39 = !($38 <= 0.0);
+ if (!($39)) {
+ $$138$ph70 = 110;
+ break;
+ }
+ $40 = $38 > 100.0;
+ $$0$us53 = $40 ? 100.0 : $38;
+ $41 = (_emscripten_futex_wait(($0|0),($1|0),(+$$0$us53))|0);
+ $42 = (0 - ($41))|0;
+ switch ($42|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph70 = $42;
+ break L34;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L34;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph70;
+ STACKTOP = sp;return ($$138|0);
+}
+function __pthread_isduecanceled($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = ($1|0)==(2);
+ $3 = $2&1;
+ return ($3|0);
+}
+function __pthread_msecs_until($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
- $2 = ($0>>>0)<(245);
+ (_gettimeofday(($1|0),(0|0))|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = (+($2|0));
+ $4 = $3 * 1000.0;
+ $5 = ((($1)) + 4|0);
+ $6 = HEAP32[$5>>2]|0;
+ $7 = (+($6|0));
+ $8 = $7 * 0.001;
+ $9 = $4 + $8;
+ $10 = HEAP32[$0>>2]|0;
+ $11 = (+($10|0));
+ $12 = $11 * 1000.0;
+ $13 = ((($0)) + 4|0);
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (+($14|0));
+ $16 = $15 * 9.9999999999999995E-7;
+ $17 = $12 + $16;
+ $18 = $17 - $9;
+ STACKTOP = sp;return (+$18);
+}
+function ___pthread_mutex_trylock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = $5 & 16;
+ $$0 = $6;
+ return ($$0|0);
+ } else {
+ $7 = (___pthread_mutex_trylock_owner($0)|0);
+ $$0 = $7;
+ return ($$0|0);
+ }
+ return (0)|0;
+}
+function ___pthread_mutex_trylock_owner($0) {
+ $0 = $0|0;
+ var $$ = 0, $$1 = 0, $$154 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0;
+ var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0;
+ var $43 = 0, $44 = 0, $45 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond57 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = (_pthread_self()|0);
+ $3 = ((($2)) + 52|0);
+ $4 = HEAP32[$3>>2]|0;
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_load(HEAP32,$5>>2)|0);
+ $7 = $6 & 2147483647;
+ $8 = ($7|0)==($4|0);
+ $9 = $1 & 3;
+ $10 = ($9|0)==(1);
+ $or$cond = $10 & $8;
+ if ($or$cond) {
+ $11 = ((($0)) + 20|0);
+ $12 = HEAP32[$11>>2]|0;
+ $13 = ($12>>>0)>(2147483646);
+ if ($13) {
+ $$1 = 11;
+ return ($$1|0);
+ }
+ $14 = (($12) + 1)|0;
+ HEAP32[$11>>2] = $14;
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $15 = ($7|0)==(2147483647);
+ if ($15) {
+ $$1 = 131;
+ return ($$1|0);
+ }
+ $16 = HEAP32[$0>>2]|0;
+ $17 = $16 & 128;
+ $18 = ($17|0)==(0);
+ if ($18) {
+ $$154 = $4;
+ } else {
+ $19 = ((($2)) + 172|0);
+ $20 = HEAP32[$19>>2]|0;
+ $21 = ($20|0)==(0);
+ if ($21) {
+ HEAP32[$19>>2] = -12;
+ }
+ $22 = ((($0)) + 8|0);
+ $23 = (Atomics_load(HEAP32,$22>>2)|0);
+ $24 = ($23|0)==(0);
+ $25 = $4 | -2147483648;
+ $$ = $24 ? $4 : $25;
+ $26 = ((($0)) + 16|0);
+ $27 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$27>>2,$26)|0;
+ $$154 = $$;
+ }
+ $28 = ($7|0)!=(0);
+ if ($28) {
+ $29 = $6 & 1073741824;
+ $30 = ($29|0)==(0);
+ $31 = $1 & 4;
+ $32 = ($31|0)==(0);
+ $or$cond57 = $32 | $30;
+ if (!($or$cond57)) {
+ label = 11;
+ }
+ } else {
+ label = 11;
+ }
+ if ((label|0) == 11) {
+ $33 = (Atomics_compareExchange(HEAP32, $5>>2, $6, $$154)|0);
+ $34 = ($33|0)==($6|0);
+ if ($34) {
+ $36 = ((($2)) + 168|0);
+ $37 = (Atomics_load(HEAP32,$36>>2)|0);
+ $38 = ((($0)) + 16|0);
+ HEAP32[$38>>2] = $37;
+ $39 = ((($0)) + 12|0);
+ HEAP32[$39>>2] = $36;
+ $40 = ($37|0)==($36|0);
+ if (!($40)) {
+ $41 = ((($37)) + -4|0);
+ Atomics_store(HEAP32,$41>>2,$38)|0;
+ }
+ Atomics_store(HEAP32,$36>>2,$38)|0;
+ $42 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$42>>2,0)|0;
+ if (!($28)) {
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $43 = ((($0)) + 20|0);
+ HEAP32[$43>>2] = 0;
+ $44 = HEAP32[$0>>2]|0;
+ $45 = $44 | 8;
+ HEAP32[$0>>2] = $45;
+ $$1 = 130;
+ return ($$1|0);
+ }
+ }
+ $35 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$35>>2,0)|0;
+ $$1 = 16;
+ return ($$1|0);
+}
+function _pthread_mutexattr_destroy($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ return 0;
+}
+function _pthread_mutexattr_init($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ HEAP32[$0>>2] = 0;
+ return 0;
+}
+function _pthread_mutex_init($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$sroa$0 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
+ $$sroa$0 = sp;
+ ;HEAP32[$$sroa$0>>2]=0|0;HEAP32[$$sroa$0+4>>2]=0|0;HEAP32[$$sroa$0+8>>2]=0|0;HEAP32[$$sroa$0+12>>2]=0|0;HEAP32[$$sroa$0+16>>2]=0|0;HEAP32[$$sroa$0+20>>2]=0|0;HEAP32[$$sroa$0+24>>2]=0|0;
+ ;HEAP32[$0>>2]=HEAP32[$$sroa$0>>2]|0;HEAP32[$0+4>>2]=HEAP32[$$sroa$0+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[$$sroa$0+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[$$sroa$0+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[$$sroa$0+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[$$sroa$0+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[$$sroa$0+24>>2]|0;
+ $2 = ($1|0)==(0|0);
+ if ($2) {
+ STACKTOP = sp;return 0;
+ }
+ $3 = HEAP32[$1>>2]|0;
+ HEAP32[$0>>2] = $3;
+ STACKTOP = sp;return 0;
+}
+function _malloc($0) {
+ $0 = $0|0;
+ var $$$0192$i = 0, $$$0193$i = 0, $$$4230$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i17$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0198 = 0, $$0200 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
+ var $$0212$i$i = 0, $$024363$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1 = 0, $$1196$i = 0;
+ var $$1198$i = 0, $$124462$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2 = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i202 = 0, $$3229$i = 0, $$3235$i = 0, $$3350$i = 0;
+ var $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0, $$4230$i = 0, $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$7$i = 0, $$7239$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i18$i = 0, $$pre$i211 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i19$iZ2D = 0;
+ var $$pre$phi$i212Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0, $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i205 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0;
+ var $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0;
+ var $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0;
+ var $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0;
+ var $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0;
+ var $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0, $1088 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0;
+ var $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0;
+ var $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0;
+ var $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0;
+ var $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0;
+ var $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0;
+ var $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0;
+ var $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0;
+ var $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0;
+ var $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0;
+ var $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0;
+ var $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0;
+ var $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0;
+ var $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0;
+ var $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0;
+ var $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0;
+ var $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0;
+ var $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0;
+ var $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0;
+ var $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0;
+ var $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0;
+ var $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0;
+ var $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0;
+ var $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0;
+ var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0;
+ var $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0;
+ var $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0;
+ var $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0;
+ var $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0;
+ var $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0;
+ var $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0;
+ var $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0;
+ var $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0;
+ var $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0;
+ var $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0;
+ var $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0;
+ var $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0;
+ var $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0;
+ var $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0;
+ var $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0;
+ var $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0;
+ var $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0;
+ var $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0;
+ var $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0;
+ var $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0;
+ var $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0;
+ var $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0;
+ var $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0;
+ var $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0;
+ var $cond$i$i = 0, $cond$i209 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i21$i = 0, $not$$i210 = 0, $not$1$i = 0, $not$1$i204 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0, $or$cond$i = 0, $or$cond$i213 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond12$i = 0, $or$cond2$i = 0;
+ var $or$cond2$i214 = 0, $or$cond43$i = 0, $or$cond5$i = 0, $or$cond7$i = 0, $or$cond9$i = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $1 = sp + 4|0;
+ $2 = sp;
+ $3 = HEAP32[8852]|0;
+ $4 = ($3|0)==(0);
+ if ($4) {
+ (___pthread_mutex_lock(35432)|0);
+ $5 = HEAP32[8852]|0;
+ $6 = ($5|0)==(0);
+ if ($6) {
+ HEAP32[(35416)>>2] = 4096;
+ HEAP32[(35412)>>2] = 4096;
+ HEAP32[(35420)>>2] = -1;
+ HEAP32[(35424)>>2] = -1;
+ HEAP32[(35428)>>2] = 2;
+ HEAP32[(35904)>>2] = 2;
+ $7 = (_pthread_mutexattr_init($1)|0);
+ $8 = ($7|0)==(0);
+ if ($8) {
+ $9 = (_pthread_mutex_init((35908),$1)|0);
+ $10 = ($9|0)==(0);
+ if ($10) {
+ }
+ }
+ $11 = $2;
+ $12 = $11 & -16;
+ $13 = $12 ^ 1431655768;
+ HEAP32[$2>>2] = $13;
+ Atomics_store(HEAP32,8852,$13)|0;
+ }
+ (___pthread_mutex_unlock(35432)|0);
+ }
+ $14 = HEAP32[(35904)>>2]|0;
+ $15 = $14 & 2;
+ $16 = ($15|0)==(0);
+ if (!($16)) {
+ $17 = (___pthread_mutex_lock((35908))|0);
+ $18 = ($17|0)==(0);
+ if (!($18)) {
+ $$1 = 0;
+ STACKTOP = sp;return ($$1|0);
+ }
+ }
+ $19 = ($0>>>0)<(245);
do {
- if ($2) {
- $3 = ($0>>>0)<(11);
- $4 = (($0) + 11)|0;
- $5 = $4 & -8;
- $6 = $3 ? 16 : $5;
- $7 = $6 >>> 3;
- $8 = HEAP32[8286]|0;
- $9 = $8 >>> $7;
- $10 = $9 & 3;
- $11 = ($10|0)==(0);
- if (!($11)) {
- $12 = $9 & 1;
- $13 = $12 ^ 1;
- $14 = (($13) + ($7))|0;
- $15 = $14 << 1;
- $16 = (33184 + ($15<<2)|0);
- $17 = ((($16)) + 8|0);
- $18 = HEAP32[$17>>2]|0;
- $19 = ((($18)) + 8|0);
- $20 = HEAP32[$19>>2]|0;
- $21 = ($16|0)==($20|0);
+ if ($19) {
+ $20 = ($0>>>0)<(11);
+ $21 = (($0) + 11)|0;
+ $22 = $21 & -8;
+ $23 = $20 ? 16 : $22;
+ $24 = $23 >>> 3;
+ $25 = HEAP32[8865]|0;
+ $26 = $25 >>> $24;
+ $27 = $26 & 3;
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $29 = $26 & 1;
+ $30 = $29 ^ 1;
+ $31 = (($30) + ($24))|0;
+ $32 = $31 << 1;
+ $33 = (35500 + ($32<<2)|0);
+ $34 = ((($33)) + 8|0);
+ $35 = HEAP32[$34>>2]|0;
+ $36 = ((($35)) + 8|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($33|0)==($37|0);
do {
- if ($21) {
- $22 = 1 << $14;
- $23 = $22 ^ -1;
- $24 = $8 & $23;
- HEAP32[8286] = $24;
+ if ($38) {
+ $39 = 1 << $31;
+ $40 = $39 ^ -1;
+ $41 = $25 & $40;
+ HEAP32[8865] = $41;
} else {
- $25 = HEAP32[(33160)>>2]|0;
- $26 = ($20>>>0)<($25>>>0);
- if ($26) {
+ $42 = HEAP32[(35476)>>2]|0;
+ $43 = ($37>>>0)<($42>>>0);
+ if ($43) {
_abort();
// unreachable;
}
- $27 = ((($20)) + 12|0);
- $28 = HEAP32[$27>>2]|0;
- $29 = ($28|0)==($18|0);
- if ($29) {
- HEAP32[$27>>2] = $16;
- HEAP32[$17>>2] = $20;
+ $44 = ((($37)) + 12|0);
+ $45 = HEAP32[$44>>2]|0;
+ $46 = ($45|0)==($35|0);
+ if ($46) {
+ HEAP32[$44>>2] = $33;
+ HEAP32[$34>>2] = $37;
break;
} else {
_abort();
@@ -24027,79 +30315,79 @@ function _malloc($0) {
}
}
} while(0);
- $30 = $14 << 3;
- $31 = $30 | 3;
- $32 = ((($18)) + 4|0);
- HEAP32[$32>>2] = $31;
- $33 = (($18) + ($30)|0);
- $34 = ((($33)) + 4|0);
- $35 = HEAP32[$34>>2]|0;
- $36 = $35 | 1;
- HEAP32[$34>>2] = $36;
- $$0 = $19;
- STACKTOP = sp;return ($$0|0);
+ $47 = $31 << 3;
+ $48 = $47 | 3;
+ $49 = ((($35)) + 4|0);
+ HEAP32[$49>>2] = $48;
+ $50 = (($35) + ($47)|0);
+ $51 = ((($50)) + 4|0);
+ $52 = HEAP32[$51>>2]|0;
+ $53 = $52 | 1;
+ HEAP32[$51>>2] = $53;
+ $$2 = $36;
+ break;
}
- $37 = HEAP32[(33152)>>2]|0;
- $38 = ($6>>>0)>($37>>>0);
- if ($38) {
- $39 = ($9|0)==(0);
- if (!($39)) {
- $40 = $9 << $7;
- $41 = 2 << $7;
- $42 = (0 - ($41))|0;
- $43 = $41 | $42;
- $44 = $40 & $43;
- $45 = (0 - ($44))|0;
- $46 = $44 & $45;
- $47 = (($46) + -1)|0;
- $48 = $47 >>> 12;
- $49 = $48 & 16;
- $50 = $47 >>> $49;
- $51 = $50 >>> 5;
- $52 = $51 & 8;
- $53 = $52 | $49;
- $54 = $50 >>> $52;
- $55 = $54 >>> 2;
- $56 = $55 & 4;
- $57 = $53 | $56;
- $58 = $54 >>> $56;
- $59 = $58 >>> 1;
- $60 = $59 & 2;
- $61 = $57 | $60;
- $62 = $58 >>> $60;
- $63 = $62 >>> 1;
- $64 = $63 & 1;
- $65 = $61 | $64;
- $66 = $62 >>> $64;
- $67 = (($65) + ($66))|0;
- $68 = $67 << 1;
- $69 = (33184 + ($68<<2)|0);
- $70 = ((($69)) + 8|0);
- $71 = HEAP32[$70>>2]|0;
- $72 = ((($71)) + 8|0);
- $73 = HEAP32[$72>>2]|0;
- $74 = ($69|0)==($73|0);
+ $54 = HEAP32[(35468)>>2]|0;
+ $55 = ($23>>>0)>($54>>>0);
+ if ($55) {
+ $56 = ($26|0)==(0);
+ if (!($56)) {
+ $57 = $26 << $24;
+ $58 = 2 << $24;
+ $59 = (0 - ($58))|0;
+ $60 = $58 | $59;
+ $61 = $57 & $60;
+ $62 = (0 - ($61))|0;
+ $63 = $61 & $62;
+ $64 = (($63) + -1)|0;
+ $65 = $64 >>> 12;
+ $66 = $65 & 16;
+ $67 = $64 >>> $66;
+ $68 = $67 >>> 5;
+ $69 = $68 & 8;
+ $70 = $69 | $66;
+ $71 = $67 >>> $69;
+ $72 = $71 >>> 2;
+ $73 = $72 & 4;
+ $74 = $70 | $73;
+ $75 = $71 >>> $73;
+ $76 = $75 >>> 1;
+ $77 = $76 & 2;
+ $78 = $74 | $77;
+ $79 = $75 >>> $77;
+ $80 = $79 >>> 1;
+ $81 = $80 & 1;
+ $82 = $78 | $81;
+ $83 = $79 >>> $81;
+ $84 = (($82) + ($83))|0;
+ $85 = $84 << 1;
+ $86 = (35500 + ($85<<2)|0);
+ $87 = ((($86)) + 8|0);
+ $88 = HEAP32[$87>>2]|0;
+ $89 = ((($88)) + 8|0);
+ $90 = HEAP32[$89>>2]|0;
+ $91 = ($86|0)==($90|0);
do {
- if ($74) {
- $75 = 1 << $67;
- $76 = $75 ^ -1;
- $77 = $8 & $76;
- HEAP32[8286] = $77;
- $98 = $77;
+ if ($91) {
+ $92 = 1 << $84;
+ $93 = $92 ^ -1;
+ $94 = $25 & $93;
+ HEAP32[8865] = $94;
+ $115 = $94;
} else {
- $78 = HEAP32[(33160)>>2]|0;
- $79 = ($73>>>0)<($78>>>0);
- if ($79) {
+ $95 = HEAP32[(35476)>>2]|0;
+ $96 = ($90>>>0)<($95>>>0);
+ if ($96) {
_abort();
// unreachable;
}
- $80 = ((($73)) + 12|0);
- $81 = HEAP32[$80>>2]|0;
- $82 = ($81|0)==($71|0);
- if ($82) {
- HEAP32[$80>>2] = $69;
- HEAP32[$70>>2] = $73;
- $98 = $8;
+ $97 = ((($90)) + 12|0);
+ $98 = HEAP32[$97>>2]|0;
+ $99 = ($98|0)==($88|0);
+ if ($99) {
+ HEAP32[$97>>2] = $86;
+ HEAP32[$87>>2] = $90;
+ $115 = $25;
break;
} else {
_abort();
@@ -24107,178 +30395,179 @@ function _malloc($0) {
}
}
} while(0);
- $83 = $67 << 3;
- $84 = (($83) - ($6))|0;
- $85 = $6 | 3;
- $86 = ((($71)) + 4|0);
- HEAP32[$86>>2] = $85;
- $87 = (($71) + ($6)|0);
- $88 = $84 | 1;
- $89 = ((($87)) + 4|0);
- HEAP32[$89>>2] = $88;
- $90 = (($87) + ($84)|0);
- HEAP32[$90>>2] = $84;
- $91 = ($37|0)==(0);
- if (!($91)) {
- $92 = HEAP32[(33164)>>2]|0;
- $93 = $37 >>> 3;
- $94 = $93 << 1;
- $95 = (33184 + ($94<<2)|0);
- $96 = 1 << $93;
- $97 = $98 & $96;
- $99 = ($97|0)==(0);
- if ($99) {
- $100 = $98 | $96;
- HEAP32[8286] = $100;
- $$pre = ((($95)) + 8|0);
- $$0199 = $95;$$pre$phiZ2D = $$pre;
+ $100 = $84 << 3;
+ $101 = (($100) - ($23))|0;
+ $102 = $23 | 3;
+ $103 = ((($88)) + 4|0);
+ HEAP32[$103>>2] = $102;
+ $104 = (($88) + ($23)|0);
+ $105 = $101 | 1;
+ $106 = ((($104)) + 4|0);
+ HEAP32[$106>>2] = $105;
+ $107 = (($104) + ($101)|0);
+ HEAP32[$107>>2] = $101;
+ $108 = ($54|0)==(0);
+ if (!($108)) {
+ $109 = HEAP32[(35480)>>2]|0;
+ $110 = $54 >>> 3;
+ $111 = $110 << 1;
+ $112 = (35500 + ($111<<2)|0);
+ $113 = 1 << $110;
+ $114 = $115 & $113;
+ $116 = ($114|0)==(0);
+ if ($116) {
+ $117 = $115 | $113;
+ HEAP32[8865] = $117;
+ $$pre = ((($112)) + 8|0);
+ $$0200 = $112;$$pre$phiZ2D = $$pre;
} else {
- $101 = ((($95)) + 8|0);
- $102 = HEAP32[$101>>2]|0;
- $103 = HEAP32[(33160)>>2]|0;
- $104 = ($102>>>0)<($103>>>0);
- if ($104) {
+ $118 = ((($112)) + 8|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = HEAP32[(35476)>>2]|0;
+ $121 = ($119>>>0)<($120>>>0);
+ if ($121) {
_abort();
// unreachable;
} else {
- $$0199 = $102;$$pre$phiZ2D = $101;
+ $$0200 = $119;$$pre$phiZ2D = $118;
}
}
- HEAP32[$$pre$phiZ2D>>2] = $92;
- $105 = ((($$0199)) + 12|0);
- HEAP32[$105>>2] = $92;
- $106 = ((($92)) + 8|0);
- HEAP32[$106>>2] = $$0199;
- $107 = ((($92)) + 12|0);
- HEAP32[$107>>2] = $95;
+ HEAP32[$$pre$phiZ2D>>2] = $109;
+ $122 = ((($$0200)) + 12|0);
+ HEAP32[$122>>2] = $109;
+ $123 = ((($109)) + 8|0);
+ HEAP32[$123>>2] = $$0200;
+ $124 = ((($109)) + 12|0);
+ HEAP32[$124>>2] = $112;
}
- HEAP32[(33152)>>2] = $84;
- HEAP32[(33164)>>2] = $87;
- $$0 = $72;
- STACKTOP = sp;return ($$0|0);
- }
- $108 = HEAP32[(33148)>>2]|0;
- $109 = ($108|0)==(0);
- if ($109) {
- $$0197 = $6;
+ HEAP32[(35468)>>2] = $101;
+ HEAP32[(35480)>>2] = $104;
+ $$2 = $89;
+ break;
+ }
+ $125 = HEAP32[(35464)>>2]|0;
+ $126 = ($125|0)==(0);
+ if ($126) {
+ $$0198 = $23;
+ label = 153;
} else {
- $110 = (0 - ($108))|0;
- $111 = $108 & $110;
- $112 = (($111) + -1)|0;
- $113 = $112 >>> 12;
- $114 = $113 & 16;
- $115 = $112 >>> $114;
- $116 = $115 >>> 5;
- $117 = $116 & 8;
- $118 = $117 | $114;
- $119 = $115 >>> $117;
- $120 = $119 >>> 2;
- $121 = $120 & 4;
- $122 = $118 | $121;
- $123 = $119 >>> $121;
- $124 = $123 >>> 1;
- $125 = $124 & 2;
- $126 = $122 | $125;
- $127 = $123 >>> $125;
- $128 = $127 >>> 1;
- $129 = $128 & 1;
- $130 = $126 | $129;
- $131 = $127 >>> $129;
- $132 = (($130) + ($131))|0;
- $133 = (33448 + ($132<<2)|0);
- $134 = HEAP32[$133>>2]|0;
- $135 = ((($134)) + 4|0);
- $136 = HEAP32[$135>>2]|0;
- $137 = $136 & -8;
- $138 = (($137) - ($6))|0;
- $139 = ((($134)) + 16|0);
- $140 = HEAP32[$139>>2]|0;
- $not$5$i = ($140|0)==(0|0);
+ $127 = (0 - ($125))|0;
+ $128 = $125 & $127;
+ $129 = (($128) + -1)|0;
+ $130 = $129 >>> 12;
+ $131 = $130 & 16;
+ $132 = $129 >>> $131;
+ $133 = $132 >>> 5;
+ $134 = $133 & 8;
+ $135 = $134 | $131;
+ $136 = $132 >>> $134;
+ $137 = $136 >>> 2;
+ $138 = $137 & 4;
+ $139 = $135 | $138;
+ $140 = $136 >>> $138;
+ $141 = $140 >>> 1;
+ $142 = $141 & 2;
+ $143 = $139 | $142;
+ $144 = $140 >>> $142;
+ $145 = $144 >>> 1;
+ $146 = $145 & 1;
+ $147 = $143 | $146;
+ $148 = $144 >>> $146;
+ $149 = (($147) + ($148))|0;
+ $150 = (35764 + ($149<<2)|0);
+ $151 = HEAP32[$150>>2]|0;
+ $152 = ((($151)) + 4|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = $153 & -8;
+ $155 = (($154) - ($23))|0;
+ $156 = ((($151)) + 16|0);
+ $157 = HEAP32[$156>>2]|0;
+ $not$5$i = ($157|0)==(0|0);
$$sink16$i = $not$5$i&1;
- $141 = (((($134)) + 16|0) + ($$sink16$i<<2)|0);
- $142 = HEAP32[$141>>2]|0;
- $143 = ($142|0)==(0|0);
- if ($143) {
- $$0192$lcssa$i = $134;$$0193$lcssa$i = $138;
+ $158 = (((($151)) + 16|0) + ($$sink16$i<<2)|0);
+ $159 = HEAP32[$158>>2]|0;
+ $160 = ($159|0)==(0|0);
+ if ($160) {
+ $$0192$lcssa$i = $151;$$0193$lcssa$i = $155;
} else {
- $$01928$i = $134;$$01937$i = $138;$145 = $142;
+ $$01928$i = $151;$$01937$i = $155;$162 = $159;
while(1) {
- $144 = ((($145)) + 4|0);
- $146 = HEAP32[$144>>2]|0;
- $147 = $146 & -8;
- $148 = (($147) - ($6))|0;
- $149 = ($148>>>0)<($$01937$i>>>0);
- $$$0193$i = $149 ? $148 : $$01937$i;
- $$$0192$i = $149 ? $145 : $$01928$i;
- $150 = ((($145)) + 16|0);
- $151 = HEAP32[$150>>2]|0;
- $not$$i = ($151|0)==(0|0);
+ $161 = ((($162)) + 4|0);
+ $163 = HEAP32[$161>>2]|0;
+ $164 = $163 & -8;
+ $165 = (($164) - ($23))|0;
+ $166 = ($165>>>0)<($$01937$i>>>0);
+ $$$0193$i = $166 ? $165 : $$01937$i;
+ $$$0192$i = $166 ? $162 : $$01928$i;
+ $167 = ((($162)) + 16|0);
+ $168 = HEAP32[$167>>2]|0;
+ $not$$i = ($168|0)==(0|0);
$$sink1$i = $not$$i&1;
- $152 = (((($145)) + 16|0) + ($$sink1$i<<2)|0);
- $153 = HEAP32[$152>>2]|0;
- $154 = ($153|0)==(0|0);
- if ($154) {
+ $169 = (((($162)) + 16|0) + ($$sink1$i<<2)|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==(0|0);
+ if ($171) {
$$0192$lcssa$i = $$$0192$i;$$0193$lcssa$i = $$$0193$i;
break;
} else {
- $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$145 = $153;
+ $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$162 = $170;
}
}
}
- $155 = HEAP32[(33160)>>2]|0;
- $156 = ($$0192$lcssa$i>>>0)<($155>>>0);
- if ($156) {
+ $172 = HEAP32[(35476)>>2]|0;
+ $173 = ($$0192$lcssa$i>>>0)<($172>>>0);
+ if ($173) {
_abort();
// unreachable;
}
- $157 = (($$0192$lcssa$i) + ($6)|0);
- $158 = ($$0192$lcssa$i>>>0)<($157>>>0);
- if (!($158)) {
+ $174 = (($$0192$lcssa$i) + ($23)|0);
+ $175 = ($$0192$lcssa$i>>>0)<($174>>>0);
+ if (!($175)) {
_abort();
// unreachable;
}
- $159 = ((($$0192$lcssa$i)) + 24|0);
- $160 = HEAP32[$159>>2]|0;
- $161 = ((($$0192$lcssa$i)) + 12|0);
- $162 = HEAP32[$161>>2]|0;
- $163 = ($162|0)==($$0192$lcssa$i|0);
+ $176 = ((($$0192$lcssa$i)) + 24|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ((($$0192$lcssa$i)) + 12|0);
+ $179 = HEAP32[$178>>2]|0;
+ $180 = ($179|0)==($$0192$lcssa$i|0);
do {
- if ($163) {
- $173 = ((($$0192$lcssa$i)) + 20|0);
- $174 = HEAP32[$173>>2]|0;
- $175 = ($174|0)==(0|0);
- if ($175) {
- $176 = ((($$0192$lcssa$i)) + 16|0);
- $177 = HEAP32[$176>>2]|0;
- $178 = ($177|0)==(0|0);
- if ($178) {
+ if ($180) {
+ $190 = ((($$0192$lcssa$i)) + 20|0);
+ $191 = HEAP32[$190>>2]|0;
+ $192 = ($191|0)==(0|0);
+ if ($192) {
+ $193 = ((($$0192$lcssa$i)) + 16|0);
+ $194 = HEAP32[$193>>2]|0;
+ $195 = ($194|0)==(0|0);
+ if ($195) {
$$3$i = 0;
break;
} else {
- $$1196$i = $177;$$1198$i = $176;
+ $$1196$i = $194;$$1198$i = $193;
}
} else {
- $$1196$i = $174;$$1198$i = $173;
+ $$1196$i = $191;$$1198$i = $190;
}
while(1) {
- $179 = ((($$1196$i)) + 20|0);
- $180 = HEAP32[$179>>2]|0;
- $181 = ($180|0)==(0|0);
- if (!($181)) {
- $$1196$i = $180;$$1198$i = $179;
+ $196 = ((($$1196$i)) + 20|0);
+ $197 = HEAP32[$196>>2]|0;
+ $198 = ($197|0)==(0|0);
+ if (!($198)) {
+ $$1196$i = $197;$$1198$i = $196;
continue;
}
- $182 = ((($$1196$i)) + 16|0);
- $183 = HEAP32[$182>>2]|0;
- $184 = ($183|0)==(0|0);
- if ($184) {
+ $199 = ((($$1196$i)) + 16|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($200|0)==(0|0);
+ if ($201) {
break;
} else {
- $$1196$i = $183;$$1198$i = $182;
+ $$1196$i = $200;$$1198$i = $199;
}
}
- $185 = ($$1198$i>>>0)<($155>>>0);
- if ($185) {
+ $202 = ($$1198$i>>>0)<($172>>>0);
+ if ($202) {
_abort();
// unreachable;
} else {
@@ -24287,27 +30576,27 @@ function _malloc($0) {
break;
}
} else {
- $164 = ((($$0192$lcssa$i)) + 8|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165>>>0)<($155>>>0);
- if ($166) {
+ $181 = ((($$0192$lcssa$i)) + 8|0);
+ $182 = HEAP32[$181>>2]|0;
+ $183 = ($182>>>0)<($172>>>0);
+ if ($183) {
_abort();
// unreachable;
}
- $167 = ((($165)) + 12|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = ($168|0)==($$0192$lcssa$i|0);
- if (!($169)) {
+ $184 = ((($182)) + 12|0);
+ $185 = HEAP32[$184>>2]|0;
+ $186 = ($185|0)==($$0192$lcssa$i|0);
+ if (!($186)) {
_abort();
// unreachable;
}
- $170 = ((($162)) + 8|0);
- $171 = HEAP32[$170>>2]|0;
- $172 = ($171|0)==($$0192$lcssa$i|0);
- if ($172) {
- HEAP32[$167>>2] = $162;
- HEAP32[$170>>2] = $165;
- $$3$i = $162;
+ $187 = ((($179)) + 8|0);
+ $188 = HEAP32[$187>>2]|0;
+ $189 = ($188|0)==($$0192$lcssa$i|0);
+ if ($189) {
+ HEAP32[$184>>2] = $179;
+ HEAP32[$187>>2] = $182;
+ $$3$i = $179;
break;
} else {
_abort();
@@ -24315,397 +30604,401 @@ function _malloc($0) {
}
}
} while(0);
- $186 = ($160|0)==(0|0);
- L73: do {
- if (!($186)) {
- $187 = ((($$0192$lcssa$i)) + 28|0);
- $188 = HEAP32[$187>>2]|0;
- $189 = (33448 + ($188<<2)|0);
- $190 = HEAP32[$189>>2]|0;
- $191 = ($$0192$lcssa$i|0)==($190|0);
+ $203 = ($177|0)==(0|0);
+ L85: do {
+ if (!($203)) {
+ $204 = ((($$0192$lcssa$i)) + 28|0);
+ $205 = HEAP32[$204>>2]|0;
+ $206 = (35764 + ($205<<2)|0);
+ $207 = HEAP32[$206>>2]|0;
+ $208 = ($$0192$lcssa$i|0)==($207|0);
do {
- if ($191) {
- HEAP32[$189>>2] = $$3$i;
+ if ($208) {
+ HEAP32[$206>>2] = $$3$i;
$cond$i = ($$3$i|0)==(0|0);
if ($cond$i) {
- $192 = 1 << $188;
- $193 = $192 ^ -1;
- $194 = $108 & $193;
- HEAP32[(33148)>>2] = $194;
- break L73;
+ $209 = 1 << $205;
+ $210 = $209 ^ -1;
+ $211 = $125 & $210;
+ HEAP32[(35464)>>2] = $211;
+ break L85;
}
} else {
- $195 = HEAP32[(33160)>>2]|0;
- $196 = ($160>>>0)<($195>>>0);
- if ($196) {
+ $212 = HEAP32[(35476)>>2]|0;
+ $213 = ($177>>>0)<($212>>>0);
+ if ($213) {
_abort();
// unreachable;
} else {
- $197 = ((($160)) + 16|0);
- $198 = HEAP32[$197>>2]|0;
- $not$1$i = ($198|0)!=($$0192$lcssa$i|0);
+ $214 = ((($177)) + 16|0);
+ $215 = HEAP32[$214>>2]|0;
+ $not$1$i = ($215|0)!=($$0192$lcssa$i|0);
$$sink2$i = $not$1$i&1;
- $199 = (((($160)) + 16|0) + ($$sink2$i<<2)|0);
- HEAP32[$199>>2] = $$3$i;
- $200 = ($$3$i|0)==(0|0);
- if ($200) {
- break L73;
+ $216 = (((($177)) + 16|0) + ($$sink2$i<<2)|0);
+ HEAP32[$216>>2] = $$3$i;
+ $217 = ($$3$i|0)==(0|0);
+ if ($217) {
+ break L85;
} else {
break;
}
}
}
} while(0);
- $201 = HEAP32[(33160)>>2]|0;
- $202 = ($$3$i>>>0)<($201>>>0);
- if ($202) {
+ $218 = HEAP32[(35476)>>2]|0;
+ $219 = ($$3$i>>>0)<($218>>>0);
+ if ($219) {
_abort();
// unreachable;
}
- $203 = ((($$3$i)) + 24|0);
- HEAP32[$203>>2] = $160;
- $204 = ((($$0192$lcssa$i)) + 16|0);
- $205 = HEAP32[$204>>2]|0;
- $206 = ($205|0)==(0|0);
+ $220 = ((($$3$i)) + 24|0);
+ HEAP32[$220>>2] = $177;
+ $221 = ((($$0192$lcssa$i)) + 16|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
do {
- if (!($206)) {
- $207 = ($205>>>0)<($201>>>0);
- if ($207) {
+ if (!($223)) {
+ $224 = ($222>>>0)<($218>>>0);
+ if ($224) {
_abort();
// unreachable;
} else {
- $208 = ((($$3$i)) + 16|0);
- HEAP32[$208>>2] = $205;
- $209 = ((($205)) + 24|0);
- HEAP32[$209>>2] = $$3$i;
+ $225 = ((($$3$i)) + 16|0);
+ HEAP32[$225>>2] = $222;
+ $226 = ((($222)) + 24|0);
+ HEAP32[$226>>2] = $$3$i;
break;
}
}
} while(0);
- $210 = ((($$0192$lcssa$i)) + 20|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
- if (!($212)) {
- $213 = HEAP32[(33160)>>2]|0;
- $214 = ($211>>>0)<($213>>>0);
- if ($214) {
+ $227 = ((($$0192$lcssa$i)) + 20|0);
+ $228 = HEAP32[$227>>2]|0;
+ $229 = ($228|0)==(0|0);
+ if (!($229)) {
+ $230 = HEAP32[(35476)>>2]|0;
+ $231 = ($228>>>0)<($230>>>0);
+ if ($231) {
_abort();
// unreachable;
} else {
- $215 = ((($$3$i)) + 20|0);
- HEAP32[$215>>2] = $211;
- $216 = ((($211)) + 24|0);
- HEAP32[$216>>2] = $$3$i;
+ $232 = ((($$3$i)) + 20|0);
+ HEAP32[$232>>2] = $228;
+ $233 = ((($228)) + 24|0);
+ HEAP32[$233>>2] = $$3$i;
break;
}
}
}
} while(0);
- $217 = ($$0193$lcssa$i>>>0)<(16);
- if ($217) {
- $218 = (($$0193$lcssa$i) + ($6))|0;
- $219 = $218 | 3;
- $220 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$220>>2] = $219;
- $221 = (($$0192$lcssa$i) + ($218)|0);
- $222 = ((($221)) + 4|0);
- $223 = HEAP32[$222>>2]|0;
- $224 = $223 | 1;
- HEAP32[$222>>2] = $224;
+ $234 = ($$0193$lcssa$i>>>0)<(16);
+ if ($234) {
+ $235 = (($$0193$lcssa$i) + ($23))|0;
+ $236 = $235 | 3;
+ $237 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$237>>2] = $236;
+ $238 = (($$0192$lcssa$i) + ($235)|0);
+ $239 = ((($238)) + 4|0);
+ $240 = HEAP32[$239>>2]|0;
+ $241 = $240 | 1;
+ HEAP32[$239>>2] = $241;
} else {
- $225 = $6 | 3;
- $226 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$226>>2] = $225;
- $227 = $$0193$lcssa$i | 1;
- $228 = ((($157)) + 4|0);
- HEAP32[$228>>2] = $227;
- $229 = (($157) + ($$0193$lcssa$i)|0);
- HEAP32[$229>>2] = $$0193$lcssa$i;
- $230 = ($37|0)==(0);
- if (!($230)) {
- $231 = HEAP32[(33164)>>2]|0;
- $232 = $37 >>> 3;
- $233 = $232 << 1;
- $234 = (33184 + ($233<<2)|0);
- $235 = 1 << $232;
- $236 = $8 & $235;
- $237 = ($236|0)==(0);
- if ($237) {
- $238 = $8 | $235;
- HEAP32[8286] = $238;
- $$pre$i = ((($234)) + 8|0);
- $$0189$i = $234;$$pre$phi$iZ2D = $$pre$i;
+ $242 = $23 | 3;
+ $243 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$243>>2] = $242;
+ $244 = $$0193$lcssa$i | 1;
+ $245 = ((($174)) + 4|0);
+ HEAP32[$245>>2] = $244;
+ $246 = (($174) + ($$0193$lcssa$i)|0);
+ HEAP32[$246>>2] = $$0193$lcssa$i;
+ $247 = ($54|0)==(0);
+ if (!($247)) {
+ $248 = HEAP32[(35480)>>2]|0;
+ $249 = $54 >>> 3;
+ $250 = $249 << 1;
+ $251 = (35500 + ($250<<2)|0);
+ $252 = 1 << $249;
+ $253 = $25 & $252;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $255 = $25 | $252;
+ HEAP32[8865] = $255;
+ $$pre$i = ((($251)) + 8|0);
+ $$0189$i = $251;$$pre$phi$iZ2D = $$pre$i;
} else {
- $239 = ((($234)) + 8|0);
- $240 = HEAP32[$239>>2]|0;
- $241 = HEAP32[(33160)>>2]|0;
- $242 = ($240>>>0)<($241>>>0);
- if ($242) {
+ $256 = ((($251)) + 8|0);
+ $257 = HEAP32[$256>>2]|0;
+ $258 = HEAP32[(35476)>>2]|0;
+ $259 = ($257>>>0)<($258>>>0);
+ if ($259) {
_abort();
// unreachable;
} else {
- $$0189$i = $240;$$pre$phi$iZ2D = $239;
+ $$0189$i = $257;$$pre$phi$iZ2D = $256;
}
}
- HEAP32[$$pre$phi$iZ2D>>2] = $231;
- $243 = ((($$0189$i)) + 12|0);
- HEAP32[$243>>2] = $231;
- $244 = ((($231)) + 8|0);
- HEAP32[$244>>2] = $$0189$i;
- $245 = ((($231)) + 12|0);
- HEAP32[$245>>2] = $234;
+ HEAP32[$$pre$phi$iZ2D>>2] = $248;
+ $260 = ((($$0189$i)) + 12|0);
+ HEAP32[$260>>2] = $248;
+ $261 = ((($248)) + 8|0);
+ HEAP32[$261>>2] = $$0189$i;
+ $262 = ((($248)) + 12|0);
+ HEAP32[$262>>2] = $251;
}
- HEAP32[(33152)>>2] = $$0193$lcssa$i;
- HEAP32[(33164)>>2] = $157;
+ HEAP32[(35468)>>2] = $$0193$lcssa$i;
+ HEAP32[(35480)>>2] = $174;
}
- $246 = ((($$0192$lcssa$i)) + 8|0);
- $$0 = $246;
- STACKTOP = sp;return ($$0|0);
+ $263 = ((($$0192$lcssa$i)) + 8|0);
+ $$2 = $263;
}
} else {
- $$0197 = $6;
+ $$0198 = $23;
+ label = 153;
}
} else {
- $247 = ($0>>>0)>(4294967231);
- if ($247) {
- $$0197 = -1;
+ $264 = ($0>>>0)>(4294967231);
+ if ($264) {
+ $$0198 = -1;
+ label = 153;
} else {
- $248 = (($0) + 11)|0;
- $249 = $248 & -8;
- $250 = HEAP32[(33148)>>2]|0;
- $251 = ($250|0)==(0);
- if ($251) {
- $$0197 = $249;
+ $265 = (($0) + 11)|0;
+ $266 = $265 & -8;
+ $267 = HEAP32[(35464)>>2]|0;
+ $268 = ($267|0)==(0);
+ if ($268) {
+ $$0198 = $266;
+ label = 153;
} else {
- $252 = (0 - ($249))|0;
- $253 = $248 >>> 8;
- $254 = ($253|0)==(0);
- if ($254) {
+ $269 = (0 - ($266))|0;
+ $270 = $265 >>> 8;
+ $271 = ($270|0)==(0);
+ if ($271) {
$$0358$i = 0;
} else {
- $255 = ($249>>>0)>(16777215);
- if ($255) {
+ $272 = ($266>>>0)>(16777215);
+ if ($272) {
$$0358$i = 31;
} else {
- $256 = (($253) + 1048320)|0;
- $257 = $256 >>> 16;
- $258 = $257 & 8;
- $259 = $253 << $258;
- $260 = (($259) + 520192)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 4;
- $263 = $262 | $258;
- $264 = $259 << $262;
- $265 = (($264) + 245760)|0;
- $266 = $265 >>> 16;
- $267 = $266 & 2;
- $268 = $263 | $267;
- $269 = (14 - ($268))|0;
- $270 = $264 << $267;
- $271 = $270 >>> 15;
- $272 = (($269) + ($271))|0;
- $273 = $272 << 1;
- $274 = (($272) + 7)|0;
- $275 = $249 >>> $274;
- $276 = $275 & 1;
- $277 = $276 | $273;
- $$0358$i = $277;
+ $273 = (($270) + 1048320)|0;
+ $274 = $273 >>> 16;
+ $275 = $274 & 8;
+ $276 = $270 << $275;
+ $277 = (($276) + 520192)|0;
+ $278 = $277 >>> 16;
+ $279 = $278 & 4;
+ $280 = $279 | $275;
+ $281 = $276 << $279;
+ $282 = (($281) + 245760)|0;
+ $283 = $282 >>> 16;
+ $284 = $283 & 2;
+ $285 = $280 | $284;
+ $286 = (14 - ($285))|0;
+ $287 = $281 << $284;
+ $288 = $287 >>> 15;
+ $289 = (($286) + ($288))|0;
+ $290 = $289 << 1;
+ $291 = (($289) + 7)|0;
+ $292 = $266 >>> $291;
+ $293 = $292 & 1;
+ $294 = $293 | $290;
+ $$0358$i = $294;
}
}
- $278 = (33448 + ($$0358$i<<2)|0);
- $279 = HEAP32[$278>>2]|0;
- $280 = ($279|0)==(0|0);
- L117: do {
- if ($280) {
- $$2355$i = 0;$$3$i201 = 0;$$3350$i = $252;
- label = 81;
+ $295 = (35764 + ($$0358$i<<2)|0);
+ $296 = HEAP32[$295>>2]|0;
+ $297 = ($296|0)==(0|0);
+ L128: do {
+ if ($297) {
+ $$2355$i = 0;$$3$i202 = 0;$$3350$i = $269;
+ label = 90;
} else {
- $281 = ($$0358$i|0)==(31);
- $282 = $$0358$i >>> 1;
- $283 = (25 - ($282))|0;
- $284 = $281 ? 0 : $283;
- $285 = $249 << $284;
- $$0342$i = 0;$$0347$i = $252;$$0353$i = $279;$$0359$i = $285;$$0362$i = 0;
+ $298 = ($$0358$i|0)==(31);
+ $299 = $$0358$i >>> 1;
+ $300 = (25 - ($299))|0;
+ $301 = $298 ? 0 : $300;
+ $302 = $266 << $301;
+ $$0342$i = 0;$$0347$i = $269;$$0353$i = $296;$$0359$i = $302;$$0362$i = 0;
while(1) {
- $286 = ((($$0353$i)) + 4|0);
- $287 = HEAP32[$286>>2]|0;
- $288 = $287 & -8;
- $289 = (($288) - ($249))|0;
- $290 = ($289>>>0)<($$0347$i>>>0);
- if ($290) {
- $291 = ($289|0)==(0);
- if ($291) {
+ $303 = ((($$0353$i)) + 4|0);
+ $304 = HEAP32[$303>>2]|0;
+ $305 = $304 & -8;
+ $306 = (($305) - ($266))|0;
+ $307 = ($306>>>0)<($$0347$i>>>0);
+ if ($307) {
+ $308 = ($306|0)==(0);
+ if ($308) {
$$415$i = $$0353$i;$$435114$i = 0;$$435713$i = $$0353$i;
- label = 85;
- break L117;
+ label = 94;
+ break L128;
} else {
- $$1343$i = $$0353$i;$$1348$i = $289;
+ $$1343$i = $$0353$i;$$1348$i = $306;
}
} else {
$$1343$i = $$0342$i;$$1348$i = $$0347$i;
}
- $292 = ((($$0353$i)) + 20|0);
- $293 = HEAP32[$292>>2]|0;
- $294 = $$0359$i >>> 31;
- $295 = (((($$0353$i)) + 16|0) + ($294<<2)|0);
- $296 = HEAP32[$295>>2]|0;
- $297 = ($293|0)==(0|0);
- $298 = ($293|0)==($296|0);
- $or$cond2$i = $297 | $298;
- $$1363$i = $or$cond2$i ? $$0362$i : $293;
- $299 = ($296|0)==(0|0);
- $not$8$i = $299 ^ 1;
- $300 = $not$8$i&1;
- $$0359$$i = $$0359$i << $300;
- if ($299) {
- $$2355$i = $$1363$i;$$3$i201 = $$1343$i;$$3350$i = $$1348$i;
- label = 81;
+ $309 = ((($$0353$i)) + 20|0);
+ $310 = HEAP32[$309>>2]|0;
+ $311 = $$0359$i >>> 31;
+ $312 = (((($$0353$i)) + 16|0) + ($311<<2)|0);
+ $313 = HEAP32[$312>>2]|0;
+ $314 = ($310|0)==(0|0);
+ $315 = ($310|0)==($313|0);
+ $or$cond2$i = $314 | $315;
+ $$1363$i = $or$cond2$i ? $$0362$i : $310;
+ $316 = ($313|0)==(0|0);
+ $not$8$i = $316 ^ 1;
+ $317 = $not$8$i&1;
+ $$0359$$i = $$0359$i << $317;
+ if ($316) {
+ $$2355$i = $$1363$i;$$3$i202 = $$1343$i;$$3350$i = $$1348$i;
+ label = 90;
break;
} else {
- $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $296;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
+ $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $313;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
}
}
}
} while(0);
- if ((label|0) == 81) {
- $301 = ($$2355$i|0)==(0|0);
- $302 = ($$3$i201|0)==(0|0);
- $or$cond$i = $301 & $302;
+ if ((label|0) == 90) {
+ $318 = ($$2355$i|0)==(0|0);
+ $319 = ($$3$i202|0)==(0|0);
+ $or$cond$i = $318 & $319;
if ($or$cond$i) {
- $303 = 2 << $$0358$i;
- $304 = (0 - ($303))|0;
- $305 = $303 | $304;
- $306 = $250 & $305;
- $307 = ($306|0)==(0);
- if ($307) {
- $$0197 = $249;
+ $320 = 2 << $$0358$i;
+ $321 = (0 - ($320))|0;
+ $322 = $320 | $321;
+ $323 = $267 & $322;
+ $324 = ($323|0)==(0);
+ if ($324) {
+ $$0198 = $266;
+ label = 153;
break;
}
- $308 = (0 - ($306))|0;
- $309 = $306 & $308;
- $310 = (($309) + -1)|0;
- $311 = $310 >>> 12;
- $312 = $311 & 16;
- $313 = $310 >>> $312;
- $314 = $313 >>> 5;
- $315 = $314 & 8;
- $316 = $315 | $312;
- $317 = $313 >>> $315;
- $318 = $317 >>> 2;
- $319 = $318 & 4;
- $320 = $316 | $319;
- $321 = $317 >>> $319;
- $322 = $321 >>> 1;
- $323 = $322 & 2;
- $324 = $320 | $323;
- $325 = $321 >>> $323;
- $326 = $325 >>> 1;
- $327 = $326 & 1;
- $328 = $324 | $327;
- $329 = $325 >>> $327;
- $330 = (($328) + ($329))|0;
- $331 = (33448 + ($330<<2)|0);
- $332 = HEAP32[$331>>2]|0;
- $$4$ph$i = 0;$$4357$ph$i = $332;
+ $325 = (0 - ($323))|0;
+ $326 = $323 & $325;
+ $327 = (($326) + -1)|0;
+ $328 = $327 >>> 12;
+ $329 = $328 & 16;
+ $330 = $327 >>> $329;
+ $331 = $330 >>> 5;
+ $332 = $331 & 8;
+ $333 = $332 | $329;
+ $334 = $330 >>> $332;
+ $335 = $334 >>> 2;
+ $336 = $335 & 4;
+ $337 = $333 | $336;
+ $338 = $334 >>> $336;
+ $339 = $338 >>> 1;
+ $340 = $339 & 2;
+ $341 = $337 | $340;
+ $342 = $338 >>> $340;
+ $343 = $342 >>> 1;
+ $344 = $343 & 1;
+ $345 = $341 | $344;
+ $346 = $342 >>> $344;
+ $347 = (($345) + ($346))|0;
+ $348 = (35764 + ($347<<2)|0);
+ $349 = HEAP32[$348>>2]|0;
+ $$4$ph$i = 0;$$4357$ph$i = $349;
} else {
- $$4$ph$i = $$3$i201;$$4357$ph$i = $$2355$i;
+ $$4$ph$i = $$3$i202;$$4357$ph$i = $$2355$i;
}
- $333 = ($$4357$ph$i|0)==(0|0);
- if ($333) {
+ $350 = ($$4357$ph$i|0)==(0|0);
+ if ($350) {
$$4$lcssa$i = $$4$ph$i;$$4351$lcssa$i = $$3350$i;
} else {
$$415$i = $$4$ph$i;$$435114$i = $$3350$i;$$435713$i = $$4357$ph$i;
- label = 85;
+ label = 94;
}
}
- if ((label|0) == 85) {
+ if ((label|0) == 94) {
while(1) {
label = 0;
- $334 = ((($$435713$i)) + 4|0);
- $335 = HEAP32[$334>>2]|0;
- $336 = $335 & -8;
- $337 = (($336) - ($249))|0;
- $338 = ($337>>>0)<($$435114$i>>>0);
- $$$4351$i = $338 ? $337 : $$435114$i;
- $$4357$$4$i = $338 ? $$435713$i : $$415$i;
- $339 = ((($$435713$i)) + 16|0);
- $340 = HEAP32[$339>>2]|0;
- $not$1$i203 = ($340|0)==(0|0);
- $$sink2$i204 = $not$1$i203&1;
- $341 = (((($$435713$i)) + 16|0) + ($$sink2$i204<<2)|0);
- $342 = HEAP32[$341>>2]|0;
- $343 = ($342|0)==(0|0);
- if ($343) {
+ $351 = ((($$435713$i)) + 4|0);
+ $352 = HEAP32[$351>>2]|0;
+ $353 = $352 & -8;
+ $354 = (($353) - ($266))|0;
+ $355 = ($354>>>0)<($$435114$i>>>0);
+ $$$4351$i = $355 ? $354 : $$435114$i;
+ $$4357$$4$i = $355 ? $$435713$i : $$415$i;
+ $356 = ((($$435713$i)) + 16|0);
+ $357 = HEAP32[$356>>2]|0;
+ $not$1$i204 = ($357|0)==(0|0);
+ $$sink2$i205 = $not$1$i204&1;
+ $358 = (((($$435713$i)) + 16|0) + ($$sink2$i205<<2)|0);
+ $359 = HEAP32[$358>>2]|0;
+ $360 = ($359|0)==(0|0);
+ if ($360) {
$$4$lcssa$i = $$4357$$4$i;$$4351$lcssa$i = $$$4351$i;
break;
} else {
- $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $342;
- label = 85;
+ $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $359;
+ label = 94;
}
}
}
- $344 = ($$4$lcssa$i|0)==(0|0);
- if ($344) {
- $$0197 = $249;
+ $361 = ($$4$lcssa$i|0)==(0|0);
+ if ($361) {
+ $$0198 = $266;
+ label = 153;
} else {
- $345 = HEAP32[(33152)>>2]|0;
- $346 = (($345) - ($249))|0;
- $347 = ($$4351$lcssa$i>>>0)<($346>>>0);
- if ($347) {
- $348 = HEAP32[(33160)>>2]|0;
- $349 = ($$4$lcssa$i>>>0)<($348>>>0);
- if ($349) {
+ $362 = HEAP32[(35468)>>2]|0;
+ $363 = (($362) - ($266))|0;
+ $364 = ($$4351$lcssa$i>>>0)<($363>>>0);
+ if ($364) {
+ $365 = HEAP32[(35476)>>2]|0;
+ $366 = ($$4$lcssa$i>>>0)<($365>>>0);
+ if ($366) {
_abort();
// unreachable;
}
- $350 = (($$4$lcssa$i) + ($249)|0);
- $351 = ($$4$lcssa$i>>>0)<($350>>>0);
- if (!($351)) {
+ $367 = (($$4$lcssa$i) + ($266)|0);
+ $368 = ($$4$lcssa$i>>>0)<($367>>>0);
+ if (!($368)) {
_abort();
// unreachable;
}
- $352 = ((($$4$lcssa$i)) + 24|0);
- $353 = HEAP32[$352>>2]|0;
- $354 = ((($$4$lcssa$i)) + 12|0);
- $355 = HEAP32[$354>>2]|0;
- $356 = ($355|0)==($$4$lcssa$i|0);
+ $369 = ((($$4$lcssa$i)) + 24|0);
+ $370 = HEAP32[$369>>2]|0;
+ $371 = ((($$4$lcssa$i)) + 12|0);
+ $372 = HEAP32[$371>>2]|0;
+ $373 = ($372|0)==($$4$lcssa$i|0);
do {
- if ($356) {
- $366 = ((($$4$lcssa$i)) + 20|0);
- $367 = HEAP32[$366>>2]|0;
- $368 = ($367|0)==(0|0);
- if ($368) {
- $369 = ((($$4$lcssa$i)) + 16|0);
- $370 = HEAP32[$369>>2]|0;
- $371 = ($370|0)==(0|0);
- if ($371) {
+ if ($373) {
+ $383 = ((($$4$lcssa$i)) + 20|0);
+ $384 = HEAP32[$383>>2]|0;
+ $385 = ($384|0)==(0|0);
+ if ($385) {
+ $386 = ((($$4$lcssa$i)) + 16|0);
+ $387 = HEAP32[$386>>2]|0;
+ $388 = ($387|0)==(0|0);
+ if ($388) {
$$3372$i = 0;
break;
} else {
- $$1370$i = $370;$$1374$i = $369;
+ $$1370$i = $387;$$1374$i = $386;
}
} else {
- $$1370$i = $367;$$1374$i = $366;
+ $$1370$i = $384;$$1374$i = $383;
}
while(1) {
- $372 = ((($$1370$i)) + 20|0);
- $373 = HEAP32[$372>>2]|0;
- $374 = ($373|0)==(0|0);
- if (!($374)) {
- $$1370$i = $373;$$1374$i = $372;
+ $389 = ((($$1370$i)) + 20|0);
+ $390 = HEAP32[$389>>2]|0;
+ $391 = ($390|0)==(0|0);
+ if (!($391)) {
+ $$1370$i = $390;$$1374$i = $389;
continue;
}
- $375 = ((($$1370$i)) + 16|0);
- $376 = HEAP32[$375>>2]|0;
- $377 = ($376|0)==(0|0);
- if ($377) {
+ $392 = ((($$1370$i)) + 16|0);
+ $393 = HEAP32[$392>>2]|0;
+ $394 = ($393|0)==(0|0);
+ if ($394) {
break;
} else {
- $$1370$i = $376;$$1374$i = $375;
+ $$1370$i = $393;$$1374$i = $392;
}
}
- $378 = ($$1374$i>>>0)<($348>>>0);
- if ($378) {
+ $395 = ($$1374$i>>>0)<($365>>>0);
+ if ($395) {
_abort();
// unreachable;
} else {
@@ -24714,27 +31007,27 @@ function _malloc($0) {
break;
}
} else {
- $357 = ((($$4$lcssa$i)) + 8|0);
- $358 = HEAP32[$357>>2]|0;
- $359 = ($358>>>0)<($348>>>0);
- if ($359) {
+ $374 = ((($$4$lcssa$i)) + 8|0);
+ $375 = HEAP32[$374>>2]|0;
+ $376 = ($375>>>0)<($365>>>0);
+ if ($376) {
_abort();
// unreachable;
}
- $360 = ((($358)) + 12|0);
- $361 = HEAP32[$360>>2]|0;
- $362 = ($361|0)==($$4$lcssa$i|0);
- if (!($362)) {
+ $377 = ((($375)) + 12|0);
+ $378 = HEAP32[$377>>2]|0;
+ $379 = ($378|0)==($$4$lcssa$i|0);
+ if (!($379)) {
_abort();
// unreachable;
}
- $363 = ((($355)) + 8|0);
- $364 = HEAP32[$363>>2]|0;
- $365 = ($364|0)==($$4$lcssa$i|0);
- if ($365) {
- HEAP32[$360>>2] = $355;
- HEAP32[$363>>2] = $358;
- $$3372$i = $355;
+ $380 = ((($372)) + 8|0);
+ $381 = HEAP32[$380>>2]|0;
+ $382 = ($381|0)==($$4$lcssa$i|0);
+ if ($382) {
+ HEAP32[$377>>2] = $372;
+ HEAP32[$380>>2] = $375;
+ $$3372$i = $372;
break;
} else {
_abort();
@@ -24742,273 +31035,275 @@ function _malloc($0) {
}
}
} while(0);
- $379 = ($353|0)==(0|0);
- L164: do {
- if ($379) {
- $470 = $250;
+ $396 = ($370|0)==(0|0);
+ L175: do {
+ if ($396) {
+ $487 = $267;
} else {
- $380 = ((($$4$lcssa$i)) + 28|0);
- $381 = HEAP32[$380>>2]|0;
- $382 = (33448 + ($381<<2)|0);
- $383 = HEAP32[$382>>2]|0;
- $384 = ($$4$lcssa$i|0)==($383|0);
+ $397 = ((($$4$lcssa$i)) + 28|0);
+ $398 = HEAP32[$397>>2]|0;
+ $399 = (35764 + ($398<<2)|0);
+ $400 = HEAP32[$399>>2]|0;
+ $401 = ($$4$lcssa$i|0)==($400|0);
do {
- if ($384) {
- HEAP32[$382>>2] = $$3372$i;
- $cond$i208 = ($$3372$i|0)==(0|0);
- if ($cond$i208) {
- $385 = 1 << $381;
- $386 = $385 ^ -1;
- $387 = $250 & $386;
- HEAP32[(33148)>>2] = $387;
- $470 = $387;
- break L164;
+ if ($401) {
+ HEAP32[$399>>2] = $$3372$i;
+ $cond$i209 = ($$3372$i|0)==(0|0);
+ if ($cond$i209) {
+ $402 = 1 << $398;
+ $403 = $402 ^ -1;
+ $404 = $267 & $403;
+ HEAP32[(35464)>>2] = $404;
+ $487 = $404;
+ break L175;
}
} else {
- $388 = HEAP32[(33160)>>2]|0;
- $389 = ($353>>>0)<($388>>>0);
- if ($389) {
+ $405 = HEAP32[(35476)>>2]|0;
+ $406 = ($370>>>0)<($405>>>0);
+ if ($406) {
_abort();
// unreachable;
} else {
- $390 = ((($353)) + 16|0);
- $391 = HEAP32[$390>>2]|0;
- $not$$i209 = ($391|0)!=($$4$lcssa$i|0);
- $$sink3$i = $not$$i209&1;
- $392 = (((($353)) + 16|0) + ($$sink3$i<<2)|0);
- HEAP32[$392>>2] = $$3372$i;
- $393 = ($$3372$i|0)==(0|0);
- if ($393) {
- $470 = $250;
- break L164;
+ $407 = ((($370)) + 16|0);
+ $408 = HEAP32[$407>>2]|0;
+ $not$$i210 = ($408|0)!=($$4$lcssa$i|0);
+ $$sink3$i = $not$$i210&1;
+ $409 = (((($370)) + 16|0) + ($$sink3$i<<2)|0);
+ HEAP32[$409>>2] = $$3372$i;
+ $410 = ($$3372$i|0)==(0|0);
+ if ($410) {
+ $487 = $267;
+ break L175;
} else {
break;
}
}
}
} while(0);
- $394 = HEAP32[(33160)>>2]|0;
- $395 = ($$3372$i>>>0)<($394>>>0);
- if ($395) {
+ $411 = HEAP32[(35476)>>2]|0;
+ $412 = ($$3372$i>>>0)<($411>>>0);
+ if ($412) {
_abort();
// unreachable;
}
- $396 = ((($$3372$i)) + 24|0);
- HEAP32[$396>>2] = $353;
- $397 = ((($$4$lcssa$i)) + 16|0);
- $398 = HEAP32[$397>>2]|0;
- $399 = ($398|0)==(0|0);
+ $413 = ((($$3372$i)) + 24|0);
+ HEAP32[$413>>2] = $370;
+ $414 = ((($$4$lcssa$i)) + 16|0);
+ $415 = HEAP32[$414>>2]|0;
+ $416 = ($415|0)==(0|0);
do {
- if (!($399)) {
- $400 = ($398>>>0)<($394>>>0);
- if ($400) {
+ if (!($416)) {
+ $417 = ($415>>>0)<($411>>>0);
+ if ($417) {
_abort();
// unreachable;
} else {
- $401 = ((($$3372$i)) + 16|0);
- HEAP32[$401>>2] = $398;
- $402 = ((($398)) + 24|0);
- HEAP32[$402>>2] = $$3372$i;
+ $418 = ((($$3372$i)) + 16|0);
+ HEAP32[$418>>2] = $415;
+ $419 = ((($415)) + 24|0);
+ HEAP32[$419>>2] = $$3372$i;
break;
}
}
} while(0);
- $403 = ((($$4$lcssa$i)) + 20|0);
- $404 = HEAP32[$403>>2]|0;
- $405 = ($404|0)==(0|0);
- if ($405) {
- $470 = $250;
+ $420 = ((($$4$lcssa$i)) + 20|0);
+ $421 = HEAP32[$420>>2]|0;
+ $422 = ($421|0)==(0|0);
+ if ($422) {
+ $487 = $267;
} else {
- $406 = HEAP32[(33160)>>2]|0;
- $407 = ($404>>>0)<($406>>>0);
- if ($407) {
+ $423 = HEAP32[(35476)>>2]|0;
+ $424 = ($421>>>0)<($423>>>0);
+ if ($424) {
_abort();
// unreachable;
} else {
- $408 = ((($$3372$i)) + 20|0);
- HEAP32[$408>>2] = $404;
- $409 = ((($404)) + 24|0);
- HEAP32[$409>>2] = $$3372$i;
- $470 = $250;
+ $425 = ((($$3372$i)) + 20|0);
+ HEAP32[$425>>2] = $421;
+ $426 = ((($421)) + 24|0);
+ HEAP32[$426>>2] = $$3372$i;
+ $487 = $267;
break;
}
}
}
} while(0);
- $410 = ($$4351$lcssa$i>>>0)<(16);
+ $427 = ($$4351$lcssa$i>>>0)<(16);
do {
- if ($410) {
- $411 = (($$4351$lcssa$i) + ($249))|0;
- $412 = $411 | 3;
- $413 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$413>>2] = $412;
- $414 = (($$4$lcssa$i) + ($411)|0);
- $415 = ((($414)) + 4|0);
- $416 = HEAP32[$415>>2]|0;
- $417 = $416 | 1;
- HEAP32[$415>>2] = $417;
+ if ($427) {
+ $428 = (($$4351$lcssa$i) + ($266))|0;
+ $429 = $428 | 3;
+ $430 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$430>>2] = $429;
+ $431 = (($$4$lcssa$i) + ($428)|0);
+ $432 = ((($431)) + 4|0);
+ $433 = HEAP32[$432>>2]|0;
+ $434 = $433 | 1;
+ HEAP32[$432>>2] = $434;
} else {
- $418 = $249 | 3;
- $419 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$419>>2] = $418;
- $420 = $$4351$lcssa$i | 1;
- $421 = ((($350)) + 4|0);
- HEAP32[$421>>2] = $420;
- $422 = (($350) + ($$4351$lcssa$i)|0);
- HEAP32[$422>>2] = $$4351$lcssa$i;
- $423 = $$4351$lcssa$i >>> 3;
- $424 = ($$4351$lcssa$i>>>0)<(256);
- if ($424) {
- $425 = $423 << 1;
- $426 = (33184 + ($425<<2)|0);
- $427 = HEAP32[8286]|0;
- $428 = 1 << $423;
- $429 = $427 & $428;
- $430 = ($429|0)==(0);
- if ($430) {
- $431 = $427 | $428;
- HEAP32[8286] = $431;
- $$pre$i210 = ((($426)) + 8|0);
- $$0368$i = $426;$$pre$phi$i211Z2D = $$pre$i210;
- } else {
- $432 = ((($426)) + 8|0);
- $433 = HEAP32[$432>>2]|0;
- $434 = HEAP32[(33160)>>2]|0;
- $435 = ($433>>>0)<($434>>>0);
- if ($435) {
+ $435 = $266 | 3;
+ $436 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$436>>2] = $435;
+ $437 = $$4351$lcssa$i | 1;
+ $438 = ((($367)) + 4|0);
+ HEAP32[$438>>2] = $437;
+ $439 = (($367) + ($$4351$lcssa$i)|0);
+ HEAP32[$439>>2] = $$4351$lcssa$i;
+ $440 = $$4351$lcssa$i >>> 3;
+ $441 = ($$4351$lcssa$i>>>0)<(256);
+ if ($441) {
+ $442 = $440 << 1;
+ $443 = (35500 + ($442<<2)|0);
+ $444 = HEAP32[8865]|0;
+ $445 = 1 << $440;
+ $446 = $444 & $445;
+ $447 = ($446|0)==(0);
+ do {
+ if ($447) {
+ $448 = $444 | $445;
+ HEAP32[8865] = $448;
+ $$pre$i211 = ((($443)) + 8|0);
+ $$0368$i = $443;$$pre$phi$i212Z2D = $$pre$i211;
+ } else {
+ $449 = ((($443)) + 8|0);
+ $450 = HEAP32[$449>>2]|0;
+ $451 = HEAP32[(35476)>>2]|0;
+ $452 = ($450>>>0)<($451>>>0);
+ if (!($452)) {
+ $$0368$i = $450;$$pre$phi$i212Z2D = $449;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $$0368$i = $433;$$pre$phi$i211Z2D = $432;
}
- }
- HEAP32[$$pre$phi$i211Z2D>>2] = $350;
- $436 = ((($$0368$i)) + 12|0);
- HEAP32[$436>>2] = $350;
- $437 = ((($350)) + 8|0);
- HEAP32[$437>>2] = $$0368$i;
- $438 = ((($350)) + 12|0);
- HEAP32[$438>>2] = $426;
+ } while(0);
+ HEAP32[$$pre$phi$i212Z2D>>2] = $367;
+ $453 = ((($$0368$i)) + 12|0);
+ HEAP32[$453>>2] = $367;
+ $454 = ((($367)) + 8|0);
+ HEAP32[$454>>2] = $$0368$i;
+ $455 = ((($367)) + 12|0);
+ HEAP32[$455>>2] = $443;
break;
}
- $439 = $$4351$lcssa$i >>> 8;
- $440 = ($439|0)==(0);
- if ($440) {
+ $456 = $$4351$lcssa$i >>> 8;
+ $457 = ($456|0)==(0);
+ if ($457) {
$$0361$i = 0;
} else {
- $441 = ($$4351$lcssa$i>>>0)>(16777215);
- if ($441) {
+ $458 = ($$4351$lcssa$i>>>0)>(16777215);
+ if ($458) {
$$0361$i = 31;
} else {
- $442 = (($439) + 1048320)|0;
- $443 = $442 >>> 16;
- $444 = $443 & 8;
- $445 = $439 << $444;
- $446 = (($445) + 520192)|0;
- $447 = $446 >>> 16;
- $448 = $447 & 4;
- $449 = $448 | $444;
- $450 = $445 << $448;
- $451 = (($450) + 245760)|0;
- $452 = $451 >>> 16;
- $453 = $452 & 2;
- $454 = $449 | $453;
- $455 = (14 - ($454))|0;
- $456 = $450 << $453;
- $457 = $456 >>> 15;
- $458 = (($455) + ($457))|0;
- $459 = $458 << 1;
- $460 = (($458) + 7)|0;
- $461 = $$4351$lcssa$i >>> $460;
- $462 = $461 & 1;
- $463 = $462 | $459;
- $$0361$i = $463;
+ $459 = (($456) + 1048320)|0;
+ $460 = $459 >>> 16;
+ $461 = $460 & 8;
+ $462 = $456 << $461;
+ $463 = (($462) + 520192)|0;
+ $464 = $463 >>> 16;
+ $465 = $464 & 4;
+ $466 = $465 | $461;
+ $467 = $462 << $465;
+ $468 = (($467) + 245760)|0;
+ $469 = $468 >>> 16;
+ $470 = $469 & 2;
+ $471 = $466 | $470;
+ $472 = (14 - ($471))|0;
+ $473 = $467 << $470;
+ $474 = $473 >>> 15;
+ $475 = (($472) + ($474))|0;
+ $476 = $475 << 1;
+ $477 = (($475) + 7)|0;
+ $478 = $$4351$lcssa$i >>> $477;
+ $479 = $478 & 1;
+ $480 = $479 | $476;
+ $$0361$i = $480;
}
}
- $464 = (33448 + ($$0361$i<<2)|0);
- $465 = ((($350)) + 28|0);
- HEAP32[$465>>2] = $$0361$i;
- $466 = ((($350)) + 16|0);
- $467 = ((($466)) + 4|0);
- HEAP32[$467>>2] = 0;
- HEAP32[$466>>2] = 0;
- $468 = 1 << $$0361$i;
- $469 = $470 & $468;
- $471 = ($469|0)==(0);
- if ($471) {
- $472 = $470 | $468;
- HEAP32[(33148)>>2] = $472;
- HEAP32[$464>>2] = $350;
- $473 = ((($350)) + 24|0);
- HEAP32[$473>>2] = $464;
- $474 = ((($350)) + 12|0);
- HEAP32[$474>>2] = $350;
- $475 = ((($350)) + 8|0);
- HEAP32[$475>>2] = $350;
+ $481 = (35764 + ($$0361$i<<2)|0);
+ $482 = ((($367)) + 28|0);
+ HEAP32[$482>>2] = $$0361$i;
+ $483 = ((($367)) + 16|0);
+ $484 = ((($483)) + 4|0);
+ HEAP32[$484>>2] = 0;
+ HEAP32[$483>>2] = 0;
+ $485 = 1 << $$0361$i;
+ $486 = $487 & $485;
+ $488 = ($486|0)==(0);
+ if ($488) {
+ $489 = $487 | $485;
+ HEAP32[(35464)>>2] = $489;
+ HEAP32[$481>>2] = $367;
+ $490 = ((($367)) + 24|0);
+ HEAP32[$490>>2] = $481;
+ $491 = ((($367)) + 12|0);
+ HEAP32[$491>>2] = $367;
+ $492 = ((($367)) + 8|0);
+ HEAP32[$492>>2] = $367;
break;
}
- $476 = HEAP32[$464>>2]|0;
- $477 = ($$0361$i|0)==(31);
- $478 = $$0361$i >>> 1;
- $479 = (25 - ($478))|0;
- $480 = $477 ? 0 : $479;
- $481 = $$4351$lcssa$i << $480;
- $$0344$i = $481;$$0345$i = $476;
+ $493 = HEAP32[$481>>2]|0;
+ $494 = ($$0361$i|0)==(31);
+ $495 = $$0361$i >>> 1;
+ $496 = (25 - ($495))|0;
+ $497 = $494 ? 0 : $496;
+ $498 = $$4351$lcssa$i << $497;
+ $$0344$i = $498;$$0345$i = $493;
while(1) {
- $482 = ((($$0345$i)) + 4|0);
- $483 = HEAP32[$482>>2]|0;
- $484 = $483 & -8;
- $485 = ($484|0)==($$4351$lcssa$i|0);
- if ($485) {
- label = 139;
+ $499 = ((($$0345$i)) + 4|0);
+ $500 = HEAP32[$499>>2]|0;
+ $501 = $500 & -8;
+ $502 = ($501|0)==($$4351$lcssa$i|0);
+ if ($502) {
+ label = 148;
break;
}
- $486 = $$0344$i >>> 31;
- $487 = (((($$0345$i)) + 16|0) + ($486<<2)|0);
- $488 = $$0344$i << 1;
- $489 = HEAP32[$487>>2]|0;
- $490 = ($489|0)==(0|0);
- if ($490) {
- label = 136;
+ $503 = $$0344$i >>> 31;
+ $504 = (((($$0345$i)) + 16|0) + ($503<<2)|0);
+ $505 = $$0344$i << 1;
+ $506 = HEAP32[$504>>2]|0;
+ $507 = ($506|0)==(0|0);
+ if ($507) {
+ label = 145;
break;
} else {
- $$0344$i = $488;$$0345$i = $489;
+ $$0344$i = $505;$$0345$i = $506;
}
}
- if ((label|0) == 136) {
- $491 = HEAP32[(33160)>>2]|0;
- $492 = ($487>>>0)<($491>>>0);
- if ($492) {
+ if ((label|0) == 145) {
+ $508 = HEAP32[(35476)>>2]|0;
+ $509 = ($504>>>0)<($508>>>0);
+ if ($509) {
_abort();
// unreachable;
} else {
- HEAP32[$487>>2] = $350;
- $493 = ((($350)) + 24|0);
- HEAP32[$493>>2] = $$0345$i;
- $494 = ((($350)) + 12|0);
- HEAP32[$494>>2] = $350;
- $495 = ((($350)) + 8|0);
- HEAP32[$495>>2] = $350;
+ HEAP32[$504>>2] = $367;
+ $510 = ((($367)) + 24|0);
+ HEAP32[$510>>2] = $$0345$i;
+ $511 = ((($367)) + 12|0);
+ HEAP32[$511>>2] = $367;
+ $512 = ((($367)) + 8|0);
+ HEAP32[$512>>2] = $367;
break;
}
}
- else if ((label|0) == 139) {
- $496 = ((($$0345$i)) + 8|0);
- $497 = HEAP32[$496>>2]|0;
- $498 = HEAP32[(33160)>>2]|0;
- $499 = ($497>>>0)>=($498>>>0);
- $not$9$i = ($$0345$i>>>0)>=($498>>>0);
- $500 = $499 & $not$9$i;
- if ($500) {
- $501 = ((($497)) + 12|0);
- HEAP32[$501>>2] = $350;
- HEAP32[$496>>2] = $350;
- $502 = ((($350)) + 8|0);
- HEAP32[$502>>2] = $497;
- $503 = ((($350)) + 12|0);
- HEAP32[$503>>2] = $$0345$i;
- $504 = ((($350)) + 24|0);
- HEAP32[$504>>2] = 0;
+ else if ((label|0) == 148) {
+ $513 = ((($$0345$i)) + 8|0);
+ $514 = HEAP32[$513>>2]|0;
+ $515 = HEAP32[(35476)>>2]|0;
+ $516 = ($514>>>0)>=($515>>>0);
+ $not$9$i = ($$0345$i>>>0)>=($515>>>0);
+ $517 = $516 & $not$9$i;
+ if ($517) {
+ $518 = ((($514)) + 12|0);
+ HEAP32[$518>>2] = $367;
+ HEAP32[$513>>2] = $367;
+ $519 = ((($367)) + 8|0);
+ HEAP32[$519>>2] = $514;
+ $520 = ((($367)) + 12|0);
+ HEAP32[$520>>2] = $$0345$i;
+ $521 = ((($367)) + 24|0);
+ HEAP32[$521>>2] = 0;
break;
} else {
_abort();
@@ -25017,1200 +31312,1238 @@ function _malloc($0) {
}
}
} while(0);
- $505 = ((($$4$lcssa$i)) + 8|0);
- $$0 = $505;
- STACKTOP = sp;return ($$0|0);
+ $522 = ((($$4$lcssa$i)) + 8|0);
+ $$2 = $522;
} else {
- $$0197 = $249;
+ $$0198 = $266;
+ label = 153;
}
}
}
}
}
} while(0);
- $506 = HEAP32[(33152)>>2]|0;
- $507 = ($506>>>0)<($$0197>>>0);
- if (!($507)) {
- $508 = (($506) - ($$0197))|0;
- $509 = HEAP32[(33164)>>2]|0;
- $510 = ($508>>>0)>(15);
- if ($510) {
- $511 = (($509) + ($$0197)|0);
- HEAP32[(33164)>>2] = $511;
- HEAP32[(33152)>>2] = $508;
- $512 = $508 | 1;
- $513 = ((($511)) + 4|0);
- HEAP32[$513>>2] = $512;
- $514 = (($511) + ($508)|0);
- HEAP32[$514>>2] = $508;
- $515 = $$0197 | 3;
- $516 = ((($509)) + 4|0);
- HEAP32[$516>>2] = $515;
- } else {
- HEAP32[(33152)>>2] = 0;
- HEAP32[(33164)>>2] = 0;
- $517 = $506 | 3;
- $518 = ((($509)) + 4|0);
- HEAP32[$518>>2] = $517;
- $519 = (($509) + ($506)|0);
- $520 = ((($519)) + 4|0);
- $521 = HEAP32[$520>>2]|0;
- $522 = $521 | 1;
- HEAP32[$520>>2] = $522;
- }
- $523 = ((($509)) + 8|0);
- $$0 = $523;
- STACKTOP = sp;return ($$0|0);
- }
- $524 = HEAP32[(33156)>>2]|0;
- $525 = ($524>>>0)>($$0197>>>0);
- if ($525) {
- $526 = (($524) - ($$0197))|0;
- HEAP32[(33156)>>2] = $526;
- $527 = HEAP32[(33168)>>2]|0;
- $528 = (($527) + ($$0197)|0);
- HEAP32[(33168)>>2] = $528;
- $529 = $526 | 1;
- $530 = ((($528)) + 4|0);
- HEAP32[$530>>2] = $529;
- $531 = $$0197 | 3;
- $532 = ((($527)) + 4|0);
- HEAP32[$532>>2] = $531;
- $533 = ((($527)) + 8|0);
- $$0 = $533;
- STACKTOP = sp;return ($$0|0);
- }
- $534 = HEAP32[8404]|0;
- $535 = ($534|0)==(0);
- if ($535) {
- HEAP32[(33624)>>2] = 4096;
- HEAP32[(33620)>>2] = 4096;
- HEAP32[(33628)>>2] = -1;
- HEAP32[(33632)>>2] = -1;
- HEAP32[(33636)>>2] = 0;
- HEAP32[(33588)>>2] = 0;
- $536 = $1;
- $537 = $536 & -16;
- $538 = $537 ^ 1431655768;
- HEAP32[$1>>2] = $538;
- HEAP32[8404] = $538;
- $542 = 4096;
- } else {
- $$pre$i212 = HEAP32[(33624)>>2]|0;
- $542 = $$pre$i212;
- }
- $539 = (($$0197) + 48)|0;
- $540 = (($$0197) + 47)|0;
- $541 = (($542) + ($540))|0;
- $543 = (0 - ($542))|0;
- $544 = $541 & $543;
- $545 = ($544>>>0)>($$0197>>>0);
- if (!($545)) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- $546 = HEAP32[(33584)>>2]|0;
- $547 = ($546|0)==(0);
- if (!($547)) {
- $548 = HEAP32[(33576)>>2]|0;
- $549 = (($548) + ($544))|0;
- $550 = ($549>>>0)<=($548>>>0);
- $551 = ($549>>>0)>($546>>>0);
- $or$cond1$i = $550 | $551;
- if ($or$cond1$i) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $552 = HEAP32[(33588)>>2]|0;
- $553 = $552 & 4;
- $554 = ($553|0)==(0);
- L244: do {
- if ($554) {
- $555 = HEAP32[(33168)>>2]|0;
- $556 = ($555|0)==(0|0);
- L246: do {
- if ($556) {
- label = 163;
+ L230: do {
+ if ((label|0) == 153) {
+ $523 = HEAP32[(35468)>>2]|0;
+ $524 = ($523>>>0)<($$0198>>>0);
+ if (!($524)) {
+ $525 = (($523) - ($$0198))|0;
+ $526 = HEAP32[(35480)>>2]|0;
+ $527 = ($525>>>0)>(15);
+ if ($527) {
+ $528 = (($526) + ($$0198)|0);
+ HEAP32[(35480)>>2] = $528;
+ HEAP32[(35468)>>2] = $525;
+ $529 = $525 | 1;
+ $530 = ((($528)) + 4|0);
+ HEAP32[$530>>2] = $529;
+ $531 = (($528) + ($525)|0);
+ HEAP32[$531>>2] = $525;
+ $532 = $$0198 | 3;
+ $533 = ((($526)) + 4|0);
+ HEAP32[$533>>2] = $532;
} else {
- $$0$i$i = (33592);
- while(1) {
- $557 = HEAP32[$$0$i$i>>2]|0;
- $558 = ($557>>>0)>($555>>>0);
- if (!($558)) {
- $559 = ((($$0$i$i)) + 4|0);
- $560 = HEAP32[$559>>2]|0;
- $561 = (($557) + ($560)|0);
- $562 = ($561>>>0)>($555>>>0);
- if ($562) {
- break;
- }
+ HEAP32[(35468)>>2] = 0;
+ HEAP32[(35480)>>2] = 0;
+ $534 = $523 | 3;
+ $535 = ((($526)) + 4|0);
+ HEAP32[$535>>2] = $534;
+ $536 = (($526) + ($523)|0);
+ $537 = ((($536)) + 4|0);
+ $538 = HEAP32[$537>>2]|0;
+ $539 = $538 | 1;
+ HEAP32[$537>>2] = $539;
+ }
+ $540 = ((($526)) + 8|0);
+ $$2 = $540;
+ break;
+ }
+ $541 = HEAP32[(35472)>>2]|0;
+ $542 = ($541>>>0)>($$0198>>>0);
+ if ($542) {
+ $543 = (($541) - ($$0198))|0;
+ HEAP32[(35472)>>2] = $543;
+ $544 = HEAP32[(35484)>>2]|0;
+ $545 = (($544) + ($$0198)|0);
+ HEAP32[(35484)>>2] = $545;
+ $546 = $543 | 1;
+ $547 = ((($545)) + 4|0);
+ HEAP32[$547>>2] = $546;
+ $548 = $$0198 | 3;
+ $549 = ((($544)) + 4|0);
+ HEAP32[$549>>2] = $548;
+ $550 = ((($544)) + 8|0);
+ $$2 = $550;
+ break;
+ }
+ $551 = HEAP32[8852]|0;
+ $552 = ($551|0)==(0);
+ if ($552) {
+ (___pthread_mutex_lock(35432)|0);
+ $553 = HEAP32[8852]|0;
+ $554 = ($553|0)==(0);
+ if ($554) {
+ HEAP32[(35416)>>2] = 4096;
+ HEAP32[(35412)>>2] = 4096;
+ HEAP32[(35420)>>2] = -1;
+ HEAP32[(35424)>>2] = -1;
+ HEAP32[(35428)>>2] = 2;
+ HEAP32[(35904)>>2] = 2;
+ $555 = (_pthread_mutexattr_init($1)|0);
+ $556 = ($555|0)==(0);
+ if ($556) {
+ $557 = (_pthread_mutex_init((35908),$1)|0);
+ $558 = ($557|0)==(0);
+ if ($558) {
}
- $563 = ((($$0$i$i)) + 8|0);
- $564 = HEAP32[$563>>2]|0;
- $565 = ($564|0)==(0|0);
- if ($565) {
- label = 163;
- break L246;
+ }
+ $559 = $2;
+ $560 = $559 & -16;
+ $561 = $560 ^ 1431655768;
+ HEAP32[$2>>2] = $561;
+ Atomics_store(HEAP32,8852,$561)|0;
+ }
+ (___pthread_mutex_unlock(35432)|0);
+ }
+ $562 = (($$0198) + 48)|0;
+ $563 = HEAP32[(35416)>>2]|0;
+ $564 = (($$0198) + 47)|0;
+ $565 = (($563) + ($564))|0;
+ $566 = (0 - ($563))|0;
+ $567 = $565 & $566;
+ $568 = ($567>>>0)>($$0198>>>0);
+ if ($568) {
+ $569 = HEAP32[(35900)>>2]|0;
+ $570 = ($569|0)==(0);
+ if (!($570)) {
+ $571 = HEAP32[(35892)>>2]|0;
+ $572 = (($571) + ($567))|0;
+ $573 = ($572>>>0)<=($571>>>0);
+ $574 = ($572>>>0)>($569>>>0);
+ $or$cond1$i = $573 | $574;
+ if ($or$cond1$i) {
+ $$2 = 0;
+ break;
+ }
+ }
+ $575 = HEAP32[(35904)>>2]|0;
+ $576 = $575 & 4;
+ $577 = ($576|0)==(0);
+ if ($577) {
+ $578 = HEAP32[(35484)>>2]|0;
+ $579 = ($578|0)==(0|0);
+ L258: do {
+ if ($579) {
+ label = 176;
} else {
- $$0$i$i = $564;
+ $$0$i$i = (35936);
+ while(1) {
+ $580 = HEAP32[$$0$i$i>>2]|0;
+ $581 = ($580>>>0)>($578>>>0);
+ if (!($581)) {
+ $582 = ((($$0$i$i)) + 4|0);
+ $583 = HEAP32[$582>>2]|0;
+ $584 = (($580) + ($583)|0);
+ $585 = ($584>>>0)>($578>>>0);
+ if ($585) {
+ break;
+ }
+ }
+ $586 = ((($$0$i$i)) + 8|0);
+ $587 = HEAP32[$586>>2]|0;
+ $588 = ($587|0)==(0|0);
+ if ($588) {
+ label = 176;
+ break L258;
+ } else {
+ $$0$i$i = $587;
+ }
+ }
+ (___pthread_mutex_lock(35432)|0);
+ $611 = HEAP32[(35472)>>2]|0;
+ $612 = HEAP32[(35416)>>2]|0;
+ $613 = (($564) - ($611))|0;
+ $614 = (($613) + ($612))|0;
+ $615 = (0 - ($612))|0;
+ $616 = $614 & $615;
+ $617 = ($616>>>0)<(2147483647);
+ if ($617) {
+ $618 = (_sbrk(($616|0))|0);
+ $619 = HEAP32[$$0$i$i>>2]|0;
+ $620 = HEAP32[$582>>2]|0;
+ $621 = (($619) + ($620)|0);
+ $622 = ($618|0)==($621|0);
+ if ($622) {
+ $623 = ($618|0)==((-1)|0);
+ if ($623) {
+ $$2234253237$i = $616;
+ label = 190;
+ } else {
+ $$3229$i = $618;$$3235$i = $616;
+ }
+ } else {
+ $$2247$ph$i = $618;$$2253$ph$i = $616;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- }
- $588 = (($541) - ($524))|0;
- $589 = $588 & $543;
- $590 = ($589>>>0)<(2147483647);
- if ($590) {
- $591 = (_sbrk(($589|0))|0);
- $592 = HEAP32[$$0$i$i>>2]|0;
- $593 = HEAP32[$559>>2]|0;
- $594 = (($592) + ($593)|0);
- $595 = ($591|0)==($594|0);
- if ($595) {
- $596 = ($591|0)==((-1)|0);
- if ($596) {
- $$2234253237$i = $589;
+ } while(0);
+ do {
+ if ((label|0) == 176) {
+ (___pthread_mutex_lock(35432)|0);
+ $589 = (_sbrk(0)|0);
+ $590 = ($589|0)==((-1)|0);
+ if ($590) {
+ $$2234253237$i = 0;
+ label = 190;
} else {
- $$723948$i = $589;$$749$i = $591;
- label = 180;
- break L244;
+ $591 = $589;
+ $592 = HEAP32[(35412)>>2]|0;
+ $593 = (($592) + -1)|0;
+ $594 = $593 & $591;
+ $595 = ($594|0)==(0);
+ $596 = (($593) + ($591))|0;
+ $597 = (0 - ($592))|0;
+ $598 = $596 & $597;
+ $599 = (($598) - ($591))|0;
+ $600 = $595 ? 0 : $599;
+ $$$i = (($600) + ($567))|0;
+ $601 = HEAP32[(35892)>>2]|0;
+ $602 = (($$$i) + ($601))|0;
+ $603 = ($$$i>>>0)>($$0198>>>0);
+ $604 = ($$$i>>>0)<(2147483647);
+ $or$cond$i213 = $603 & $604;
+ if ($or$cond$i213) {
+ $605 = HEAP32[(35900)>>2]|0;
+ $606 = ($605|0)==(0);
+ if (!($606)) {
+ $607 = ($602>>>0)<=($601>>>0);
+ $608 = ($602>>>0)>($605>>>0);
+ $or$cond2$i214 = $607 | $608;
+ if ($or$cond2$i214) {
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ }
+ }
+ $609 = (_sbrk(($$$i|0))|0);
+ $610 = ($609|0)==($589|0);
+ if ($610) {
+ $$3229$i = $589;$$3235$i = $$$i;
+ } else {
+ $$2247$ph$i = $609;$$2253$ph$i = $$$i;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- } else {
- $$2247$ph$i = $591;$$2253$ph$i = $589;
- label = 171;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- } while(0);
- do {
- if ((label|0) == 163) {
- $566 = (_sbrk(0)|0);
- $567 = ($566|0)==((-1)|0);
- if ($567) {
- $$2234253237$i = 0;
- } else {
- $568 = $566;
- $569 = HEAP32[(33620)>>2]|0;
- $570 = (($569) + -1)|0;
- $571 = $570 & $568;
- $572 = ($571|0)==(0);
- $573 = (($570) + ($568))|0;
- $574 = (0 - ($569))|0;
- $575 = $573 & $574;
- $576 = (($575) - ($568))|0;
- $577 = $572 ? 0 : $576;
- $$$i = (($577) + ($544))|0;
- $578 = HEAP32[(33576)>>2]|0;
- $579 = (($$$i) + ($578))|0;
- $580 = ($$$i>>>0)>($$0197>>>0);
- $581 = ($$$i>>>0)<(2147483647);
- $or$cond$i214 = $580 & $581;
- if ($or$cond$i214) {
- $582 = HEAP32[(33584)>>2]|0;
- $583 = ($582|0)==(0);
- if (!($583)) {
- $584 = ($579>>>0)<=($578>>>0);
- $585 = ($579>>>0)>($582>>>0);
- $or$cond2$i215 = $584 | $585;
- if ($or$cond2$i215) {
+ } while(0);
+ do {
+ if ((label|0) == 184) {
+ $624 = (0 - ($$2253$ph$i))|0;
+ $625 = ($$2247$ph$i|0)!=((-1)|0);
+ $626 = ($$2253$ph$i>>>0)<(2147483647);
+ $or$cond7$i = $626 & $625;
+ $627 = ($562>>>0)>($$2253$ph$i>>>0);
+ $or$cond10$i = $627 & $or$cond7$i;
+ if (!($or$cond10$i)) {
+ $637 = ($$2247$ph$i|0)==((-1)|0);
+ if ($637) {
$$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
break;
}
}
- $586 = (_sbrk(($$$i|0))|0);
- $587 = ($586|0)==($566|0);
- if ($587) {
- $$723948$i = $$$i;$$749$i = $566;
- label = 180;
- break L244;
+ $628 = HEAP32[(35416)>>2]|0;
+ $629 = (($564) - ($$2253$ph$i))|0;
+ $630 = (($629) + ($628))|0;
+ $631 = (0 - ($628))|0;
+ $632 = $630 & $631;
+ $633 = ($632>>>0)<(2147483647);
+ if ($633) {
+ $634 = (_sbrk(($632|0))|0);
+ $635 = ($634|0)==((-1)|0);
+ if ($635) {
+ (_sbrk(($624|0))|0);
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $636 = (($632) + ($$2253$ph$i))|0;
+ $$3229$i = $$2247$ph$i;$$3235$i = $636;
+ break;
+ }
} else {
- $$2247$ph$i = $586;$$2253$ph$i = $$$i;
- label = 171;
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- }
- } while(0);
- do {
- if ((label|0) == 171) {
- $597 = (0 - ($$2253$ph$i))|0;
- $598 = ($$2247$ph$i|0)!=((-1)|0);
- $599 = ($$2253$ph$i>>>0)<(2147483647);
- $or$cond7$i = $599 & $598;
- $600 = ($539>>>0)>($$2253$ph$i>>>0);
- $or$cond10$i = $600 & $or$cond7$i;
- if (!($or$cond10$i)) {
- $610 = ($$2247$ph$i|0)==((-1)|0);
- if ($610) {
- $$2234253237$i = 0;
- break;
- } else {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- $601 = HEAP32[(33624)>>2]|0;
- $602 = (($540) - ($$2253$ph$i))|0;
- $603 = (($602) + ($601))|0;
- $604 = (0 - ($601))|0;
- $605 = $603 & $604;
- $606 = ($605>>>0)<(2147483647);
- if (!($606)) {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- $607 = (_sbrk(($605|0))|0);
- $608 = ($607|0)==((-1)|0);
- if ($608) {
- (_sbrk(($597|0))|0);
- $$2234253237$i = 0;
- break;
- } else {
- $609 = (($605) + ($$2253$ph$i))|0;
- $$723948$i = $609;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- } while(0);
- $611 = HEAP32[(33588)>>2]|0;
- $612 = $611 | 4;
- HEAP32[(33588)>>2] = $612;
- $$4236$i = $$2234253237$i;
- label = 178;
- } else {
- $$4236$i = 0;
- label = 178;
- }
- } while(0);
- if ((label|0) == 178) {
- $613 = ($544>>>0)<(2147483647);
- if ($613) {
- $614 = (_sbrk(($544|0))|0);
- $615 = (_sbrk(0)|0);
- $616 = ($614|0)!=((-1)|0);
- $617 = ($615|0)!=((-1)|0);
- $or$cond5$i = $616 & $617;
- $618 = ($614>>>0)<($615>>>0);
- $or$cond11$i = $618 & $or$cond5$i;
- $619 = $615;
- $620 = $614;
- $621 = (($619) - ($620))|0;
- $622 = (($$0197) + 40)|0;
- $623 = ($621>>>0)>($622>>>0);
- $$$4236$i = $623 ? $621 : $$4236$i;
- $or$cond11$not$i = $or$cond11$i ^ 1;
- $624 = ($614|0)==((-1)|0);
- $not$$i216 = $623 ^ 1;
- $625 = $624 | $not$$i216;
- $or$cond50$i = $625 | $or$cond11$not$i;
- if (!($or$cond50$i)) {
- $$723948$i = $$$4236$i;$$749$i = $614;
- label = 180;
- }
- }
- }
- if ((label|0) == 180) {
- $626 = HEAP32[(33576)>>2]|0;
- $627 = (($626) + ($$723948$i))|0;
- HEAP32[(33576)>>2] = $627;
- $628 = HEAP32[(33580)>>2]|0;
- $629 = ($627>>>0)>($628>>>0);
- if ($629) {
- HEAP32[(33580)>>2] = $627;
- }
- $630 = HEAP32[(33168)>>2]|0;
- $631 = ($630|0)==(0|0);
- do {
- if ($631) {
- $632 = HEAP32[(33160)>>2]|0;
- $633 = ($632|0)==(0|0);
- $634 = ($$749$i>>>0)<($632>>>0);
- $or$cond12$i = $633 | $634;
- if ($or$cond12$i) {
- HEAP32[(33160)>>2] = $$749$i;
- }
- HEAP32[(33592)>>2] = $$749$i;
- HEAP32[(33596)>>2] = $$723948$i;
- HEAP32[(33604)>>2] = 0;
- $635 = HEAP32[8404]|0;
- HEAP32[(33180)>>2] = $635;
- HEAP32[(33176)>>2] = -1;
- $$01$i$i = 0;
- while(1) {
- $636 = $$01$i$i << 1;
- $637 = (33184 + ($636<<2)|0);
- $638 = ((($637)) + 12|0);
- HEAP32[$638>>2] = $637;
- $639 = ((($637)) + 8|0);
- HEAP32[$639>>2] = $637;
- $640 = (($$01$i$i) + 1)|0;
- $exitcond$i$i = ($640|0)==(32);
- if ($exitcond$i$i) {
- break;
- } else {
- $$01$i$i = $640;
- }
- }
- $641 = (($$723948$i) + -40)|0;
- $642 = ((($$749$i)) + 8|0);
- $643 = $642;
- $644 = $643 & 7;
- $645 = ($644|0)==(0);
- $646 = (0 - ($643))|0;
- $647 = $646 & 7;
- $648 = $645 ? 0 : $647;
- $649 = (($$749$i) + ($648)|0);
- $650 = (($641) - ($648))|0;
- HEAP32[(33168)>>2] = $649;
- HEAP32[(33156)>>2] = $650;
- $651 = $650 | 1;
- $652 = ((($649)) + 4|0);
- HEAP32[$652>>2] = $651;
- $653 = (($649) + ($650)|0);
- $654 = ((($653)) + 4|0);
- HEAP32[$654>>2] = 40;
- $655 = HEAP32[(33632)>>2]|0;
- HEAP32[(33172)>>2] = $655;
- } else {
- $$024371$i = (33592);
- while(1) {
- $656 = HEAP32[$$024371$i>>2]|0;
- $657 = ((($$024371$i)) + 4|0);
- $658 = HEAP32[$657>>2]|0;
- $659 = (($656) + ($658)|0);
- $660 = ($$749$i|0)==($659|0);
- if ($660) {
- label = 190;
- break;
- }
- $661 = ((($$024371$i)) + 8|0);
- $662 = HEAP32[$661>>2]|0;
- $663 = ($662|0)==(0|0);
- if ($663) {
- break;
- } else {
- $$024371$i = $662;
- }
- }
- if ((label|0) == 190) {
- $664 = ((($$024371$i)) + 12|0);
- $665 = HEAP32[$664>>2]|0;
- $666 = $665 & 8;
- $667 = ($666|0)==(0);
- if ($667) {
- $668 = ($630>>>0)>=($656>>>0);
- $669 = ($630>>>0)<($$749$i>>>0);
- $or$cond51$i = $669 & $668;
- if ($or$cond51$i) {
- $670 = (($658) + ($$723948$i))|0;
- HEAP32[$657>>2] = $670;
- $671 = HEAP32[(33156)>>2]|0;
- $672 = ((($630)) + 8|0);
- $673 = $672;
- $674 = $673 & 7;
- $675 = ($674|0)==(0);
- $676 = (0 - ($673))|0;
- $677 = $676 & 7;
- $678 = $675 ? 0 : $677;
- $679 = (($630) + ($678)|0);
- $680 = (($$723948$i) - ($678))|0;
- $681 = (($671) + ($680))|0;
- HEAP32[(33168)>>2] = $679;
- HEAP32[(33156)>>2] = $681;
- $682 = $681 | 1;
- $683 = ((($679)) + 4|0);
- HEAP32[$683>>2] = $682;
- $684 = (($679) + ($681)|0);
- $685 = ((($684)) + 4|0);
- HEAP32[$685>>2] = 40;
- $686 = HEAP32[(33632)>>2]|0;
- HEAP32[(33172)>>2] = $686;
- break;
}
+ } while(0);
+ if ((label|0) == 190) {
+ $638 = HEAP32[(35904)>>2]|0;
+ $639 = $638 | 4;
+ HEAP32[(35904)>>2] = $639;
+ $$3229$i = (-1);$$3235$i = $$2234253237$i;
}
- }
- $687 = HEAP32[(33160)>>2]|0;
- $688 = ($$749$i>>>0)<($687>>>0);
- if ($688) {
- HEAP32[(33160)>>2] = $$749$i;
- $752 = $$749$i;
+ (___pthread_mutex_unlock(35432)|0);
+ $$4230$i = $$3229$i;$$4236$i = $$3235$i;
} else {
- $752 = $687;
- }
- $689 = (($$749$i) + ($$723948$i)|0);
- $$124470$i = (33592);
- while(1) {
- $690 = HEAP32[$$124470$i>>2]|0;
- $691 = ($690|0)==($689|0);
- if ($691) {
- label = 198;
- break;
- }
- $692 = ((($$124470$i)) + 8|0);
- $693 = HEAP32[$692>>2]|0;
- $694 = ($693|0)==(0|0);
- if ($694) {
- break;
- } else {
- $$124470$i = $693;
+ $$4230$i = (-1);$$4236$i = 0;
+ }
+ $640 = ($$4230$i|0)==((-1)|0);
+ $641 = ($567>>>0)<(2147483647);
+ $or$cond9$i = $641 & $640;
+ if ($or$cond9$i) {
+ (___pthread_mutex_lock(35432)|0);
+ $642 = (_sbrk(($567|0))|0);
+ $643 = (_sbrk(0)|0);
+ (___pthread_mutex_unlock(35432)|0);
+ $644 = ($642|0)!=((-1)|0);
+ $645 = ($643|0)!=((-1)|0);
+ $or$cond5$i = $644 & $645;
+ $646 = ($642>>>0)<($643>>>0);
+ $or$cond11$i = $646 & $or$cond5$i;
+ $647 = $643;
+ $648 = $642;
+ $649 = (($647) - ($648))|0;
+ $650 = (($$0198) + 40)|0;
+ $651 = ($649>>>0)>($650>>>0);
+ $$$4236$i = $651 ? $649 : $$4236$i;
+ $$$4230$i = $651 ? $642 : (-1);
+ if ($or$cond11$i) {
+ $$7$i = $$$4230$i;$$7239$i = $$$4236$i;
+ label = 194;
}
- }
- if ((label|0) == 198) {
- $695 = ((($$124470$i)) + 12|0);
- $696 = HEAP32[$695>>2]|0;
- $697 = $696 & 8;
- $698 = ($697|0)==(0);
- if ($698) {
- HEAP32[$$124470$i>>2] = $$749$i;
- $699 = ((($$124470$i)) + 4|0);
- $700 = HEAP32[$699>>2]|0;
- $701 = (($700) + ($$723948$i))|0;
- HEAP32[$699>>2] = $701;
- $702 = ((($$749$i)) + 8|0);
- $703 = $702;
- $704 = $703 & 7;
- $705 = ($704|0)==(0);
- $706 = (0 - ($703))|0;
- $707 = $706 & 7;
- $708 = $705 ? 0 : $707;
- $709 = (($$749$i) + ($708)|0);
- $710 = ((($689)) + 8|0);
- $711 = $710;
- $712 = $711 & 7;
- $713 = ($712|0)==(0);
- $714 = (0 - ($711))|0;
- $715 = $714 & 7;
- $716 = $713 ? 0 : $715;
- $717 = (($689) + ($716)|0);
- $718 = $717;
- $719 = $709;
- $720 = (($718) - ($719))|0;
- $721 = (($709) + ($$0197)|0);
- $722 = (($720) - ($$0197))|0;
- $723 = $$0197 | 3;
- $724 = ((($709)) + 4|0);
- HEAP32[$724>>2] = $723;
- $725 = ($717|0)==($630|0);
+ } else {
+ $$7$i = $$4230$i;$$7239$i = $$4236$i;
+ label = 194;
+ }
+ if ((label|0) == 194) {
+ $652 = ($$7$i|0)==((-1)|0);
+ if (!($652)) {
+ $653 = HEAP32[(35892)>>2]|0;
+ $654 = (($653) + ($$7239$i))|0;
+ HEAP32[(35892)>>2] = $654;
+ $655 = HEAP32[(35896)>>2]|0;
+ $656 = ($654>>>0)>($655>>>0);
+ if ($656) {
+ HEAP32[(35896)>>2] = $654;
+ }
+ $657 = HEAP32[(35484)>>2]|0;
+ $658 = ($657|0)==(0|0);
do {
- if ($725) {
- $726 = HEAP32[(33156)>>2]|0;
- $727 = (($726) + ($722))|0;
- HEAP32[(33156)>>2] = $727;
- HEAP32[(33168)>>2] = $721;
- $728 = $727 | 1;
- $729 = ((($721)) + 4|0);
- HEAP32[$729>>2] = $728;
+ if ($658) {
+ $659 = HEAP32[(35476)>>2]|0;
+ $660 = ($659|0)==(0|0);
+ $661 = ($$7$i>>>0)<($659>>>0);
+ $or$cond12$i = $660 | $661;
+ if ($or$cond12$i) {
+ HEAP32[(35476)>>2] = $$7$i;
+ }
+ HEAP32[(35936)>>2] = $$7$i;
+ HEAP32[(35940)>>2] = $$7239$i;
+ HEAP32[(35948)>>2] = 0;
+ $662 = HEAP32[8852]|0;
+ HEAP32[(35496)>>2] = $662;
+ HEAP32[(35492)>>2] = -1;
+ $$01$i$i = 0;
+ while(1) {
+ $663 = $$01$i$i << 1;
+ $664 = (35500 + ($663<<2)|0);
+ $665 = ((($664)) + 12|0);
+ HEAP32[$665>>2] = $664;
+ $666 = ((($664)) + 8|0);
+ HEAP32[$666>>2] = $664;
+ $667 = (($$01$i$i) + 1)|0;
+ $exitcond$i$i = ($667|0)==(32);
+ if ($exitcond$i$i) {
+ break;
+ } else {
+ $$01$i$i = $667;
+ }
+ }
+ $668 = (($$7239$i) + -40)|0;
+ $669 = ((($$7$i)) + 8|0);
+ $670 = $669;
+ $671 = $670 & 7;
+ $672 = ($671|0)==(0);
+ $673 = (0 - ($670))|0;
+ $674 = $673 & 7;
+ $675 = $672 ? 0 : $674;
+ $676 = (($$7$i) + ($675)|0);
+ $677 = (($668) - ($675))|0;
+ HEAP32[(35484)>>2] = $676;
+ HEAP32[(35472)>>2] = $677;
+ $678 = $677 | 1;
+ $679 = ((($676)) + 4|0);
+ HEAP32[$679>>2] = $678;
+ $680 = (($676) + ($677)|0);
+ $681 = ((($680)) + 4|0);
+ HEAP32[$681>>2] = 40;
+ $682 = HEAP32[(35424)>>2]|0;
+ HEAP32[(35488)>>2] = $682;
} else {
- $730 = HEAP32[(33164)>>2]|0;
- $731 = ($717|0)==($730|0);
- if ($731) {
- $732 = HEAP32[(33152)>>2]|0;
- $733 = (($732) + ($722))|0;
- HEAP32[(33152)>>2] = $733;
- HEAP32[(33164)>>2] = $721;
- $734 = $733 | 1;
- $735 = ((($721)) + 4|0);
- HEAP32[$735>>2] = $734;
- $736 = (($721) + ($733)|0);
- HEAP32[$736>>2] = $733;
- break;
+ $$024363$i = (35936);
+ while(1) {
+ $683 = HEAP32[$$024363$i>>2]|0;
+ $684 = ((($$024363$i)) + 4|0);
+ $685 = HEAP32[$684>>2]|0;
+ $686 = (($683) + ($685)|0);
+ $687 = ($$7$i|0)==($686|0);
+ if ($687) {
+ label = 205;
+ break;
+ }
+ $688 = ((($$024363$i)) + 8|0);
+ $689 = HEAP32[$688>>2]|0;
+ $690 = ($689|0)==(0|0);
+ if ($690) {
+ break;
+ } else {
+ $$024363$i = $689;
+ }
}
- $737 = ((($717)) + 4|0);
- $738 = HEAP32[$737>>2]|0;
- $739 = $738 & 3;
- $740 = ($739|0)==(1);
- if ($740) {
- $741 = $738 & -8;
- $742 = $738 >>> 3;
- $743 = ($738>>>0)<(256);
- L314: do {
- if ($743) {
- $744 = ((($717)) + 8|0);
- $745 = HEAP32[$744>>2]|0;
- $746 = ((($717)) + 12|0);
- $747 = HEAP32[$746>>2]|0;
- $748 = $742 << 1;
- $749 = (33184 + ($748<<2)|0);
- $750 = ($745|0)==($749|0);
- do {
- if (!($750)) {
- $751 = ($745>>>0)<($752>>>0);
- if ($751) {
- _abort();
- // unreachable;
- }
- $753 = ((($745)) + 12|0);
- $754 = HEAP32[$753>>2]|0;
- $755 = ($754|0)==($717|0);
- if ($755) {
- break;
- }
- _abort();
- // unreachable;
+ if ((label|0) == 205) {
+ $691 = ((($$024363$i)) + 12|0);
+ $692 = HEAP32[$691>>2]|0;
+ $693 = $692 & 8;
+ $694 = ($693|0)==(0);
+ if ($694) {
+ $695 = ($657>>>0)>=($683>>>0);
+ $696 = ($657>>>0)<($$7$i>>>0);
+ $or$cond43$i = $696 & $695;
+ if ($or$cond43$i) {
+ $697 = (($685) + ($$7239$i))|0;
+ HEAP32[$684>>2] = $697;
+ $698 = HEAP32[(35472)>>2]|0;
+ $699 = ((($657)) + 8|0);
+ $700 = $699;
+ $701 = $700 & 7;
+ $702 = ($701|0)==(0);
+ $703 = (0 - ($700))|0;
+ $704 = $703 & 7;
+ $705 = $702 ? 0 : $704;
+ $706 = (($657) + ($705)|0);
+ $707 = (($$7239$i) - ($705))|0;
+ $708 = (($698) + ($707))|0;
+ HEAP32[(35484)>>2] = $706;
+ HEAP32[(35472)>>2] = $708;
+ $709 = $708 | 1;
+ $710 = ((($706)) + 4|0);
+ HEAP32[$710>>2] = $709;
+ $711 = (($706) + ($708)|0);
+ $712 = ((($711)) + 4|0);
+ HEAP32[$712>>2] = 40;
+ $713 = HEAP32[(35424)>>2]|0;
+ HEAP32[(35488)>>2] = $713;
+ break;
+ }
+ }
+ }
+ $714 = HEAP32[(35476)>>2]|0;
+ $715 = ($$7$i>>>0)<($714>>>0);
+ if ($715) {
+ HEAP32[(35476)>>2] = $$7$i;
+ $779 = $$7$i;
+ } else {
+ $779 = $714;
+ }
+ $716 = (($$7$i) + ($$7239$i)|0);
+ $$124462$i = (35936);
+ while(1) {
+ $717 = HEAP32[$$124462$i>>2]|0;
+ $718 = ($717|0)==($716|0);
+ if ($718) {
+ label = 213;
+ break;
+ }
+ $719 = ((($$124462$i)) + 8|0);
+ $720 = HEAP32[$719>>2]|0;
+ $721 = ($720|0)==(0|0);
+ if ($721) {
+ break;
+ } else {
+ $$124462$i = $720;
+ }
+ }
+ if ((label|0) == 213) {
+ $722 = ((($$124462$i)) + 12|0);
+ $723 = HEAP32[$722>>2]|0;
+ $724 = $723 & 8;
+ $725 = ($724|0)==(0);
+ if ($725) {
+ HEAP32[$$124462$i>>2] = $$7$i;
+ $726 = ((($$124462$i)) + 4|0);
+ $727 = HEAP32[$726>>2]|0;
+ $728 = (($727) + ($$7239$i))|0;
+ HEAP32[$726>>2] = $728;
+ $729 = ((($$7$i)) + 8|0);
+ $730 = $729;
+ $731 = $730 & 7;
+ $732 = ($731|0)==(0);
+ $733 = (0 - ($730))|0;
+ $734 = $733 & 7;
+ $735 = $732 ? 0 : $734;
+ $736 = (($$7$i) + ($735)|0);
+ $737 = ((($716)) + 8|0);
+ $738 = $737;
+ $739 = $738 & 7;
+ $740 = ($739|0)==(0);
+ $741 = (0 - ($738))|0;
+ $742 = $741 & 7;
+ $743 = $740 ? 0 : $742;
+ $744 = (($716) + ($743)|0);
+ $745 = $744;
+ $746 = $736;
+ $747 = (($745) - ($746))|0;
+ $748 = (($736) + ($$0198)|0);
+ $749 = (($747) - ($$0198))|0;
+ $750 = $$0198 | 3;
+ $751 = ((($736)) + 4|0);
+ HEAP32[$751>>2] = $750;
+ $752 = ($744|0)==($657|0);
+ do {
+ if ($752) {
+ $753 = HEAP32[(35472)>>2]|0;
+ $754 = (($753) + ($749))|0;
+ HEAP32[(35472)>>2] = $754;
+ HEAP32[(35484)>>2] = $748;
+ $755 = $754 | 1;
+ $756 = ((($748)) + 4|0);
+ HEAP32[$756>>2] = $755;
+ } else {
+ $757 = HEAP32[(35480)>>2]|0;
+ $758 = ($744|0)==($757|0);
+ if ($758) {
+ $759 = HEAP32[(35468)>>2]|0;
+ $760 = (($759) + ($749))|0;
+ HEAP32[(35468)>>2] = $760;
+ HEAP32[(35480)>>2] = $748;
+ $761 = $760 | 1;
+ $762 = ((($748)) + 4|0);
+ HEAP32[$762>>2] = $761;
+ $763 = (($748) + ($760)|0);
+ HEAP32[$763>>2] = $760;
+ break;
}
- } while(0);
- $756 = ($747|0)==($745|0);
- if ($756) {
- $757 = 1 << $742;
- $758 = $757 ^ -1;
- $759 = HEAP32[8286]|0;
- $760 = $759 & $758;
- HEAP32[8286] = $760;
- break;
- }
- $761 = ($747|0)==($749|0);
- do {
- if ($761) {
- $$pre10$i$i = ((($747)) + 8|0);
- $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ $764 = ((($744)) + 4|0);
+ $765 = HEAP32[$764>>2]|0;
+ $766 = $765 & 3;
+ $767 = ($766|0)==(1);
+ if ($767) {
+ $768 = $765 & -8;
+ $769 = $765 >>> 3;
+ $770 = ($765>>>0)<(256);
+ L329: do {
+ if ($770) {
+ $771 = ((($744)) + 8|0);
+ $772 = HEAP32[$771>>2]|0;
+ $773 = ((($744)) + 12|0);
+ $774 = HEAP32[$773>>2]|0;
+ $775 = $769 << 1;
+ $776 = (35500 + ($775<<2)|0);
+ $777 = ($772|0)==($776|0);
+ do {
+ if (!($777)) {
+ $778 = ($772>>>0)<($779>>>0);
+ if ($778) {
+ _abort();
+ // unreachable;
+ }
+ $780 = ((($772)) + 12|0);
+ $781 = HEAP32[$780>>2]|0;
+ $782 = ($781|0)==($744|0);
+ if ($782) {
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $783 = ($774|0)==($772|0);
+ if ($783) {
+ $784 = 1 << $769;
+ $785 = $784 ^ -1;
+ $786 = HEAP32[8865]|0;
+ $787 = $786 & $785;
+ HEAP32[8865] = $787;
+ break;
+ }
+ $788 = ($774|0)==($776|0);
+ do {
+ if ($788) {
+ $$pre10$i$i = ((($774)) + 8|0);
+ $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ } else {
+ $789 = ($774>>>0)<($779>>>0);
+ if ($789) {
+ _abort();
+ // unreachable;
+ }
+ $790 = ((($774)) + 8|0);
+ $791 = HEAP32[$790>>2]|0;
+ $792 = ($791|0)==($744|0);
+ if ($792) {
+ $$pre$phi11$i$iZ2D = $790;
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $793 = ((($772)) + 12|0);
+ HEAP32[$793>>2] = $774;
+ HEAP32[$$pre$phi11$i$iZ2D>>2] = $772;
+ } else {
+ $794 = ((($744)) + 24|0);
+ $795 = HEAP32[$794>>2]|0;
+ $796 = ((($744)) + 12|0);
+ $797 = HEAP32[$796>>2]|0;
+ $798 = ($797|0)==($744|0);
+ do {
+ if ($798) {
+ $808 = ((($744)) + 16|0);
+ $809 = ((($808)) + 4|0);
+ $810 = HEAP32[$809>>2]|0;
+ $811 = ($810|0)==(0|0);
+ if ($811) {
+ $812 = HEAP32[$808>>2]|0;
+ $813 = ($812|0)==(0|0);
+ if ($813) {
+ $$3$i$i = 0;
+ break;
+ } else {
+ $$1291$i$i = $812;$$1293$i$i = $808;
+ }
+ } else {
+ $$1291$i$i = $810;$$1293$i$i = $809;
+ }
+ while(1) {
+ $814 = ((($$1291$i$i)) + 20|0);
+ $815 = HEAP32[$814>>2]|0;
+ $816 = ($815|0)==(0|0);
+ if (!($816)) {
+ $$1291$i$i = $815;$$1293$i$i = $814;
+ continue;
+ }
+ $817 = ((($$1291$i$i)) + 16|0);
+ $818 = HEAP32[$817>>2]|0;
+ $819 = ($818|0)==(0|0);
+ if ($819) {
+ break;
+ } else {
+ $$1291$i$i = $818;$$1293$i$i = $817;
+ }
+ }
+ $820 = ($$1293$i$i>>>0)<($779>>>0);
+ if ($820) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1293$i$i>>2] = 0;
+ $$3$i$i = $$1291$i$i;
+ break;
+ }
+ } else {
+ $799 = ((($744)) + 8|0);
+ $800 = HEAP32[$799>>2]|0;
+ $801 = ($800>>>0)<($779>>>0);
+ if ($801) {
+ _abort();
+ // unreachable;
+ }
+ $802 = ((($800)) + 12|0);
+ $803 = HEAP32[$802>>2]|0;
+ $804 = ($803|0)==($744|0);
+ if (!($804)) {
+ _abort();
+ // unreachable;
+ }
+ $805 = ((($797)) + 8|0);
+ $806 = HEAP32[$805>>2]|0;
+ $807 = ($806|0)==($744|0);
+ if ($807) {
+ HEAP32[$802>>2] = $797;
+ HEAP32[$805>>2] = $800;
+ $$3$i$i = $797;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $821 = ($795|0)==(0|0);
+ if ($821) {
+ break;
+ }
+ $822 = ((($744)) + 28|0);
+ $823 = HEAP32[$822>>2]|0;
+ $824 = (35764 + ($823<<2)|0);
+ $825 = HEAP32[$824>>2]|0;
+ $826 = ($744|0)==($825|0);
+ do {
+ if ($826) {
+ HEAP32[$824>>2] = $$3$i$i;
+ $cond$i$i = ($$3$i$i|0)==(0|0);
+ if (!($cond$i$i)) {
+ break;
+ }
+ $827 = 1 << $823;
+ $828 = $827 ^ -1;
+ $829 = HEAP32[(35464)>>2]|0;
+ $830 = $829 & $828;
+ HEAP32[(35464)>>2] = $830;
+ break L329;
+ } else {
+ $831 = HEAP32[(35476)>>2]|0;
+ $832 = ($795>>>0)<($831>>>0);
+ if ($832) {
+ _abort();
+ // unreachable;
+ } else {
+ $833 = ((($795)) + 16|0);
+ $834 = HEAP32[$833>>2]|0;
+ $not$$i$i = ($834|0)!=($744|0);
+ $$sink1$i$i = $not$$i$i&1;
+ $835 = (((($795)) + 16|0) + ($$sink1$i$i<<2)|0);
+ HEAP32[$835>>2] = $$3$i$i;
+ $836 = ($$3$i$i|0)==(0|0);
+ if ($836) {
+ break L329;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $837 = HEAP32[(35476)>>2]|0;
+ $838 = ($$3$i$i>>>0)<($837>>>0);
+ if ($838) {
+ _abort();
+ // unreachable;
+ }
+ $839 = ((($$3$i$i)) + 24|0);
+ HEAP32[$839>>2] = $795;
+ $840 = ((($744)) + 16|0);
+ $841 = HEAP32[$840>>2]|0;
+ $842 = ($841|0)==(0|0);
+ do {
+ if (!($842)) {
+ $843 = ($841>>>0)<($837>>>0);
+ if ($843) {
+ _abort();
+ // unreachable;
+ } else {
+ $844 = ((($$3$i$i)) + 16|0);
+ HEAP32[$844>>2] = $841;
+ $845 = ((($841)) + 24|0);
+ HEAP32[$845>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $846 = ((($840)) + 4|0);
+ $847 = HEAP32[$846>>2]|0;
+ $848 = ($847|0)==(0|0);
+ if ($848) {
+ break;
+ }
+ $849 = HEAP32[(35476)>>2]|0;
+ $850 = ($847>>>0)<($849>>>0);
+ if ($850) {
+ _abort();
+ // unreachable;
+ } else {
+ $851 = ((($$3$i$i)) + 20|0);
+ HEAP32[$851>>2] = $847;
+ $852 = ((($847)) + 24|0);
+ HEAP32[$852>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $853 = (($744) + ($768)|0);
+ $854 = (($768) + ($749))|0;
+ $$0$i17$i = $853;$$0287$i$i = $854;
} else {
- $762 = ($747>>>0)<($752>>>0);
- if ($762) {
- _abort();
- // unreachable;
- }
- $763 = ((($747)) + 8|0);
- $764 = HEAP32[$763>>2]|0;
- $765 = ($764|0)==($717|0);
- if ($765) {
- $$pre$phi11$i$iZ2D = $763;
- break;
- }
- _abort();
- // unreachable;
+ $$0$i17$i = $744;$$0287$i$i = $749;
}
- } while(0);
- $766 = ((($745)) + 12|0);
- HEAP32[$766>>2] = $747;
- HEAP32[$$pre$phi11$i$iZ2D>>2] = $745;
- } else {
- $767 = ((($717)) + 24|0);
- $768 = HEAP32[$767>>2]|0;
- $769 = ((($717)) + 12|0);
- $770 = HEAP32[$769>>2]|0;
- $771 = ($770|0)==($717|0);
- do {
- if ($771) {
- $781 = ((($717)) + 16|0);
- $782 = ((($781)) + 4|0);
- $783 = HEAP32[$782>>2]|0;
- $784 = ($783|0)==(0|0);
- if ($784) {
- $785 = HEAP32[$781>>2]|0;
- $786 = ($785|0)==(0|0);
- if ($786) {
- $$3$i$i = 0;
- break;
+ $855 = ((($$0$i17$i)) + 4|0);
+ $856 = HEAP32[$855>>2]|0;
+ $857 = $856 & -2;
+ HEAP32[$855>>2] = $857;
+ $858 = $$0287$i$i | 1;
+ $859 = ((($748)) + 4|0);
+ HEAP32[$859>>2] = $858;
+ $860 = (($748) + ($$0287$i$i)|0);
+ HEAP32[$860>>2] = $$0287$i$i;
+ $861 = $$0287$i$i >>> 3;
+ $862 = ($$0287$i$i>>>0)<(256);
+ if ($862) {
+ $863 = $861 << 1;
+ $864 = (35500 + ($863<<2)|0);
+ $865 = HEAP32[8865]|0;
+ $866 = 1 << $861;
+ $867 = $865 & $866;
+ $868 = ($867|0)==(0);
+ do {
+ if ($868) {
+ $869 = $865 | $866;
+ HEAP32[8865] = $869;
+ $$pre$i$i = ((($864)) + 8|0);
+ $$0295$i$i = $864;$$pre$phi$i$iZ2D = $$pre$i$i;
} else {
- $$1291$i$i = $785;$$1293$i$i = $781;
+ $870 = ((($864)) + 8|0);
+ $871 = HEAP32[$870>>2]|0;
+ $872 = HEAP32[(35476)>>2]|0;
+ $873 = ($871>>>0)<($872>>>0);
+ if (!($873)) {
+ $$0295$i$i = $871;$$pre$phi$i$iZ2D = $870;
+ break;
+ }
+ _abort();
+ // unreachable;
}
+ } while(0);
+ HEAP32[$$pre$phi$i$iZ2D>>2] = $748;
+ $874 = ((($$0295$i$i)) + 12|0);
+ HEAP32[$874>>2] = $748;
+ $875 = ((($748)) + 8|0);
+ HEAP32[$875>>2] = $$0295$i$i;
+ $876 = ((($748)) + 12|0);
+ HEAP32[$876>>2] = $864;
+ break;
+ }
+ $877 = $$0287$i$i >>> 8;
+ $878 = ($877|0)==(0);
+ do {
+ if ($878) {
+ $$0296$i$i = 0;
} else {
- $$1291$i$i = $783;$$1293$i$i = $782;
- }
- while(1) {
- $787 = ((($$1291$i$i)) + 20|0);
- $788 = HEAP32[$787>>2]|0;
- $789 = ($788|0)==(0|0);
- if (!($789)) {
- $$1291$i$i = $788;$$1293$i$i = $787;
- continue;
- }
- $790 = ((($$1291$i$i)) + 16|0);
- $791 = HEAP32[$790>>2]|0;
- $792 = ($791|0)==(0|0);
- if ($792) {
+ $879 = ($$0287$i$i>>>0)>(16777215);
+ if ($879) {
+ $$0296$i$i = 31;
break;
- } else {
- $$1291$i$i = $791;$$1293$i$i = $790;
}
+ $880 = (($877) + 1048320)|0;
+ $881 = $880 >>> 16;
+ $882 = $881 & 8;
+ $883 = $877 << $882;
+ $884 = (($883) + 520192)|0;
+ $885 = $884 >>> 16;
+ $886 = $885 & 4;
+ $887 = $886 | $882;
+ $888 = $883 << $886;
+ $889 = (($888) + 245760)|0;
+ $890 = $889 >>> 16;
+ $891 = $890 & 2;
+ $892 = $887 | $891;
+ $893 = (14 - ($892))|0;
+ $894 = $888 << $891;
+ $895 = $894 >>> 15;
+ $896 = (($893) + ($895))|0;
+ $897 = $896 << 1;
+ $898 = (($896) + 7)|0;
+ $899 = $$0287$i$i >>> $898;
+ $900 = $899 & 1;
+ $901 = $900 | $897;
+ $$0296$i$i = $901;
}
- $793 = ($$1293$i$i>>>0)<($752>>>0);
- if ($793) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1293$i$i>>2] = 0;
- $$3$i$i = $$1291$i$i;
+ } while(0);
+ $902 = (35764 + ($$0296$i$i<<2)|0);
+ $903 = ((($748)) + 28|0);
+ HEAP32[$903>>2] = $$0296$i$i;
+ $904 = ((($748)) + 16|0);
+ $905 = ((($904)) + 4|0);
+ HEAP32[$905>>2] = 0;
+ HEAP32[$904>>2] = 0;
+ $906 = HEAP32[(35464)>>2]|0;
+ $907 = 1 << $$0296$i$i;
+ $908 = $906 & $907;
+ $909 = ($908|0)==(0);
+ if ($909) {
+ $910 = $906 | $907;
+ HEAP32[(35464)>>2] = $910;
+ HEAP32[$902>>2] = $748;
+ $911 = ((($748)) + 24|0);
+ HEAP32[$911>>2] = $902;
+ $912 = ((($748)) + 12|0);
+ HEAP32[$912>>2] = $748;
+ $913 = ((($748)) + 8|0);
+ HEAP32[$913>>2] = $748;
+ break;
+ }
+ $914 = HEAP32[$902>>2]|0;
+ $915 = ($$0296$i$i|0)==(31);
+ $916 = $$0296$i$i >>> 1;
+ $917 = (25 - ($916))|0;
+ $918 = $915 ? 0 : $917;
+ $919 = $$0287$i$i << $918;
+ $$0288$i$i = $919;$$0289$i$i = $914;
+ while(1) {
+ $920 = ((($$0289$i$i)) + 4|0);
+ $921 = HEAP32[$920>>2]|0;
+ $922 = $921 & -8;
+ $923 = ($922|0)==($$0287$i$i|0);
+ if ($923) {
+ label = 280;
break;
}
- } else {
- $772 = ((($717)) + 8|0);
- $773 = HEAP32[$772>>2]|0;
- $774 = ($773>>>0)<($752>>>0);
- if ($774) {
- _abort();
- // unreachable;
- }
- $775 = ((($773)) + 12|0);
- $776 = HEAP32[$775>>2]|0;
- $777 = ($776|0)==($717|0);
- if (!($777)) {
- _abort();
- // unreachable;
- }
- $778 = ((($770)) + 8|0);
- $779 = HEAP32[$778>>2]|0;
- $780 = ($779|0)==($717|0);
- if ($780) {
- HEAP32[$775>>2] = $770;
- HEAP32[$778>>2] = $773;
- $$3$i$i = $770;
+ $924 = $$0288$i$i >>> 31;
+ $925 = (((($$0289$i$i)) + 16|0) + ($924<<2)|0);
+ $926 = $$0288$i$i << 1;
+ $927 = HEAP32[$925>>2]|0;
+ $928 = ($927|0)==(0|0);
+ if ($928) {
+ label = 277;
break;
} else {
- _abort();
- // unreachable;
+ $$0288$i$i = $926;$$0289$i$i = $927;
}
}
- } while(0);
- $794 = ($768|0)==(0|0);
- if ($794) {
- break;
- }
- $795 = ((($717)) + 28|0);
- $796 = HEAP32[$795>>2]|0;
- $797 = (33448 + ($796<<2)|0);
- $798 = HEAP32[$797>>2]|0;
- $799 = ($717|0)==($798|0);
- do {
- if ($799) {
- HEAP32[$797>>2] = $$3$i$i;
- $cond$i$i = ($$3$i$i|0)==(0|0);
- if (!($cond$i$i)) {
- break;
- }
- $800 = 1 << $796;
- $801 = $800 ^ -1;
- $802 = HEAP32[(33148)>>2]|0;
- $803 = $802 & $801;
- HEAP32[(33148)>>2] = $803;
- break L314;
- } else {
- $804 = HEAP32[(33160)>>2]|0;
- $805 = ($768>>>0)<($804>>>0);
- if ($805) {
+ if ((label|0) == 277) {
+ $929 = HEAP32[(35476)>>2]|0;
+ $930 = ($925>>>0)<($929>>>0);
+ if ($930) {
_abort();
// unreachable;
} else {
- $806 = ((($768)) + 16|0);
- $807 = HEAP32[$806>>2]|0;
- $not$$i17$i = ($807|0)!=($717|0);
- $$sink1$i$i = $not$$i17$i&1;
- $808 = (((($768)) + 16|0) + ($$sink1$i$i<<2)|0);
- HEAP32[$808>>2] = $$3$i$i;
- $809 = ($$3$i$i|0)==(0|0);
- if ($809) {
- break L314;
- } else {
- break;
- }
+ HEAP32[$925>>2] = $748;
+ $931 = ((($748)) + 24|0);
+ HEAP32[$931>>2] = $$0289$i$i;
+ $932 = ((($748)) + 12|0);
+ HEAP32[$932>>2] = $748;
+ $933 = ((($748)) + 8|0);
+ HEAP32[$933>>2] = $748;
+ break;
}
}
- } while(0);
- $810 = HEAP32[(33160)>>2]|0;
- $811 = ($$3$i$i>>>0)<($810>>>0);
- if ($811) {
- _abort();
- // unreachable;
- }
- $812 = ((($$3$i$i)) + 24|0);
- HEAP32[$812>>2] = $768;
- $813 = ((($717)) + 16|0);
- $814 = HEAP32[$813>>2]|0;
- $815 = ($814|0)==(0|0);
- do {
- if (!($815)) {
- $816 = ($814>>>0)<($810>>>0);
- if ($816) {
+ else if ((label|0) == 280) {
+ $934 = ((($$0289$i$i)) + 8|0);
+ $935 = HEAP32[$934>>2]|0;
+ $936 = HEAP32[(35476)>>2]|0;
+ $937 = ($935>>>0)>=($936>>>0);
+ $not$7$i$i = ($$0289$i$i>>>0)>=($936>>>0);
+ $938 = $937 & $not$7$i$i;
+ if ($938) {
+ $939 = ((($935)) + 12|0);
+ HEAP32[$939>>2] = $748;
+ HEAP32[$934>>2] = $748;
+ $940 = ((($748)) + 8|0);
+ HEAP32[$940>>2] = $935;
+ $941 = ((($748)) + 12|0);
+ HEAP32[$941>>2] = $$0289$i$i;
+ $942 = ((($748)) + 24|0);
+ HEAP32[$942>>2] = 0;
+ break;
+ } else {
_abort();
// unreachable;
- } else {
- $817 = ((($$3$i$i)) + 16|0);
- HEAP32[$817>>2] = $814;
- $818 = ((($814)) + 24|0);
- HEAP32[$818>>2] = $$3$i$i;
- break;
}
}
- } while(0);
- $819 = ((($813)) + 4|0);
- $820 = HEAP32[$819>>2]|0;
- $821 = ($820|0)==(0|0);
- if ($821) {
- break;
}
- $822 = HEAP32[(33160)>>2]|0;
- $823 = ($820>>>0)<($822>>>0);
- if ($823) {
+ } while(0);
+ $1074 = ((($736)) + 8|0);
+ $$2 = $1074;
+ break L230;
+ }
+ }
+ $$0$i$i$i = (35936);
+ while(1) {
+ $943 = HEAP32[$$0$i$i$i>>2]|0;
+ $944 = ($943>>>0)>($657>>>0);
+ if (!($944)) {
+ $945 = ((($$0$i$i$i)) + 4|0);
+ $946 = HEAP32[$945>>2]|0;
+ $947 = (($943) + ($946)|0);
+ $948 = ($947>>>0)>($657>>>0);
+ if ($948) {
+ break;
+ }
+ }
+ $949 = ((($$0$i$i$i)) + 8|0);
+ $950 = HEAP32[$949>>2]|0;
+ $$0$i$i$i = $950;
+ }
+ $951 = ((($947)) + -47|0);
+ $952 = ((($951)) + 8|0);
+ $953 = $952;
+ $954 = $953 & 7;
+ $955 = ($954|0)==(0);
+ $956 = (0 - ($953))|0;
+ $957 = $956 & 7;
+ $958 = $955 ? 0 : $957;
+ $959 = (($951) + ($958)|0);
+ $960 = ((($657)) + 16|0);
+ $961 = ($959>>>0)<($960>>>0);
+ $962 = $961 ? $657 : $959;
+ $963 = ((($962)) + 8|0);
+ $964 = ((($962)) + 24|0);
+ $965 = (($$7239$i) + -40)|0;
+ $966 = ((($$7$i)) + 8|0);
+ $967 = $966;
+ $968 = $967 & 7;
+ $969 = ($968|0)==(0);
+ $970 = (0 - ($967))|0;
+ $971 = $970 & 7;
+ $972 = $969 ? 0 : $971;
+ $973 = (($$7$i) + ($972)|0);
+ $974 = (($965) - ($972))|0;
+ HEAP32[(35484)>>2] = $973;
+ HEAP32[(35472)>>2] = $974;
+ $975 = $974 | 1;
+ $976 = ((($973)) + 4|0);
+ HEAP32[$976>>2] = $975;
+ $977 = (($973) + ($974)|0);
+ $978 = ((($977)) + 4|0);
+ HEAP32[$978>>2] = 40;
+ $979 = HEAP32[(35424)>>2]|0;
+ HEAP32[(35488)>>2] = $979;
+ $980 = ((($962)) + 4|0);
+ HEAP32[$980>>2] = 27;
+ ;HEAP32[$963>>2]=HEAP32[(35936)>>2]|0;HEAP32[$963+4>>2]=HEAP32[(35936)+4>>2]|0;HEAP32[$963+8>>2]=HEAP32[(35936)+8>>2]|0;HEAP32[$963+12>>2]=HEAP32[(35936)+12>>2]|0;
+ HEAP32[(35936)>>2] = $$7$i;
+ HEAP32[(35940)>>2] = $$7239$i;
+ HEAP32[(35948)>>2] = 0;
+ HEAP32[(35944)>>2] = $963;
+ $982 = $964;
+ while(1) {
+ $981 = ((($982)) + 4|0);
+ HEAP32[$981>>2] = 7;
+ $983 = ((($982)) + 8|0);
+ $984 = ($983>>>0)<($947>>>0);
+ if ($984) {
+ $982 = $981;
+ } else {
+ break;
+ }
+ }
+ $985 = ($962|0)==($657|0);
+ if (!($985)) {
+ $986 = $962;
+ $987 = $657;
+ $988 = (($986) - ($987))|0;
+ $989 = HEAP32[$980>>2]|0;
+ $990 = $989 & -2;
+ HEAP32[$980>>2] = $990;
+ $991 = $988 | 1;
+ $992 = ((($657)) + 4|0);
+ HEAP32[$992>>2] = $991;
+ HEAP32[$962>>2] = $988;
+ $993 = $988 >>> 3;
+ $994 = ($988>>>0)<(256);
+ if ($994) {
+ $995 = $993 << 1;
+ $996 = (35500 + ($995<<2)|0);
+ $997 = HEAP32[8865]|0;
+ $998 = 1 << $993;
+ $999 = $997 & $998;
+ $1000 = ($999|0)==(0);
+ do {
+ if ($1000) {
+ $1001 = $997 | $998;
+ HEAP32[8865] = $1001;
+ $$pre$i18$i = ((($996)) + 8|0);
+ $$0211$i$i = $996;$$pre$phi$i19$iZ2D = $$pre$i18$i;
+ } else {
+ $1002 = ((($996)) + 8|0);
+ $1003 = HEAP32[$1002>>2]|0;
+ $1004 = HEAP32[(35476)>>2]|0;
+ $1005 = ($1003>>>0)<($1004>>>0);
+ if (!($1005)) {
+ $$0211$i$i = $1003;$$pre$phi$i19$iZ2D = $1002;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $824 = ((($$3$i$i)) + 20|0);
- HEAP32[$824>>2] = $820;
- $825 = ((($820)) + 24|0);
- HEAP32[$825>>2] = $$3$i$i;
- break;
}
- }
- } while(0);
- $826 = (($717) + ($741)|0);
- $827 = (($741) + ($722))|0;
- $$0$i18$i = $826;$$0287$i$i = $827;
- } else {
- $$0$i18$i = $717;$$0287$i$i = $722;
- }
- $828 = ((($$0$i18$i)) + 4|0);
- $829 = HEAP32[$828>>2]|0;
- $830 = $829 & -2;
- HEAP32[$828>>2] = $830;
- $831 = $$0287$i$i | 1;
- $832 = ((($721)) + 4|0);
- HEAP32[$832>>2] = $831;
- $833 = (($721) + ($$0287$i$i)|0);
- HEAP32[$833>>2] = $$0287$i$i;
- $834 = $$0287$i$i >>> 3;
- $835 = ($$0287$i$i>>>0)<(256);
- if ($835) {
- $836 = $834 << 1;
- $837 = (33184 + ($836<<2)|0);
- $838 = HEAP32[8286]|0;
- $839 = 1 << $834;
- $840 = $838 & $839;
- $841 = ($840|0)==(0);
+ } while(0);
+ HEAP32[$$pre$phi$i19$iZ2D>>2] = $657;
+ $1006 = ((($$0211$i$i)) + 12|0);
+ HEAP32[$1006>>2] = $657;
+ $1007 = ((($657)) + 8|0);
+ HEAP32[$1007>>2] = $$0211$i$i;
+ $1008 = ((($657)) + 12|0);
+ HEAP32[$1008>>2] = $996;
+ break;
+ }
+ $1009 = $988 >>> 8;
+ $1010 = ($1009|0)==(0);
do {
- if ($841) {
- $842 = $838 | $839;
- HEAP32[8286] = $842;
- $$pre$i19$i = ((($837)) + 8|0);
- $$0295$i$i = $837;$$pre$phi$i20$iZ2D = $$pre$i19$i;
+ if ($1010) {
+ $$0212$i$i = 0;
} else {
- $843 = ((($837)) + 8|0);
- $844 = HEAP32[$843>>2]|0;
- $845 = HEAP32[(33160)>>2]|0;
- $846 = ($844>>>0)<($845>>>0);
- if (!($846)) {
- $$0295$i$i = $844;$$pre$phi$i20$iZ2D = $843;
+ $1011 = ($988>>>0)>(16777215);
+ if ($1011) {
+ $$0212$i$i = 31;
break;
}
- _abort();
- // unreachable;
+ $1012 = (($1009) + 1048320)|0;
+ $1013 = $1012 >>> 16;
+ $1014 = $1013 & 8;
+ $1015 = $1009 << $1014;
+ $1016 = (($1015) + 520192)|0;
+ $1017 = $1016 >>> 16;
+ $1018 = $1017 & 4;
+ $1019 = $1018 | $1014;
+ $1020 = $1015 << $1018;
+ $1021 = (($1020) + 245760)|0;
+ $1022 = $1021 >>> 16;
+ $1023 = $1022 & 2;
+ $1024 = $1019 | $1023;
+ $1025 = (14 - ($1024))|0;
+ $1026 = $1020 << $1023;
+ $1027 = $1026 >>> 15;
+ $1028 = (($1025) + ($1027))|0;
+ $1029 = $1028 << 1;
+ $1030 = (($1028) + 7)|0;
+ $1031 = $988 >>> $1030;
+ $1032 = $1031 & 1;
+ $1033 = $1032 | $1029;
+ $$0212$i$i = $1033;
}
} while(0);
- HEAP32[$$pre$phi$i20$iZ2D>>2] = $721;
- $847 = ((($$0295$i$i)) + 12|0);
- HEAP32[$847>>2] = $721;
- $848 = ((($721)) + 8|0);
- HEAP32[$848>>2] = $$0295$i$i;
- $849 = ((($721)) + 12|0);
- HEAP32[$849>>2] = $837;
- break;
- }
- $850 = $$0287$i$i >>> 8;
- $851 = ($850|0)==(0);
- do {
- if ($851) {
- $$0296$i$i = 0;
- } else {
- $852 = ($$0287$i$i>>>0)>(16777215);
- if ($852) {
- $$0296$i$i = 31;
- break;
- }
- $853 = (($850) + 1048320)|0;
- $854 = $853 >>> 16;
- $855 = $854 & 8;
- $856 = $850 << $855;
- $857 = (($856) + 520192)|0;
- $858 = $857 >>> 16;
- $859 = $858 & 4;
- $860 = $859 | $855;
- $861 = $856 << $859;
- $862 = (($861) + 245760)|0;
- $863 = $862 >>> 16;
- $864 = $863 & 2;
- $865 = $860 | $864;
- $866 = (14 - ($865))|0;
- $867 = $861 << $864;
- $868 = $867 >>> 15;
- $869 = (($866) + ($868))|0;
- $870 = $869 << 1;
- $871 = (($869) + 7)|0;
- $872 = $$0287$i$i >>> $871;
- $873 = $872 & 1;
- $874 = $873 | $870;
- $$0296$i$i = $874;
- }
- } while(0);
- $875 = (33448 + ($$0296$i$i<<2)|0);
- $876 = ((($721)) + 28|0);
- HEAP32[$876>>2] = $$0296$i$i;
- $877 = ((($721)) + 16|0);
- $878 = ((($877)) + 4|0);
- HEAP32[$878>>2] = 0;
- HEAP32[$877>>2] = 0;
- $879 = HEAP32[(33148)>>2]|0;
- $880 = 1 << $$0296$i$i;
- $881 = $879 & $880;
- $882 = ($881|0)==(0);
- if ($882) {
- $883 = $879 | $880;
- HEAP32[(33148)>>2] = $883;
- HEAP32[$875>>2] = $721;
- $884 = ((($721)) + 24|0);
- HEAP32[$884>>2] = $875;
- $885 = ((($721)) + 12|0);
- HEAP32[$885>>2] = $721;
- $886 = ((($721)) + 8|0);
- HEAP32[$886>>2] = $721;
- break;
- }
- $887 = HEAP32[$875>>2]|0;
- $888 = ($$0296$i$i|0)==(31);
- $889 = $$0296$i$i >>> 1;
- $890 = (25 - ($889))|0;
- $891 = $888 ? 0 : $890;
- $892 = $$0287$i$i << $891;
- $$0288$i$i = $892;$$0289$i$i = $887;
- while(1) {
- $893 = ((($$0289$i$i)) + 4|0);
- $894 = HEAP32[$893>>2]|0;
- $895 = $894 & -8;
- $896 = ($895|0)==($$0287$i$i|0);
- if ($896) {
- label = 265;
+ $1034 = (35764 + ($$0212$i$i<<2)|0);
+ $1035 = ((($657)) + 28|0);
+ HEAP32[$1035>>2] = $$0212$i$i;
+ $1036 = ((($657)) + 20|0);
+ HEAP32[$1036>>2] = 0;
+ HEAP32[$960>>2] = 0;
+ $1037 = HEAP32[(35464)>>2]|0;
+ $1038 = 1 << $$0212$i$i;
+ $1039 = $1037 & $1038;
+ $1040 = ($1039|0)==(0);
+ if ($1040) {
+ $1041 = $1037 | $1038;
+ HEAP32[(35464)>>2] = $1041;
+ HEAP32[$1034>>2] = $657;
+ $1042 = ((($657)) + 24|0);
+ HEAP32[$1042>>2] = $1034;
+ $1043 = ((($657)) + 12|0);
+ HEAP32[$1043>>2] = $657;
+ $1044 = ((($657)) + 8|0);
+ HEAP32[$1044>>2] = $657;
break;
}
- $897 = $$0288$i$i >>> 31;
- $898 = (((($$0289$i$i)) + 16|0) + ($897<<2)|0);
- $899 = $$0288$i$i << 1;
- $900 = HEAP32[$898>>2]|0;
- $901 = ($900|0)==(0|0);
- if ($901) {
- label = 262;
- break;
- } else {
- $$0288$i$i = $899;$$0289$i$i = $900;
+ $1045 = HEAP32[$1034>>2]|0;
+ $1046 = ($$0212$i$i|0)==(31);
+ $1047 = $$0212$i$i >>> 1;
+ $1048 = (25 - ($1047))|0;
+ $1049 = $1046 ? 0 : $1048;
+ $1050 = $988 << $1049;
+ $$0206$i$i = $1050;$$0207$i$i = $1045;
+ while(1) {
+ $1051 = ((($$0207$i$i)) + 4|0);
+ $1052 = HEAP32[$1051>>2]|0;
+ $1053 = $1052 & -8;
+ $1054 = ($1053|0)==($988|0);
+ if ($1054) {
+ label = 307;
+ break;
+ }
+ $1055 = $$0206$i$i >>> 31;
+ $1056 = (((($$0207$i$i)) + 16|0) + ($1055<<2)|0);
+ $1057 = $$0206$i$i << 1;
+ $1058 = HEAP32[$1056>>2]|0;
+ $1059 = ($1058|0)==(0|0);
+ if ($1059) {
+ label = 304;
+ break;
+ } else {
+ $$0206$i$i = $1057;$$0207$i$i = $1058;
+ }
}
- }
- if ((label|0) == 262) {
- $902 = HEAP32[(33160)>>2]|0;
- $903 = ($898>>>0)<($902>>>0);
- if ($903) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$898>>2] = $721;
- $904 = ((($721)) + 24|0);
- HEAP32[$904>>2] = $$0289$i$i;
- $905 = ((($721)) + 12|0);
- HEAP32[$905>>2] = $721;
- $906 = ((($721)) + 8|0);
- HEAP32[$906>>2] = $721;
- break;
+ if ((label|0) == 304) {
+ $1060 = HEAP32[(35476)>>2]|0;
+ $1061 = ($1056>>>0)<($1060>>>0);
+ if ($1061) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$1056>>2] = $657;
+ $1062 = ((($657)) + 24|0);
+ HEAP32[$1062>>2] = $$0207$i$i;
+ $1063 = ((($657)) + 12|0);
+ HEAP32[$1063>>2] = $657;
+ $1064 = ((($657)) + 8|0);
+ HEAP32[$1064>>2] = $657;
+ break;
+ }
}
- }
- else if ((label|0) == 265) {
- $907 = ((($$0289$i$i)) + 8|0);
- $908 = HEAP32[$907>>2]|0;
- $909 = HEAP32[(33160)>>2]|0;
- $910 = ($908>>>0)>=($909>>>0);
- $not$7$i$i = ($$0289$i$i>>>0)>=($909>>>0);
- $911 = $910 & $not$7$i$i;
- if ($911) {
- $912 = ((($908)) + 12|0);
- HEAP32[$912>>2] = $721;
- HEAP32[$907>>2] = $721;
- $913 = ((($721)) + 8|0);
- HEAP32[$913>>2] = $908;
- $914 = ((($721)) + 12|0);
- HEAP32[$914>>2] = $$0289$i$i;
- $915 = ((($721)) + 24|0);
- HEAP32[$915>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
+ else if ((label|0) == 307) {
+ $1065 = ((($$0207$i$i)) + 8|0);
+ $1066 = HEAP32[$1065>>2]|0;
+ $1067 = HEAP32[(35476)>>2]|0;
+ $1068 = ($1066>>>0)>=($1067>>>0);
+ $not$$i21$i = ($$0207$i$i>>>0)>=($1067>>>0);
+ $1069 = $1068 & $not$$i21$i;
+ if ($1069) {
+ $1070 = ((($1066)) + 12|0);
+ HEAP32[$1070>>2] = $657;
+ HEAP32[$1065>>2] = $657;
+ $1071 = ((($657)) + 8|0);
+ HEAP32[$1071>>2] = $1066;
+ $1072 = ((($657)) + 12|0);
+ HEAP32[$1072>>2] = $$0207$i$i;
+ $1073 = ((($657)) + 24|0);
+ HEAP32[$1073>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
}
}
}
} while(0);
- $1047 = ((($709)) + 8|0);
- $$0 = $1047;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $$0$i$i$i = (33592);
- while(1) {
- $916 = HEAP32[$$0$i$i$i>>2]|0;
- $917 = ($916>>>0)>($630>>>0);
- if (!($917)) {
- $918 = ((($$0$i$i$i)) + 4|0);
- $919 = HEAP32[$918>>2]|0;
- $920 = (($916) + ($919)|0);
- $921 = ($920>>>0)>($630>>>0);
- if ($921) {
+ $1075 = HEAP32[(35472)>>2]|0;
+ $1076 = ($1075>>>0)>($$0198>>>0);
+ if ($1076) {
+ $1077 = (($1075) - ($$0198))|0;
+ HEAP32[(35472)>>2] = $1077;
+ $1078 = HEAP32[(35484)>>2]|0;
+ $1079 = (($1078) + ($$0198)|0);
+ HEAP32[(35484)>>2] = $1079;
+ $1080 = $1077 | 1;
+ $1081 = ((($1079)) + 4|0);
+ HEAP32[$1081>>2] = $1080;
+ $1082 = $$0198 | 3;
+ $1083 = ((($1078)) + 4|0);
+ HEAP32[$1083>>2] = $1082;
+ $1084 = ((($1078)) + 8|0);
+ $$2 = $1084;
break;
}
}
- $922 = ((($$0$i$i$i)) + 8|0);
- $923 = HEAP32[$922>>2]|0;
- $$0$i$i$i = $923;
- }
- $924 = ((($920)) + -47|0);
- $925 = ((($924)) + 8|0);
- $926 = $925;
- $927 = $926 & 7;
- $928 = ($927|0)==(0);
- $929 = (0 - ($926))|0;
- $930 = $929 & 7;
- $931 = $928 ? 0 : $930;
- $932 = (($924) + ($931)|0);
- $933 = ((($630)) + 16|0);
- $934 = ($932>>>0)<($933>>>0);
- $935 = $934 ? $630 : $932;
- $936 = ((($935)) + 8|0);
- $937 = ((($935)) + 24|0);
- $938 = (($$723948$i) + -40)|0;
- $939 = ((($$749$i)) + 8|0);
- $940 = $939;
- $941 = $940 & 7;
- $942 = ($941|0)==(0);
- $943 = (0 - ($940))|0;
- $944 = $943 & 7;
- $945 = $942 ? 0 : $944;
- $946 = (($$749$i) + ($945)|0);
- $947 = (($938) - ($945))|0;
- HEAP32[(33168)>>2] = $946;
- HEAP32[(33156)>>2] = $947;
- $948 = $947 | 1;
- $949 = ((($946)) + 4|0);
- HEAP32[$949>>2] = $948;
- $950 = (($946) + ($947)|0);
- $951 = ((($950)) + 4|0);
- HEAP32[$951>>2] = 40;
- $952 = HEAP32[(33632)>>2]|0;
- HEAP32[(33172)>>2] = $952;
- $953 = ((($935)) + 4|0);
- HEAP32[$953>>2] = 27;
- ;HEAP32[$936>>2]=HEAP32[(33592)>>2]|0;HEAP32[$936+4>>2]=HEAP32[(33592)+4>>2]|0;HEAP32[$936+8>>2]=HEAP32[(33592)+8>>2]|0;HEAP32[$936+12>>2]=HEAP32[(33592)+12>>2]|0;
- HEAP32[(33592)>>2] = $$749$i;
- HEAP32[(33596)>>2] = $$723948$i;
- HEAP32[(33604)>>2] = 0;
- HEAP32[(33600)>>2] = $936;
- $955 = $937;
- while(1) {
- $954 = ((($955)) + 4|0);
- HEAP32[$954>>2] = 7;
- $956 = ((($955)) + 8|0);
- $957 = ($956>>>0)<($920>>>0);
- if ($957) {
- $955 = $954;
- } else {
- break;
- }
- }
- $958 = ($935|0)==($630|0);
- if (!($958)) {
- $959 = $935;
- $960 = $630;
- $961 = (($959) - ($960))|0;
- $962 = HEAP32[$953>>2]|0;
- $963 = $962 & -2;
- HEAP32[$953>>2] = $963;
- $964 = $961 | 1;
- $965 = ((($630)) + 4|0);
- HEAP32[$965>>2] = $964;
- HEAP32[$935>>2] = $961;
- $966 = $961 >>> 3;
- $967 = ($961>>>0)<(256);
- if ($967) {
- $968 = $966 << 1;
- $969 = (33184 + ($968<<2)|0);
- $970 = HEAP32[8286]|0;
- $971 = 1 << $966;
- $972 = $970 & $971;
- $973 = ($972|0)==(0);
- if ($973) {
- $974 = $970 | $971;
- HEAP32[8286] = $974;
- $$pre$i$i = ((($969)) + 8|0);
- $$0211$i$i = $969;$$pre$phi$i$iZ2D = $$pre$i$i;
- } else {
- $975 = ((($969)) + 8|0);
- $976 = HEAP32[$975>>2]|0;
- $977 = HEAP32[(33160)>>2]|0;
- $978 = ($976>>>0)<($977>>>0);
- if ($978) {
- _abort();
- // unreachable;
- } else {
- $$0211$i$i = $976;$$pre$phi$i$iZ2D = $975;
- }
- }
- HEAP32[$$pre$phi$i$iZ2D>>2] = $630;
- $979 = ((($$0211$i$i)) + 12|0);
- HEAP32[$979>>2] = $630;
- $980 = ((($630)) + 8|0);
- HEAP32[$980>>2] = $$0211$i$i;
- $981 = ((($630)) + 12|0);
- HEAP32[$981>>2] = $969;
- break;
- }
- $982 = $961 >>> 8;
- $983 = ($982|0)==(0);
- if ($983) {
- $$0212$i$i = 0;
- } else {
- $984 = ($961>>>0)>(16777215);
- if ($984) {
- $$0212$i$i = 31;
- } else {
- $985 = (($982) + 1048320)|0;
- $986 = $985 >>> 16;
- $987 = $986 & 8;
- $988 = $982 << $987;
- $989 = (($988) + 520192)|0;
- $990 = $989 >>> 16;
- $991 = $990 & 4;
- $992 = $991 | $987;
- $993 = $988 << $991;
- $994 = (($993) + 245760)|0;
- $995 = $994 >>> 16;
- $996 = $995 & 2;
- $997 = $992 | $996;
- $998 = (14 - ($997))|0;
- $999 = $993 << $996;
- $1000 = $999 >>> 15;
- $1001 = (($998) + ($1000))|0;
- $1002 = $1001 << 1;
- $1003 = (($1001) + 7)|0;
- $1004 = $961 >>> $1003;
- $1005 = $1004 & 1;
- $1006 = $1005 | $1002;
- $$0212$i$i = $1006;
- }
- }
- $1007 = (33448 + ($$0212$i$i<<2)|0);
- $1008 = ((($630)) + 28|0);
- HEAP32[$1008>>2] = $$0212$i$i;
- $1009 = ((($630)) + 20|0);
- HEAP32[$1009>>2] = 0;
- HEAP32[$933>>2] = 0;
- $1010 = HEAP32[(33148)>>2]|0;
- $1011 = 1 << $$0212$i$i;
- $1012 = $1010 & $1011;
- $1013 = ($1012|0)==(0);
- if ($1013) {
- $1014 = $1010 | $1011;
- HEAP32[(33148)>>2] = $1014;
- HEAP32[$1007>>2] = $630;
- $1015 = ((($630)) + 24|0);
- HEAP32[$1015>>2] = $1007;
- $1016 = ((($630)) + 12|0);
- HEAP32[$1016>>2] = $630;
- $1017 = ((($630)) + 8|0);
- HEAP32[$1017>>2] = $630;
- break;
- }
- $1018 = HEAP32[$1007>>2]|0;
- $1019 = ($$0212$i$i|0)==(31);
- $1020 = $$0212$i$i >>> 1;
- $1021 = (25 - ($1020))|0;
- $1022 = $1019 ? 0 : $1021;
- $1023 = $961 << $1022;
- $$0206$i$i = $1023;$$0207$i$i = $1018;
- while(1) {
- $1024 = ((($$0207$i$i)) + 4|0);
- $1025 = HEAP32[$1024>>2]|0;
- $1026 = $1025 & -8;
- $1027 = ($1026|0)==($961|0);
- if ($1027) {
- label = 292;
- break;
- }
- $1028 = $$0206$i$i >>> 31;
- $1029 = (((($$0207$i$i)) + 16|0) + ($1028<<2)|0);
- $1030 = $$0206$i$i << 1;
- $1031 = HEAP32[$1029>>2]|0;
- $1032 = ($1031|0)==(0|0);
- if ($1032) {
- label = 289;
- break;
- } else {
- $$0206$i$i = $1030;$$0207$i$i = $1031;
- }
- }
- if ((label|0) == 289) {
- $1033 = HEAP32[(33160)>>2]|0;
- $1034 = ($1029>>>0)<($1033>>>0);
- if ($1034) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$1029>>2] = $630;
- $1035 = ((($630)) + 24|0);
- HEAP32[$1035>>2] = $$0207$i$i;
- $1036 = ((($630)) + 12|0);
- HEAP32[$1036>>2] = $630;
- $1037 = ((($630)) + 8|0);
- HEAP32[$1037>>2] = $630;
- break;
- }
- }
- else if ((label|0) == 292) {
- $1038 = ((($$0207$i$i)) + 8|0);
- $1039 = HEAP32[$1038>>2]|0;
- $1040 = HEAP32[(33160)>>2]|0;
- $1041 = ($1039>>>0)>=($1040>>>0);
- $not$$i$i = ($$0207$i$i>>>0)>=($1040>>>0);
- $1042 = $1041 & $not$$i$i;
- if ($1042) {
- $1043 = ((($1039)) + 12|0);
- HEAP32[$1043>>2] = $630;
- HEAP32[$1038>>2] = $630;
- $1044 = ((($630)) + 8|0);
- HEAP32[$1044>>2] = $1039;
- $1045 = ((($630)) + 12|0);
- HEAP32[$1045>>2] = $$0207$i$i;
- $1046 = ((($630)) + 24|0);
- HEAP32[$1046>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
}
+ $1085 = (___errno_location()|0);
+ HEAP32[$1085>>2] = 12;
+ $$2 = 0;
+ } else {
+ $$2 = 0;
}
- } while(0);
- $1048 = HEAP32[(33156)>>2]|0;
- $1049 = ($1048>>>0)>($$0197>>>0);
- if ($1049) {
- $1050 = (($1048) - ($$0197))|0;
- HEAP32[(33156)>>2] = $1050;
- $1051 = HEAP32[(33168)>>2]|0;
- $1052 = (($1051) + ($$0197)|0);
- HEAP32[(33168)>>2] = $1052;
- $1053 = $1050 | 1;
- $1054 = ((($1052)) + 4|0);
- HEAP32[$1054>>2] = $1053;
- $1055 = $$0197 | 3;
- $1056 = ((($1051)) + 4|0);
- HEAP32[$1056>>2] = $1055;
- $1057 = ((($1051)) + 8|0);
- $$0 = $1057;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $1058 = (___errno_location()|0);
- HEAP32[$1058>>2] = 12;
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
+ }
+ } while(0);
+ $1086 = HEAP32[(35904)>>2]|0;
+ $1087 = $1086 & 2;
+ $1088 = ($1087|0)==(0);
+ if ($1088) {
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
+ }
+ (___pthread_mutex_unlock((35908))|0);
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
}
function _free($0) {
$0 = $0|0;
@@ -26227,488 +32560,213 @@ function _free($0) {
var $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0;
var $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0;
var $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0;
- var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
- var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0;
- var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0;
- var $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0;
- var $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
+ var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = ($0|0)==(0|0);
if ($1) {
return;
}
$2 = ((($0)) + -8|0);
- $3 = HEAP32[(33160)>>2]|0;
- $4 = ($2>>>0)<($3>>>0);
- if ($4) {
+ $3 = HEAP32[(35904)>>2]|0;
+ $4 = $3 & 2;
+ $5 = ($4|0)==(0);
+ if (!($5)) {
+ $6 = (___pthread_mutex_lock((35908))|0);
+ $7 = ($6|0)==(0);
+ if (!($7)) {
+ return;
+ }
+ }
+ $8 = HEAP32[(35476)>>2]|0;
+ $9 = ($2>>>0)<($8>>>0);
+ if ($9) {
_abort();
// unreachable;
}
- $5 = ((($0)) + -4|0);
- $6 = HEAP32[$5>>2]|0;
- $7 = $6 & 3;
- $8 = ($7|0)==(1);
- if ($8) {
+ $10 = ((($0)) + -4|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = $11 & 3;
+ $13 = ($12|0)==(1);
+ if ($13) {
_abort();
// unreachable;
}
- $9 = $6 & -8;
- $10 = (($2) + ($9)|0);
- $11 = $6 & 1;
- $12 = ($11|0)==(0);
- L10: do {
- if ($12) {
- $13 = HEAP32[$2>>2]|0;
- $14 = ($7|0)==(0);
- if ($14) {
- return;
- }
- $15 = (0 - ($13))|0;
- $16 = (($2) + ($15)|0);
- $17 = (($13) + ($9))|0;
- $18 = ($16>>>0)<($3>>>0);
- if ($18) {
- _abort();
- // unreachable;
- }
- $19 = HEAP32[(33164)>>2]|0;
- $20 = ($16|0)==($19|0);
- if ($20) {
- $104 = ((($10)) + 4|0);
- $105 = HEAP32[$104>>2]|0;
- $106 = $105 & 3;
- $107 = ($106|0)==(3);
- if (!($107)) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
+ $14 = $11 & -8;
+ $15 = (($2) + ($14)|0);
+ $16 = $11 & 1;
+ $17 = ($16|0)==(0);
+ L14: do {
+ if ($17) {
+ $18 = HEAP32[$2>>2]|0;
+ $19 = ($12|0)==(0);
+ if (!($19)) {
+ $20 = (0 - ($18))|0;
+ $21 = (($2) + ($20)|0);
+ $22 = (($18) + ($14))|0;
+ $23 = ($21>>>0)<($8>>>0);
+ if ($23) {
+ _abort();
+ // unreachable;
}
- $108 = (($16) + ($17)|0);
- $109 = ((($16)) + 4|0);
- $110 = $17 | 1;
- $111 = $105 & -2;
- HEAP32[(33152)>>2] = $17;
- HEAP32[$104>>2] = $111;
- HEAP32[$109>>2] = $110;
- HEAP32[$108>>2] = $17;
- return;
- }
- $21 = $13 >>> 3;
- $22 = ($13>>>0)<(256);
- if ($22) {
- $23 = ((($16)) + 8|0);
- $24 = HEAP32[$23>>2]|0;
- $25 = ((($16)) + 12|0);
- $26 = HEAP32[$25>>2]|0;
- $27 = $21 << 1;
- $28 = (33184 + ($27<<2)|0);
- $29 = ($24|0)==($28|0);
- if (!($29)) {
- $30 = ($24>>>0)<($3>>>0);
- if ($30) {
- _abort();
- // unreachable;
- }
- $31 = ((($24)) + 12|0);
- $32 = HEAP32[$31>>2]|0;
- $33 = ($32|0)==($16|0);
- if (!($33)) {
- _abort();
- // unreachable;
+ $24 = HEAP32[(35480)>>2]|0;
+ $25 = ($21|0)==($24|0);
+ if ($25) {
+ $109 = ((($15)) + 4|0);
+ $110 = HEAP32[$109>>2]|0;
+ $111 = $110 & 3;
+ $112 = ($111|0)==(3);
+ if (!($112)) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break;
}
- }
- $34 = ($26|0)==($24|0);
- if ($34) {
- $35 = 1 << $21;
- $36 = $35 ^ -1;
- $37 = HEAP32[8286]|0;
- $38 = $37 & $36;
- HEAP32[8286] = $38;
- $$1 = $16;$$1382 = $17;$113 = $16;
+ $113 = (($21) + ($22)|0);
+ $114 = ((($21)) + 4|0);
+ $115 = $22 | 1;
+ $116 = $110 & -2;
+ HEAP32[(35468)>>2] = $22;
+ HEAP32[$109>>2] = $116;
+ HEAP32[$114>>2] = $115;
+ HEAP32[$113>>2] = $22;
break;
}
- $39 = ($26|0)==($28|0);
- if ($39) {
- $$pre444 = ((($26)) + 8|0);
- $$pre$phi445Z2D = $$pre444;
- } else {
- $40 = ($26>>>0)<($3>>>0);
- if ($40) {
- _abort();
- // unreachable;
- }
- $41 = ((($26)) + 8|0);
- $42 = HEAP32[$41>>2]|0;
- $43 = ($42|0)==($16|0);
- if ($43) {
- $$pre$phi445Z2D = $41;
- } else {
- _abort();
- // unreachable;
- }
- }
- $44 = ((($24)) + 12|0);
- HEAP32[$44>>2] = $26;
- HEAP32[$$pre$phi445Z2D>>2] = $24;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- $45 = ((($16)) + 24|0);
- $46 = HEAP32[$45>>2]|0;
- $47 = ((($16)) + 12|0);
- $48 = HEAP32[$47>>2]|0;
- $49 = ($48|0)==($16|0);
- do {
- if ($49) {
- $59 = ((($16)) + 16|0);
- $60 = ((($59)) + 4|0);
- $61 = HEAP32[$60>>2]|0;
- $62 = ($61|0)==(0|0);
- if ($62) {
- $63 = HEAP32[$59>>2]|0;
- $64 = ($63|0)==(0|0);
- if ($64) {
- $$3 = 0;
- break;
- } else {
- $$1387 = $63;$$1390 = $59;
- }
- } else {
- $$1387 = $61;$$1390 = $60;
- }
- while(1) {
- $65 = ((($$1387)) + 20|0);
- $66 = HEAP32[$65>>2]|0;
- $67 = ($66|0)==(0|0);
- if (!($67)) {
- $$1387 = $66;$$1390 = $65;
- continue;
+ $26 = $18 >>> 3;
+ $27 = ($18>>>0)<(256);
+ if ($27) {
+ $28 = ((($21)) + 8|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = ((($21)) + 12|0);
+ $31 = HEAP32[$30>>2]|0;
+ $32 = $26 << 1;
+ $33 = (35500 + ($32<<2)|0);
+ $34 = ($29|0)==($33|0);
+ if (!($34)) {
+ $35 = ($29>>>0)<($8>>>0);
+ if ($35) {
+ _abort();
+ // unreachable;
}
- $68 = ((($$1387)) + 16|0);
- $69 = HEAP32[$68>>2]|0;
- $70 = ($69|0)==(0|0);
- if ($70) {
- break;
- } else {
- $$1387 = $69;$$1390 = $68;
+ $36 = ((($29)) + 12|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($37|0)==($21|0);
+ if (!($38)) {
+ _abort();
+ // unreachable;
}
}
- $71 = ($$1390>>>0)<($3>>>0);
- if ($71) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1390>>2] = 0;
- $$3 = $$1387;
+ $39 = ($31|0)==($29|0);
+ if ($39) {
+ $40 = 1 << $26;
+ $41 = $40 ^ -1;
+ $42 = HEAP32[8865]|0;
+ $43 = $42 & $41;
+ HEAP32[8865] = $43;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- } else {
- $50 = ((($16)) + 8|0);
- $51 = HEAP32[$50>>2]|0;
- $52 = ($51>>>0)<($3>>>0);
- if ($52) {
- _abort();
- // unreachable;
- }
- $53 = ((($51)) + 12|0);
- $54 = HEAP32[$53>>2]|0;
- $55 = ($54|0)==($16|0);
- if (!($55)) {
- _abort();
- // unreachable;
- }
- $56 = ((($48)) + 8|0);
- $57 = HEAP32[$56>>2]|0;
- $58 = ($57|0)==($16|0);
- if ($58) {
- HEAP32[$53>>2] = $48;
- HEAP32[$56>>2] = $51;
- $$3 = $48;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
- } while(0);
- $72 = ($46|0)==(0|0);
- if ($72) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $73 = ((($16)) + 28|0);
- $74 = HEAP32[$73>>2]|0;
- $75 = (33448 + ($74<<2)|0);
- $76 = HEAP32[$75>>2]|0;
- $77 = ($16|0)==($76|0);
- do {
- if ($77) {
- HEAP32[$75>>2] = $$3;
- $cond421 = ($$3|0)==(0|0);
- if ($cond421) {
- $78 = 1 << $74;
- $79 = $78 ^ -1;
- $80 = HEAP32[(33148)>>2]|0;
- $81 = $80 & $79;
- HEAP32[(33148)>>2] = $81;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- }
+ $44 = ($31|0)==($33|0);
+ if ($44) {
+ $$pre444 = ((($31)) + 8|0);
+ $$pre$phi445Z2D = $$pre444;
} else {
- $82 = HEAP32[(33160)>>2]|0;
- $83 = ($46>>>0)<($82>>>0);
- if ($83) {
+ $45 = ($31>>>0)<($8>>>0);
+ if ($45) {
_abort();
// unreachable;
- } else {
- $84 = ((($46)) + 16|0);
- $85 = HEAP32[$84>>2]|0;
- $not$405 = ($85|0)!=($16|0);
- $$sink3 = $not$405&1;
- $86 = (((($46)) + 16|0) + ($$sink3<<2)|0);
- HEAP32[$86>>2] = $$3;
- $87 = ($$3|0)==(0|0);
- if ($87) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- } else {
- break;
- }
}
- }
- } while(0);
- $88 = HEAP32[(33160)>>2]|0;
- $89 = ($$3>>>0)<($88>>>0);
- if ($89) {
- _abort();
- // unreachable;
- }
- $90 = ((($$3)) + 24|0);
- HEAP32[$90>>2] = $46;
- $91 = ((($16)) + 16|0);
- $92 = HEAP32[$91>>2]|0;
- $93 = ($92|0)==(0|0);
- do {
- if (!($93)) {
- $94 = ($92>>>0)<($88>>>0);
- if ($94) {
+ $46 = ((($31)) + 8|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ($47|0)==($21|0);
+ if ($48) {
+ $$pre$phi445Z2D = $46;
+ } else {
_abort();
// unreachable;
- } else {
- $95 = ((($$3)) + 16|0);
- HEAP32[$95>>2] = $92;
- $96 = ((($92)) + 24|0);
- HEAP32[$96>>2] = $$3;
- break;
}
}
- } while(0);
- $97 = ((($91)) + 4|0);
- $98 = HEAP32[$97>>2]|0;
- $99 = ($98|0)==(0|0);
- if ($99) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $100 = HEAP32[(33160)>>2]|0;
- $101 = ($98>>>0)<($100>>>0);
- if ($101) {
- _abort();
- // unreachable;
- } else {
- $102 = ((($$3)) + 20|0);
- HEAP32[$102>>2] = $98;
- $103 = ((($98)) + 24|0);
- HEAP32[$103>>2] = $$3;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- }
- }
- } else {
- $$1 = $2;$$1382 = $9;$113 = $2;
- }
- } while(0);
- $112 = ($113>>>0)<($10>>>0);
- if (!($112)) {
- _abort();
- // unreachable;
- }
- $114 = ((($10)) + 4|0);
- $115 = HEAP32[$114>>2]|0;
- $116 = $115 & 1;
- $117 = ($116|0)==(0);
- if ($117) {
- _abort();
- // unreachable;
- }
- $118 = $115 & 2;
- $119 = ($118|0)==(0);
- if ($119) {
- $120 = HEAP32[(33168)>>2]|0;
- $121 = ($10|0)==($120|0);
- $122 = HEAP32[(33164)>>2]|0;
- if ($121) {
- $123 = HEAP32[(33156)>>2]|0;
- $124 = (($123) + ($$1382))|0;
- HEAP32[(33156)>>2] = $124;
- HEAP32[(33168)>>2] = $$1;
- $125 = $124 | 1;
- $126 = ((($$1)) + 4|0);
- HEAP32[$126>>2] = $125;
- $127 = ($$1|0)==($122|0);
- if (!($127)) {
- return;
- }
- HEAP32[(33164)>>2] = 0;
- HEAP32[(33152)>>2] = 0;
- return;
- }
- $128 = ($10|0)==($122|0);
- if ($128) {
- $129 = HEAP32[(33152)>>2]|0;
- $130 = (($129) + ($$1382))|0;
- HEAP32[(33152)>>2] = $130;
- HEAP32[(33164)>>2] = $113;
- $131 = $130 | 1;
- $132 = ((($$1)) + 4|0);
- HEAP32[$132>>2] = $131;
- $133 = (($113) + ($130)|0);
- HEAP32[$133>>2] = $130;
- return;
- }
- $134 = $115 & -8;
- $135 = (($134) + ($$1382))|0;
- $136 = $115 >>> 3;
- $137 = ($115>>>0)<(256);
- L108: do {
- if ($137) {
- $138 = ((($10)) + 8|0);
- $139 = HEAP32[$138>>2]|0;
- $140 = ((($10)) + 12|0);
- $141 = HEAP32[$140>>2]|0;
- $142 = $136 << 1;
- $143 = (33184 + ($142<<2)|0);
- $144 = ($139|0)==($143|0);
- if (!($144)) {
- $145 = HEAP32[(33160)>>2]|0;
- $146 = ($139>>>0)<($145>>>0);
- if ($146) {
- _abort();
- // unreachable;
- }
- $147 = ((($139)) + 12|0);
- $148 = HEAP32[$147>>2]|0;
- $149 = ($148|0)==($10|0);
- if (!($149)) {
- _abort();
- // unreachable;
- }
- }
- $150 = ($141|0)==($139|0);
- if ($150) {
- $151 = 1 << $136;
- $152 = $151 ^ -1;
- $153 = HEAP32[8286]|0;
- $154 = $153 & $152;
- HEAP32[8286] = $154;
+ $49 = ((($29)) + 12|0);
+ HEAP32[$49>>2] = $31;
+ HEAP32[$$pre$phi445Z2D>>2] = $29;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- $155 = ($141|0)==($143|0);
- if ($155) {
- $$pre442 = ((($141)) + 8|0);
- $$pre$phi443Z2D = $$pre442;
- } else {
- $156 = HEAP32[(33160)>>2]|0;
- $157 = ($141>>>0)<($156>>>0);
- if ($157) {
- _abort();
- // unreachable;
- }
- $158 = ((($141)) + 8|0);
- $159 = HEAP32[$158>>2]|0;
- $160 = ($159|0)==($10|0);
- if ($160) {
- $$pre$phi443Z2D = $158;
- } else {
- _abort();
- // unreachable;
- }
- }
- $161 = ((($139)) + 12|0);
- HEAP32[$161>>2] = $141;
- HEAP32[$$pre$phi443Z2D>>2] = $139;
- } else {
- $162 = ((($10)) + 24|0);
- $163 = HEAP32[$162>>2]|0;
- $164 = ((($10)) + 12|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165|0)==($10|0);
+ $50 = ((($21)) + 24|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = ((($21)) + 12|0);
+ $53 = HEAP32[$52>>2]|0;
+ $54 = ($53|0)==($21|0);
do {
- if ($166) {
- $177 = ((($10)) + 16|0);
- $178 = ((($177)) + 4|0);
- $179 = HEAP32[$178>>2]|0;
- $180 = ($179|0)==(0|0);
- if ($180) {
- $181 = HEAP32[$177>>2]|0;
- $182 = ($181|0)==(0|0);
- if ($182) {
- $$3400 = 0;
+ if ($54) {
+ $64 = ((($21)) + 16|0);
+ $65 = ((($64)) + 4|0);
+ $66 = HEAP32[$65>>2]|0;
+ $67 = ($66|0)==(0|0);
+ if ($67) {
+ $68 = HEAP32[$64>>2]|0;
+ $69 = ($68|0)==(0|0);
+ if ($69) {
+ $$3 = 0;
break;
} else {
- $$1398 = $181;$$1402 = $177;
+ $$1387 = $68;$$1390 = $64;
}
} else {
- $$1398 = $179;$$1402 = $178;
+ $$1387 = $66;$$1390 = $65;
}
while(1) {
- $183 = ((($$1398)) + 20|0);
- $184 = HEAP32[$183>>2]|0;
- $185 = ($184|0)==(0|0);
- if (!($185)) {
- $$1398 = $184;$$1402 = $183;
+ $70 = ((($$1387)) + 20|0);
+ $71 = HEAP32[$70>>2]|0;
+ $72 = ($71|0)==(0|0);
+ if (!($72)) {
+ $$1387 = $71;$$1390 = $70;
continue;
}
- $186 = ((($$1398)) + 16|0);
- $187 = HEAP32[$186>>2]|0;
- $188 = ($187|0)==(0|0);
- if ($188) {
+ $73 = ((($$1387)) + 16|0);
+ $74 = HEAP32[$73>>2]|0;
+ $75 = ($74|0)==(0|0);
+ if ($75) {
break;
} else {
- $$1398 = $187;$$1402 = $186;
+ $$1387 = $74;$$1390 = $73;
}
}
- $189 = HEAP32[(33160)>>2]|0;
- $190 = ($$1402>>>0)<($189>>>0);
- if ($190) {
+ $76 = ($$1390>>>0)<($8>>>0);
+ if ($76) {
_abort();
// unreachable;
} else {
- HEAP32[$$1402>>2] = 0;
- $$3400 = $$1398;
+ HEAP32[$$1390>>2] = 0;
+ $$3 = $$1387;
break;
}
} else {
- $167 = ((($10)) + 8|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = HEAP32[(33160)>>2]|0;
- $170 = ($168>>>0)<($169>>>0);
- if ($170) {
+ $55 = ((($21)) + 8|0);
+ $56 = HEAP32[$55>>2]|0;
+ $57 = ($56>>>0)<($8>>>0);
+ if ($57) {
_abort();
// unreachable;
}
- $171 = ((($168)) + 12|0);
- $172 = HEAP32[$171>>2]|0;
- $173 = ($172|0)==($10|0);
- if (!($173)) {
+ $58 = ((($56)) + 12|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = ($59|0)==($21|0);
+ if (!($60)) {
_abort();
// unreachable;
}
- $174 = ((($165)) + 8|0);
- $175 = HEAP32[$174>>2]|0;
- $176 = ($175|0)==($10|0);
- if ($176) {
- HEAP32[$171>>2] = $165;
- HEAP32[$174>>2] = $168;
- $$3400 = $165;
+ $61 = ((($53)) + 8|0);
+ $62 = HEAP32[$61>>2]|0;
+ $63 = ($62|0)==($21|0);
+ if ($63) {
+ HEAP32[$58>>2] = $53;
+ HEAP32[$61>>2] = $56;
+ $$3 = $53;
break;
} else {
_abort();
@@ -26716,298 +32774,600 @@ function _free($0) {
}
}
} while(0);
- $191 = ($163|0)==(0|0);
- if (!($191)) {
- $192 = ((($10)) + 28|0);
- $193 = HEAP32[$192>>2]|0;
- $194 = (33448 + ($193<<2)|0);
- $195 = HEAP32[$194>>2]|0;
- $196 = ($10|0)==($195|0);
+ $77 = ($51|0)==(0|0);
+ if ($77) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $78 = ((($21)) + 28|0);
+ $79 = HEAP32[$78>>2]|0;
+ $80 = (35764 + ($79<<2)|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ($21|0)==($81|0);
do {
- if ($196) {
- HEAP32[$194>>2] = $$3400;
- $cond422 = ($$3400|0)==(0|0);
- if ($cond422) {
- $197 = 1 << $193;
- $198 = $197 ^ -1;
- $199 = HEAP32[(33148)>>2]|0;
- $200 = $199 & $198;
- HEAP32[(33148)>>2] = $200;
- break L108;
+ if ($82) {
+ HEAP32[$80>>2] = $$3;
+ $cond421 = ($$3|0)==(0|0);
+ if ($cond421) {
+ $83 = 1 << $79;
+ $84 = $83 ^ -1;
+ $85 = HEAP32[(35464)>>2]|0;
+ $86 = $85 & $84;
+ HEAP32[(35464)>>2] = $86;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
}
} else {
- $201 = HEAP32[(33160)>>2]|0;
- $202 = ($163>>>0)<($201>>>0);
- if ($202) {
+ $87 = HEAP32[(35476)>>2]|0;
+ $88 = ($51>>>0)<($87>>>0);
+ if ($88) {
_abort();
// unreachable;
} else {
- $203 = ((($163)) + 16|0);
- $204 = HEAP32[$203>>2]|0;
- $not$ = ($204|0)!=($10|0);
- $$sink5 = $not$&1;
- $205 = (((($163)) + 16|0) + ($$sink5<<2)|0);
- HEAP32[$205>>2] = $$3400;
- $206 = ($$3400|0)==(0|0);
- if ($206) {
- break L108;
+ $89 = ((($51)) + 16|0);
+ $90 = HEAP32[$89>>2]|0;
+ $not$405 = ($90|0)!=($21|0);
+ $$sink3 = $not$405&1;
+ $91 = (((($51)) + 16|0) + ($$sink3<<2)|0);
+ HEAP32[$91>>2] = $$3;
+ $92 = ($$3|0)==(0|0);
+ if ($92) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
} else {
break;
}
}
}
} while(0);
- $207 = HEAP32[(33160)>>2]|0;
- $208 = ($$3400>>>0)<($207>>>0);
- if ($208) {
+ $93 = HEAP32[(35476)>>2]|0;
+ $94 = ($$3>>>0)<($93>>>0);
+ if ($94) {
_abort();
// unreachable;
}
- $209 = ((($$3400)) + 24|0);
- HEAP32[$209>>2] = $163;
- $210 = ((($10)) + 16|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
+ $95 = ((($$3)) + 24|0);
+ HEAP32[$95>>2] = $51;
+ $96 = ((($21)) + 16|0);
+ $97 = HEAP32[$96>>2]|0;
+ $98 = ($97|0)==(0|0);
do {
- if (!($212)) {
- $213 = ($211>>>0)<($207>>>0);
- if ($213) {
+ if (!($98)) {
+ $99 = ($97>>>0)<($93>>>0);
+ if ($99) {
_abort();
// unreachable;
} else {
- $214 = ((($$3400)) + 16|0);
- HEAP32[$214>>2] = $211;
- $215 = ((($211)) + 24|0);
- HEAP32[$215>>2] = $$3400;
+ $100 = ((($$3)) + 16|0);
+ HEAP32[$100>>2] = $97;
+ $101 = ((($97)) + 24|0);
+ HEAP32[$101>>2] = $$3;
break;
}
}
} while(0);
- $216 = ((($210)) + 4|0);
- $217 = HEAP32[$216>>2]|0;
- $218 = ($217|0)==(0|0);
- if (!($218)) {
- $219 = HEAP32[(33160)>>2]|0;
- $220 = ($217>>>0)<($219>>>0);
- if ($220) {
+ $102 = ((($96)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ($103|0)==(0|0);
+ if ($104) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $105 = HEAP32[(35476)>>2]|0;
+ $106 = ($103>>>0)<($105>>>0);
+ if ($106) {
_abort();
// unreachable;
} else {
- $221 = ((($$3400)) + 20|0);
- HEAP32[$221>>2] = $217;
- $222 = ((($217)) + 24|0);
- HEAP32[$222>>2] = $$3400;
+ $107 = ((($$3)) + 20|0);
+ HEAP32[$107>>2] = $103;
+ $108 = ((($103)) + 24|0);
+ HEAP32[$108>>2] = $$3;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
}
}
}
- } while(0);
- $223 = $135 | 1;
- $224 = ((($$1)) + 4|0);
- HEAP32[$224>>2] = $223;
- $225 = (($113) + ($135)|0);
- HEAP32[$225>>2] = $135;
- $226 = HEAP32[(33164)>>2]|0;
- $227 = ($$1|0)==($226|0);
- if ($227) {
- HEAP32[(33152)>>2] = $135;
- return;
} else {
- $$2 = $135;
+ $$1 = $2;$$1382 = $14;$118 = $2;
+ label = 55;
}
- } else {
- $228 = $115 & -2;
- HEAP32[$114>>2] = $228;
- $229 = $$1382 | 1;
- $230 = ((($$1)) + 4|0);
- HEAP32[$230>>2] = $229;
- $231 = (($113) + ($$1382)|0);
- HEAP32[$231>>2] = $$1382;
- $$2 = $$1382;
- }
- $232 = $$2 >>> 3;
- $233 = ($$2>>>0)<(256);
- if ($233) {
- $234 = $232 << 1;
- $235 = (33184 + ($234<<2)|0);
- $236 = HEAP32[8286]|0;
- $237 = 1 << $232;
- $238 = $236 & $237;
- $239 = ($238|0)==(0);
- if ($239) {
- $240 = $236 | $237;
- HEAP32[8286] = $240;
- $$pre = ((($235)) + 8|0);
- $$0403 = $235;$$pre$phiZ2D = $$pre;
- } else {
- $241 = ((($235)) + 8|0);
- $242 = HEAP32[$241>>2]|0;
- $243 = HEAP32[(33160)>>2]|0;
- $244 = ($242>>>0)<($243>>>0);
- if ($244) {
+ } while(0);
+ do {
+ if ((label|0) == 55) {
+ $117 = ($118>>>0)<($15>>>0);
+ if (!($117)) {
_abort();
// unreachable;
- } else {
- $$0403 = $242;$$pre$phiZ2D = $241;
}
- }
- HEAP32[$$pre$phiZ2D>>2] = $$1;
- $245 = ((($$0403)) + 12|0);
- HEAP32[$245>>2] = $$1;
- $246 = ((($$1)) + 8|0);
- HEAP32[$246>>2] = $$0403;
- $247 = ((($$1)) + 12|0);
- HEAP32[$247>>2] = $235;
- return;
- }
- $248 = $$2 >>> 8;
- $249 = ($248|0)==(0);
- if ($249) {
- $$0396 = 0;
- } else {
- $250 = ($$2>>>0)>(16777215);
- if ($250) {
- $$0396 = 31;
- } else {
- $251 = (($248) + 1048320)|0;
- $252 = $251 >>> 16;
- $253 = $252 & 8;
- $254 = $248 << $253;
- $255 = (($254) + 520192)|0;
- $256 = $255 >>> 16;
- $257 = $256 & 4;
- $258 = $257 | $253;
- $259 = $254 << $257;
- $260 = (($259) + 245760)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 2;
- $263 = $258 | $262;
- $264 = (14 - ($263))|0;
- $265 = $259 << $262;
- $266 = $265 >>> 15;
- $267 = (($264) + ($266))|0;
- $268 = $267 << 1;
- $269 = (($267) + 7)|0;
- $270 = $$2 >>> $269;
- $271 = $270 & 1;
- $272 = $271 | $268;
- $$0396 = $272;
- }
- }
- $273 = (33448 + ($$0396<<2)|0);
- $274 = ((($$1)) + 28|0);
- HEAP32[$274>>2] = $$0396;
- $275 = ((($$1)) + 16|0);
- $276 = ((($$1)) + 20|0);
- HEAP32[$276>>2] = 0;
- HEAP32[$275>>2] = 0;
- $277 = HEAP32[(33148)>>2]|0;
- $278 = 1 << $$0396;
- $279 = $277 & $278;
- $280 = ($279|0)==(0);
- do {
- if ($280) {
- $281 = $277 | $278;
- HEAP32[(33148)>>2] = $281;
- HEAP32[$273>>2] = $$1;
- $282 = ((($$1)) + 24|0);
- HEAP32[$282>>2] = $273;
- $283 = ((($$1)) + 12|0);
- HEAP32[$283>>2] = $$1;
- $284 = ((($$1)) + 8|0);
- HEAP32[$284>>2] = $$1;
- } else {
- $285 = HEAP32[$273>>2]|0;
- $286 = ($$0396|0)==(31);
- $287 = $$0396 >>> 1;
- $288 = (25 - ($287))|0;
- $289 = $286 ? 0 : $288;
- $290 = $$2 << $289;
- $$0383 = $290;$$0384 = $285;
- while(1) {
- $291 = ((($$0384)) + 4|0);
- $292 = HEAP32[$291>>2]|0;
- $293 = $292 & -8;
- $294 = ($293|0)==($$2|0);
- if ($294) {
- label = 124;
+ $119 = ((($15)) + 4|0);
+ $120 = HEAP32[$119>>2]|0;
+ $121 = $120 & 1;
+ $122 = ($121|0)==(0);
+ if ($122) {
+ _abort();
+ // unreachable;
+ }
+ $123 = $120 & 2;
+ $124 = ($123|0)==(0);
+ if ($124) {
+ $125 = HEAP32[(35484)>>2]|0;
+ $126 = ($15|0)==($125|0);
+ $127 = HEAP32[(35480)>>2]|0;
+ if ($126) {
+ $128 = HEAP32[(35472)>>2]|0;
+ $129 = (($128) + ($$1382))|0;
+ HEAP32[(35472)>>2] = $129;
+ HEAP32[(35484)>>2] = $$1;
+ $130 = $129 | 1;
+ $131 = ((($$1)) + 4|0);
+ HEAP32[$131>>2] = $130;
+ $132 = ($$1|0)==($127|0);
+ if (!($132)) {
+ break;
+ }
+ HEAP32[(35480)>>2] = 0;
+ HEAP32[(35468)>>2] = 0;
break;
}
- $295 = $$0383 >>> 31;
- $296 = (((($$0384)) + 16|0) + ($295<<2)|0);
- $297 = $$0383 << 1;
- $298 = HEAP32[$296>>2]|0;
- $299 = ($298|0)==(0|0);
- if ($299) {
- label = 121;
+ $133 = ($15|0)==($127|0);
+ if ($133) {
+ $134 = HEAP32[(35468)>>2]|0;
+ $135 = (($134) + ($$1382))|0;
+ HEAP32[(35468)>>2] = $135;
+ HEAP32[(35480)>>2] = $118;
+ $136 = $135 | 1;
+ $137 = ((($$1)) + 4|0);
+ HEAP32[$137>>2] = $136;
+ $138 = (($118) + ($135)|0);
+ HEAP32[$138>>2] = $135;
+ break;
+ }
+ $139 = $120 & -8;
+ $140 = (($139) + ($$1382))|0;
+ $141 = $120 >>> 3;
+ $142 = ($120>>>0)<(256);
+ L106: do {
+ if ($142) {
+ $143 = ((($15)) + 8|0);
+ $144 = HEAP32[$143>>2]|0;
+ $145 = ((($15)) + 12|0);
+ $146 = HEAP32[$145>>2]|0;
+ $147 = $141 << 1;
+ $148 = (35500 + ($147<<2)|0);
+ $149 = ($144|0)==($148|0);
+ if (!($149)) {
+ $150 = HEAP32[(35476)>>2]|0;
+ $151 = ($144>>>0)<($150>>>0);
+ if ($151) {
+ _abort();
+ // unreachable;
+ }
+ $152 = ((($144)) + 12|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = ($153|0)==($15|0);
+ if (!($154)) {
+ _abort();
+ // unreachable;
+ }
+ }
+ $155 = ($146|0)==($144|0);
+ if ($155) {
+ $156 = 1 << $141;
+ $157 = $156 ^ -1;
+ $158 = HEAP32[8865]|0;
+ $159 = $158 & $157;
+ HEAP32[8865] = $159;
+ break;
+ }
+ $160 = ($146|0)==($148|0);
+ if ($160) {
+ $$pre442 = ((($146)) + 8|0);
+ $$pre$phi443Z2D = $$pre442;
+ } else {
+ $161 = HEAP32[(35476)>>2]|0;
+ $162 = ($146>>>0)<($161>>>0);
+ if ($162) {
+ _abort();
+ // unreachable;
+ }
+ $163 = ((($146)) + 8|0);
+ $164 = HEAP32[$163>>2]|0;
+ $165 = ($164|0)==($15|0);
+ if ($165) {
+ $$pre$phi443Z2D = $163;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ $166 = ((($144)) + 12|0);
+ HEAP32[$166>>2] = $146;
+ HEAP32[$$pre$phi443Z2D>>2] = $144;
+ } else {
+ $167 = ((($15)) + 24|0);
+ $168 = HEAP32[$167>>2]|0;
+ $169 = ((($15)) + 12|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==($15|0);
+ do {
+ if ($171) {
+ $182 = ((($15)) + 16|0);
+ $183 = ((($182)) + 4|0);
+ $184 = HEAP32[$183>>2]|0;
+ $185 = ($184|0)==(0|0);
+ if ($185) {
+ $186 = HEAP32[$182>>2]|0;
+ $187 = ($186|0)==(0|0);
+ if ($187) {
+ $$3400 = 0;
+ break;
+ } else {
+ $$1398 = $186;$$1402 = $182;
+ }
+ } else {
+ $$1398 = $184;$$1402 = $183;
+ }
+ while(1) {
+ $188 = ((($$1398)) + 20|0);
+ $189 = HEAP32[$188>>2]|0;
+ $190 = ($189|0)==(0|0);
+ if (!($190)) {
+ $$1398 = $189;$$1402 = $188;
+ continue;
+ }
+ $191 = ((($$1398)) + 16|0);
+ $192 = HEAP32[$191>>2]|0;
+ $193 = ($192|0)==(0|0);
+ if ($193) {
+ break;
+ } else {
+ $$1398 = $192;$$1402 = $191;
+ }
+ }
+ $194 = HEAP32[(35476)>>2]|0;
+ $195 = ($$1402>>>0)<($194>>>0);
+ if ($195) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1402>>2] = 0;
+ $$3400 = $$1398;
+ break;
+ }
+ } else {
+ $172 = ((($15)) + 8|0);
+ $173 = HEAP32[$172>>2]|0;
+ $174 = HEAP32[(35476)>>2]|0;
+ $175 = ($173>>>0)<($174>>>0);
+ if ($175) {
+ _abort();
+ // unreachable;
+ }
+ $176 = ((($173)) + 12|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ($177|0)==($15|0);
+ if (!($178)) {
+ _abort();
+ // unreachable;
+ }
+ $179 = ((($170)) + 8|0);
+ $180 = HEAP32[$179>>2]|0;
+ $181 = ($180|0)==($15|0);
+ if ($181) {
+ HEAP32[$176>>2] = $170;
+ HEAP32[$179>>2] = $173;
+ $$3400 = $170;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $196 = ($168|0)==(0|0);
+ if (!($196)) {
+ $197 = ((($15)) + 28|0);
+ $198 = HEAP32[$197>>2]|0;
+ $199 = (35764 + ($198<<2)|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($15|0)==($200|0);
+ do {
+ if ($201) {
+ HEAP32[$199>>2] = $$3400;
+ $cond422 = ($$3400|0)==(0|0);
+ if ($cond422) {
+ $202 = 1 << $198;
+ $203 = $202 ^ -1;
+ $204 = HEAP32[(35464)>>2]|0;
+ $205 = $204 & $203;
+ HEAP32[(35464)>>2] = $205;
+ break L106;
+ }
+ } else {
+ $206 = HEAP32[(35476)>>2]|0;
+ $207 = ($168>>>0)<($206>>>0);
+ if ($207) {
+ _abort();
+ // unreachable;
+ } else {
+ $208 = ((($168)) + 16|0);
+ $209 = HEAP32[$208>>2]|0;
+ $not$ = ($209|0)!=($15|0);
+ $$sink5 = $not$&1;
+ $210 = (((($168)) + 16|0) + ($$sink5<<2)|0);
+ HEAP32[$210>>2] = $$3400;
+ $211 = ($$3400|0)==(0|0);
+ if ($211) {
+ break L106;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $212 = HEAP32[(35476)>>2]|0;
+ $213 = ($$3400>>>0)<($212>>>0);
+ if ($213) {
+ _abort();
+ // unreachable;
+ }
+ $214 = ((($$3400)) + 24|0);
+ HEAP32[$214>>2] = $168;
+ $215 = ((($15)) + 16|0);
+ $216 = HEAP32[$215>>2]|0;
+ $217 = ($216|0)==(0|0);
+ do {
+ if (!($217)) {
+ $218 = ($216>>>0)<($212>>>0);
+ if ($218) {
+ _abort();
+ // unreachable;
+ } else {
+ $219 = ((($$3400)) + 16|0);
+ HEAP32[$219>>2] = $216;
+ $220 = ((($216)) + 24|0);
+ HEAP32[$220>>2] = $$3400;
+ break;
+ }
+ }
+ } while(0);
+ $221 = ((($215)) + 4|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
+ if (!($223)) {
+ $224 = HEAP32[(35476)>>2]|0;
+ $225 = ($222>>>0)<($224>>>0);
+ if ($225) {
+ _abort();
+ // unreachable;
+ } else {
+ $226 = ((($$3400)) + 20|0);
+ HEAP32[$226>>2] = $222;
+ $227 = ((($222)) + 24|0);
+ HEAP32[$227>>2] = $$3400;
+ break;
+ }
+ }
+ }
+ }
+ } while(0);
+ $228 = $140 | 1;
+ $229 = ((($$1)) + 4|0);
+ HEAP32[$229>>2] = $228;
+ $230 = (($118) + ($140)|0);
+ HEAP32[$230>>2] = $140;
+ $231 = HEAP32[(35480)>>2]|0;
+ $232 = ($$1|0)==($231|0);
+ if ($232) {
+ HEAP32[(35468)>>2] = $140;
break;
} else {
- $$0383 = $297;$$0384 = $298;
+ $$2 = $140;
}
- }
- if ((label|0) == 121) {
- $300 = HEAP32[(33160)>>2]|0;
- $301 = ($296>>>0)<($300>>>0);
- if ($301) {
- _abort();
- // unreachable;
+ } else {
+ $233 = $120 & -2;
+ HEAP32[$119>>2] = $233;
+ $234 = $$1382 | 1;
+ $235 = ((($$1)) + 4|0);
+ HEAP32[$235>>2] = $234;
+ $236 = (($118) + ($$1382)|0);
+ HEAP32[$236>>2] = $$1382;
+ $$2 = $$1382;
+ }
+ $237 = $$2 >>> 3;
+ $238 = ($$2>>>0)<(256);
+ if ($238) {
+ $239 = $237 << 1;
+ $240 = (35500 + ($239<<2)|0);
+ $241 = HEAP32[8865]|0;
+ $242 = 1 << $237;
+ $243 = $241 & $242;
+ $244 = ($243|0)==(0);
+ if ($244) {
+ $245 = $241 | $242;
+ HEAP32[8865] = $245;
+ $$pre = ((($240)) + 8|0);
+ $$0403 = $240;$$pre$phiZ2D = $$pre;
} else {
- HEAP32[$296>>2] = $$1;
- $302 = ((($$1)) + 24|0);
- HEAP32[$302>>2] = $$0384;
- $303 = ((($$1)) + 12|0);
- HEAP32[$303>>2] = $$1;
- $304 = ((($$1)) + 8|0);
- HEAP32[$304>>2] = $$1;
- break;
+ $246 = ((($240)) + 8|0);
+ $247 = HEAP32[$246>>2]|0;
+ $248 = HEAP32[(35476)>>2]|0;
+ $249 = ($247>>>0)<($248>>>0);
+ if ($249) {
+ _abort();
+ // unreachable;
+ } else {
+ $$0403 = $247;$$pre$phiZ2D = $246;
+ }
}
+ HEAP32[$$pre$phiZ2D>>2] = $$1;
+ $250 = ((($$0403)) + 12|0);
+ HEAP32[$250>>2] = $$1;
+ $251 = ((($$1)) + 8|0);
+ HEAP32[$251>>2] = $$0403;
+ $252 = ((($$1)) + 12|0);
+ HEAP32[$252>>2] = $240;
+ break;
}
- else if ((label|0) == 124) {
- $305 = ((($$0384)) + 8|0);
- $306 = HEAP32[$305>>2]|0;
- $307 = HEAP32[(33160)>>2]|0;
- $308 = ($306>>>0)>=($307>>>0);
- $not$437 = ($$0384>>>0)>=($307>>>0);
- $309 = $308 & $not$437;
- if ($309) {
- $310 = ((($306)) + 12|0);
- HEAP32[$310>>2] = $$1;
- HEAP32[$305>>2] = $$1;
- $311 = ((($$1)) + 8|0);
- HEAP32[$311>>2] = $306;
- $312 = ((($$1)) + 12|0);
- HEAP32[$312>>2] = $$0384;
- $313 = ((($$1)) + 24|0);
- HEAP32[$313>>2] = 0;
- break;
+ $253 = $$2 >>> 8;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $$0396 = 0;
+ } else {
+ $255 = ($$2>>>0)>(16777215);
+ if ($255) {
+ $$0396 = 31;
} else {
- _abort();
- // unreachable;
+ $256 = (($253) + 1048320)|0;
+ $257 = $256 >>> 16;
+ $258 = $257 & 8;
+ $259 = $253 << $258;
+ $260 = (($259) + 520192)|0;
+ $261 = $260 >>> 16;
+ $262 = $261 & 4;
+ $263 = $262 | $258;
+ $264 = $259 << $262;
+ $265 = (($264) + 245760)|0;
+ $266 = $265 >>> 16;
+ $267 = $266 & 2;
+ $268 = $263 | $267;
+ $269 = (14 - ($268))|0;
+ $270 = $264 << $267;
+ $271 = $270 >>> 15;
+ $272 = (($269) + ($271))|0;
+ $273 = $272 << 1;
+ $274 = (($272) + 7)|0;
+ $275 = $$2 >>> $274;
+ $276 = $275 & 1;
+ $277 = $276 | $273;
+ $$0396 = $277;
+ }
+ }
+ $278 = (35764 + ($$0396<<2)|0);
+ $279 = ((($$1)) + 28|0);
+ HEAP32[$279>>2] = $$0396;
+ $280 = ((($$1)) + 16|0);
+ $281 = ((($$1)) + 20|0);
+ HEAP32[$281>>2] = 0;
+ HEAP32[$280>>2] = 0;
+ $282 = HEAP32[(35464)>>2]|0;
+ $283 = 1 << $$0396;
+ $284 = $282 & $283;
+ $285 = ($284|0)==(0);
+ do {
+ if ($285) {
+ $286 = $282 | $283;
+ HEAP32[(35464)>>2] = $286;
+ HEAP32[$278>>2] = $$1;
+ $287 = ((($$1)) + 24|0);
+ HEAP32[$287>>2] = $278;
+ $288 = ((($$1)) + 12|0);
+ HEAP32[$288>>2] = $$1;
+ $289 = ((($$1)) + 8|0);
+ HEAP32[$289>>2] = $$1;
+ } else {
+ $290 = HEAP32[$278>>2]|0;
+ $291 = ($$0396|0)==(31);
+ $292 = $$0396 >>> 1;
+ $293 = (25 - ($292))|0;
+ $294 = $291 ? 0 : $293;
+ $295 = $$2 << $294;
+ $$0383 = $295;$$0384 = $290;
+ while(1) {
+ $296 = ((($$0384)) + 4|0);
+ $297 = HEAP32[$296>>2]|0;
+ $298 = $297 & -8;
+ $299 = ($298|0)==($$2|0);
+ if ($299) {
+ label = 126;
+ break;
+ }
+ $300 = $$0383 >>> 31;
+ $301 = (((($$0384)) + 16|0) + ($300<<2)|0);
+ $302 = $$0383 << 1;
+ $303 = HEAP32[$301>>2]|0;
+ $304 = ($303|0)==(0|0);
+ if ($304) {
+ label = 123;
+ break;
+ } else {
+ $$0383 = $302;$$0384 = $303;
+ }
+ }
+ if ((label|0) == 123) {
+ $305 = HEAP32[(35476)>>2]|0;
+ $306 = ($301>>>0)<($305>>>0);
+ if ($306) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$301>>2] = $$1;
+ $307 = ((($$1)) + 24|0);
+ HEAP32[$307>>2] = $$0384;
+ $308 = ((($$1)) + 12|0);
+ HEAP32[$308>>2] = $$1;
+ $309 = ((($$1)) + 8|0);
+ HEAP32[$309>>2] = $$1;
+ break;
+ }
+ }
+ else if ((label|0) == 126) {
+ $310 = ((($$0384)) + 8|0);
+ $311 = HEAP32[$310>>2]|0;
+ $312 = HEAP32[(35476)>>2]|0;
+ $313 = ($311>>>0)>=($312>>>0);
+ $not$437 = ($$0384>>>0)>=($312>>>0);
+ $314 = $313 & $not$437;
+ if ($314) {
+ $315 = ((($311)) + 12|0);
+ HEAP32[$315>>2] = $$1;
+ HEAP32[$310>>2] = $$1;
+ $316 = ((($$1)) + 8|0);
+ HEAP32[$316>>2] = $311;
+ $317 = ((($$1)) + 12|0);
+ HEAP32[$317>>2] = $$0384;
+ $318 = ((($$1)) + 24|0);
+ HEAP32[$318>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ }
+ } while(0);
+ $319 = HEAP32[(35492)>>2]|0;
+ $320 = (($319) + -1)|0;
+ HEAP32[(35492)>>2] = $320;
+ $321 = ($320|0)==(0);
+ if ($321) {
+ $$0212$in$i = (35944);
+ while(1) {
+ $$0212$i = HEAP32[$$0212$in$i>>2]|0;
+ $322 = ($$0212$i|0)==(0|0);
+ $323 = ((($$0212$i)) + 8|0);
+ if ($322) {
+ break;
+ } else {
+ $$0212$in$i = $323;
+ }
}
+ HEAP32[(35492)>>2] = -1;
}
}
} while(0);
- $314 = HEAP32[(33176)>>2]|0;
- $315 = (($314) + -1)|0;
- HEAP32[(33176)>>2] = $315;
- $316 = ($315|0)==(0);
- if ($316) {
- $$0212$in$i = (33600);
- } else {
+ $324 = HEAP32[(35904)>>2]|0;
+ $325 = $324 & 2;
+ $326 = ($325|0)==(0);
+ if ($326) {
return;
}
- while(1) {
- $$0212$i = HEAP32[$$0212$in$i>>2]|0;
- $317 = ($$0212$i|0)==(0|0);
- $318 = ((($$0212$i)) + 8|0);
- if ($317) {
- break;
- } else {
- $$0212$in$i = $318;
- }
- }
- HEAP32[(33176)>>2] = -1;
+ (___pthread_mutex_unlock((35908))|0);
return;
}
function runPostSets() {
@@ -27441,6 +33801,9 @@ function _roundf(f) {
f = +f;
return f >= +0 ? +Math_floor(f + +0.5) : +Math_ceil(f - +0.5); // TODO: use fround?
}
+function _emscripten_set_current_thread_status(newStatus) {
+ newStatus = newStatus|0;
+}
function _bitshift64Lshr(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
@@ -27452,6 +33815,10 @@ function _bitshift64Lshr(low, high, bits) {
tempRet0 = 0;
return (high >>> (bits - 32))|0;
}
+function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) {
+ expectedStatus = expectedStatus|0;
+ newStatus = newStatus|0;
+}
function _sbrk(increment) {
increment = increment|0;
var oldDynamicTop = 0;
@@ -27459,25 +33826,24 @@ function _sbrk(increment) {
var newDynamicTop = 0;
var totalMemory = 0;
increment = ((increment + 15) & -16)|0;
- oldDynamicTop = HEAP32[DYNAMICTOP_PTR>>2]|0;
- newDynamicTop = oldDynamicTop + increment | 0;
-
- if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
- | (newDynamicTop|0) < 0) { // Also underflow, sbrk() should be able to be used to subtract.
- abortOnCannotGrowMemory()|0;
- ___setErrNo(12);
- return -1;
- }
-
- HEAP32[DYNAMICTOP_PTR>>2] = newDynamicTop;
totalMemory = getTotalMemory()|0;
- if ((newDynamicTop|0) > (totalMemory|0)) {
- if ((enlargeMemory()|0) == 0) {
- ___setErrNo(12);
- HEAP32[DYNAMICTOP_PTR>>2] = oldDynamicTop;
- return -1;
+
+ // Perform a compare-and-swap loop to update the new dynamic top value. This is because
+ // this function can becalled simultaneously in multiple threads.
+ do {
+ oldDynamicTop = Atomics_load(HEAP32, DYNAMICTOP_PTR>>2)|0;
+ newDynamicTop = oldDynamicTop + increment | 0;
+ // Asking to increase dynamic top to a too high value? In pthreads builds we cannot
+ // enlarge memory, so this needs to fail.
+ if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
+ | (newDynamicTop|0) < 0 // Also underflow, sbrk() should be able to be used to subtract.
+ | (newDynamicTop|0) > (totalMemory|0)) {
+ abortOnCannotGrowMemory()|0;
}
- }
+ // Attempt to update the dynamic top to new value. Another thread may have beat this thread to the update,
+ // in which case we will need to start over by iterating the loop body again.
+ oldDynamicTopOnChange = Atomics_compareExchange(HEAP32, DYNAMICTOP_PTR>>2, oldDynamicTop|0, newDynamicTop|0)|0;
+ } while((oldDynamicTopOnChange|0) != (oldDynamicTop|0));
return oldDynamicTop|0;
}
function _bitshift64Shl(low, high, bits) {
@@ -28265,25 +34631,43 @@ var FUNCTION_TABLE_i = [b17,_emscripten_glCreateProgram__wrapper,_emscripten_glG
var FUNCTION_TABLE_vdddddd = [b18,_emscripten_glFrustum__wrapper];
var FUNCTION_TABLE_vdddd = [b19,_emscripten_glRotatef__wrapper,_emscripten_glClearColor__wrapper,_emscripten_glBlendColor__wrapper];
var FUNCTION_TABLE_vdd = [b20,_emscripten_glDepthRange__wrapper,_emscripten_glDepthRangef__wrapper,_emscripten_glPolygonOffset__wrapper];
-var FUNCTION_TABLE_v = [b21,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21,b21];
+var FUNCTION_TABLE_v = [b21,_UpdateDrawFrame,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21];
var FUNCTION_TABLE_viid = [b22,_emscripten_glTexParameterf__wrapper];
var FUNCTION_TABLE_viiii = [b23,_MouseButtonCallback,_emscripten_glBufferData__wrapper,_emscripten_glBufferSubData__wrapper,_emscripten_glUniform3i__wrapper,_emscripten_glUniformMatrix2fv__wrapper,_emscripten_glUniformMatrix3fv__wrapper,_emscripten_glUniformMatrix4fv__wrapper,_emscripten_glGetAttachedShaders__wrapper,_emscripten_glShaderSource__wrapper,_emscripten_glGetShaderSource__wrapper,_emscripten_glGetShaderInfoLog__wrapper,_emscripten_glGetShaderPrecisionFormat__wrapper,_emscripten_glGetProgramInfoLog__wrapper,_emscripten_glFramebufferRenderbuffer__wrapper,_emscripten_glGetFramebufferAttachmentParameteriv__wrapper,_emscripten_glGetInfoLogARB__wrapper,_emscripten_glVertexPointer__wrapper,_emscripten_glTexCoordPointer__wrapper,_emscripten_glColorPointer__wrapper,_emscripten_glDrawElements__wrapper,_emscripten_glDrawArraysInstanced__wrapper,_emscripten_glViewport__wrapper,_emscripten_glScissor__wrapper,_emscripten_glColorMask__wrapper,_emscripten_glRenderbufferStorage__wrapper,_emscripten_glBlendFuncSeparate__wrapper,_emscripten_glStencilFuncSeparate__wrapper,_emscripten_glStencilOpSeparate__wrapper,b23,b23,b23];
- return { _roundf: _roundf, _main: _main, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _fflush: _fflush, _memset: _memset, _sbrk: _sbrk, _memcpy: _memcpy, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, ___uremdi3: ___uremdi3, _i64Subtract: _i64Subtract, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_get_global_libc: _emscripten_get_global_libc, _emscripten_GetProcAddress: _emscripten_GetProcAddress, ___udivdi3: ___udivdi3, ___errno_location: ___errno_location, ___muldsi3: ___muldsi3, _free: _free, _memmove: _memmove, _strstr: _strstr, _malloc: _malloc, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
+ return { _emscripten_sync_run_in_main_thread_3: _emscripten_sync_run_in_main_thread_3, _roundf: _roundf, _bitshift64Shl: _bitshift64Shl, _emscripten_atomic_load_f32: _emscripten_atomic_load_f32, ___uremdi3: ___uremdi3, ___udivdi3: ___udivdi3, _emscripten_atomic_xor_u64: _emscripten_atomic_xor_u64, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _emscripten_atomic_and_u64: _emscripten_atomic_and_u64, _emscripten_sync_run_in_main_thread: _emscripten_sync_run_in_main_thread, _emscripten_sync_run_in_main_thread_4: _emscripten_sync_run_in_main_thread_4, _emscripten_sync_run_in_main_thread_5: _emscripten_sync_run_in_main_thread_5, _emscripten_sync_run_in_main_thread_6: _emscripten_sync_run_in_main_thread_6, _emscripten_sync_run_in_main_thread_7: _emscripten_sync_run_in_main_thread_7, _emscripten_sync_run_in_main_thread_0: _emscripten_sync_run_in_main_thread_0, _emscripten_sync_run_in_main_thread_1: _emscripten_sync_run_in_main_thread_1, _emscripten_sync_run_in_main_thread_2: _emscripten_sync_run_in_main_thread_2, __emscripten_atomic_fetch_and_sub_u64: __emscripten_atomic_fetch_and_sub_u64, _emscripten_atomic_exchange_u32: _emscripten_atomic_exchange_u32, _fflush: _fflush, _emscripten_set_current_thread_status: _emscripten_set_current_thread_status, _emscripten_atomic_cas_u64: _emscripten_atomic_cas_u64, _memset: _memset, _emscripten_atomic_sub_u64: _emscripten_atomic_sub_u64, _emscripten_sync_run_in_main_thread_xprintf_varargs: _emscripten_sync_run_in_main_thread_xprintf_varargs, _i64Subtract: _i64Subtract, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, __emscripten_atomic_fetch_and_and_u64: __emscripten_atomic_fetch_and_and_u64, _emscripten_atomic_add_u64: _emscripten_atomic_add_u64, _emscripten_atomic_store_f64: _emscripten_atomic_store_f64, ___muldsi3: ___muldsi3, __emscripten_atomic_fetch_and_xor_u64: __emscripten_atomic_fetch_and_xor_u64, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_atomic_store_u64: _emscripten_atomic_store_u64, _emscripten_atomic_load_f64: _emscripten_atomic_load_f64, _emscripten_get_global_libc: _emscripten_get_global_libc, __emscripten_atomic_fetch_and_add_u64: __emscripten_atomic_fetch_and_add_u64, __emscripten_atomic_fetch_and_or_u64: __emscripten_atomic_fetch_and_or_u64, _emscripten_GetProcAddress: _emscripten_GetProcAddress, _emscripten_async_run_in_main_thread: _emscripten_async_run_in_main_thread, ___errno_location: ___errno_location, _main: _main, _emscripten_main_thread_process_queued_calls: _emscripten_main_thread_process_queued_calls, _emscripten_atomic_load_u64: _emscripten_atomic_load_u64, _free: _free, _emscripten_atomic_store_f32: _emscripten_atomic_store_f32, _emscripten_atomic_exchange_u64: _emscripten_atomic_exchange_u64, _memmove: _memmove, ___pthread_tsd_run_dtors: ___pthread_tsd_run_dtors, _malloc: _malloc, _memcpy: _memcpy, _emscripten_conditional_set_current_thread_status: _emscripten_conditional_set_current_thread_status, _sbrk: _sbrk, _emscripten_atomic_or_u64: _emscripten_atomic_or_u64, _strstr: _strstr, ___emscripten_pthread_data_constructor: ___emscripten_pthread_data_constructor, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
+var real___emscripten_atomic_fetch_and_xor_u64 = asm["__emscripten_atomic_fetch_and_xor_u64"]; asm["__emscripten_atomic_fetch_and_xor_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_xor_u64.apply(null, arguments);
+};
+
var real__roundf = asm["_roundf"]; asm["_roundf"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__roundf.apply(null, arguments);
};
-var real__main = asm["_main"]; asm["_main"] = function() {
+var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__main.apply(null, arguments);
+return real__bitshift64Shl.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f32 = asm["_emscripten_atomic_load_f32"]; asm["_emscripten_atomic_load_f32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f32.apply(null, arguments);
+};
+
+var real____emscripten_pthread_data_constructor = asm["___emscripten_pthread_data_constructor"]; asm["___emscripten_pthread_data_constructor"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____emscripten_pthread_data_constructor.apply(null, arguments);
};
var real_stackSave = asm["stackSave"]; asm["stackSave"] = function() {
@@ -28292,16 +34676,22 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackSave.apply(null, arguments);
};
-var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
+var real__emscripten_atomic_xor_u64 = asm["_emscripten_atomic_xor_u64"]; asm["_emscripten_atomic_xor_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_getTempRet0.apply(null, arguments);
+return real__emscripten_atomic_xor_u64.apply(null, arguments);
};
-var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
+var real__emscripten_atomic_load_u64 = asm["_emscripten_atomic_load_u64"]; asm["_emscripten_atomic_load_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_setThrew.apply(null, arguments);
+return real__emscripten_atomic_load_u64.apply(null, arguments);
+};
+
+var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivdi3.apply(null, arguments);
};
var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() {
@@ -28310,10 +34700,76 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__bitshift64Lshr.apply(null, arguments);
};
-var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
+var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__bitshift64Shl.apply(null, arguments);
+return real_getTempRet0.apply(null, arguments);
+};
+
+var real__emscripten_atomic_and_u64 = asm["_emscripten_atomic_and_u64"]; asm["_emscripten_atomic_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread = asm["_emscripten_sync_run_in_main_thread"]; asm["_emscripten_sync_run_in_main_thread"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_4 = asm["_emscripten_sync_run_in_main_thread_4"]; asm["_emscripten_sync_run_in_main_thread_4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_4.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_5 = asm["_emscripten_sync_run_in_main_thread_5"]; asm["_emscripten_sync_run_in_main_thread_5"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_5.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_6 = asm["_emscripten_sync_run_in_main_thread_6"]; asm["_emscripten_sync_run_in_main_thread_6"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_6.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_7 = asm["_emscripten_sync_run_in_main_thread_7"]; asm["_emscripten_sync_run_in_main_thread_7"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_7.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_0 = asm["_emscripten_sync_run_in_main_thread_0"]; asm["_emscripten_sync_run_in_main_thread_0"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_0.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_1 = asm["_emscripten_sync_run_in_main_thread_1"]; asm["_emscripten_sync_run_in_main_thread_1"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_1.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_2 = asm["_emscripten_sync_run_in_main_thread_2"]; asm["_emscripten_sync_run_in_main_thread_2"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_2.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_sub_u64 = asm["__emscripten_atomic_fetch_and_sub_u64"]; asm["__emscripten_atomic_fetch_and_sub_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_sub_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_exchange_u32 = asm["_emscripten_atomic_exchange_u32"]; asm["_emscripten_atomic_exchange_u32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_exchange_u32.apply(null, arguments);
};
var real__fflush = asm["_fflush"]; asm["_fflush"] = function() {
@@ -28322,22 +34778,46 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__fflush.apply(null, arguments);
};
+var real__emscripten_set_current_thread_status = asm["_emscripten_set_current_thread_status"]; asm["_emscripten_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_set_current_thread_status.apply(null, arguments);
+};
+
+var real__emscripten_atomic_cas_u64 = asm["_emscripten_atomic_cas_u64"]; asm["_emscripten_atomic_cas_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_cas_u64.apply(null, arguments);
+};
+
var real__llvm_cttz_i32 = asm["_llvm_cttz_i32"]; asm["_llvm_cttz_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__llvm_cttz_i32.apply(null, arguments);
};
-var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+var real__emscripten_atomic_sub_u64 = asm["_emscripten_atomic_sub_u64"]; asm["_emscripten_atomic_sub_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__sbrk.apply(null, arguments);
+return real__emscripten_atomic_sub_u64.apply(null, arguments);
};
-var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
+var real__main = asm["_main"]; asm["_main"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__llvm_bswap_i32.apply(null, arguments);
+return real__main.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_xprintf_varargs = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"]; asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_xprintf_varargs.apply(null, arguments);
+};
+
+var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____errno_location.apply(null, arguments);
};
var real____muldi3 = asm["___muldi3"]; asm["___muldi3"] = function() {
@@ -28346,6 +34826,18 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldi3.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_and_u64 = asm["__emscripten_atomic_fetch_and_and_u64"]; asm["__emscripten_atomic_fetch_and_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_3 = asm["_emscripten_sync_run_in_main_thread_3"]; asm["_emscripten_sync_run_in_main_thread_3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_3.apply(null, arguments);
+};
+
var real____uremdi3 = asm["___uremdi3"]; asm["___uremdi3"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28364,12 +34856,6 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Subtract.apply(null, arguments);
};
-var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
-assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
-assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivmoddi4.apply(null, arguments);
-};
-
var real_setTempRet0 = asm["setTempRet0"]; asm["setTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28382,28 +34868,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Add.apply(null, arguments);
};
+var real__emscripten_atomic_store_u64 = asm["_emscripten_atomic_store_u64"]; asm["_emscripten_atomic_store_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f64 = asm["_emscripten_atomic_load_f64"]; asm["_emscripten_atomic_load_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f64.apply(null, arguments);
+};
+
var real__emscripten_get_global_libc = asm["_emscripten_get_global_libc"]; asm["_emscripten_get_global_libc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_get_global_libc.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_add_u64 = asm["__emscripten_atomic_fetch_and_add_u64"]; asm["__emscripten_atomic_fetch_and_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_add_u64.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_or_u64 = asm["__emscripten_atomic_fetch_and_or_u64"]; asm["__emscripten_atomic_fetch_and_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_or_u64.apply(null, arguments);
+};
+
var real__emscripten_GetProcAddress = asm["_emscripten_GetProcAddress"]; asm["_emscripten_GetProcAddress"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_GetProcAddress.apply(null, arguments);
};
-var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+var real__emscripten_async_run_in_main_thread = asm["_emscripten_async_run_in_main_thread"]; asm["_emscripten_async_run_in_main_thread"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivdi3.apply(null, arguments);
+return real__emscripten_async_run_in_main_thread.apply(null, arguments);
};
-var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____errno_location.apply(null, arguments);
+return real__llvm_bswap_i32.apply(null, arguments);
};
var real____muldsi3 = asm["___muldsi3"]; asm["___muldsi3"] = function() {
@@ -28412,28 +34922,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldsi3.apply(null, arguments);
};
+var real__emscripten_main_thread_process_queued_calls = asm["_emscripten_main_thread_process_queued_calls"]; asm["_emscripten_main_thread_process_queued_calls"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_main_thread_process_queued_calls.apply(null, arguments);
+};
+
+var real__emscripten_atomic_add_u64 = asm["_emscripten_atomic_add_u64"]; asm["_emscripten_atomic_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_add_u64.apply(null, arguments);
+};
+
var real__free = asm["_free"]; asm["_free"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__free.apply(null, arguments);
};
-var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+var real__emscripten_atomic_store_f32 = asm["_emscripten_atomic_store_f32"]; asm["_emscripten_atomic_store_f32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_establishStackSpace.apply(null, arguments);
+return real__emscripten_atomic_store_f32.apply(null, arguments);
};
-var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__memmove.apply(null, arguments);
+return real_setThrew.apply(null, arguments);
};
-var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+var real__emscripten_atomic_exchange_u64 = asm["_emscripten_atomic_exchange_u64"]; asm["_emscripten_atomic_exchange_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__strstr.apply(null, arguments);
+return real__emscripten_atomic_exchange_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_store_f64 = asm["_emscripten_atomic_store_f64"]; asm["_emscripten_atomic_store_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_f64.apply(null, arguments);
+};
+
+var real____pthread_tsd_run_dtors = asm["___pthread_tsd_run_dtors"]; asm["___pthread_tsd_run_dtors"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____pthread_tsd_run_dtors.apply(null, arguments);
};
var real_stackRestore = asm["stackRestore"]; asm["stackRestore"] = function() {
@@ -28442,43 +34976,120 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackRestore.apply(null, arguments);
};
+var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivmoddi4.apply(null, arguments);
+};
+
var real__malloc = asm["_malloc"]; asm["_malloc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__malloc.apply(null, arguments);
};
+
+var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real_establishStackSpace.apply(null, arguments);
+};
+
+var real__emscripten_conditional_set_current_thread_status = asm["_emscripten_conditional_set_current_thread_status"]; asm["_emscripten_conditional_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_conditional_set_current_thread_status.apply(null, arguments);
+};
+
+var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__sbrk.apply(null, arguments);
+};
+
+var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__memmove.apply(null, arguments);
+};
+
+var real__emscripten_atomic_or_u64 = asm["_emscripten_atomic_or_u64"]; asm["_emscripten_atomic_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_or_u64.apply(null, arguments);
+};
+
+var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__strstr.apply(null, arguments);
+};
+var __emscripten_atomic_fetch_and_xor_u64 = Module["__emscripten_atomic_fetch_and_xor_u64"] = asm["__emscripten_atomic_fetch_and_xor_u64"];
var _roundf = Module["_roundf"] = asm["_roundf"];
-var _main = Module["_main"] = asm["_main"];
+var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var _emscripten_atomic_load_f32 = Module["_emscripten_atomic_load_f32"] = asm["_emscripten_atomic_load_f32"];
+var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = asm["___emscripten_pthread_data_constructor"];
var stackSave = Module["stackSave"] = asm["stackSave"];
-var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
-var _memset = Module["_memset"] = asm["_memset"];
-var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_xor_u64 = Module["_emscripten_atomic_xor_u64"] = asm["_emscripten_atomic_xor_u64"];
+var _emscripten_atomic_load_u64 = Module["_emscripten_atomic_load_u64"] = asm["_emscripten_atomic_load_u64"];
+var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
-var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
+var _emscripten_atomic_and_u64 = Module["_emscripten_atomic_and_u64"] = asm["_emscripten_atomic_and_u64"];
+var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = asm["_emscripten_sync_run_in_main_thread"];
+var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = asm["_emscripten_sync_run_in_main_thread_4"];
+var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = asm["_emscripten_sync_run_in_main_thread_5"];
+var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = asm["_emscripten_sync_run_in_main_thread_6"];
+var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = asm["_emscripten_sync_run_in_main_thread_7"];
+var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = asm["_emscripten_sync_run_in_main_thread_0"];
+var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = asm["_emscripten_sync_run_in_main_thread_1"];
+var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = asm["_emscripten_sync_run_in_main_thread_2"];
+var __emscripten_atomic_fetch_and_sub_u64 = Module["__emscripten_atomic_fetch_and_sub_u64"] = asm["__emscripten_atomic_fetch_and_sub_u64"];
+var _emscripten_atomic_exchange_u32 = Module["_emscripten_atomic_exchange_u32"] = asm["_emscripten_atomic_exchange_u32"];
var _fflush = Module["_fflush"] = asm["_fflush"];
+var _emscripten_set_current_thread_status = Module["_emscripten_set_current_thread_status"] = asm["_emscripten_set_current_thread_status"];
+var _emscripten_atomic_cas_u64 = Module["_emscripten_atomic_cas_u64"] = asm["_emscripten_atomic_cas_u64"];
var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"];
-var _sbrk = Module["_sbrk"] = asm["_sbrk"];
+var _emscripten_atomic_sub_u64 = Module["_emscripten_atomic_sub_u64"] = asm["_emscripten_atomic_sub_u64"];
+var _main = Module["_main"] = asm["_main"];
+var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
-var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
var ___muldi3 = Module["___muldi3"] = asm["___muldi3"];
+var __emscripten_atomic_fetch_and_and_u64 = Module["__emscripten_atomic_fetch_and_and_u64"] = asm["__emscripten_atomic_fetch_and_and_u64"];
+var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = asm["_emscripten_sync_run_in_main_thread_3"];
var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"];
var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
-var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _memset = Module["_memset"] = asm["_memset"];
var setTempRet0 = Module["setTempRet0"] = asm["setTempRet0"];
var _i64Add = Module["_i64Add"] = asm["_i64Add"];
+var _emscripten_atomic_store_u64 = Module["_emscripten_atomic_store_u64"] = asm["_emscripten_atomic_store_u64"];
+var _emscripten_atomic_load_f64 = Module["_emscripten_atomic_load_f64"] = asm["_emscripten_atomic_load_f64"];
var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = asm["_emscripten_get_global_libc"];
+var __emscripten_atomic_fetch_and_add_u64 = Module["__emscripten_atomic_fetch_and_add_u64"] = asm["__emscripten_atomic_fetch_and_add_u64"];
+var __emscripten_atomic_fetch_and_or_u64 = Module["__emscripten_atomic_fetch_and_or_u64"] = asm["__emscripten_atomic_fetch_and_or_u64"];
var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = asm["_emscripten_GetProcAddress"];
-var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
-var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
+var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = asm["_emscripten_async_run_in_main_thread"];
+var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var ___muldsi3 = Module["___muldsi3"] = asm["___muldsi3"];
+var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = asm["_emscripten_main_thread_process_queued_calls"];
+var _emscripten_atomic_add_u64 = Module["_emscripten_atomic_add_u64"] = asm["_emscripten_atomic_add_u64"];
var _free = Module["_free"] = asm["_free"];
-var runPostSets = Module["runPostSets"] = asm["runPostSets"];
+var _emscripten_atomic_store_f32 = Module["_emscripten_atomic_store_f32"] = asm["_emscripten_atomic_store_f32"];
+var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_exchange_u64 = Module["_emscripten_atomic_exchange_u64"] = asm["_emscripten_atomic_exchange_u64"];
+var _emscripten_atomic_store_f64 = Module["_emscripten_atomic_store_f64"] = asm["_emscripten_atomic_store_f64"];
+var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = asm["___pthread_tsd_run_dtors"];
+var stackRestore = Module["stackRestore"] = asm["stackRestore"];
+var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _malloc = Module["_malloc"] = asm["_malloc"];
var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"];
+var _emscripten_conditional_set_current_thread_status = Module["_emscripten_conditional_set_current_thread_status"] = asm["_emscripten_conditional_set_current_thread_status"];
+var _sbrk = Module["_sbrk"] = asm["_sbrk"];
var _memmove = Module["_memmove"] = asm["_memmove"];
+var _emscripten_atomic_or_u64 = Module["_emscripten_atomic_or_u64"] = asm["_emscripten_atomic_or_u64"];
var _strstr = Module["_strstr"] = asm["_strstr"];
-var stackRestore = Module["stackRestore"] = asm["stackRestore"];
-var _malloc = Module["_malloc"] = asm["_malloc"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_vd = Module["dynCall_vd"] = asm["dynCall_vd"];
var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"];
@@ -28660,6 +35271,7 @@ function exit(status, implicit) {
if (Module['noExitRuntime']) {
Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');
} else {
+ PThread.terminateAllThreads();
ABORT = true;
EXITSTATUS = status;
@@ -28680,6 +35292,7 @@ Module['exit'] = Module.exit = exit;
var abortDecorators = [];
function abort(what) {
+ if (ENVIRONMENT_IS_PTHREAD) console.error('Pthread aborting at ' + new Error().stack);
if (what !== undefined) {
Module.print(what);
Module.printErr(what);
@@ -28719,7 +35332,7 @@ if (Module['noInitialRun']) {
}
-run();
+if (!ENVIRONMENT_IS_PTHREAD) run();
// {{POST_RUN_ADDITIONS}}
diff --git a/docs/examples/web/physac/physics_shatter.c b/docs/examples/web/physac/physics_shatter.c
index fac90714..7ca656fa 100644
--- a/docs/examples/web/physac/physics_shatter.c
+++ b/docs/examples/web/physac/physics_shatter.c
@@ -2,9 +2,11 @@
*
* Physac - Body shatter
*
-* NOTE: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 1: Physac requires multi-threading, when InitPhysics() a second thread is created to manage physics calculations.
+* NOTE 2: Physac requires static C library linkage to avoid dependency on MinGW DLL (-static -lpthread)
+*
+* Use the following line to compile:
*
-* Use the following code to compile (-static -lpthread):
* gcc -o $(NAME_PART).exe $(FILE_NAME) -s $(RAYLIB_DIR)\raylib\raylib_icon -static -lraylib -lpthread
* -lglfw3 -lopengl32 -lgdi32 -lopenal32 -lwinmm -std=c99 -Wl,--subsystem,windows -Wl,-allow-multiple-definition
*
@@ -15,96 +17,131 @@
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
-#include "../src/physac.h"
+#include "physac.h"
+
+#if defined(PLATFORM_WEB)
+ #include <emscripten/emscripten.h>
+#endif
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+int screenWidth = 800;
+int screenHeight = 450;
+
+// Physac logo drawing position
+int logoX = 0;
+int logoY = 15;
+
+PhysicsBody body;
+
+//----------------------------------------------------------------------------------
+// Module Functions Declaration
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void); // Update and Draw one frame
+//----------------------------------------------------------------------------------
+// Main Enry Point
+//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 450;
-
SetConfigFlags(FLAG_MSAA_4X_HINT);
InitWindow(screenWidth, screenHeight, "Physac [raylib] - Body shatter");
- SetTargetFPS(60);
// Physac logo drawing position
- int logoX = screenWidth - MeasureText("Physac", 30) - 10;
- int logoY = 15;
+ logoX = screenWidth - MeasureText("Physac", 30) - 10;
// Initialize physics and default physics bodies
InitPhysics();
SetPhysicsGravity(0, 0);
// Create random polygon physics body to shatter
- PhysicsBody body = CreatePhysicsBodyPolygon((Vector2){ screenWidth/2, screenHeight/2 }, GetRandomValue(80, 200), GetRandomValue(3, 8), 10);
- //--------------------------------------------------------------------------------------
+ body = CreatePhysicsBodyPolygon((Vector2){ screenWidth/2, screenHeight/2 }, GetRandomValue(80, 200), GetRandomValue(3, 8), 10);
+#if defined(PLATFORM_WEB)
+ emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
+#else
+ SetTargetFPS(60); // Set our game to run at 60 frames-per-second
+ //--------------------------------------------------------------------------------------
+
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
- // Update
- //----------------------------------------------------------------------------------
- if (IsKeyPressed('R')) // Reset physics input
- {
- ResetPhysics();
+ UpdateDrawFrame();
+ }
+#endif
- // Create random polygon physics body to shatter
- body = CreatePhysicsBodyPolygon((Vector2){ screenWidth/2, screenHeight/2 }, GetRandomValue(80, 200), GetRandomValue(3, 8), 10);
- }
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ ClosePhysics(); // Uninitialize physics
+
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+}
+
+//----------------------------------------------------------------------------------
+// Module Functions Definition
+//----------------------------------------------------------------------------------
+void UpdateDrawFrame(void)
+{
+ // Update
+ //----------------------------------------------------------------------------------
+ if (IsKeyPressed('R')) // Reset physics input
+ {
+ ResetPhysics();
+
+ // Create random polygon physics body to shatter
+ body = CreatePhysicsBodyPolygon((Vector2){ screenWidth/2, screenHeight/2 }, GetRandomValue(80, 200), GetRandomValue(3, 8), 10);
+ }
- if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) // Physics shatter input
+ if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) // Physics shatter input
+ {
+ // Note: some values need to be stored in variables due to asynchronous changes during main thread
+ int count = GetPhysicsBodiesCount();
+ for (int i = count - 1; i >= 0; i--)
{
- // Note: some values need to be stored in variables due to asynchronous changes during main thread
- int count = GetPhysicsBodiesCount();
- for (int i = count - 1; i >= 0; i--)
- {
- PhysicsBody currentBody = GetPhysicsBody(i);
- if (currentBody != NULL) PhysicsShatter(currentBody, GetMousePosition(), 10/currentBody->inverseMass);
- }
+ PhysicsBody currentBody = GetPhysicsBody(i);
+ if (currentBody != NULL) PhysicsShatter(currentBody, GetMousePosition(), 10/currentBody->inverseMass);
}
- //----------------------------------------------------------------------------------
+ }
+ //----------------------------------------------------------------------------------
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
- ClearBackground(BLACK);
+ ClearBackground(BLACK);
- // Draw created physics bodies
- int bodiesCount = GetPhysicsBodiesCount();
- for (int i = 0; i < bodiesCount; i++)
- {
- PhysicsBody currentBody = GetPhysicsBody(i);
+ // Draw created physics bodies
+ int bodiesCount = GetPhysicsBodiesCount();
+ for (int i = 0; i < bodiesCount; i++)
+ {
+ PhysicsBody currentBody = GetPhysicsBody(i);
- int vertexCount = GetPhysicsShapeVerticesCount(i);
- for (int j = 0; j < vertexCount; j++)
- {
- // Get physics bodies shape vertices to draw lines
- // Note: GetPhysicsShapeVertex() already calculates rotation transformations
- Vector2 vertexA = GetPhysicsShapeVertex(currentBody, j);
+ int vertexCount = GetPhysicsShapeVerticesCount(i);
+ for (int j = 0; j < vertexCount; j++)
+ {
+ // Get physics bodies shape vertices to draw lines
+ // Note: GetPhysicsShapeVertex() already calculates rotation transformations
+ Vector2 vertexA = GetPhysicsShapeVertex(currentBody, j);
- int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
- Vector2 vertexB = GetPhysicsShapeVertex(currentBody, jj);
+ int jj = (((j + 1) < vertexCount) ? (j + 1) : 0); // Get next vertex or first to close the shape
+ Vector2 vertexB = GetPhysicsShapeVertex(currentBody, jj);
- DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
- }
+ DrawLineV(vertexA, vertexB, GREEN); // Draw a line between two vertex positions
}
+ }
- DrawText("Left mouse button in polygon area to shatter body\nPress 'R' to reset example", 10, 10, 10, WHITE);
-
- DrawText("Physac", logoX, logoY, 30, WHITE);
- DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
+ DrawText("Left mouse button in polygon area to shatter body\nPress 'R' to reset example", 10, 10, 10, WHITE);
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- ClosePhysics(); // Unitialize physics
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
+ DrawText("Physac", logoX, logoY, 30, WHITE);
+ DrawText("Powered by", logoX + 50, logoY - 7, 10, WHITE);
- return 0;
+ EndDrawing();
+ //----------------------------------------------------------------------------------
}
+
diff --git a/docs/examples/web/physac/physics_shatter.js b/docs/examples/web/physac/physics_shatter.js
index c617de90..51c37e33 100644
--- a/docs/examples/web/physac/physics_shatter.js
+++ b/docs/examples/web/physac/physics_shatter.js
@@ -59,6 +59,11 @@ if (Module['ENVIRONMENT']) {
ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
}
+var ENVIRONMENT_IS_PTHREAD;
+if (!ENVIRONMENT_IS_PTHREAD) ENVIRONMENT_IS_PTHREAD = false; // ENVIRONMENT_IS_PTHREAD=true will have been preset in pthread-main.js. Make it false in the main runtime thread.
+var PthreadWorkerInit; // Collects together variables that are needed at initialization time for the web workers that host pthreads.
+if (!ENVIRONMENT_IS_PTHREAD) PthreadWorkerInit = {};
+var currentScriptUrl = ENVIRONMENT_IS_WORKER ? undefined : document.currentScript.src;
if (ENVIRONMENT_IS_NODE) {
// Expose functionality in the same simple way that the shells work
@@ -1178,9 +1183,14 @@ var STATIC_BASE, STATICTOP, staticSealed; // static area
var STACK_BASE, STACKTOP, STACK_MAX; // stack area
var DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk
+if (!ENVIRONMENT_IS_PTHREAD) { // Pthreads have already initialized these variables in src/pthread-main.js, where they were passed to the thread worker at startup time
STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;
staticSealed = false;
+}
+if (ENVIRONMENT_IS_PTHREAD) {
+ staticSealed = true; // The static memory area has been initialized already in the main thread, pthreads skip this.
+}
// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode.
function writeStackCookie() {
@@ -1207,7 +1217,7 @@ function abortOnCannotGrowMemory() {
function enlargeMemory() {
- abortOnCannotGrowMemory();
+ abort('Cannot enlarge memory arrays, since compiling with pthreads support enabled (-s USE_PTHREADS=1).');
}
@@ -1221,27 +1231,69 @@ assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined'
'JS engine does not provide full typed array support');
-
-// Use a provided buffer, if there is one, or else allocate a new one
-if (Module['buffer']) {
- buffer = Module['buffer'];
- assert(buffer.byteLength === TOTAL_MEMORY, 'provided buffer should be ' + TOTAL_MEMORY + ' bytes, but it is ' + buffer.byteLength);
+if (typeof SharedArrayBuffer !== 'undefined') {
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new SharedArrayBuffer(TOTAL_MEMORY);
+ // Currently SharedArrayBuffer does not have a slice() operation, so polyfill it in.
+ // Adapted from https://github.com/ttaubert/node-arraybuffer-slice, (c) 2014 Tim Taubert <[email protected]>
+ // arraybuffer-slice may be freely distributed under the MIT license.
+ (function (undefined) {
+ "use strict";
+ function clamp(val, length) {
+ val = (val|0) || 0;
+ if (val < 0) return Math.max(val + length, 0);
+ return Math.min(val, length);
+ }
+ if (typeof SharedArrayBuffer !== 'undefined' && !SharedArrayBuffer.prototype.slice) {
+ SharedArrayBuffer.prototype.slice = function (from, to) {
+ var length = this.byteLength;
+ var begin = clamp(from, length);
+ var end = length;
+ if (to !== undefined) end = clamp(to, length);
+ if (begin > end) return new ArrayBuffer(0);
+ var num = end - begin;
+ var target = new ArrayBuffer(num);
+ var targetArray = new Uint8Array(target);
+ var sourceArray = new Uint8Array(this, begin, num);
+ targetArray.set(sourceArray);
+ return target;
+ };
+ }
+ })();
} else {
- // Use a WebAssembly memory where available
- {
- buffer = new ArrayBuffer(TOTAL_MEMORY);
- }
- assert(buffer.byteLength === TOTAL_MEMORY);
+ if (!ENVIRONMENT_IS_PTHREAD) buffer = new ArrayBuffer(TOTAL_MEMORY);
}
updateGlobalBufferViews();
+if (typeof Atomics === 'undefined') {
+ // Polyfill singlethreaded atomics ops from http://lars-t-hansen.github.io/ecmascript_sharedmem/shmem.html#Atomics.add
+ // No thread-safety needed since we don't have multithreading support.
+ Atomics = {};
+ Atomics['add'] = function(t, i, v) { var w = t[i]; t[i] += v; return w; }
+ Atomics['and'] = function(t, i, v) { var w = t[i]; t[i] &= v; return w; }
+ Atomics['compareExchange'] = function(t, i, e, r) { var w = t[i]; if (w == e) t[i] = r; return w; }
+ Atomics['exchange'] = function(t, i, v) { var w = t[i]; t[i] = v; return w; }
+ Atomics['wait'] = function(t, i, v, o) { if (t[i] != v) return 'not-equal'; else return 'timed-out'; }
+ Atomics['wake'] = function(t, i, c) { return 0; }
+ Atomics['wakeOrRequeue'] = function(t, i1, c, i2, v) { return 0; }
+ Atomics['isLockFree'] = function(s) { return true; }
+ Atomics['load'] = function(t, i) { return t[i]; }
+ Atomics['or'] = function(t, i, v) { var w = t[i]; t[i] |= v; return w; }
+ Atomics['store'] = function(t, i, v) { t[i] = v; return v; }
+ Atomics['sub'] = function(t, i, v) { var w = t[i]; t[i] -= v; return w; }
+ Atomics['xor'] = function(t, i, v) { var w = t[i]; t[i] ^= v; return w; }
+}
+
function getTotalMemory() {
return TOTAL_MEMORY;
}
// Endianness check (note: assumes compiler arch was little-endian)
+if (!ENVIRONMENT_IS_PTHREAD) {
HEAP32[0] = 0x63736d65; /* 'emsc' */
+} else {
+ if (HEAP32[0] !== 0x63736d65) throw 'Runtime error: The application has corrupted its heap memory area (address zero)!';
+}
HEAP16[1] = 0x6373;
if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!';
@@ -1285,8 +1337,10 @@ var __ATPOSTRUN__ = []; // functions called after the runtime has exited
var runtimeInitialized = false;
var runtimeExited = false;
+if (ENVIRONMENT_IS_PTHREAD) runtimeInitialized = true; // The runtime is hosted in the main thread, and bits shared to pthreads via SharedArrayBuffer. No need to init again in pthread.
function preRun() {
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['preRun'] at this time
if (Module['preRun']) {
if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
@@ -1299,6 +1353,7 @@ function preRun() {
function ensureInitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
@@ -1306,17 +1361,20 @@ function ensureInitRuntime() {
function preMain() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
callRuntimeCallbacks(__ATEXIT__);
runtimeExited = true;
}
function postRun() {
checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return; // PThreads reuse the runtime from the main thread.
// compatibility - merge in anything from Module['postRun'] at this time
if (Module['postRun']) {
if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
@@ -1435,6 +1493,18 @@ function reSign(value, bits, ignore) {
return value;
}
+// Atomics.exchange is not yet implemented in the spec, so polyfill that in via compareExchange in the meanwhile.
+// TODO: Keep an eye out for the opportunity to remove this once Atomics.exchange is available.
+if (typeof Atomics !== 'undefined' && !Atomics['exchange']) {
+ Atomics['exchange'] = function(heap, index, val) {
+ var oldVal, oldVal2;
+ do {
+ oldVal = Atomics['load'](heap, index);
+ oldVal2 = Atomics['compareExchange'](heap, index, oldVal, val);
+ } while(oldVal != oldVal2);
+ return oldVal;
+ }
+}
// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
@@ -1504,6 +1574,9 @@ function getUniqueRunDependency(id) {
}
function addRunDependency(id) {
+ // We should never get here in pthreads (could no-op this out if called in pthreads, but that might indicate a bug in caller side,
+ // so good to be very explicit)
+ assert(!ENVIRONMENT_IS_PTHREAD);
runDependencies++;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
@@ -1572,52 +1645,43 @@ var memoryInitializer = null;
-var /* show errors on likely calls to FS when it was not included */ FS = {
- error: function() {
- abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1');
- },
- init: function() { FS.error() },
- createDataFile: function() { FS.error() },
- createPreloadedFile: function() { FS.error() },
- createLazyFile: function() { FS.error() },
- open: function() { FS.error() },
- mkdev: function() { FS.error() },
- registerDevice: function() { FS.error() },
- analyzePath: function() { FS.error() },
- loadFilesFromDB: function() { FS.error() },
-
- ErrnoError: function ErrnoError() { FS.error() },
-};
-Module['FS_createDataFile'] = FS.createDataFile;
-Module['FS_createPreloadedFile'] = FS.createPreloadedFile;
// === Body ===
-var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } }];
+var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } },
+ function() { postMessage({ cmd: 'processQueuedMainThreadWork' }) }];
function _emscripten_asm_const_iii(code, a0, a1) {
return ASM_CONSTS[code](a0, a1);
}
+function _emscripten_asm_const_v(code) {
+ return ASM_CONSTS[code]();
+}
+
STATIC_BASE = 8;
-STATICTOP = STATIC_BASE + 35840;
- /* global initializers */ __ATINIT__.push();
+STATICTOP = STATIC_BASE + 38272;
+ /* global initializers */ if (!ENVIRONMENT_IS_PTHREAD) __ATINIT__.push({ func: function() { ___emscripten_pthread_data_constructor() } });
-/* memory initializer */ allocate([32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,152,12,0,0,5,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,1,0,0,0,2,0,0,0,247,135,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,12,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,66,111,100,121,32,115,104,97,116,116,101,114,0,80,104,121,115,97,99,0,76,101,102,116,32,109,111,117,115,101,32,98,117,116,116,111,110,32,105,110,32,112,111,108,121,103,111,110,32,97,114,101,97,32,116,111,32,115,104,97,116,116,101,114,32,98,111,100,121,10,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
-/* memory initializer */ allocate([111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+if (!ENVIRONMENT_IS_PTHREAD) {
+/* memory initializer */ allocate([32,3,0,0,194,1,0,0,15,0,0,0,32,186,32,60,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,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,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,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,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,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,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,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,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,176,11,0,0,5,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,1,0,0,0,2,0,0,0,127,145,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,104,121,115,97,99,32,91,114,97,121,108,105,98,93,32,45,32,66,111,100,121,32,115,104,97,116,116,101,114,0,80,104,121,115,97,99,0,76,101,102,116,32,109,111,117,115,101,32,98,117,116,116,111,110,32,105,110,32,112,111,108,121,103,111,110,32,97,114,101,97,32,116,111,32,115,104,97,116,116,101,114,32,98,111,100,121,10,80,114,101,115,115,32,39,82,39,32,116,111,32,114,101,115,101,116,32,101,120,97,109,112,108,101,0,80,111,119,101,114,101,100,32,98,121,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114,101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
+/* memory initializer */ allocate([115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,101,109,115,99,114,105,112,116,101,110,95,105,115,95,109,97,105,110,95,114,117,110,116,105,109,101,95,116,104,114,101,97,100,40,41,32,38,38,32,34,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,32,109,117,115,116,32,98,101,32,99,97,108,108,101,100,32,102,114,111,109,32,116,104,101,32,109,97,105,110,32,116,104,114,101,97,100,33,34,0,67,58,92,101,109,115,100,107,92,101,109,115,99,114,105,112,116,101,110,92,49,46,51,55,46,57,92,115,121,115,116,101,109,92,108,105,98,92,112,116,104,114,101,97,100,92,108,105,98,114,97,114,121,95,112,116,104,114,101,97,100,46,99,0,101,109,115,99,114,105,112,116,101,110,95,109,97,105,110,95,116,104,114,101,97,100,95,112,114,111,99,101,115,115,95,113,117,101,117,101,100,95,99,97,108,108,115,0,48,32,38,38,32,34,73,110,118,97,108,105,100,32,69,109,115,99,114,105,112,116,101,110,32,112,116,104,114,101,97,100,32,95,100,111,95,99,97,108,108,32,111,112,99,111,100,101,33,34,0,95,100,111,95,99,97,108,108,0,99,97,108,108,0,101,109,115,99,114,105,112,116,101,110,95,97,115,121,110,99,95,114,117,110,95,105,110,95,109,97,105,110,95,116,104,114,101,97,100,0,112,111,115,116,77,101,115,115,97,103,101,40,123,32,99,109,100,58,32,39,112,114,111,99,101,115,115,81,117,101,117,101,100,77,97,105,110,84,104,114,101,97,100,87,111,114,107,39,32,125,41,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
+}
/* no memory initializer */
-var tempDoublePtr = STATICTOP; STATICTOP += 16;
+var tempDoublePtr;
+
+if (!ENVIRONMENT_IS_PTHREAD) tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
@@ -1880,6 +1944,8 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilMaskSeparate(x0, x1) { GLctx['stencilMaskSeparate'](x0, x1) }
+ function ___pthread_setcancelstate() { return 0 }
+
function _emscripten_get_now() { abort() }
@@ -3360,13 +3426,3061 @@ function copyTempDouble(ptr) {
}
- var SYSCALLS={varargs:0,get:function (varargs) {
+
+
+ var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
+
+ var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
+
+ function ___setErrNo(value) {
+ if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
+ else Module.printErr('failed to set errno from JS');
+ return value;
+ }
+
+ var PATH={splitPath:function (filename) {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1);
+ },normalizeArray:function (parts, allowAboveRoot) {
+ // if the path tries to go above the root, `up` ends up > 0
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === '.') {
+ parts.splice(i, 1);
+ } else if (last === '..') {
+ parts.splice(i, 1);
+ up++;
+ } else if (up) {
+ parts.splice(i, 1);
+ up--;
+ }
+ }
+ // if the path is allowed to go above the root, restore leading ..s
+ if (allowAboveRoot) {
+ for (; up--; up) {
+ parts.unshift('..');
+ }
+ }
+ return parts;
+ },normalize:function (path) {
+ var isAbsolute = path.charAt(0) === '/',
+ trailingSlash = path.substr(-1) === '/';
+ // Normalize the path
+ path = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), !isAbsolute).join('/');
+ if (!path && !isAbsolute) {
+ path = '.';
+ }
+ if (path && trailingSlash) {
+ path += '/';
+ }
+ return (isAbsolute ? '/' : '') + path;
+ },dirname:function (path) {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ // No dirname whatsoever
+ return '.';
+ }
+ if (dir) {
+ // It has a dirname, strip trailing slash
+ dir = dir.substr(0, dir.length - 1);
+ }
+ return root + dir;
+ },basename:function (path) {
+ // EMSCRIPTEN return '/'' for '/', not an empty string
+ if (path === '/') return '/';
+ var lastSlash = path.lastIndexOf('/');
+ if (lastSlash === -1) return path;
+ return path.substr(lastSlash+1);
+ },extname:function (path) {
+ return PATH.splitPath(path)[3];
+ },join:function () {
+ var paths = Array.prototype.slice.call(arguments, 0);
+ return PATH.normalize(paths.join('/'));
+ },join2:function (l, r) {
+ return PATH.normalize(l + '/' + r);
+ },resolve:function () {
+ var resolvedPath = '',
+ resolvedAbsolute = false;
+ for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = (i >= 0) ? arguments[i] : FS.cwd();
+ // Skip empty and invalid entries
+ if (typeof path !== 'string') {
+ throw new TypeError('Arguments to path.resolve must be strings');
+ } else if (!path) {
+ return ''; // an invalid portion invalidates the whole thing
+ }
+ resolvedPath = path + '/' + resolvedPath;
+ resolvedAbsolute = path.charAt(0) === '/';
+ }
+ // At this point the path should be resolved to a full absolute path, but
+ // handle relative paths to be safe (might happen when process.cwd() fails)
+ resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
+ return !!p;
+ }), !resolvedAbsolute).join('/');
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
+ },relative:function (from, to) {
+ from = PATH.resolve(from).substr(1);
+ to = PATH.resolve(to).substr(1);
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== '') break;
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== '') break;
+ }
+ if (start > end) return [];
+ return arr.slice(start, end - start + 1);
+ }
+ var fromParts = trim(from.split('/'));
+ var toParts = trim(to.split('/'));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break;
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push('..');
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join('/');
+ }};
+
+ var TTY={ttys:[],init:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // currently, FS.init does not distinguish if process.stdin is a file or TTY
+ // // device, it always assumes it's a TTY device. because of this, we're forcing
+ // // process.stdin to UTF8 encoding to at least make stdin reading compatible
+ // // with text files until FS.init can be refactored.
+ // process['stdin']['setEncoding']('utf8');
+ // }
+ },shutdown:function () {
+ // https://github.com/kripken/emscripten/pull/1555
+ // if (ENVIRONMENT_IS_NODE) {
+ // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
+ // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
+ // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
+ // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
+ // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
+ // process['stdin']['pause']();
+ // }
+ },register:function (dev, ops) {
+ TTY.ttys[dev] = { input: [], output: [], ops: ops };
+ FS.registerDevice(dev, TTY.stream_ops);
+ },stream_ops:{open:function (stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ stream.tty = tty;
+ stream.seekable = false;
+ },close:function (stream) {
+ // flush any pending line data
+ stream.tty.ops.flush(stream.tty);
+ },flush:function (stream) {
+ stream.tty.ops.flush(stream.tty);
+ },read:function (stream, buffer, offset, length, pos /* ignored */) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
+ }
+ for (var i = 0; i < length; i++) {
+ try {
+ stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }},default_tty_ops:{get_char:function (tty) {
+ if (!tty.input.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ // we will read data by chunks of BUFSIZE
+ var BUFSIZE = 256;
+ var buf = new Buffer(BUFSIZE);
+ var bytesRead = 0;
+
+ var isPosixPlatform = (process.platform != 'win32'); // Node doesn't offer a direct check, so test by exclusion
+
+ var fd = process.stdin.fd;
+ if (isPosixPlatform) {
+ // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync)
+ var usingDevice = false;
+ try {
+ fd = fs.openSync('/dev/stdin', 'r');
+ usingDevice = true;
+ } catch (e) {}
+ }
+
+ try {
+ bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
+ } catch(e) {
+ // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes,
+ // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0.
+ if (e.toString().indexOf('EOF') != -1) bytesRead = 0;
+ else throw e;
+ }
+
+ if (usingDevice) { fs.closeSync(fd); }
+ if (bytesRead > 0) {
+ result = buf.slice(0, bytesRead).toString('utf-8');
+ } else {
+ result = null;
+ }
+
+ } else if (typeof window != 'undefined' &&
+ typeof window.prompt == 'function') {
+ // Browser.
+ result = window.prompt('Input: '); // returns null on cancel
+ if (result !== null) {
+ result += '\n';
+ }
+ } else if (typeof readline == 'function') {
+ // Command line.
+ result = readline();
+ if (result !== null) {
+ result += '\n';
+ }
+ }
+ if (!result) {
+ return null;
+ }
+ tty.input = intArrayFromString(result, true);
+ }
+ return tty.input.shift();
+ },put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle.
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['print'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }},default_tty1_ops:{put_char:function (tty, val) {
+ if (val === null || val === 10) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ } else {
+ if (val != 0) tty.output.push(val);
+ }
+ },flush:function (tty) {
+ if (tty.output && tty.output.length > 0) {
+ Module['printErr'](UTF8ArrayToString(tty.output, 0));
+ tty.output = [];
+ }
+ }}};
+
+ var MEMFS={ops_table:null,mount:function (mount) {
+ return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ // no supported
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (!MEMFS.ops_table) {
+ MEMFS.ops_table = {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap,
+ msync: MEMFS.stream_ops.msync
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ }
+ };
+ }
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {};
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity.
+ // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
+ // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
+ // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
+ node.contents = null;
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream;
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream;
+ }
+ node.timestamp = Date.now();
+ // add the new node to the parent
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },getFileDataAsRegularArray:function (node) {
+ if (node.contents && node.contents.subarray) {
+ var arr = [];
+ for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
+ return arr; // Returns a copy of the original data.
+ }
+ return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
+ },getFileDataAsTypedArray:function (node) {
+ if (!node.contents) return new Uint8Array;
+ if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
+ return new Uint8Array(node.contents);
+ },expandFileStorage:function (node, newCapacity) {
+ // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
+ // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
+ // increase the size.
+ if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
+ node.contents = MEMFS.getFileDataAsRegularArray(node);
+ node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
+ }
+
+ if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well.
+ var prevCapacity = node.contents ? node.contents.length : 0;
+ if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
+ // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
+ // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
+ // avoid overshooting the allocation cap by a very large margin.
+ var CAPACITY_DOUBLING_MAX = 1024 * 1024;
+ newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);
+ if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newCapacity); // Allocate new storage.
+ if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
+ return;
+ }
+ // Not using a typed array to back the file storage. Use a standard JS array instead.
+ if (!node.contents && newCapacity > 0) node.contents = [];
+ while (node.contents.length < newCapacity) node.contents.push(0);
+ },resizeFileStorage:function (node, newSize) {
+ if (node.usedBytes == newSize) return;
+ if (newSize == 0) {
+ node.contents = null; // Fully decommit when requesting a resize to zero.
+ node.usedBytes = 0;
+ return;
+ }
+ if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store.
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
+ if (oldContents) {
+ node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.
+ }
+ node.usedBytes = newSize;
+ return;
+ }
+ // Backing with a JS array.
+ if (!node.contents) node.contents = [];
+ if (node.contents.length > newSize) node.contents.length = newSize;
+ else while (node.contents.length < newSize) node.contents.push(0);
+ node.usedBytes = newSize;
+ },node_ops:{getattr:function (node) {
+ var attr = {};
+ // device numbers reuse inode numbers.
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096;
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.usedBytes;
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length;
+ } else {
+ attr.size = 0;
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
+ // but this is not required by the standard.
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr;
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ if (attr.size !== undefined) {
+ MEMFS.resizeFileStorage(node, attr.size);
+ }
+ },lookup:function (parent, name) {
+ throw FS.genericErrors[ERRNO_CODES.ENOENT];
+ },mknod:function (parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev);
+ },rename:function (old_node, new_dir, new_name) {
+ // if we're overwriting a directory at new_name, make sure it's empty.
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ }
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ }
+ }
+ // do the internal rewiring
+ delete old_node.parent.contents[old_node.name];
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ old_node.parent = new_dir;
+ },unlink:function (parent, name) {
+ delete parent.contents[name];
+ },rmdir:function (parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ delete parent.contents[name];
+ },readdir:function (node) {
+ var entries = ['.', '..']
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
+ node.link = oldpath;
+ return node;
+ },readlink:function (node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return node.link;
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= stream.node.usedBytes) return 0;
+ var size = Math.min(stream.node.usedBytes - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) { // non-trivial, and typed array
+ buffer.set(contents.subarray(position, position + size), offset);
+ } else {
+ for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
+ }
+ return size;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (!length) return 0;
+ var node = stream.node;
+ node.timestamp = Date.now();
+
+ if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array?
+ if (canOwn) {
+ assert(position === 0, 'canOwn must imply no weird position inside the file');
+ node.contents = buffer.subarray(offset, offset + length);
+ node.usedBytes = length;
+ return length;
+ } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
+ node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
+ node.usedBytes = length;
+ return length;
+ } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ return length;
+ }
+ }
+
+ // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
+ MEMFS.expandFileStorage(node, position+length);
+ if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.
+ else {
+ for (var i = 0; i < length; i++) {
+ node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
+ }
+ }
+ node.usedBytes = Math.max(node.usedBytes, position+length);
+ return length;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.usedBytes;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ },allocate:function (stream, offset, length) {
+ MEMFS.expandFileStorage(stream.node, offset + length);
+ stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ // Only make a new copy when MAP_PRIVATE is specified.
+ if ( !(flags & 2) &&
+ (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
+ // We can't emulate MAP_SHARED when the file is not backed by the buffer
+ // we're mapping to (e.g. the HEAP buffer).
+ allocated = false;
+ ptr = contents.byteOffset;
+ } else {
+ // Try to avoid unnecessary slices.
+ if (position > 0 || position + length < stream.node.usedBytes) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length);
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length);
+ }
+ }
+ allocated = true;
+ ptr = _malloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
+ }
+ buffer.set(contents, ptr);
+ }
+ return { ptr: ptr, allocated: allocated };
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (mmapFlags & 2) {
+ // MAP_PRIVATE calls need not to be synced back to underlying fs
+ return 0;
+ }
+
+ var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
+ // should we check if bytesWritten and length are the same?
+ return 0;
+ }}};
+
+ var IDBFS={dbs:{},indexedDB:function () {
+ if (typeof indexedDB !== 'undefined') return indexedDB;
+ var ret = null;
+ if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ assert(ret, 'IDBFS used, but indexedDB not supported');
+ return ret;
+ },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
+ // reuse all of the core MEMFS functionality
+ return MEMFS.mount.apply(null, arguments);
+ },syncfs:function (mount, populate, callback) {
+ IDBFS.getLocalSet(mount, function(err, local) {
+ if (err) return callback(err);
+
+ IDBFS.getRemoteSet(mount, function(err, remote) {
+ if (err) return callback(err);
+
+ var src = populate ? remote : local;
+ var dst = populate ? local : remote;
+
+ IDBFS.reconcile(src, dst, callback);
+ });
+ });
+ },getDB:function (name, callback) {
+ // check the cache first
+ var db = IDBFS.dbs[name];
+ if (db) {
+ return callback(null, db);
+ }
+
+ var req;
+ try {
+ req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
+ } catch (e) {
+ return callback(e);
+ }
+ if (!req) {
+ return callback("Unable to connect to IndexedDB");
+ }
+ req.onupgradeneeded = function(e) {
+ var db = e.target.result;
+ var transaction = e.target.transaction;
+
+ var fileStore;
+
+ if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
+ fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ } else {
+ fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
+ }
+
+ if (!fileStore.indexNames.contains('timestamp')) {
+ fileStore.createIndex('timestamp', 'timestamp', { unique: false });
+ }
+ };
+ req.onsuccess = function() {
+ db = req.result;
+
+ // add to the cache
+ IDBFS.dbs[name] = db;
+ callback(null, db);
+ };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },getLocalSet:function (mount, callback) {
+ var entries = {};
+
+ function isRealDir(p) {
+ return p !== '.' && p !== '..';
+ };
+ function toAbsolute(root) {
+ return function(p) {
+ return PATH.join2(root, p);
+ }
+ };
+
+ var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
+
+ while (check.length) {
+ var path = check.pop();
+ var stat;
+
+ try {
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
+ }
+
+ entries[path] = { timestamp: stat.mtime };
+ }
+
+ return callback(null, { type: 'local', entries: entries });
+ },getRemoteSet:function (mount, callback) {
+ var entries = {};
+
+ IDBFS.getDB(mount.mountpoint, function(err, db) {
+ if (err) return callback(err);
+
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
+ transaction.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+ var index = store.index('timestamp');
+
+ index.openKeyCursor().onsuccess = function(event) {
+ var cursor = event.target.result;
+
+ if (!cursor) {
+ return callback(null, { type: 'remote', db: db, entries: entries });
+ }
+
+ entries[cursor.primaryKey] = { timestamp: cursor.key };
+
+ cursor.continue();
+ };
+ });
+ },loadLocalEntry:function (path, callback) {
+ var stat, node;
+
+ try {
+ var lookup = FS.lookupPath(path);
+ node = lookup.node;
+ stat = FS.stat(path);
+ } catch (e) {
+ return callback(e);
+ }
+
+ if (FS.isDir(stat.mode)) {
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode });
+ } else if (FS.isFile(stat.mode)) {
+ // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
+ // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
+ node.contents = MEMFS.getFileDataAsTypedArray(node);
+ return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+ },storeLocalEntry:function (path, entry, callback) {
+ try {
+ if (FS.isDir(entry.mode)) {
+ FS.mkdir(path, entry.mode);
+ } else if (FS.isFile(entry.mode)) {
+ FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
+ } else {
+ return callback(new Error('node type not supported'));
+ }
+
+ FS.chmod(path, entry.mode);
+ FS.utime(path, entry.timestamp, entry.timestamp);
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },removeLocalEntry:function (path, callback) {
+ try {
+ var lookup = FS.lookupPath(path);
+ var stat = FS.stat(path);
+
+ if (FS.isDir(stat.mode)) {
+ FS.rmdir(path);
+ } else if (FS.isFile(stat.mode)) {
+ FS.unlink(path);
+ }
+ } catch (e) {
+ return callback(e);
+ }
+
+ callback(null);
+ },loadRemoteEntry:function (store, path, callback) {
+ var req = store.get(path);
+ req.onsuccess = function(event) { callback(null, event.target.result); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },storeRemoteEntry:function (store, path, entry, callback) {
+ var req = store.put(entry, path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },removeRemoteEntry:function (store, path, callback) {
+ var req = store.delete(path);
+ req.onsuccess = function() { callback(null); };
+ req.onerror = function(e) {
+ callback(this.error);
+ e.preventDefault();
+ };
+ },reconcile:function (src, dst, callback) {
+ var total = 0;
+
+ var create = [];
+ Object.keys(src.entries).forEach(function (key) {
+ var e = src.entries[key];
+ var e2 = dst.entries[key];
+ if (!e2 || e.timestamp > e2.timestamp) {
+ create.push(key);
+ total++;
+ }
+ });
+
+ var remove = [];
+ Object.keys(dst.entries).forEach(function (key) {
+ var e = dst.entries[key];
+ var e2 = src.entries[key];
+ if (!e2) {
+ remove.push(key);
+ total++;
+ }
+ });
+
+ if (!total) {
+ return callback(null);
+ }
+
+ var errored = false;
+ var completed = 0;
+ var db = src.type === 'remote' ? src.db : dst.db;
+ var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
+ var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return callback(err);
+ }
+ return;
+ }
+ if (++completed >= total) {
+ return callback(null);
+ }
+ };
+
+ transaction.onerror = function(e) {
+ done(this.error);
+ e.preventDefault();
+ };
+
+ // sort paths in ascending order so directory entries are created
+ // before the files inside them
+ create.sort().forEach(function (path) {
+ if (dst.type === 'local') {
+ IDBFS.loadRemoteEntry(store, path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeLocalEntry(path, entry, done);
+ });
+ } else {
+ IDBFS.loadLocalEntry(path, function (err, entry) {
+ if (err) return done(err);
+ IDBFS.storeRemoteEntry(store, path, entry, done);
+ });
+ }
+ });
+
+ // sort paths in descending order so files are deleted before their
+ // parent directories
+ remove.sort().reverse().forEach(function(path) {
+ if (dst.type === 'local') {
+ IDBFS.removeLocalEntry(path, done);
+ } else {
+ IDBFS.removeRemoteEntry(store, path, done);
+ }
+ });
+ }};
+
+ var NODEFS={isWindows:false,staticInit:function () {
+ NODEFS.isWindows = !!process.platform.match(/^win/);
+ },mount:function (mount) {
+ assert(ENVIRONMENT_IS_NODE);
+ return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
+ },createNode:function (parent, name, mode, dev) {
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node = FS.createNode(parent, name, mode);
+ node.node_ops = NODEFS.node_ops;
+ node.stream_ops = NODEFS.stream_ops;
+ return node;
+ },getMode:function (path) {
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ if (NODEFS.isWindows) {
+ // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
+ // propagate write bits to execute bits.
+ stat.mode = stat.mode | ((stat.mode & 146) >> 1);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return stat.mode;
+ },realPath:function (node) {
+ var parts = [];
+ while (node.parent !== node) {
+ parts.push(node.name);
+ node = node.parent;
+ }
+ parts.push(node.mount.opts.root);
+ parts.reverse();
+ return PATH.join.apply(null, parts);
+ },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
+ flags &= ~0x200000 /*O_PATH*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x800 /*O_NONBLOCK*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x8000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
+ flags &= ~0x80000 /*O_CLOEXEC*/; // Some applications may pass it; it makes no sense for a single process.
+ if (flags in NODEFS.flagsToPermissionStringMap) {
+ return NODEFS.flagsToPermissionStringMap[flags];
+ } else {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ },node_ops:{getattr:function (node) {
+ var path = NODEFS.realPath(node);
+ var stat;
+ try {
+ stat = fs.lstatSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
+ // See http://support.microsoft.com/kb/140365
+ if (NODEFS.isWindows && !stat.blksize) {
+ stat.blksize = 4096;
+ }
+ if (NODEFS.isWindows && !stat.blocks) {
+ stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
+ }
+ return {
+ dev: stat.dev,
+ ino: stat.ino,
+ mode: stat.mode,
+ nlink: stat.nlink,
+ uid: stat.uid,
+ gid: stat.gid,
+ rdev: stat.rdev,
+ size: stat.size,
+ atime: stat.atime,
+ mtime: stat.mtime,
+ ctime: stat.ctime,
+ blksize: stat.blksize,
+ blocks: stat.blocks
+ };
+ },setattr:function (node, attr) {
+ var path = NODEFS.realPath(node);
+ try {
+ if (attr.mode !== undefined) {
+ fs.chmodSync(path, attr.mode);
+ // update the common node structure mode as well
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ var date = new Date(attr.timestamp);
+ fs.utimesSync(path, date, date);
+ }
+ if (attr.size !== undefined) {
+ fs.truncateSync(path, attr.size);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },lookup:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ var mode = NODEFS.getMode(path);
+ return NODEFS.createNode(parent, name, mode);
+ },mknod:function (parent, name, mode, dev) {
+ var node = NODEFS.createNode(parent, name, mode, dev);
+ // create the backing node for this in the fs root as well
+ var path = NODEFS.realPath(node);
+ try {
+ if (FS.isDir(node.mode)) {
+ fs.mkdirSync(path, node.mode);
+ } else {
+ fs.writeFileSync(path, '', { mode: node.mode });
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return node;
+ },rename:function (oldNode, newDir, newName) {
+ var oldPath = NODEFS.realPath(oldNode);
+ var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
+ try {
+ fs.renameSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },unlink:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.unlinkSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },rmdir:function (parent, name) {
+ var path = PATH.join2(NODEFS.realPath(parent), name);
+ try {
+ fs.rmdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readdir:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ return fs.readdirSync(path);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },symlink:function (parent, newName, oldPath) {
+ var newPath = PATH.join2(NODEFS.realPath(parent), newName);
+ try {
+ fs.symlinkSync(oldPath, newPath);
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },readlink:function (node) {
+ var path = NODEFS.realPath(node);
+ try {
+ path = fs.readlinkSync(path);
+ path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
+ return path;
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }},stream_ops:{open:function (stream) {
+ var path = NODEFS.realPath(stream.node);
+ try {
+ if (FS.isFile(stream.node.mode)) {
+ stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },close:function (stream) {
+ try {
+ if (FS.isFile(stream.node.mode) && stream.nfd) {
+ fs.closeSync(stream.nfd);
+ }
+ } catch (e) {
+ if (!e.code) throw e;
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ },read:function (stream, buffer, offset, length, position) {
+ if (length === 0) return 0; // node errors on 0 length reads
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(length);
+ var res;
+ try {
+ res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ if (res > 0) {
+ for (var i = 0; i < res; i++) {
+ buffer[offset + i] = nbuffer[i];
+ }
+ }
+ return res;
+ },write:function (stream, buffer, offset, length, position) {
+ // FIXME this is terrible.
+ var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
+ var res;
+ try {
+ res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ return res;
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ try {
+ var stat = fs.fstatSync(stream.nfd);
+ position += stat.size;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
+ }
+ }
+ }
+
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ return position;
+ }}};
+
+ var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) {
+ assert(ENVIRONMENT_IS_WORKER);
+ if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();
+ var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0);
+ var createdParents = {};
+ function ensureParent(path) {
+ // return the parent node, creating subdirs as necessary
+ var parts = path.split('/');
+ var parent = root;
+ for (var i = 0; i < parts.length-1; i++) {
+ var curr = parts.slice(0, i+1).join('/');
+ // Issue 4254: Using curr as a node name will prevent the node
+ // from being found in FS.nameTable when FS.open is called on
+ // a path which holds a child of this node,
+ // given that all FS functions assume node names
+ // are just their corresponding parts within their given path,
+ // rather than incremental aggregates which include their parent's
+ // directories.
+ if (!createdParents[curr]) {
+ createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0);
+ }
+ parent = createdParents[curr];
+ }
+ return parent;
+ }
+ function base(path) {
+ var parts = path.split('/');
+ return parts[parts.length-1];
+ }
+ // We also accept FileList here, by using Array.prototype
+ Array.prototype.forEach.call(mount.opts["files"] || [], function(file) {
+ WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
+ });
+ (mount.opts["blobs"] || []).forEach(function(obj) {
+ WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
+ });
+ (mount.opts["packages"] || []).forEach(function(pack) {
+ pack['metadata'].files.forEach(function(file) {
+ var name = file.filename.substr(1); // remove initial slash
+ WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end));
+ });
+ });
+ return root;
+ },createNode:function (parent, name, mode, dev, contents, mtime) {
+ var node = FS.createNode(parent, name, mode);
+ node.mode = mode;
+ node.node_ops = WORKERFS.node_ops;
+ node.stream_ops = WORKERFS.stream_ops;
+ node.timestamp = (mtime || new Date).getTime();
+ assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
+ if (mode === WORKERFS.FILE_MODE) {
+ node.size = contents.size;
+ node.contents = contents;
+ } else {
+ node.size = 4096;
+ node.contents = {};
+ }
+ if (parent) {
+ parent.contents[name] = node;
+ }
+ return node;
+ },node_ops:{getattr:function (node) {
+ return {
+ dev: 1,
+ ino: undefined,
+ mode: node.mode,
+ nlink: 1,
+ uid: 0,
+ gid: 0,
+ rdev: undefined,
+ size: node.size,
+ atime: new Date(node.timestamp),
+ mtime: new Date(node.timestamp),
+ ctime: new Date(node.timestamp),
+ blksize: 4096,
+ blocks: Math.ceil(node.size / 4096),
+ };
+ },setattr:function (node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode;
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp;
+ }
+ },lookup:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ },mknod:function (parent, name, mode, dev) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rename:function (oldNode, newDir, newName) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },unlink:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },rmdir:function (parent, name) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readdir:function (node) {
+ var entries = ['.', '..'];
+ for (var key in node.contents) {
+ if (!node.contents.hasOwnProperty(key)) {
+ continue;
+ }
+ entries.push(key);
+ }
+ return entries;
+ },symlink:function (parent, newName, oldPath) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ },readlink:function (node) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }},stream_ops:{read:function (stream, buffer, offset, length, position) {
+ if (position >= stream.node.size) return 0;
+ var chunk = stream.node.contents.slice(position, position + length);
+ var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
+ buffer.set(new Uint8Array(ab), offset);
+ return chunk.size;
+ },write:function (stream, buffer, offset, length, position) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ },llseek:function (stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) { // SEEK_CUR.
+ position += stream.position;
+ } else if (whence === 2) { // SEEK_END.
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.size;
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return position;
+ }}};
+
+ var _stdin; if (ENVIRONMENT_IS_PTHREAD) _stdin = PthreadWorkerInit._stdin; else PthreadWorkerInit._stdin = _stdin = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stdout; if (ENVIRONMENT_IS_PTHREAD) _stdout = PthreadWorkerInit._stdout; else PthreadWorkerInit._stdout = _stdout = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _stderr; if (ENVIRONMENT_IS_PTHREAD) _stderr = PthreadWorkerInit._stderr; else PthreadWorkerInit._stderr = _stderr = allocate(1, "i32*", ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function (e) {
+ if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
+ return ___setErrNo(e.errno);
+ },lookupPath:function (path, opts) {
+ path = PATH.resolve(FS.cwd(), path);
+ opts = opts || {};
+
+ if (!path) return { path: '', node: null };
+
+ var defaults = {
+ follow_mount: true,
+ recurse_count: 0
+ };
+ for (var key in defaults) {
+ if (opts[key] === undefined) {
+ opts[key] = defaults[key];
+ }
+ }
+
+ if (opts.recurse_count > 8) { // max recursive lookup of 8
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+
+ // split the path
+ var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
+ return !!p;
+ }), false);
+
+ // start at the root
+ var current = FS.root;
+ var current_path = '/';
+
+ for (var i = 0; i < parts.length; i++) {
+ var islast = (i === parts.length-1);
+ if (islast && opts.parent) {
+ // stop resolving
+ break;
+ }
+
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+
+ // jump to the mount's root node if this is a mountpoint
+ if (FS.isMountpoint(current)) {
+ if (!islast || (islast && opts.follow_mount)) {
+ current = current.mounted.root;
+ }
+ }
+
+ // by default, lookupPath will not follow a symlink if it is the final path component.
+ // setting opts.follow = true will override this behavior.
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH.resolve(PATH.dirname(current_path), link);
+
+ var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
+ current = lookup.node;
+
+ if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
+ throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
+ }
+ }
+ }
+ }
+
+ return { path: current_path, node: current };
+ },getPath:function (node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path) return mount;
+ return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
+ }
+ path = path ? node.name + '/' + path : node.name;
+ node = node.parent;
+ }
+ },hashName:function (parentid, name) {
+ var hash = 0;
+
+
+ for (var i = 0; i < name.length; i++) {
+ hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
+ }
+ return ((parentid + hash) >>> 0) % FS.nameTable.length;
+ },hashAddNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node;
+ },hashRemoveNode:function (node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next;
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break;
+ }
+ current = current.name_next;
+ }
+ }
+ },lookupNode:function (parent, name) {
+ var err = FS.mayLookup(parent);
+ if (err) {
+ throw new FS.ErrnoError(err, parent);
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node;
+ }
+ }
+ // if we failed to find it in the cache, call into the VFS
+ return FS.lookup(parent, name);
+ },createNode:function (parent, name, mode, rdev) {
+ if (!FS.FSNode) {
+ FS.FSNode = function(parent, name, mode, rdev) {
+ if (!parent) {
+ parent = this; // root node sets parent to itself
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ this.mounted = null;
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev;
+ };
+
+ FS.FSNode.prototype = {};
+
+ // compatibility
+ var readMode = 292 | 73;
+ var writeMode = 146;
+
+ // NOTE we must use Object.defineProperties instead of individual calls to
+ // Object.defineProperty in order to make closure compiler happy
+ Object.defineProperties(FS.FSNode.prototype, {
+ read: {
+ get: function() { return (this.mode & readMode) === readMode; },
+ set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
+ },
+ write: {
+ get: function() { return (this.mode & writeMode) === writeMode; },
+ set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
+ },
+ isFolder: {
+ get: function() { return FS.isDir(this.mode); }
+ },
+ isDevice: {
+ get: function() { return FS.isChrdev(this.mode); }
+ }
+ });
+ }
+
+ var node = new FS.FSNode(parent, name, mode, rdev);
+
+ FS.hashAddNode(node);
+
+ return node;
+ },destroyNode:function (node) {
+ FS.hashRemoveNode(node);
+ },isRoot:function (node) {
+ return node === node.parent;
+ },isMountpoint:function (node) {
+ return !!node.mounted;
+ },isFile:function (mode) {
+ return (mode & 61440) === 32768;
+ },isDir:function (mode) {
+ return (mode & 61440) === 16384;
+ },isLink:function (mode) {
+ return (mode & 61440) === 40960;
+ },isChrdev:function (mode) {
+ return (mode & 61440) === 8192;
+ },isBlkdev:function (mode) {
+ return (mode & 61440) === 24576;
+ },isFIFO:function (mode) {
+ return (mode & 61440) === 4096;
+ },isSocket:function (mode) {
+ return (mode & 49152) === 49152;
+ },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
+ var flags = FS.flagModes[str];
+ if (typeof flags === 'undefined') {
+ throw new Error('Unknown file open mode: ' + str);
+ }
+ return flags;
+ },flagsToPermissionString:function (flag) {
+ var perms = ['r', 'w', 'rw'][flag & 3];
+ if ((flag & 512)) {
+ perms += 'w';
+ }
+ return perms;
+ },nodePermissions:function (node, perms) {
+ if (FS.ignorePermissions) {
+ return 0;
+ }
+ // return 0 if any user, group or owner bits are set.
+ if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
+ return ERRNO_CODES.EACCES;
+ } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
+ return ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },mayLookup:function (dir) {
+ var err = FS.nodePermissions(dir, 'x');
+ if (err) return err;
+ if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
+ return 0;
+ },mayCreate:function (dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return ERRNO_CODES.EEXIST;
+ } catch (e) {
+ }
+ return FS.nodePermissions(dir, 'wx');
+ },mayDelete:function (dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name);
+ } catch (e) {
+ return e.errno;
+ }
+ var err = FS.nodePermissions(dir, 'wx');
+ if (err) {
+ return err;
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return ERRNO_CODES.ENOTDIR;
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return ERRNO_CODES.EBUSY;
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return 0;
+ },mayOpen:function (node, flags) {
+ if (!node) {
+ return ERRNO_CODES.ENOENT;
+ }
+ if (FS.isLink(node.mode)) {
+ return ERRNO_CODES.ELOOP;
+ } else if (FS.isDir(node.mode)) {
+ if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write
+ (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only)
+ return ERRNO_CODES.EISDIR;
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
+ },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
+ fd_start = fd_start || 0;
+ fd_end = fd_end || FS.MAX_OPEN_FDS;
+ for (var fd = fd_start; fd <= fd_end; fd++) {
+ if (!FS.streams[fd]) {
+ return fd;
+ }
+ }
+ throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
+ },getStream:function (fd) {
+ return FS.streams[fd];
+ },createStream:function (stream, fd_start, fd_end) {
+ if (!FS.FSStream) {
+ FS.FSStream = function(){};
+ FS.FSStream.prototype = {};
+ // compatibility
+ Object.defineProperties(FS.FSStream.prototype, {
+ object: {
+ get: function() { return this.node; },
+ set: function(val) { this.node = val; }
+ },
+ isRead: {
+ get: function() { return (this.flags & 2097155) !== 1; }
+ },
+ isWrite: {
+ get: function() { return (this.flags & 2097155) !== 0; }
+ },
+ isAppend: {
+ get: function() { return (this.flags & 1024); }
+ }
+ });
+ }
+ // clone it, so we can return an instance of FSStream
+ var newStream = new FS.FSStream();
+ for (var p in stream) {
+ newStream[p] = stream[p];
+ }
+ stream = newStream;
+ var fd = FS.nextfd(fd_start, fd_end);
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream;
+ },closeStream:function (fd) {
+ FS.streams[fd] = null;
+ },chrdev_stream_ops:{open:function (stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ // override node's stream ops with the device's
+ stream.stream_ops = device.stream_ops;
+ // forward the open call
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ },llseek:function () {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }},major:function (dev) {
+ return ((dev) >> 8);
+ },minor:function (dev) {
+ return ((dev) & 0xff);
+ },makedev:function (ma, mi) {
+ return ((ma) << 8 | (mi));
+ },registerDevice:function (dev, ops) {
+ FS.devices[dev] = { stream_ops: ops };
+ },getDevice:function (dev) {
+ return FS.devices[dev];
+ },getMounts:function (mount) {
+ var mounts = [];
+ var check = [mount];
+
+ while (check.length) {
+ var m = check.pop();
+
+ mounts.push(m);
+
+ check.push.apply(check, m.mounts);
+ }
+
+ return mounts;
+ },syncfs:function (populate, callback) {
+ if (typeof(populate) === 'function') {
+ callback = populate;
+ populate = false;
+ }
+
+ FS.syncFSRequests++;
+
+ if (FS.syncFSRequests > 1) {
+ console.log('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work');
+ }
+
+ var mounts = FS.getMounts(FS.root.mount);
+ var completed = 0;
+
+ function doCallback(err) {
+ assert(FS.syncFSRequests > 0);
+ FS.syncFSRequests--;
+ return callback(err);
+ }
+
+ function done(err) {
+ if (err) {
+ if (!done.errored) {
+ done.errored = true;
+ return doCallback(err);
+ }
+ return;
+ }
+ if (++completed >= mounts.length) {
+ doCallback(null);
+ }
+ };
+
+ // sync all mounts
+ mounts.forEach(function (mount) {
+ if (!mount.type.syncfs) {
+ return done(null);
+ }
+ mount.type.syncfs(mount, populate, done);
+ });
+ },mount:function (type, opts, mountpoint) {
+ var root = mountpoint === '/';
+ var pseudo = !mountpoint;
+ var node;
+
+ if (root && FS.root) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ } else if (!root && !pseudo) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ mountpoint = lookup.path; // use the absolute path
+ node = lookup.node;
+
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+
+ if (!FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ }
+
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ mounts: []
+ };
+
+ // create a root node for the fs
+ var mountRoot = type.mount(mount);
+ mountRoot.mount = mount;
+ mount.root = mountRoot;
+
+ if (root) {
+ FS.root = mountRoot;
+ } else if (node) {
+ // set as a mountpoint
+ node.mounted = mount;
+
+ // add the new mount to the current mount's children
+ if (node.mount) {
+ node.mount.mounts.push(mount);
+ }
+ }
+
+ return mountRoot;
+ },unmount:function (mountpoint) {
+ var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
+
+ if (!FS.isMountpoint(lookup.node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+
+ // destroy the nodes for this mount, and all its child mounts
+ var node = lookup.node;
+ var mount = node.mounted;
+ var mounts = FS.getMounts(mount);
+
+ Object.keys(FS.nameTable).forEach(function (hash) {
+ var current = FS.nameTable[hash];
+
+ while (current) {
+ var next = current.name_next;
+
+ if (mounts.indexOf(current.mount) !== -1) {
+ FS.destroyNode(current);
+ }
+
+ current = next;
+ }
+ });
+
+ // no longer a mountpoint
+ node.mounted = null;
+
+ // remove this mount from the child mounts
+ var idx = node.mount.mounts.indexOf(mount);
+ assert(idx !== -1);
+ node.mount.mounts.splice(idx, 1);
+ },lookup:function (parent, name) {
+ return parent.node_ops.lookup(parent, name);
+ },mknod:function (path, mode, dev) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ if (!name || name === '.' || name === '..') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.mayCreate(parent, name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev);
+ },create:function (path, mode) {
+ mode = mode !== undefined ? mode : 438 /* 0666 */;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0);
+ },mkdir:function (path, mode) {
+ mode = mode !== undefined ? mode : 511 /* 0777 */;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0);
+ },mkdirTree:function (path, mode) {
+ var dirs = path.split('/');
+ var d = '';
+ for (var i = 0; i < dirs.length; ++i) {
+ if (!dirs[i]) continue;
+ d += '/' + dirs[i];
+ try {
+ FS.mkdir(d, mode);
+ } catch(e) {
+ if (e.errno != ERRNO_CODES.EEXIST) throw e;
+ }
+ }
+ },mkdev:function (path, mode, dev) {
+ if (typeof(dev) === 'undefined') {
+ dev = mode;
+ mode = 438 /* 0666 */;
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev);
+ },symlink:function (oldpath, newpath) {
+ if (!PATH.resolve(oldpath)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var lookup = FS.lookupPath(newpath, { parent: true });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ var newname = PATH.basename(newpath);
+ var err = FS.mayCreate(parent, newname);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath);
+ },rename:function (old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ // parents must exist
+ var lookup, old_dir, new_dir;
+ try {
+ lookup = FS.lookupPath(old_path, { parent: true });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, { parent: true });
+ new_dir = lookup.node;
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ // need to be part of the same mount
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
+ }
+ // source must exist
+ var old_node = FS.lookupNode(old_dir, old_name);
+ // old path should not be an ancestor of the new path
+ var relative = PATH.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ // new path should not be an ancestor of the old path
+ relative = PATH.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== '.') {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
+ }
+ // see if the new path already exists
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name);
+ } catch (e) {
+ // not fatal
+ }
+ // early out if nothing needs to change
+ if (old_node === new_node) {
+ return;
+ }
+ // we'll need to delete the old entry
+ var isdir = FS.isDir(old_node.mode);
+ var err = FS.mayDelete(old_dir, old_name, isdir);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ // need delete permissions if we'll be overwriting.
+ // need create permissions if new doesn't already exist.
+ err = new_node ?
+ FS.mayDelete(new_dir, new_name, isdir) :
+ FS.mayCreate(new_dir, new_name);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ // if we are going to change the parent, check write permissions
+ if (new_dir !== old_dir) {
+ err = FS.nodePermissions(old_dir, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['willMovePath']) {
+ FS.trackingDelegate['willMovePath'](old_path, new_path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ // remove the node from the lookup hash
+ FS.hashRemoveNode(old_node);
+ // do the underlying fs rename
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name);
+ } catch (e) {
+ throw e;
+ } finally {
+ // add the node back to the hash (in case node_ops.rename
+ // changed its name)
+ FS.hashAddNode(old_node);
+ }
+ try {
+ if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
+ }
+ },rmdir:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, true);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ return node.node_ops.readdir(node);
+ },unlink:function (path) {
+ var lookup = FS.lookupPath(path, { parent: true });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var err = FS.mayDelete(parent, name, false);
+ if (err) {
+ // According to POSIX, we should map EISDIR to EPERM, but
+ // we instead do what Linux does (and we must, as we use
+ // the musl linux libc).
+ throw new FS.ErrnoError(err);
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
+ }
+ try {
+ if (FS.trackingDelegate['willDeletePath']) {
+ FS.trackingDelegate['willDeletePath'](path);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node);
+ try {
+ if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
+ }
+ },readlink:function (path) {
+ var lookup = FS.lookupPath(path);
+ var link = lookup.node;
+ if (!link) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
+ },stat:function (path, dontFollow) {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ var node = lookup.node;
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ return node.node_ops.getattr(node);
+ },lstat:function (path) {
+ return FS.stat(path, true);
+ },chmod:function (path, mode, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ mode: (mode & 4095) | (node.mode & ~4095),
+ timestamp: Date.now()
+ });
+ },lchmod:function (path, mode) {
+ FS.chmod(path, mode, true);
+ },fchmod:function (fd, mode) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chmod(stream.node, mode);
+ },chown:function (path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: !dontFollow });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ // we ignore the uid / gid for now
+ });
+ },lchown:function (path, uid, gid) {
+ FS.chown(path, uid, gid, true);
+ },fchown:function (fd, uid, gid) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ FS.chown(stream.node, uid, gid);
+ },truncate:function (path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var node;
+ if (typeof path === 'string') {
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ } else {
+ node = path;
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(ERRNO_CODES.EPERM);
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var err = FS.nodePermissions(node, 'w');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ });
+ },ftruncate:function (fd, len) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ FS.truncate(stream.node, len);
+ },utime:function (path, atime, mtime) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ });
+ },open:function (path, flags, mode, fd_start, fd_end) {
+ if (path === "") {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
+ mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
+ if ((flags & 64)) {
+ mode = (mode & 4095) | 32768;
+ } else {
+ mode = 0;
+ }
+ var node;
+ if (typeof path === 'object') {
+ node = path;
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node;
+ } catch (e) {
+ // ignore
+ }
+ }
+ // perhaps we need to create the node
+ var created = false;
+ if ((flags & 64)) {
+ if (node) {
+ // if O_CREAT and O_EXCL are set, error out if the node already exists
+ if ((flags & 128)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
+ }
+ } else {
+ // node doesn't exist, try to create it
+ node = FS.mknod(path, mode, 0);
+ created = true;
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ // can't truncate a device
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512;
+ }
+ // if asked only for a directory, then this must be one
+ if ((flags & 65536) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ // check permissions, if this is not a file we just created now (it is ok to
+ // create and write to a file with read-only permissions; it is read-only
+ // for later use)
+ if (!created) {
+ var err = FS.mayOpen(node, flags);
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ }
+ // do truncation if necessary
+ if ((flags & 512)) {
+ FS.truncate(node, 0);
+ }
+ // we've already handled these, don't pass down to the underlying vfs
+ flags &= ~(128 | 512);
+
+ // register the stream with the filesystem
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node), // we want the absolute path to the node
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ // used by the file family libc calls (fopen, fwrite, ferror, etc.)
+ ungotten: [],
+ error: false
+ }, fd_start, fd_end);
+ // call the new stream's open function
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream);
+ }
+ if (Module['logReadFiles'] && !(flags & 1)) {
+ if (!FS.readFiles) FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1;
+ Module['printErr']('read file: ' + path);
+ }
+ }
+ try {
+ if (FS.trackingDelegate['onOpenFile']) {
+ var trackingFlags = 0;
+ if ((flags & 2097155) !== 1) {
+ trackingFlags |= FS.tracking.openFlags.READ;
+ }
+ if ((flags & 2097155) !== 0) {
+ trackingFlags |= FS.tracking.openFlags.WRITE;
+ }
+ FS.trackingDelegate['onOpenFile'](path, trackingFlags);
+ }
+ } catch(e) {
+ console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message);
+ }
+ return stream;
+ },close:function (stream) {
+ if (stream.getdents) stream.getdents = null; // free readdir state
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream);
+ }
+ } catch (e) {
+ throw e;
+ } finally {
+ FS.closeStream(stream.fd);
+ }
+ },llseek:function (stream, offset, whence) {
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ stream.position = stream.stream_ops.llseek(stream, offset, whence);
+ stream.ungotten = [];
+ return stream.position;
+ },read:function (stream, buffer, offset, length, position) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking) stream.position += bytesRead;
+ return bytesRead;
+ },write:function (stream, buffer, offset, length, position, canOwn) {
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if (stream.flags & 1024) {
+ // seek to the end before writing in append mode
+ FS.llseek(stream, 0, 2);
+ }
+ var seeking = true;
+ if (typeof position === 'undefined') {
+ position = stream.position;
+ seeking = false;
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking) stream.position += bytesWritten;
+ try {
+ if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
+ } catch(e) {
+ console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message);
+ }
+ return bytesWritten;
+ },allocate:function (stream, offset, length) {
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
+ }
+ stream.stream_ops.allocate(stream, offset, length);
+ },mmap:function (stream, buffer, offset, length, position, prot, flags) {
+ // TODO if PROT is PROT_WRITE, make sure we have write access
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(ERRNO_CODES.EACCES);
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
+ }
+ return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
+ },msync:function (stream, buffer, offset, length, mmapFlags) {
+ if (!stream || !stream.stream_ops.msync) {
+ return 0;
+ }
+ return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
+ },munmap:function (stream) {
+ return 0;
+ },ioctl:function (stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg);
+ },readFile:function (path, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'r';
+ opts.encoding = opts.encoding || 'binary';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === 'utf8') {
+ ret = UTF8ArrayToString(buf, 0);
+ } else if (opts.encoding === 'binary') {
+ ret = buf;
+ }
+ FS.close(stream);
+ return ret;
+ },writeFile:function (path, data, opts) {
+ opts = opts || {};
+ opts.flags = opts.flags || 'w';
+ opts.encoding = opts.encoding || 'utf8';
+ if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
+ throw new Error('Invalid encoding type "' + opts.encoding + '"');
+ }
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (opts.encoding === 'utf8') {
+ var buf = new Uint8Array(lengthBytesUTF8(data)+1);
+ var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
+ FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);
+ } else if (opts.encoding === 'binary') {
+ FS.write(stream, data, 0, data.length, 0, opts.canOwn);
+ }
+ FS.close(stream);
+ },cwd:function () {
+ return FS.currentPath;
+ },chdir:function (path) {
+ var lookup = FS.lookupPath(path, { follow: true });
+ if (lookup.node === null) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
+ }
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
+ }
+ var err = FS.nodePermissions(lookup.node, 'x');
+ if (err) {
+ throw new FS.ErrnoError(err);
+ }
+ FS.currentPath = lookup.path;
+ },createDefaultDirectories:function () {
+ FS.mkdir('/tmp');
+ FS.mkdir('/home');
+ FS.mkdir('/home/web_user');
+ },createDefaultDevices:function () {
+ // create /dev
+ FS.mkdir('/dev');
+ // setup /dev/null
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: function() { return 0; },
+ write: function(stream, buffer, offset, length, pos) { return length; }
+ });
+ FS.mkdev('/dev/null', FS.makedev(1, 3));
+ // setup /dev/tty and /dev/tty1
+ // stderr needs to print output using Module['printErr']
+ // so we register a second tty just for it.
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev('/dev/tty', FS.makedev(5, 0));
+ FS.mkdev('/dev/tty1', FS.makedev(6, 0));
+ // setup /dev/[u]random
+ var random_device;
+ if (typeof crypto !== 'undefined') {
+ // for modern web browsers
+ var randomBuffer = new Uint8Array(1);
+ random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; };
+ } else if (ENVIRONMENT_IS_NODE) {
+ // for nodejs
+ random_device = function() { return require('crypto').randomBytes(1)[0]; };
+ } else {
+ // default for ES5 platforms
+ random_device = function() { return (Math.random()*256)|0; };
+ }
+ FS.createDevice('/dev', 'random', random_device);
+ FS.createDevice('/dev', 'urandom', random_device);
+ // we're not going to emulate the actual shm device,
+ // just create the tmp dirs that reside in it commonly
+ FS.mkdir('/dev/shm');
+ FS.mkdir('/dev/shm/tmp');
+ },createSpecialDirectories:function () {
+ // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname)
+ FS.mkdir('/proc');
+ FS.mkdir('/proc/self');
+ FS.mkdir('/proc/self/fd');
+ FS.mount({
+ mount: function() {
+ var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73);
+ node.node_ops = {
+ lookup: function(parent, name) {
+ var fd = +name;
+ var stream = FS.getStream(fd);
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ var ret = {
+ parent: null,
+ mount: { mountpoint: 'fake' },
+ node_ops: { readlink: function() { return stream.path } }
+ };
+ ret.parent = ret; // make it look like a simple root node
+ return ret;
+ }
+ };
+ return node;
+ }
+ }, {}, '/proc/self/fd');
+ },createStandardStreams:function () {
+ // TODO deprecate the old functionality of a single
+ // input / output callback and that utilizes FS.createDevice
+ // and instead require a unique set of stream ops
+
+ // by default, we symlink the standard streams to the
+ // default tty devices. however, if the standard streams
+ // have been overwritten we create a unique device for
+ // them instead.
+ if (Module['stdin']) {
+ FS.createDevice('/dev', 'stdin', Module['stdin']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdin');
+ }
+ if (Module['stdout']) {
+ FS.createDevice('/dev', 'stdout', null, Module['stdout']);
+ } else {
+ FS.symlink('/dev/tty', '/dev/stdout');
+ }
+ if (Module['stderr']) {
+ FS.createDevice('/dev', 'stderr', null, Module['stderr']);
+ } else {
+ FS.symlink('/dev/tty1', '/dev/stderr');
+ }
+
+ // open default streams for the stdin, stdout and stderr devices
+ var stdin = FS.open('/dev/stdin', 'r');
+ assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
+
+ var stdout = FS.open('/dev/stdout', 'w');
+ assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
+
+ var stderr = FS.open('/dev/stderr', 'w');
+ assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
+ },ensureErrnoError:function () {
+ if (FS.ErrnoError) return;
+ FS.ErrnoError = function ErrnoError(errno, node) {
+ //Module.printErr(stackTrace()); // useful for debugging
+ this.node = node;
+ this.setErrno = function(errno) {
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break;
+ }
+ }
+ };
+ this.setErrno(errno);
+ this.message = ERRNO_MESSAGES[errno];
+ if (this.stack) this.stack = demangleAll(this.stack);
+ };
+ FS.ErrnoError.prototype = new Error();
+ FS.ErrnoError.prototype.constructor = FS.ErrnoError;
+ // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
+ [ERRNO_CODES.ENOENT].forEach(function(code) {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = '<generic error, no stack>';
+ });
+ },staticInit:function () {
+ FS.ensureErrnoError();
+
+ FS.nameTable = new Array(4096);
+
+ FS.mount(MEMFS, {}, '/');
+
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ FS.createSpecialDirectories();
+
+ FS.filesystems = {
+ 'MEMFS': MEMFS,
+ 'IDBFS': IDBFS,
+ 'NODEFS': NODEFS,
+ 'WORKERFS': WORKERFS,
+ };
+ },init:function (input, output, error) {
+ assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
+ FS.init.initialized = true;
+
+ FS.ensureErrnoError();
+
+ // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
+ Module['stdin'] = input || Module['stdin'];
+ Module['stdout'] = output || Module['stdout'];
+ Module['stderr'] = error || Module['stderr'];
+
+ FS.createStandardStreams();
+ },quit:function () {
+ FS.init.initialized = false;
+ // force-flush all streams, so we get musl std streams printed out
+ var fflush = Module['_fflush'];
+ if (fflush) fflush(0);
+ // close all of our streams
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue;
+ }
+ FS.close(stream);
+ }
+ },getMode:function (canRead, canWrite) {
+ var mode = 0;
+ if (canRead) mode |= 292 | 73;
+ if (canWrite) mode |= 146;
+ return mode;
+ },joinPath:function (parts, forceRelative) {
+ var path = PATH.join.apply(null, parts);
+ if (forceRelative && path[0] == '/') path = path.substr(1);
+ return path;
+ },absolutePath:function (relative, base) {
+ return PATH.resolve(base, relative);
+ },standardizePath:function (path) {
+ return PATH.normalize(path);
+ },findObject:function (path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (ret.exists) {
+ return ret.object;
+ } else {
+ ___setErrNo(ret.error);
+ return null;
+ }
+ },analyzePath:function (path, dontResolveLastLink) {
+ // operate from within the context of the symlink's target
+ try {
+ var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ path = lookup.path;
+ } catch (e) {
+ }
+ var ret = {
+ isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
+ parentExists: false, parentPath: null, parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, { parent: true });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === '/';
+ } catch (e) {
+ ret.error = e.errno;
+ };
+ return ret;
+ },createFolder:function (parent, name, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.mkdir(path, mode);
+ },createPath:function (parent, path, canRead, canWrite) {
+ parent = typeof parent === 'string' ? parent : FS.getPath(parent);
+ var parts = path.split('/').reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part) continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current);
+ } catch (e) {
+ // ignore EEXIST
+ }
+ parent = current;
+ }
+ return current;
+ },createFile:function (parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(canRead, canWrite);
+ return FS.create(path, mode);
+ },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
+ var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
+ var mode = FS.getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data === 'string') {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
+ data = arr;
+ }
+ // make sure we can write to the file
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, 'w');
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode);
+ }
+ return node;
+ },createDevice:function (parent, name, input, output) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ var mode = FS.getMode(!!input, !!output);
+ if (!FS.createDevice.major) FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ // Create a fake device that a set of stream ops to emulate
+ // the old behavior.
+ FS.registerDevice(dev, {
+ open: function(stream) {
+ stream.seekable = false;
+ },
+ close: function(stream) {
+ // flush any pending line data
+ if (output && output.buffer && output.buffer.length) {
+ output(10);
+ }
+ },
+ read: function(stream, buffer, offset, length, pos /* ignored */) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input();
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset+i] = result;
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now();
+ }
+ return bytesRead;
+ },
+ write: function(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset+i]);
+ } catch (e) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now();
+ }
+ return i;
+ }
+ });
+ return FS.mkdev(path, mode, dev);
+ },createLink:function (parent, name, target, canRead, canWrite) {
+ var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
+ return FS.symlink(target, path);
+ },forceLoadFile:function (obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
+ var success = true;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
+ } else if (Module['read']) {
+ // Command-line.
+ try {
+ // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
+ // read() will try to parse UTF8.
+ obj.contents = intArrayFromString(Module['read'](obj.url), true);
+ obj.usedBytes = obj.contents.length;
+ } catch (e) {
+ success = false;
+ }
+ } else {
+ throw new Error('Cannot load without read() or XMLHttpRequest.');
+ }
+ if (!success) ___setErrNo(ERRNO_CODES.EIO);
+ return success;
+ },createLazyFile:function (parent, name, url, canRead, canWrite) {
+ // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
+ function LazyUint8Array() {
+ this.lengthKnown = false;
+ this.chunks = []; // Loaded chunks. Index is the chunk number
+ }
+ LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
+ if (idx > this.length-1 || idx < 0) {
+ return undefined;
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = (idx / this.chunkSize)|0;
+ return this.getter(chunkNum)[chunkOffset];
+ }
+ LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
+ this.getter = getter;
+ }
+ LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
+ // Find length
+ var xhr = new XMLHttpRequest();
+ xhr.open('HEAD', url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
+
+ var chunkSize = 1024*1024; // Chunk size in bytes
+
+ if (!hasByteServing) chunkSize = datalength;
+
+ // Function to get a range from the remote URL.
+ var doXHR = (function(from, to) {
+ if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
+
+ // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, false);
+ if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+
+ // Some hints to the browser that we want binary data.
+ if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType('text/plain; charset=x-user-defined');
+ }
+
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || []);
+ } else {
+ return intArrayFromString(xhr.responseText || '', true);
+ }
+ });
+ var lazyArray = this;
+ lazyArray.setDataGetter(function(chunkNum) {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum+1) * chunkSize - 1; // including this byte
+ end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end);
+ }
+ if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum];
+ });
+
+ if (usesGzip || !datalength) {
+ // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length
+ chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file
+ datalength = this.getter(0).length;
+ chunkSize = datalength;
+ console.log("LazyFiles on gzip forces download of the whole file when length is accessed");
+ }
+
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true;
+ }
+ if (typeof XMLHttpRequest !== 'undefined') {
+ if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
+ var lazyArray = new LazyUint8Array();
+ Object.defineProperties(lazyArray, {
+ length: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._length;
+ }
+ },
+ chunkSize: {
+ get: function() {
+ if(!this.lengthKnown) {
+ this.cacheLength();
+ }
+ return this._chunkSize;
+ }
+ }
+ });
+
+ var properties = { isDevice: false, contents: lazyArray };
+ } else {
+ var properties = { isDevice: false, url: url };
+ }
+
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ // This is a total hack, but I want to get this lazy file code out of the
+ // core of MEMFS. If we want to keep this lazy file concept I feel it should
+ // be its own thin LAZYFS proxying calls to MEMFS.
+ if (properties.contents) {
+ node.contents = properties.contents;
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url;
+ }
+ // Add a function that defers querying the file size until it is asked the first time.
+ Object.defineProperties(node, {
+ usedBytes: {
+ get: function() { return this.contents.length; }
+ }
+ });
+ // override each stream op with one that tries to force load the lazy file first
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach(function(key) {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = function forceLoadLazyFile() {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ return fn.apply(null, arguments);
+ };
+ });
+ // use a custom read function
+ stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
+ if (!FS.forceLoadFile(node)) {
+ throw new FS.ErrnoError(ERRNO_CODES.EIO);
+ }
+ var contents = stream.node.contents;
+ if (position >= contents.length)
+ return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) { // normal array
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i];
+ }
+ } else {
+ for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
+ buffer[offset + i] = contents.get(position + i);
+ }
+ }
+ return size;
+ };
+ node.stream_ops = stream_ops;
+ return node;
+ },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
+ Browser.init(); // XXX perhaps this method should move onto Browser?
+ // TODO we should allow people to just pass in a complete filename instead
+ // of parent and name being that we just join them anyways
+ var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
+ var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname
+ function processData(byteArray) {
+ function finish(byteArray) {
+ if (preFinish) preFinish();
+ if (!dontCreateFile) {
+ FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
+ }
+ if (onload) onload();
+ removeRunDependency(dep);
+ }
+ var handled = false;
+ Module['preloadPlugins'].forEach(function(plugin) {
+ if (handled) return;
+ if (plugin['canHandle'](fullname)) {
+ plugin['handle'](byteArray, fullname, finish, function() {
+ if (onerror) onerror();
+ removeRunDependency(dep);
+ });
+ handled = true;
+ }
+ });
+ if (!handled) finish(byteArray);
+ }
+ addRunDependency(dep);
+ if (typeof url == 'string') {
+ Browser.asyncLoad(url, function(byteArray) {
+ processData(byteArray);
+ }, onerror);
+ } else {
+ processData(url);
+ }
+ },indexedDB:function () {
+ return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
+ },DB_NAME:function () {
+ return 'EM_FS_' + window.location.pathname;
+ },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
+ console.log('creating db');
+ var db = openRequest.result;
+ db.createObjectStore(FS.DB_STORE_NAME);
+ };
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var putRequest = files.put(FS.analyzePath(path).object.contents, path);
+ putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
+ putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ },loadFilesFromDB:function (paths, onload, onerror) {
+ onload = onload || function(){};
+ onerror = onerror || function(){};
+ var indexedDB = FS.indexedDB();
+ try {
+ var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
+ } catch (e) {
+ return onerror(e);
+ }
+ openRequest.onupgradeneeded = onerror; // no database to load from
+ openRequest.onsuccess = function openRequest_onsuccess() {
+ var db = openRequest.result;
+ try {
+ var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
+ } catch(e) {
+ onerror(e);
+ return;
+ }
+ var files = transaction.objectStore(FS.DB_STORE_NAME);
+ var ok = 0, fail = 0, total = paths.length;
+ function finish() {
+ if (fail == 0) onload(); else onerror();
+ }
+ paths.forEach(function(path) {
+ var getRequest = files.get(path);
+ getRequest.onsuccess = function getRequest_onsuccess() {
+ if (FS.analyzePath(path).exists) {
+ FS.unlink(path);
+ }
+ FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
+ ok++;
+ if (ok + fail == total) finish();
+ };
+ getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
+ });
+ transaction.onerror = onerror;
+ };
+ openRequest.onerror = onerror;
+ }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) {
+ if (path[0] !== '/') {
+ // relative path
+ var dir;
+ if (dirfd === -100) {
+ dir = FS.cwd();
+ } else {
+ var dirstream = FS.getStream(dirfd);
+ if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ dir = dirstream.path;
+ }
+ path = PATH.join2(dir, path);
+ }
+ return path;
+ },doStat:function (func, path, buf) {
+ try {
+ var stat = func(path);
+ } catch (e) {
+ if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
+ // an error occurred while trying to look up the path; we should just report ENOTDIR
+ return -ERRNO_CODES.ENOTDIR;
+ }
+ throw e;
+ }
+ HEAP32[((buf)>>2)]=stat.dev;
+ HEAP32[(((buf)+(4))>>2)]=0;
+ HEAP32[(((buf)+(8))>>2)]=stat.ino;
+ HEAP32[(((buf)+(12))>>2)]=stat.mode;
+ HEAP32[(((buf)+(16))>>2)]=stat.nlink;
+ HEAP32[(((buf)+(20))>>2)]=stat.uid;
+ HEAP32[(((buf)+(24))>>2)]=stat.gid;
+ HEAP32[(((buf)+(28))>>2)]=stat.rdev;
+ HEAP32[(((buf)+(32))>>2)]=0;
+ HEAP32[(((buf)+(36))>>2)]=stat.size;
+ HEAP32[(((buf)+(40))>>2)]=4096;
+ HEAP32[(((buf)+(44))>>2)]=stat.blocks;
+ HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(52))>>2)]=0;
+ HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(60))>>2)]=0;
+ HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0;
+ HEAP32[(((buf)+(68))>>2)]=0;
+ HEAP32[(((buf)+(72))>>2)]=stat.ino;
+ return 0;
+ },doMsync:function (addr, stream, len, flags) {
+ var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
+ FS.msync(stream, buffer, 0, len, flags);
+ },doMkdir:function (path, mode) {
+ // remove a trailing slash, if one - /a/b/ has basename of '', but
+ // we want to create b in the context of this function
+ path = PATH.normalize(path);
+ if (path[path.length-1] === '/') path = path.substr(0, path.length-1);
+ FS.mkdir(path, mode, 0);
+ return 0;
+ },doMknod:function (path, mode, dev) {
+ // we don't want this in the JS API as it uses mknod to create all nodes.
+ switch (mode & 61440) {
+ case 32768:
+ case 8192:
+ case 24576:
+ case 4096:
+ case 49152:
+ break;
+ default: return -ERRNO_CODES.EINVAL;
+ }
+ FS.mknod(path, mode, dev);
+ return 0;
+ },doReadlink:function (path, buf, bufsize) {
+ if (bufsize <= 0) return -ERRNO_CODES.EINVAL;
+ var ret = FS.readlink(path);
+
+ var len = Math.min(bufsize, lengthBytesUTF8(ret));
+ var endChar = HEAP8[buf+len];
+ stringToUTF8(ret, buf, bufsize+1);
+ // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!)
+ // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write.
+ HEAP8[buf+len] = endChar;
+
+ return len;
+ },doAccess:function (path, amode) {
+ if (amode & ~7) {
+ // need a valid mode
+ return -ERRNO_CODES.EINVAL;
+ }
+ var node;
+ var lookup = FS.lookupPath(path, { follow: true });
+ node = lookup.node;
+ var perms = '';
+ if (amode & 4) perms += 'r';
+ if (amode & 2) perms += 'w';
+ if (amode & 1) perms += 'x';
+ if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) {
+ return -ERRNO_CODES.EACCES;
+ }
+ return 0;
+ },doDup:function (path, flags, suggestFD) {
+ var suggest = FS.getStream(suggestFD);
+ if (suggest) FS.close(suggest);
+ return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
+ },doReadv:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.read(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ if (curr < len) break; // nothing more to read
+ }
+ return ret;
+ },doWritev:function (stream, iov, iovcnt, offset) {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAP32[(((iov)+(i*8))>>2)];
+ var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
+ var curr = FS.write(stream, HEAP8,ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ }
+ return ret;
+ },varargs:0,get:function (varargs) {
SYSCALLS.varargs += 4;
var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
return ret;
},getStr:function () {
var ret = Pointer_stringify(SYSCALLS.get());
return ret;
+ },getStreamFromFD:function () {
+ var stream = FS.getStream(SYSCALLS.get());
+ if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return stream;
+ },getSocketFromFD:function () {
+ var socket = SOCKFS.getSocket(SYSCALLS.get());
+ if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
+ return socket;
+ },getSocketAddress:function (allowNull) {
+ var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();
+ if (allowNull && addrp === 0) return null;
+ var info = __read_sockaddr(addrp, addrlen);
+ if (info.errno) throw new FS.ErrnoError(info.errno);
+ info.addr = DNS.lookup_addr(info.addr) || info.addr;
+ return info;
},get64:function () {
var low = SYSCALLS.get(), high = SYSCALLS.get();
if (low >= 0) assert(high === 0);
@@ -3374,10 +6488,42 @@ function copyTempDouble(ptr) {
return low;
},getZero:function () {
assert(SYSCALLS.get() === 0);
- }};function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;
+ }};function ___syscall54(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 54, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// ioctl
- return 0;
+ var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();
+ switch (op) {
+ case 21505: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ case 21506: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0; // no-op, not actually adjusting terminal settings
+ }
+ case 21519: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ var argp = SYSCALLS.get();
+ HEAP32[((argp)>>2)]=0;
+ return 0;
+ }
+ case 21520: {
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return -ERRNO_CODES.EINVAL; // not supported
+ }
+ case 21531: {
+ var argp = SYSCALLS.get();
+ return FS.ioctl(stream, op, argp);
+ }
+ case 21523: {
+ // TODO: in theory we should write to the winsize struct that gets
+ // passed in, but for now musl doesn't read anything on it
+ if (!stream.tty) return -ERRNO_CODES.ENOTTY;
+ return 0;
+ }
+ default: abort('bad ioctl syscall ' + op);
+ }
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4367,6 +7513,29 @@ function copyTempDouble(ptr) {
return 0;
}
+ function _utime(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(12, path, times);
+ // int utime(const char *path, const struct utimbuf *times);
+ // http://pubs.opengroup.org/onlinepubs/009695399/basedefs/utime.h.html
+ var time;
+ if (times) {
+ // NOTE: We don't keep track of access timestamps.
+ var offset = 4;
+ time = HEAP32[(((times)+(offset))>>2)];
+ time *= 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx['copyTexImage2D'](x0, x1, x2, x3, x4, x5, x6, x7) }
function _emscripten_glTexParameterfv(target, pname, params) {
@@ -4374,6 +7543,220 @@ function copyTempDouble(ptr) {
GLctx.texParameterf(target, pname, param);
}
+
+
+
+ var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};
+
+
+ var __pthread_ptr=0;
+
+ var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr, isMainBrowserThread, isMainRuntimeThread) {
+ pthreadPtr = pthreadPtr|0;
+ isMainBrowserThread = isMainBrowserThread|0;
+ isMainRuntimeThread = isMainRuntimeThread|0;
+ __pthread_ptr = pthreadPtr;
+ __pthread_is_main_browser_thread = isMainBrowserThread;
+ __pthread_is_main_runtime_thread = isMainRuntimeThread;
+ }
+
+ var _emscripten_main_thread_process_queued_calls=undefined;var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkerPool:[],runningWorkers:[],initMainThreadBlock:function () {
+ if (ENVIRONMENT_IS_PTHREAD) return undefined;
+ PThread.mainThreadBlock = allocate(244, "i32*", ALLOC_STATIC);
+ __register_pthread_ptr(PThread.mainThreadBlock, /*isMainBrowserThread=*/!ENVIRONMENT_IS_WORKER, /*isMainRuntimeThread=*/1); // Pass the thread address inside the asm.js scope to store it for fast access that avoids the need for a FFI out.
+
+ for (var i = 0; i < 244/4; ++i) HEAPU32[PThread.mainThreadBlock/4+i] = 0;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((PThread.mainThreadBlock)+(24))>>2)]=PThread.mainThreadBlock;
+
+ // Allocate memory for thread-local storage.
+ var tlsMemory = allocate(128 * 4, "i32*", ALLOC_STATIC);
+ for (var i = 0; i < 128; ++i) HEAPU32[tlsMemory/4+i] = 0;
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 52 ) >> 2, PThread.mainThreadBlock); // Main thread ID.
+ Atomics.store(HEAPU32, (PThread.mainThreadBlock + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ },pthreads:{},pthreadIdCounter:2,exitHandlers:null,setThreadStatus:function () {},runExitHandlers:function () {
+ if (PThread.exitHandlers !== null) {
+ while (PThread.exitHandlers.length > 0) {
+ PThread.exitHandlers.pop()();
+ }
+ PThread.exitHandlers = null;
+ }
+
+ // Call into the musl function that runs destructors of all thread-specific data.
+ if (ENVIRONMENT_IS_PTHREAD && threadInfoStruct) ___pthread_tsd_run_dtors();
+ },threadExit:function (exitCode) {
+ var tb = _pthread_self();
+ if (tb) { // If we haven't yet exited?
+ Atomics.store(HEAPU32, (tb + 4 ) >> 2, exitCode);
+ // When we publish this, the main thread is free to deallocate the thread object and we are done.
+ // Therefore set threadInfoStruct = 0; above to 'release' the object in this worker thread.
+ Atomics.store(HEAPU32, (tb + 0 ) >> 2, 1);
+
+ // Disable all cancellation so that executing the cleanup handlers won't trigger another JS
+ // canceled exception to be thrown.
+ Atomics.store(HEAPU32, (tb + 72 ) >> 2, 1/*PTHREAD_CANCEL_DISABLE*/);
+ Atomics.store(HEAPU32, (tb + 76 ) >> 2, 0/*PTHREAD_CANCEL_DEFERRED*/);
+ PThread.runExitHandlers();
+
+ _emscripten_futex_wake(tb + 0, 2147483647);
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ threadInfoStruct = 0;
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // This worker no longer owns any WebGL OffscreenCanvases, so transfer them back to parent thread.
+ var transferList = [];
+
+
+ postMessage({ cmd: 'exit' });
+ }
+ }
+ },threadCancel:function () {
+ PThread.runExitHandlers();
+ Atomics.store(HEAPU32, (threadInfoStruct + 4 ) >> 2, -1/*PTHREAD_CANCELED*/);
+ Atomics.store(HEAPU32, (threadInfoStruct + 0 ) >> 2, 1); // Mark the thread as no longer running.
+ _emscripten_futex_wake(threadInfoStruct + 0, 2147483647); // wake all threads
+ threadInfoStruct = selfThreadId = 0; // Not hosting a pthread anymore in this worker, reset the info structures to null.
+ __register_pthread_ptr(0, 0, 0); // Unregister the thread block also inside the asm.js scope.
+ postMessage({ cmd: 'cancelDone' });
+ },terminateAllThreads:function () {
+ for (var t in PThread.pthreads) {
+ var pthread = PThread.pthreads[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.pthreads = {};
+ for (var t in PThread.unusedWorkerPool) {
+ var pthread = PThread.unusedWorkerPool[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.unusedWorkerPool = [];
+ for (var t in PThread.runningWorkers) {
+ var pthread = PThread.runningWorkers[t];
+ if (pthread) {
+ PThread.freeThreadData(pthread);
+ if (pthread.worker) pthread.worker.terminate();
+ }
+ }
+ PThread.runningWorkers = [];
+ },freeThreadData:function (pthread) {
+ if (!pthread) return;
+ if (pthread.threadInfoStruct) {
+ var tlsMemory = HEAP32[(((pthread.threadInfoStruct)+(116))>>2)];
+ HEAP32[(((pthread.threadInfoStruct)+(116))>>2)]=0;
+ _free(pthread.tlsMemory);
+ _free(pthread.threadInfoStruct);
+ }
+ pthread.threadInfoStruct = 0;
+ if (pthread.allocatedOwnStack && pthread.stackBase) _free(pthread.stackBase);
+ pthread.stackBase = 0;
+ if (pthread.worker) pthread.worker.pthread = null;
+ },receiveObjectTransfer:function (data) {
+ },allocateUnusedWorkers:function (numWorkers, onFinishedLoading) {
+ if (typeof SharedArrayBuffer === 'undefined') return; // No multithreading support, no-op.
+ Module['print']('Preallocating ' + numWorkers + ' workers for a pthread spawn pool.');
+
+ var numWorkersLoaded = 0;
+ for (var i = 0; i < numWorkers; ++i) {
+ var pthreadMainJs = 'pthread-main.js';
+ // Allow HTML module to configure the location where the 'pthread-main.js' file will be loaded from,
+ // either via Module.locateFile() function, or via Module.pthreadMainPrefixURL string. If neither
+ // of these are passed, then the default URL 'pthread-main.js' relative to the main html file is loaded.
+ if (typeof Module['locateFile'] === 'function') pthreadMainJs = Module['locateFile'](pthreadMainJs);
+ else if (Module['pthreadMainPrefixURL']) pthreadMainJs = Module['pthreadMainPrefixURL'] + pthreadMainJs;
+ var worker = new Worker(pthreadMainJs);
+
+ worker.onmessage = function(e) {
+ // If this message is intended to a recipient that is not the main thread, forward it to the target thread.
+ if (e.data.targetThread && e.data.targetThread != _pthread_self()) {
+ var thread = PThread.pthreads[e.data.targetThread];
+ if (thread) {
+ thread.worker.postMessage(e.data, e.data.transferList);
+ } else {
+ console.error('Internal error! Worker sent a message "' + e.data.cmd + '" to target pthread ' + e.data.targetThread + ', but that thread no longer exists!');
+ }
+ return;
+ }
+
+ if (e.data.cmd === 'processQueuedMainThreadWork') {
+ // TODO: Must post message to main Emscripten thread in PROXY_TO_WORKER mode.
+ _emscripten_main_thread_process_queued_calls();
+ } else if (e.data.cmd === 'spawnThread') {
+ __spawn_thread(e.data);
+ } else if (e.data.cmd === 'cleanupThread') {
+ __cleanup_thread(e.data.thread);
+ } else if (e.data.cmd === 'killThread') {
+ __kill_thread(e.data.thread);
+ } else if (e.data.cmd === 'cancelThread') {
+ __cancel_thread(e.data.thread);
+ } else if (e.data.cmd === 'loaded') {
+ ++numWorkersLoaded;
+ if (numWorkersLoaded === numWorkers && onFinishedLoading) {
+ onFinishedLoading();
+ }
+ } else if (e.data.cmd === 'print') {
+ Module['print']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'printErr') {
+ Module['printErr']('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'alert') {
+ alert('Thread ' + e.data.threadId + ': ' + e.data.text);
+ } else if (e.data.cmd === 'exit') {
+ // currently no-op
+ } else if (e.data.cmd === 'cancelDone') {
+ PThread.freeThreadData(worker.pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ // TODO: Free if detached.
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ } else if (e.data.cmd === 'objectTransfer') {
+ PThread.receiveObjectTransfer(e.data);
+ } else {
+ Module['printErr']("worker sent an unknown command " + e.data.cmd);
+ }
+ };
+
+ worker.onerror = function(e) {
+ Module['printErr']('pthread sent an error! ' + e.filename + ':' + e.lineno + ': ' + e.message);
+ };
+
+ // Allocate tempDoublePtr for the worker. This is done here on the worker's behalf, since we may need to do this statically
+ // if the runtime has not been loaded yet, etc. - so we just use getMemory, which is main-thread only.
+ var tempDoublePtr = getMemory(8); // TODO: leaks. Cleanup after worker terminates.
+
+ // Ask the new worker to load up the Emscripten-compiled page. This is a heavy operation.
+ worker.postMessage({
+ cmd: 'load',
+ url: currentScriptUrl,
+ buffer: HEAPU8.buffer,
+ tempDoublePtr: tempDoublePtr,
+ TOTAL_MEMORY: TOTAL_MEMORY,
+ STATICTOP: STATICTOP,
+ DYNAMIC_BASE: DYNAMIC_BASE,
+ DYNAMICTOP_PTR: DYNAMICTOP_PTR,
+ PthreadWorkerInit: PthreadWorkerInit
+ });
+ PThread.unusedWorkerPool.push(worker);
+ }
+ },getNewWorker:function () {
+ if (PThread.unusedWorkerPool.length == 0) PThread.allocateUnusedWorkers(1);
+ if (PThread.unusedWorkerPool.length > 0) return PThread.unusedWorkerPool.pop();
+ else return null;
+ },busySpinWait:function (msecs) {
+ var t = performance.now() + msecs;
+ while(performance.now() < t) {
+ ;
+ }
+ }};var __pthread_is_main_runtime_thread=0;function _emscripten_is_main_runtime_thread() {
+ return __pthread_is_main_runtime_thread|0; // Semantically the same as testing "!ENVIRONMENT_IS_PTHREAD" outside the asm.js scope
+ }
+
function _emscripten_glLinkProgram(program) {
GLctx.linkProgram(GL.programs[program]);
GL.programInfos[program] = null; // uniforms no longer keep the same names after linking
@@ -4424,6 +7807,11 @@ function copyTempDouble(ptr) {
Module["_memset"] = _memset;
+ function _atexit(func, arg) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(110, func, arg);
+ __ATEXIT__.unshift({ func: func, arg: arg });
+ }
+
function _glfwMakeContextCurrent(winid) {}
function _emscripten_set_touchcancel_callback(target, userData, useCapture, callbackfunc) {
@@ -4621,7 +8009,8 @@ function copyTempDouble(ptr) {
GLctx.uniformMatrix2fv(GL.uniforms[location], !!transpose, view);
}
- function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall6(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 6, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// close
var stream = SYSCALLS.getStreamFromFD();
@@ -4691,7 +8080,8 @@ function copyTempDouble(ptr) {
Module['printErr']('missing function: emscripten_glGetPointerv'); abort(-1);
}
- function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall140(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 140, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// llseek
var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
@@ -4707,34 +8097,12 @@ function copyTempDouble(ptr) {
}
}
- function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
+ function ___syscall146(which, varargs) {if (ENVIRONMENT_IS_PTHREAD) { return _emscripten_sync_run_in_main_thread_2(138, 146, varargs) }
+ SYSCALLS.varargs = varargs;
try {
// writev
- // hack to support printf in NO_FILESYSTEM
- var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
- var ret = 0;
- if (!___syscall146.buffer) {
- ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr
- ___syscall146.printChar = function(stream, curr) {
- var buffer = ___syscall146.buffers[stream];
- assert(buffer);
- if (curr === 0 || curr === 10) {
- (stream === 1 ? Module['print'] : Module['printErr'])(UTF8ArrayToString(buffer, 0));
- buffer.length = 0;
- } else {
- buffer.push(curr);
- }
- };
- }
- for (var i = 0; i < iovcnt; i++) {
- var ptr = HEAP32[(((iov)+(i*8))>>2)];
- var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
- for (var j = 0; j < len; j++) {
- ___syscall146.printChar(stream, HEAPU8[ptr+j]);
- }
- ret += len;
- }
- return ret;
+ var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
+ return SYSCALLS.doWritev(stream, iov, iovcnt);
} catch (e) {
if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
return -e.errno;
@@ -4749,6 +8117,41 @@ function copyTempDouble(ptr) {
function _emscripten_glStencilFuncSeparate(x0, x1, x2, x3) { GLctx['stencilFuncSeparate'](x0, x1, x2, x3) }
+
+ var _tzname; if (ENVIRONMENT_IS_PTHREAD) _tzname = PthreadWorkerInit._tzname; else PthreadWorkerInit._tzname = _tzname = allocate(8, "i32*", ALLOC_STATIC);
+
+ var _daylight; if (ENVIRONMENT_IS_PTHREAD) _daylight = PthreadWorkerInit._daylight; else PthreadWorkerInit._daylight = _daylight = allocate(1, "i32*", ALLOC_STATIC);
+
+ var _timezone; if (ENVIRONMENT_IS_PTHREAD) _timezone = PthreadWorkerInit._timezone; else PthreadWorkerInit._timezone = _timezone = allocate(1, "i32*", ALLOC_STATIC);function _tzset() {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_0(119);
+ // TODO: Use (malleable) environment variables instead of system settings.
+ if (_tzset.called) return;
+ _tzset.called = true;
+
+ HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60;
+
+ var winter = new Date(2000, 0, 1);
+ var summer = new Date(2000, 6, 1);
+ HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
+
+ function extractZone(date) {
+ var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
+ return match ? match[1] : "GMT";
+ };
+ var winterName = extractZone(winter);
+ var summerName = extractZone(summer);
+ var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);
+ var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);
+ if (summer.getTimezoneOffset() < winter.getTimezoneOffset()) {
+ // Northern hemisphere
+ HEAP32[((_tzname)>>2)]=winterNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr;
+ } else {
+ HEAP32[((_tzname)>>2)]=summerNamePtr;
+ HEAP32[(((_tzname)+(4))>>2)]=winterNamePtr;
+ }
+ }
+
Module["_i64Subtract"] = _i64Subtract;
@@ -4789,6 +8192,155 @@ function copyTempDouble(ptr) {
return JSEvents.lastGamepadState.length;
}
+ function _sysconf(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(72, name);
+ // long sysconf(int name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
+ switch(name) {
+ case 30: return PAGE_SIZE;
+ case 85:
+ var maxHeapSize = 2*1024*1024*1024 - 16777216;
+ maxHeapSize = HEAPU8.length;
+ return maxHeapSize / PAGE_SIZE;
+ case 132:
+ case 133:
+ case 12:
+ case 137:
+ case 138:
+ case 15:
+ case 235:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 149:
+ case 13:
+ case 10:
+ case 236:
+ case 153:
+ case 9:
+ case 21:
+ case 22:
+ case 159:
+ case 154:
+ case 14:
+ case 77:
+ case 78:
+ case 139:
+ case 80:
+ case 81:
+ case 82:
+ case 68:
+ case 67:
+ case 164:
+ case 11:
+ case 29:
+ case 47:
+ case 48:
+ case 95:
+ case 52:
+ case 51:
+ case 46:
+ return 200809;
+ case 79:
+ return 0;
+ case 27:
+ case 246:
+ case 127:
+ case 128:
+ case 23:
+ case 24:
+ case 160:
+ case 161:
+ case 181:
+ case 182:
+ case 242:
+ case 183:
+ case 184:
+ case 243:
+ case 244:
+ case 245:
+ case 165:
+ case 178:
+ case 179:
+ case 49:
+ case 50:
+ case 168:
+ case 169:
+ case 175:
+ case 170:
+ case 171:
+ case 172:
+ case 97:
+ case 76:
+ case 32:
+ case 173:
+ case 35:
+ return -1;
+ case 176:
+ case 177:
+ case 7:
+ case 155:
+ case 8:
+ case 157:
+ case 125:
+ case 126:
+ case 92:
+ case 93:
+ case 129:
+ case 130:
+ case 131:
+ case 94:
+ case 91:
+ return 1;
+ case 74:
+ case 60:
+ case 69:
+ case 70:
+ case 4:
+ return 1024;
+ case 31:
+ case 42:
+ case 72:
+ return 32;
+ case 87:
+ case 26:
+ case 33:
+ return 2147483647;
+ case 34:
+ case 1:
+ return 47839;
+ case 38:
+ case 36:
+ return 99;
+ case 43:
+ case 37:
+ return 2048;
+ case 0: return 2097152;
+ case 3: return 65536;
+ case 28: return 32768;
+ case 44: return 32767;
+ case 75: return 16384;
+ case 39: return 1000;
+ case 89: return 700;
+ case 71: return 256;
+ case 40: return 255;
+ case 2: return 100;
+ case 180: return 64;
+ case 25: return 20;
+ case 5: return 16;
+ case 6: return 6;
+ case 73: return 4;
+ case 84: {
+ if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;
+ return 1;
+ }
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
function _emscripten_glUniform4iv(location, count, value) {
@@ -4832,6 +8384,7 @@ function copyTempDouble(ptr) {
GL.shaders[shader]);
}
+
function _glUniform4f(location, v0, v1, v2, v3) {
GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3);
}
@@ -4869,6 +8422,13 @@ function copyTempDouble(ptr) {
GLFW.hints = GLFW.defaultHints;
}
+ function _gettimeofday(ptr) {
+ var now = Date.now();
+ HEAP32[((ptr)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((ptr)+(4))>>2)]=((now % 1000)*1000)|0; // microseconds
+ return 0;
+ }
+
function _emscripten_glClearStencil(x0) { GLctx['clearStencil'](x0) }
function _emscripten_glDetachShader(program, shader) {
@@ -4925,6 +8485,70 @@ function copyTempDouble(ptr) {
function _emscripten_glGenerateMipmap(x0) { GLctx['generateMipmap'](x0) }
+
+
+
+
+ var _environ; if (ENVIRONMENT_IS_PTHREAD) _environ = PthreadWorkerInit._environ; else PthreadWorkerInit._environ = _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'] = ENV['LOGNAME'] = 'web_user';
+ ENV['PATH'] = '/';
+ ENV['PWD'] = '/';
+ ENV['HOME'] = '/home/web_user';
+ ENV['LANG'] = 'C';
+ ENV['_'] = Module['thisProgram'];
+ // 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];
+ writeAsciiToMemory(line, poolPtr);
+ HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
+ poolPtr += line.length + 1;
+ }
+ HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
+ }var ENV={};function _clearenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(112, name);
+ // int clearenv (void);
+ // http://www.gnu.org/s/hello/manual/libc/Environment-Access.html#index-clearenv-3107
+ ENV = {};
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glCullFace(x0) { GLctx['cullFace'](x0) }
function _emscripten_glUniform4f(location, v0, v1, v2, v3) {
@@ -5009,9 +8633,14 @@ function copyTempDouble(ptr) {
GLctx.uniform2iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*8)>>2));
}
- function _emscripten_glVertexAttrib1fv(index, v) {
-
- GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ var _emscripten_asm_const=true;
+
+ function _chroot(path) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(37, path);
+ // int chroot(const char *path);
+ // http://pubs.opengroup.org/onlinepubs/7908799/xsh/chroot.html
+ ___setErrNo(ERRNO_CODES.EACCES);
+ return -1;
}
function _glEnable(x0) { GLctx['enable'](x0) }
@@ -5180,13 +8809,57 @@ function copyTempDouble(ptr) {
emscriptenWebGLGetUniform(program, location, params, 'Integer');
}
+ function _unsetenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(114, name);
+ // int unsetenv(const char *name);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/unsetenv.html
+ if (name === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ name = Pointer_stringify(name);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name)) {
+ delete ENV[name];
+ ___buildEnvironment(ENV);
+ }
+ return 0;
+ }
+
function _emscripten_glDepthMask(flag) {
GLctx.depthMask(!!flag);
}
+
function _emscripten_glDepthRangef(x0, x1) { GLctx['depthRange'](x0, x1) }
- function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
+
+ function _emscripten_get_now_is_monotonic() {
+ // return whether emscripten_get_now is guaranteed monotonic; the Date.now
+ // implementation is not :(
+ return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
+ ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
+ }function _clock_gettime(clk_id, tp) {
+ // int clock_gettime(clockid_t clk_id, struct timespec *tp);
+ var now;
+ if (clk_id === 0) {
+ now = Date.now();
+ } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
+ now = _emscripten_get_now();
+ } else {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
+ HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
+ return 0;
+ }function ___clock_gettime() {
+ return _clock_gettime.apply(null, arguments)
+ }
function _emscripten_set_fullscreenchange_callback(target, userData, useCapture, callbackfunc) {
if (typeof JSEvents.fullscreenEnabled() === 'undefined') return -1;
@@ -5202,7 +8875,75 @@ function copyTempDouble(ptr) {
return 0;
}
- function _pthread_join() {}
+ function _emscripten_glVertexAttrib1fv(index, v) {
+
+ GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
+ }
+
+
+ function __cleanup_thread(pthread_ptr) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _cleanup_thread() can only ever be called from main application thread!';
+ if (!pthread_ptr) throw 'Internal Error! Null pthread_ptr in _cleanup_thread!';
+ HEAP32[(((pthread_ptr)+(24))>>2)]=0;
+ var pthread = PThread.pthreads[pthread_ptr];
+ var worker = pthread.worker;
+ PThread.freeThreadData(pthread);
+ worker.pthread = undefined; // Detach the worker from the pthread object, and return it to the worker pool as an unused worker.
+ PThread.unusedWorkerPool.push(worker);
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker.pthread), 1); // Not a running Worker anymore.
+ }
+
+ function __pthread_testcancel_js() {
+ if (!ENVIRONMENT_IS_PTHREAD) return;
+ if (!threadInfoStruct) return;
+ var cancelDisabled = Atomics.load(HEAPU32, (threadInfoStruct + 72 ) >> 2);
+ if (cancelDisabled) return;
+ var canceled = Atomics.load(HEAPU32, (threadInfoStruct + 0 ) >> 2);
+ if (canceled == 2) throw 'Canceled!';
+ }function _pthread_join(thread, status) {
+ if (!thread) {
+ Module['printErr']('pthread_join attempted on a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ if (ENVIRONMENT_IS_PTHREAD && selfThreadId == thread) {
+ Module['printErr']('PThread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ else if (!ENVIRONMENT_IS_PTHREAD && PThread.mainThreadBlock == thread) {
+ Module['printErr']('Main thread ' + thread + ' is attempting to join to itself!');
+ return ERRNO_CODES.EDEADLK;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_join attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var detached = Atomics.load(HEAPU32, (thread + 80 ) >> 2);
+ if (detached) {
+ Module['printErr']('Attempted to join thread ' + thread + ', which was already detached!');
+ return ERRNO_CODES.EINVAL; // The thread is already detached, can no longer join it!
+ }
+ for (;;) {
+ var threadStatus = Atomics.load(HEAPU32, (thread + 0 ) >> 2);
+ if (threadStatus == 1) { // Exited?
+ var threadExitCode = Atomics.load(HEAPU32, (thread + 4 ) >> 2);
+ if (status) HEAP32[((status)>>2)]=threadExitCode;
+ Atomics.store(HEAPU32, (thread + 80 ) >> 2, 1); // Mark the thread as detached.
+
+ if (!ENVIRONMENT_IS_PTHREAD) __cleanup_thread(thread);
+ else postMessage({ cmd: 'cleanupThread', thread: thread});
+ return 0;
+ }
+ // TODO HACK! Replace the _js variant with just _pthread_testcancel:
+ //_pthread_testcancel();
+ __pthread_testcancel_js();
+ // In main runtime thread (the thread that initialized the Emscripten C runtime and launched main()), assist pthreads in performing operations
+ // that they need to access the Emscripten main runtime for.
+ if (!ENVIRONMENT_IS_PTHREAD) _emscripten_main_thread_process_queued_calls();
+ _emscripten_futex_wait(thread + 0, threadStatus, ENVIRONMENT_IS_PTHREAD ? 100 : 1);
+ }
+ }
@@ -5494,12 +9235,6 @@ function copyTempDouble(ptr) {
win.shouldClose = value;
}
- function _glfwWindowShouldClose(winid) {
- var win = GLFW.WindowFromId(winid);
- if (!win) return 0;
- return win.shouldClose;
- }
-
function _emscripten_glClientActiveTexture() {
Module['printErr']('missing function: emscripten_glClientActiveTexture'); abort(-1);
}
@@ -5551,8 +9286,6 @@ function copyTempDouble(ptr) {
HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target, pname);
}
- function _glfwWaitEvents() {}
-
function _emscripten_glStencilOpSeparate(x0, x1, x2, x3) { GLctx['stencilOpSeparate'](x0, x1, x2, x3) }
function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) {
@@ -5611,45 +9344,45 @@ function copyTempDouble(ptr) {
function _glDepthFunc(x0) { GLctx['depthFunc'](x0) }
-
- var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
- Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
- Module["___udivmoddi4"] = ___udivmoddi4;
- Module["___uremdi3"] = ___uremdi3;
+ var __main_thread_futex_wait_address; if (ENVIRONMENT_IS_PTHREAD) __main_thread_futex_wait_address = PthreadWorkerInit.__main_thread_futex_wait_address; else PthreadWorkerInit.__main_thread_futex_wait_address = __main_thread_futex_wait_address = allocate(1, "i32*", ALLOC_STATIC);function _emscripten_futex_wait(addr, val, timeout) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0) return -22;
+ // dump('futex_wait addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ENVIRONMENT_IS_WORKER) {
+ var ret = Atomics.wait(HEAP32, addr >> 2, val, timeout);
+ // dump('futex_wait done by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+ if (ret === 'timed-out') return -110;
+ if (ret === 'not-equal') return -11;
+ if (ret === 'ok') return 0;
+ throw 'Atomics.wait returned an unexpected value ' + ret;
+ } else {
+ // Atomics.wait is not available in the main browser thread, so simulate it via busy spinning.
+ var loadedVal = Atomics.load(HEAP32, addr >> 2);
+ if (val != loadedVal) return -11;
+
+ var tNow = performance.now();
+ var tEnd = tNow + timeout;
+
+
+ // Register globally which address the main thread is simulating to be waiting on. When zero, main thread is not waiting on anything,
+ // and on nonzero, the contents of address pointed by __main_thread_futex_wait_address tell which address the main thread is simulating its wait on.
+ Atomics.store(HEAP32, __main_thread_futex_wait_address >> 2, addr);
+ var ourWaitAddress = addr; // We may recursively re-enter this function while processing queued calls, in which case we'll do a spurious wakeup of the older wait operation.
+ while (addr == ourWaitAddress) {
+ tNow = performance.now();
+ if (tNow > tEnd) {
+ return -110;
+ }
+ _emscripten_main_thread_process_queued_calls(); // We are performing a blocking loop here, so must pump any pthreads if they want to perform operations that are proxied.
+ addr = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2); // Look for a worker thread waking us up.
+ }
+ return 0;
+ }
+ }
function _emscripten_glClearDepthf(x0) { GLctx['clearDepth'](x0) }
function _emscripten_glClear(x0) { GLctx['clear'](x0) }
-
- function _emscripten_get_now_is_monotonic() {
- // return whether emscripten_get_now is guaranteed monotonic; the Date.now
- // implementation is not :(
- return ENVIRONMENT_IS_NODE || (typeof dateNow !== 'undefined') ||
- ((ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self['performance'] && self['performance']['now']);
- }
-
- var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
-
- function ___setErrNo(value) {
- if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
- else Module.printErr('failed to set errno from JS');
- return value;
- }function _clock_gettime(clk_id, tp) {
- // int clock_gettime(clockid_t clk_id, struct timespec *tp);
- var now;
- if (clk_id === 0) {
- now = Date.now();
- } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
- now = _emscripten_get_now();
- } else {
- ___setErrNo(ERRNO_CODES.EINVAL);
- return -1;
- }
- HEAP32[((tp)>>2)]=(now/1000)|0; // seconds
- HEAP32[(((tp)+(4))>>2)]=((now % 1000)*1000*1000)|0; // nanoseconds
- return 0;
- }
function _emscripten_glBindBuffer(target, buffer) {
var bufferObj = buffer ? GL.buffers[buffer] : null;
@@ -5736,6 +9469,13 @@ function copyTempDouble(ptr) {
return 0;
}
+
+
+ var cttz_i8; if (ENVIRONMENT_IS_PTHREAD) cttz_i8 = PthreadWorkerInit.cttz_i8; else PthreadWorkerInit.cttz_i8 = cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_STATIC);
+ Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
+ Module["___udivmoddi4"] = ___udivmoddi4;
+ Module["___uremdi3"] = ___uremdi3;
+
function _glGetUniformLocation(program, name) {
name = Pointer_stringify(name);
@@ -5830,6 +9570,8 @@ function copyTempDouble(ptr) {
GLFW.setCursorPosCallback(winid, cbfun);
}
+ function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
+
function _glBindAttribLocation(program, index, name) {
name = Pointer_stringify(name);
GLctx.bindAttribLocation(GL.programs[program], index, name);
@@ -5913,6 +9655,43 @@ function copyTempDouble(ptr) {
GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size));
}
+ function _emscripten_futex_wake(addr, count) {
+ if (addr <= 0 || addr > HEAP8.length || addr&3 != 0 || count < 0) return -22;
+ if (count == 0) return 0;
+ // dump('futex_wake addr:' + addr + ' by thread: ' + _pthread_self() + (ENVIRONMENT_IS_PTHREAD?'(pthread)':'') + '\n');
+
+ // See if main thread is waiting on this address? If so, wake it up by resetting its wake location to zero.
+ // Note that this is not a fair procedure, since we always wake main thread first before any workers, so
+ // this scheme does not adhere to real queue-based waiting.
+ var mainThreadWaitAddress = Atomics.load(HEAP32, __main_thread_futex_wait_address >> 2);
+ var mainThreadWoken = 0;
+ if (mainThreadWaitAddress == addr) {
+ var loadedAddr = Atomics.compareExchange(HEAP32, __main_thread_futex_wait_address >> 2, mainThreadWaitAddress, 0);
+ if (loadedAddr == mainThreadWaitAddress) {
+ --count;
+ mainThreadWoken = 1;
+ if (count <= 0) return 1;
+ }
+ }
+
+ // Wake any workers waiting on this address.
+ var ret = Atomics.wake(HEAP32, addr >> 2, count);
+ if (ret >= 0) return ret + mainThreadWoken;
+ throw 'Atomics.wake returned an unexpected value ' + ret;
+ }
+
+ function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
+ var log = GLctx.getProgramInfoLog(GL.programs[program]);
+ if (log === null) log = '(unknown error)';
+
+ if (maxLength > 0 && infoLog) {
+ var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
+ if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
+ } else {
+ if (length) HEAP32[((length)>>2)]=0;
+ }
+ }
+
function _emscripten_glGenFramebuffers(n, ids) {
for (var i = 0; i < n; ++i) {
var framebuffer = GLctx.createFramebuffer();
@@ -6019,8 +9798,181 @@ function copyTempDouble(ptr) {
GLctx.shaderSource(GL.shaders[shader], source);
}
- function _pthread_create() {
- return 11;
+
+ function __spawn_thread(threadParams) {
+ if (ENVIRONMENT_IS_PTHREAD) throw 'Internal Error! _spawn_thread() can only ever be called from main application thread!';
+
+ var worker = PThread.getNewWorker();
+ if (worker.pthread !== undefined) throw 'Internal error!';
+ if (!threadParams.pthread_ptr) throw 'Internal error, no pthread ptr!';
+ PThread.runningWorkers.push(worker);
+
+ // Allocate memory for thread-local storage and initialize it to zero.
+ var tlsMemory = _malloc(128 * 4);
+ for (var i = 0; i < 128; ++i) {
+ HEAP32[(((tlsMemory)+(i*4))>>2)]=0;
+ }
+
+ var pthread = PThread.pthreads[threadParams.pthread_ptr] = { // Create a pthread info object to represent this thread.
+ worker: worker,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ allocatedOwnStack: threadParams.allocatedOwnStack,
+ thread: threadParams.pthread_ptr,
+ threadInfoStruct: threadParams.pthread_ptr // Info area for this thread in Emscripten HEAP (shared)
+ };
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 0 ) >> 2, 0); // threadStatus <- 0, meaning not yet exited.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 4 ) >> 2, 0); // threadExitCode <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 20 ) >> 2, 0); // profilerBlock <- 0.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 80 ) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 116 ) >> 2, tlsMemory); // Init thread-local-storage memory array.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 60 ) >> 2, 0); // Mark initial status to unused.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 52 ) >> 2, pthread.threadInfoStruct); // Main thread ID.
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 56 ) >> 2, PROCINFO.pid); // Process ID.
+
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 96) >> 2, threadParams.stackSize);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 92) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 8) >> 2, threadParams.stackBase);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 12) >> 2, threadParams.detached);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 20) >> 2, threadParams.schedPolicy);
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 120 + 24) >> 2, threadParams.schedPrio);
+
+ var global_libc = _emscripten_get_global_libc();
+ var global_locale = global_libc + 40;
+ Atomics.store(HEAPU32, (pthread.threadInfoStruct + 188) >> 2, global_locale);
+
+
+ worker.pthread = pthread;
+
+ // Ask the worker to start executing its pthread entry point function.
+ worker.postMessage({
+ cmd: 'run',
+ start_routine: threadParams.startRoutine,
+ arg: threadParams.arg,
+ threadInfoStruct: threadParams.pthread_ptr,
+ selfThreadId: threadParams.pthread_ptr, // TODO: Remove this since thread ID is now the same as the thread address.
+ parentThreadId: threadParams.parent_pthread_ptr,
+ stackBase: threadParams.stackBase,
+ stackSize: threadParams.stackSize,
+ }, threadParams.transferList);
+ }
+
+ function _pthread_getschedparam(thread, policy, schedparam) {
+ if (!policy && !schedparam) return ERRNO_CODES.EINVAL;
+
+ if (!thread) {
+ Module['printErr']('pthread_getschedparam called with a null thread pointer!');
+ return ERRNO_CODES.ESRCH;
+ }
+ var self = HEAP32[(((thread)+(24))>>2)];
+ if (self != thread) {
+ Module['printErr']('pthread_getschedparam attempted on thread ' + thread + ', which does not point to a valid thread, or does not exist anymore!');
+ return ERRNO_CODES.ESRCH;
+ }
+
+ var schedPolicy = Atomics.load(HEAPU32, (thread + 120 + 20 ) >> 2);
+ var schedPrio = Atomics.load(HEAPU32, (thread + 120 + 24 ) >> 2);
+
+ if (policy) HEAP32[((policy)>>2)]=schedPolicy;
+ if (schedparam) HEAP32[((schedparam)>>2)]=schedPrio;
+ return 0;
+ }
+
+ function _pthread_self() {
+ return __pthread_ptr|0;
+ }function _pthread_create(pthread_ptr, attr, start_routine, arg) {
+ if (typeof SharedArrayBuffer === 'undefined') {
+ Module['printErr']('Current environment does not support SharedArrayBuffer, pthreads are not available!');
+ return 11;
+ }
+ if (!pthread_ptr) {
+ Module['printErr']('pthread_create called with a null thread pointer!');
+ return 22;
+ }
+
+ var transferList = []; // List of JS objects that will transfer ownership to the Worker hosting the thread
+
+
+ // Synchronously proxy the thread creation to main thread if possible. If we need to transfer ownership of objects, then
+ // proxy asynchronously via postMessage.
+ if (ENVIRONMENT_IS_PTHREAD && transferList.length == 0) {
+ return _emscripten_sync_run_in_main_thread_4(137, pthread_ptr, attr, start_routine, arg);
+ }
+
+ var stackSize = 0;
+ var stackBase = 0;
+ var detached = 0; // Default thread attr is PTHREAD_CREATE_JOINABLE, i.e. start as not detached.
+ var schedPolicy = 0; /*SCHED_OTHER*/
+ var schedPrio = 0;
+ if (attr) {
+ stackSize = HEAP32[((attr)>>2)];
+ stackBase = HEAP32[(((attr)+(8))>>2)];
+ detached = HEAP32[(((attr)+(12))>>2)] != 0/*PTHREAD_CREATE_JOINABLE*/;
+ var inheritSched = HEAP32[(((attr)+(16))>>2)] == 0/*PTHREAD_INHERIT_SCHED*/;
+ if (inheritSched) {
+ var prevSchedPolicy = HEAP32[(((attr)+(20))>>2)];
+ var prevSchedPrio = HEAP32[(((attr)+(24))>>2)];
+ _pthread_getschedparam(_pthread_self(), attr + 20, attr + 24);
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ HEAP32[(((attr)+(20))>>2)]=prevSchedPolicy;
+ HEAP32[(((attr)+(24))>>2)]=prevSchedPrio;
+ } else {
+ schedPolicy = HEAP32[(((attr)+(20))>>2)];
+ schedPrio = HEAP32[(((attr)+(24))>>2)];
+ }
+ }
+ stackSize += 81920 /*DEFAULT_STACK_SIZE*/;
+ var allocatedOwnStack = stackBase == 0; // If allocatedOwnStack == true, then the pthread impl maintains the stack allocation.
+ if (allocatedOwnStack) {
+ stackBase = _malloc(stackSize); // Allocate a stack if the user doesn't want to place the stack in a custom memory area.
+ } else {
+ // Musl stores the stack base address assuming stack grows downwards, so adjust it to Emscripten convention that the
+ // stack grows upwards instead.
+ stackBase -= stackSize;
+ assert(stackBase > 0);
+ }
+
+ // Allocate thread block (pthread_t structure).
+ var threadInfoStruct = _malloc(244);
+ for (var i = 0; i < 244 >> 2; ++i) HEAPU32[(threadInfoStruct>>2) + i] = 0; // zero-initialize thread structure.
+ HEAP32[((pthread_ptr)>>2)]=threadInfoStruct;
+
+ // The pthread struct has a field that points to itself - this is used as a magic ID to detect whether the pthread_t
+ // structure is 'alive'.
+ HEAP32[(((threadInfoStruct)+(24))>>2)]=threadInfoStruct;
+
+ // pthread struct robust_list head should point to itself.
+ var headPtr = threadInfoStruct + 168;
+ HEAP32[((headPtr)>>2)]=headPtr;
+
+ var threadParams = {
+ stackBase: stackBase,
+ stackSize: stackSize,
+ allocatedOwnStack: allocatedOwnStack,
+ schedPolicy: schedPolicy,
+ schedPrio: schedPrio,
+ detached: detached,
+ startRoutine: start_routine,
+ pthread_ptr: threadInfoStruct,
+ parent_pthread_ptr: _pthread_self(),
+ arg: arg,
+ transferList: transferList
+ };
+
+ if (ENVIRONMENT_IS_PTHREAD) {
+ // The prepopulated pool of web workers that can host pthreads is stored in the main JS thread. Therefore if a
+ // pthread is attempting to spawn a new thread, the thread creation must be deferred to the main JS thread.
+ threadParams.cmd = 'spawnThread';
+ postMessage(threadParams, transferList);
+ } else {
+ // We are the main thread, so we have the pthread warmup pool in this thread and can fire off JS thread creation
+ // directly ourselves.
+ __spawn_thread(threadParams);
+ }
+
+ return 0;
}
function _emscripten_glDrawArrays(mode, first, count) {
@@ -6092,6 +10044,11 @@ function copyTempDouble(ptr) {
GLctx.bindBuffer(target, bufferObj);
}
+
+ function _emscripten_set_current_thread_status_js(newStatus) {
+ }
+ Module["_emscripten_set_current_thread_status"] = _emscripten_set_current_thread_status;
+
function _emscripten_glVertexAttrib4fv(index, v) {
GLctx.vertexAttrib4f(index, HEAPF32[v>>2], HEAPF32[v+4>>2], HEAPF32[v+8>>2], HEAPF32[v+12>>2]);
@@ -6108,6 +10065,61 @@ function copyTempDouble(ptr) {
Module["_bitshift64Lshr"] = _bitshift64Lshr;
+ function _confstr(name, buf, len) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(68, name, buf, len);
+ // size_t confstr(int name, char *buf, size_t len);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/confstr.html
+ var value;
+ switch (name) {
+ case 0:
+ value = ENV['PATH'] || '/';
+ break;
+ case 1:
+ // Mimicking glibc.
+ value = 'POSIX_V6_ILP32_OFF32\nPOSIX_V6_ILP32_OFFBIG';
+ break;
+ case 2:
+ // This JS implementation was tested against this glibc version.
+ value = 'glibc 2.14';
+ break;
+ case 3:
+ // We don't support pthreads.
+ value = '';
+ break;
+ case 1118:
+ case 1122:
+ case 1124:
+ case 1125:
+ case 1126:
+ case 1128:
+ case 1129:
+ case 1130:
+ value = '';
+ break;
+ case 1116:
+ case 1117:
+ case 1121:
+ value = '-m32';
+ break;
+ case 1120:
+ value = '-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64';
+ break;
+ default:
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return 0;
+ }
+ if (len == 0 || buf == 0) {
+ return value.length + 1;
+ } else {
+ var length = Math.min(len, value.length);
+ for (var i = 0; i < length; i++) {
+ HEAP8[(((buf)+(i))>>0)]=value.charCodeAt(i);
+ }
+ if (len > length) HEAP8[(((buf)+(i++))>>0)]=0;
+ return i;
+ }
+ }
+
function _glBufferData(target, size, data, usage) {
if (!data) {
GLctx.bufferData(target, size, usage);
@@ -6122,6 +10134,24 @@ function copyTempDouble(ptr) {
return GLctx.isShader(s);
}
+ function _getenv(name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(111, 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 _emscripten_conditional_set_current_thread_status_js(expectedStatus, newStatus) {
+ }
+ Module["_emscripten_conditional_set_current_thread_status"] = _emscripten_conditional_set_current_thread_status;
+
function _emscripten_glDrawBuffers(n, bufs) {
var bufArray = GL.tempFixedLengthArray[n];
@@ -6200,16 +10230,9 @@ function copyTempDouble(ptr) {
GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);
}
- function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
- var log = GLctx.getProgramInfoLog(GL.programs[program]);
- if (log === null) log = '(unknown error)';
-
- if (maxLength > 0 && infoLog) {
- var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
- if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
- } else {
- if (length) HEAP32[((length)>>2)]=0;
- }
+ function ___assert_fail(condition, filename, line, func) {
+ ABORT = true;
+ throw 'Assertion failed: ' + Pointer_stringify(condition) + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + stackTrace();
}
function _emscripten_glVertexAttribDivisor(index, divisor) {
@@ -6248,6 +10271,26 @@ function copyTempDouble(ptr) {
GLctx['bindVertexArray'](GL.vaos[vao]);
}
+ function _setenv(envname, envval, overwrite) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_3(113, envname, envval, overwrite);
+ // int setenv(const char *envname, const char *envval, int overwrite);
+ // http://pubs.opengroup.org/onlinepubs/009695399/functions/setenv.html
+ if (envname === 0) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ var name = Pointer_stringify(envname);
+ var val = Pointer_stringify(envval);
+ if (name === '' || name.indexOf('=') !== -1) {
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+ if (ENV.hasOwnProperty(name) && !overwrite) return 0;
+ ENV[name] = val;
+ ___buildEnvironment(ENV);
+ return 0;
+ }
+
function _emscripten_glLoadMatrixf() {
Module['printErr']('missing function: emscripten_glLoadMatrixf'); abort(-1);
}
@@ -6402,6 +10445,16 @@ function copyTempDouble(ptr) {
GLctx.validateProgram(GL.programs[program]);
}
+ function _emscripten_syscall(which, varargs) {
+ switch (which) {
+ case 54: return ___syscall54(which, varargs);
+ case 6: return ___syscall6(which, varargs);
+ case 140: return ___syscall140(which, varargs);
+ case 146: return ___syscall146(which, varargs);
+ default: throw "surprising proxied syscall: " + which;
+ }
+ }
+
function _glTexParameteri(x0, x1, x2) { GLctx['texParameteri'](x0, x1, x2) }
function _glFrontFace(x0) { GLctx['frontFace'](x0) }
@@ -6430,6 +10483,72 @@ function copyTempDouble(ptr) {
}
}
+ function _fpathconf(fildes, name) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(46, fildes, name);
+ // long fpathconf(int fildes, int name);
+ // http://pubs.opengroup.org/onlinepubs/000095399/functions/encrypt.html
+ // NOTE: The first parameter is ignored, so pathconf == fpathconf.
+ // The constants here aren't real values. Just mimicking glibc.
+ switch (name) {
+ case 0:
+ return 32000;
+ case 1:
+ case 2:
+ case 3:
+ return 255;
+ case 4:
+ case 5:
+ case 16:
+ case 17:
+ case 18:
+ return 4096;
+ case 6:
+ case 7:
+ case 20:
+ return 1;
+ case 8:
+ return 0;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 14:
+ case 15:
+ case 19:
+ return -1;
+ case 13:
+ return 64;
+ }
+ ___setErrNo(ERRNO_CODES.EINVAL);
+ return -1;
+ }
+
+ function _putenv(string) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_1(115, 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 _emscripten_glGenVertexArrays(n, arrays) {
for (var i = 0; i < n; i++) {
@@ -6454,10 +10573,32 @@ function copyTempDouble(ptr) {
return ret;
}
+
function _emscripten_glGetBooleanv(name_, p) {
emscriptenWebGLGet(name_, p, 'Boolean');
}
+ function _utimes(path, times) {
+ if (ENVIRONMENT_IS_PTHREAD) return _emscripten_sync_run_in_main_thread_2(13, path, times);
+ var time;
+ if (times) {
+ var offset = 8 + 0;
+ time = HEAP32[(((times)+(offset))>>2)] * 1000;
+ offset = 8 + 4;
+ time += HEAP32[(((times)+(offset))>>2)] / 1000;
+ } else {
+ time = Date.now();
+ }
+ path = Pointer_stringify(path);
+ try {
+ FS.utime(path, time, time);
+ return 0;
+ } catch (e) {
+ FS.handleFSError(e);
+ return -1;
+ }
+ }
+
function _emscripten_glCompileShader(shader) {
GLctx.compileShader(GL.shaders[shader]);
}
@@ -6484,8 +10625,14 @@ Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, res
Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) };
+FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;Module["FS_unlink"] = FS.unlink;;
+__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() });;
+if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); };
JSEvents.staticInit();;
-/* flush anything remaining in the buffer during shutdown */ __ATEXIT__.push(function() { var fflush = Module["_fflush"]; if (fflush) fflush(0); var printChar = ___syscall146.printChar; if (!printChar) return; var buffers = ___syscall146.buffers; if (buffers[1].length) printChar(1, 10); if (buffers[2].length) printChar(2, 10); });;
+if (!ENVIRONMENT_IS_PTHREAD) PThread.initMainThreadBlock();;
+if (!ENVIRONMENT_IS_PTHREAD) ___buildEnvironment(ENV);;
+if (!ENVIRONMENT_IS_PTHREAD) {
+ // Only main thread initializes these, pthreads copy them over at thread worker init time (in pthread-main.js)
DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC);
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
@@ -6500,6 +10647,8 @@ staticSealed = true; // seal the static portion of memory
assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
+}
+
function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
@@ -6767,8 +10916,8 @@ function invoke_viiii(index,a1,a2,a3,a4) {
}
Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity };
-
-Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_glUniform4f": _glUniform4f, "_glfwWindowShouldClose": _glfwWindowShouldClose, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "_glLinkProgram": _glLinkProgram, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "___syscall146": ___syscall146, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glGetFloatv": _glGetFloatv, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_glfwWaitEvents": _glfwWaitEvents, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
+Module.asmGlobalArg['Atomics'] = Atomics;
+Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "___assert_fail": ___assert_fail, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_clock_gettime": _clock_gettime, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_sysconf": _sysconf, "_utime": _utime, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_chroot": _chroot, "_glUniform4f": _glUniform4f, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "__pthread_testcancel_js": __pthread_testcancel_js, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_unsetenv": _unsetenv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "___syscall146": ___syscall146, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_glBufferSubData": _glBufferSubData, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_asm_const_v": _emscripten_asm_const_v, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_pthread_self": _pthread_self, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_glGetString": _glGetString, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "__register_pthread_ptr": __register_pthread_ptr, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "_gettimeofday": _gettimeofday, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "__spawn_thread": __spawn_thread, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_emscripten_conditional_set_current_thread_status_js": _emscripten_conditional_set_current_thread_status_js, "_putenv": _putenv, "_pthread_join": _pthread_join, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_fpathconf": _fpathconf, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetVideoModes": _glfwGetVideoModes, "___unlock": ___unlock, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_is_main_runtime_thread": _emscripten_is_main_runtime_thread, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "___buildEnvironment": ___buildEnvironment, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_utimes": _utimes, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_tzset": _tzset, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_glGetFloatv": _glGetFloatv, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "___clock_gettime": ___clock_gettime, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_clearenv": _clearenv, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_getenv": _getenv, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_glfwTerminate": _glfwTerminate, "_emscripten_futex_wake": _emscripten_futex_wake, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_glfwSwapInterval": _glfwSwapInterval, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "__cleanup_thread": __cleanup_thread, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_set_current_thread_status_js": _emscripten_set_current_thread_status_js, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_emscripten_syscall": _emscripten_syscall, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_glLinkProgram": _glLinkProgram, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_futex_wait": _emscripten_futex_wait, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "___pthread_setcancelstate": ___pthread_setcancelstate, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_confstr": _confstr, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_glfwGetCursorPos": _glfwGetCursorPos, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "___syscall54": ___syscall54, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_glfwSwapBuffers": _glfwSwapBuffers, "_pthread_create": _pthread_create, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_pthread_getschedparam": _pthread_getschedparam, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_glTexParameteri": _glTexParameteri, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_atexit": _atexit, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_setenv": _setenv, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
'use asm';
@@ -6873,7 +11022,6 @@ var asm = (function(global, env, buffer) {
var invoke_viiii=env.invoke_viiii;
var _emscripten_glGetTexParameterfv=env._emscripten_glGetTexParameterfv;
var _glUseProgram=env._glUseProgram;
- var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _glfwCreateWindow=env._glfwCreateWindow;
var _emscripten_glReleaseShaderCompiler=env._emscripten_glReleaseShaderCompiler;
var _emscripten_glBlendFuncSeparate=env._emscripten_glBlendFuncSeparate;
@@ -6884,6 +11032,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilMaskSeparate=env._emscripten_glStencilMaskSeparate;
var _emscripten_glViewport=env._emscripten_glViewport;
var _emscripten_glFrontFace=env._emscripten_glFrontFace;
+ var ___assert_fail=env.___assert_fail;
var _glDeleteProgram=env._glDeleteProgram;
var _emscripten_glUniform3fv=env._emscripten_glUniform3fv;
var _emscripten_glPolygonOffset=env._emscripten_glPolygonOffset;
@@ -6896,25 +11045,26 @@ var asm = (function(global, env, buffer) {
var _emscripten_set_fullscreenchange_callback=env._emscripten_set_fullscreenchange_callback;
var _emscripten_set_touchmove_callback=env._emscripten_set_touchmove_callback;
var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing;
- var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _glDisable=env._glDisable;
var _glBlendFunc=env._glBlendFunc;
var _emscripten_glDisableVertexAttribArray=env._emscripten_glDisableVertexAttribArray;
var _glGetAttribLocation=env._glGetAttribLocation;
var _glDisableVertexAttribArray=env._glDisableVertexAttribArray;
var _glCreateShader=env._glCreateShader;
+ var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _sysconf=env._sysconf;
+ var _utime=env._utime;
var _emscripten_glSampleCoverage=env._emscripten_glSampleCoverage;
var _emscripten_glVertexPointer=env._emscripten_glVertexPointer;
var _emscripten_set_touchstart_callback=env._emscripten_set_touchstart_callback;
var emscriptenWebGLComputeImageSize=env.emscriptenWebGLComputeImageSize;
var _emscripten_glGetBooleanv=env._emscripten_glGetBooleanv;
var _emscripten_glGetShaderSource=env._emscripten_glGetShaderSource;
+ var _chroot=env._chroot;
var _glUniform4f=env._glUniform4f;
- var _glfwWindowShouldClose=env._glfwWindowShouldClose;
var _llvm_stacksave=env._llvm_stacksave;
var _emscripten_glUniform1i=env._emscripten_glUniform1i;
- var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
- var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
var _emscripten_glGenBuffers=env._emscripten_glGenBuffers;
var _emscripten_glDeleteObjectARB=env._emscripten_glDeleteObjectARB;
var _glfwSetWindowSizeCallback=env._glfwSetWindowSizeCallback;
@@ -6926,9 +11076,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glIsFramebuffer=env._emscripten_glIsFramebuffer;
var _emscripten_glIsEnabled=env._emscripten_glIsEnabled;
var _emscripten_glScissor=env._emscripten_glScissor;
+ var __pthread_testcancel_js=env.__pthread_testcancel_js;
var _emscripten_glVertexAttrib4fv=env._emscripten_glVertexAttrib4fv;
var _emscripten_glFramebufferTexture2D=env._emscripten_glFramebufferTexture2D;
var _emscripten_glTexParameteriv=env._emscripten_glTexParameteriv;
+ var _unsetenv=env._unsetenv;
var _emscripten_glBindProgramARB=env._emscripten_glBindProgramARB;
var _emscripten_glStencilOpSeparate=env._emscripten_glStencilOpSeparate;
var _emscripten_glFramebufferRenderbuffer=env._emscripten_glFramebufferRenderbuffer;
@@ -6936,13 +11088,14 @@ var asm = (function(global, env, buffer) {
var _glfwSetErrorCallback=env._glfwSetErrorCallback;
var _glfwDefaultWindowHints=env._glfwDefaultWindowHints;
var _glfwDestroyWindow=env._glfwDestroyWindow;
- var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
+ var ___syscall146=env.___syscall146;
var _emscripten_glGetActiveAttrib=env._emscripten_glGetActiveAttrib;
var _emscripten_glAttachShader=env._emscripten_glAttachShader;
var _emscripten_get_now_is_monotonic=env._emscripten_get_now_is_monotonic;
var _emscripten_glUniform2i=env._emscripten_glUniform2i;
var _emscripten_glUniform2f=env._emscripten_glUniform2f;
var _emscripten_glTexParameterfv=env._emscripten_glTexParameterfv;
+ var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
var _emscripten_glUniformMatrix2fv=env._emscripten_glUniformMatrix2fv;
var _glGetProgramInfoLog=env._glGetProgramInfoLog;
var _glfwSetScrollCallback=env._glfwSetScrollCallback;
@@ -6967,17 +11120,21 @@ var asm = (function(global, env, buffer) {
var _glDepthFunc=env._glDepthFunc;
var _emscripten_glClientActiveTexture=env._emscripten_glClientActiveTexture;
var _emscripten_glVertexAttrib2f=env._emscripten_glVertexAttrib2f;
+ var _emscripten_asm_const_v=env._emscripten_asm_const_v;
var _emscripten_glFlush=env._emscripten_glFlush;
var _emscripten_glBlendFunc=env._emscripten_glBlendFunc;
var _emscripten_glCheckFramebufferStatus=env._emscripten_glCheckFramebufferStatus;
var _emscripten_glGenerateMipmap=env._emscripten_glGenerateMipmap;
var _emscripten_glGetError=env._emscripten_glGetError;
var _emscripten_glClearDepthf=env._emscripten_glClearDepthf;
+ var _pthread_self=env._pthread_self;
var _emscripten_glBufferData=env._emscripten_glBufferData;
var _emscripten_glUniform3i=env._emscripten_glUniform3i;
+ var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
var _emscripten_glRotatef=env._emscripten_glRotatef;
var _emscripten_glDeleteShader=env._emscripten_glDeleteShader;
var _glEnable=env._glEnable;
+ var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
var _emscripten_glReadPixels=env._emscripten_glReadPixels;
var _emscripten_glMatrixMode=env._emscripten_glMatrixMode;
var _glGetString=env._glGetString;
@@ -6985,7 +11142,7 @@ var asm = (function(global, env, buffer) {
var _emscripten_glGetUniformLocation=env._emscripten_glGetUniformLocation;
var emscriptenWebGLGet=env.emscriptenWebGLGet;
var _emscripten_glEnableVertexAttribArray=env._emscripten_glEnableVertexAttribArray;
- var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
+ var __register_pthread_ptr=env.__register_pthread_ptr;
var _emscripten_get_now=env._emscripten_get_now;
var _emscripten_glNormalPointer=env._emscripten_glNormalPointer;
var _glAttachShader=env._glAttachShader;
@@ -6994,41 +11151,49 @@ var asm = (function(global, env, buffer) {
var _glCreateProgram=env._glCreateProgram;
var _glUniformMatrix4fv=env._glUniformMatrix4fv;
var _emscripten_glClearDepth=env._emscripten_glClearDepth;
- var _glLinkProgram=env._glLinkProgram;
var ___lock=env.___lock;
var emscriptenWebGLGetTexPixelData=env.emscriptenWebGLGetTexPixelData;
var ___syscall6=env.___syscall6;
- var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
+ var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
var _emscripten_glVertexAttrib3f=env._emscripten_glVertexAttrib3f;
var _time=env._time;
- var ___syscall146=env.___syscall146;
+ var _gettimeofday=env._gettimeofday;
+ var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
var _emscripten_glGetFramebufferAttachmentParameteriv=env._emscripten_glGetFramebufferAttachmentParameteriv;
var _emscripten_glBlendEquationSeparate=env._emscripten_glBlendEquationSeparate;
var _exit=env._exit;
var _emscripten_glEnableClientState=env._emscripten_glEnableClientState;
+ var __spawn_thread=env.__spawn_thread;
var _emscripten_glUniform4i=env._emscripten_glUniform4i;
+ var _emscripten_conditional_set_current_thread_status_js=env._emscripten_conditional_set_current_thread_status_js;
+ var _putenv=env._putenv;
var _pthread_join=env._pthread_join;
var _glCullFace=env._glCullFace;
var _emscripten_glGetPointerv=env._emscripten_glGetPointerv;
var _emscripten_set_keypress_callback=env._emscripten_set_keypress_callback;
var __emscripten_sample_gamepad_data=env.__emscripten_sample_gamepad_data;
+ var _fpathconf=env._fpathconf;
var _emscripten_get_gamepad_status=env._emscripten_get_gamepad_status;
var _emscripten_glUniform4f=env._emscripten_glUniform4f;
var _emscripten_glUniform2fv=env._emscripten_glUniform2fv;
var _glfwGetVideoModes=env._glfwGetVideoModes;
var ___unlock=env.___unlock;
var _emscripten_set_click_callback=env._emscripten_set_click_callback;
+ var _emscripten_glFrustum=env._emscripten_glFrustum;
+ var _emscripten_is_main_runtime_thread=env._emscripten_is_main_runtime_thread;
var _emscripten_glShaderBinary=env._emscripten_glShaderBinary;
var _emscripten_glDrawElements=env._emscripten_glDrawElements;
var _glVertexAttribPointer=env._glVertexAttribPointer;
var _emscripten_get_num_gamepads=env._emscripten_get_num_gamepads;
+ var ___buildEnvironment=env.___buildEnvironment;
var _glCompressedTexImage2D=env._glCompressedTexImage2D;
+ var _utimes=env._utimes;
var _emscripten_glUniform1iv=env._emscripten_glUniform1iv;
var _emscripten_glGetVertexAttribPointerv=env._emscripten_glGetVertexAttribPointerv;
var _glClearDepthf=env._glClearDepthf;
var _emscripten_glCompressedTexSubImage2D=env._emscripten_glCompressedTexSubImage2D;
var emscriptenWebGLGetUniform=env.emscriptenWebGLGetUniform;
- var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
+ var _tzset=env._tzset;
var _emscripten_glDeleteVertexArrays=env._emscripten_glDeleteVertexArrays;
var _glfwSetWindowShouldClose=env._glfwSetWindowShouldClose;
var _emscripten_glUniform1fv=env._emscripten_glUniform1fv;
@@ -7039,29 +11204,33 @@ var asm = (function(global, env, buffer) {
var _emscripten_glHint=env._emscripten_glHint;
var _glfwSetCharCallback=env._glfwSetCharCallback;
var emscriptenWebGLGetVertexAttrib=env.emscriptenWebGLGetVertexAttrib;
- var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
+ var _glGetFloatv=env._glGetFloatv;
var _emscripten_glDeleteProgram=env._emscripten_glDeleteProgram;
var _emscripten_glDeleteRenderbuffers=env._emscripten_glDeleteRenderbuffers;
+ var ___clock_gettime=env.___clock_gettime;
var _emscripten_glDrawElementsInstanced=env._emscripten_glDrawElementsInstanced;
var _emscripten_glVertexAttrib4f=env._emscripten_glVertexAttrib4f;
var _glDrawArrays=env._glDrawArrays;
var _emscripten_glTexSubImage2D=env._emscripten_glTexSubImage2D;
- var _emscripten_memcpy_big=env._emscripten_memcpy_big;
+ var _clearenv=env._clearenv;
var _emscripten_glPixelStorei=env._emscripten_glPixelStorei;
var _glCompileShader=env._glCompileShader;
var _emscripten_get_pointerlock_status=env._emscripten_get_pointerlock_status;
+ var _emscripten_memcpy_big=env._emscripten_memcpy_big;
var _emscripten_glUniformMatrix3fv=env._emscripten_glUniformMatrix3fv;
var _emscripten_glColorPointer=env._emscripten_glColorPointer;
+ var _getenv=env._getenv;
var _emscripten_glDepthRange=env._emscripten_glDepthRange;
var _emscripten_glGetBufferParameteriv=env._emscripten_glGetBufferParameteriv;
var _emscripten_glFinish=env._emscripten_glFinish;
- var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
- var _glGetFloatv=env._glGetFloatv;
+ var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
var _emscripten_asm_const_iii=env._emscripten_asm_const_iii;
var _emscripten_glDepthMask=env._emscripten_glDepthMask;
var _glfwSetWindowIconifyCallback=env._glfwSetWindowIconifyCallback;
var _emscripten_glDrawBuffers=env._emscripten_glDrawBuffers;
var _glfwTerminate=env._glfwTerminate;
+ var _emscripten_futex_wake=env._emscripten_futex_wake;
var _glFrontFace=env._glFrontFace;
var _emscripten_glGetObjectParameterivARB=env._emscripten_glGetObjectParameterivARB;
var _emscripten_exit_pointerlock=env._emscripten_exit_pointerlock;
@@ -7071,10 +11240,11 @@ var asm = (function(global, env, buffer) {
var _emscripten_glStencilFunc=env._emscripten_glStencilFunc;
var _abort=env._abort;
var _emscripten_glGetUniformiv=env._emscripten_glGetUniformiv;
+ var __cleanup_thread=env.__cleanup_thread;
var _glDeleteBuffers=env._glDeleteBuffers;
var _glBufferData=env._glBufferData;
var _glTexImage2D=env._glTexImage2D;
- var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
+ var _emscripten_set_current_thread_status_js=env._emscripten_set_current_thread_status_js;
var _glfwSetKeyCallback=env._glfwSetKeyCallback;
var _emscripten_glGenFramebuffers=env._emscripten_glGenFramebuffers;
var _emscripten_glUniformMatrix4fv=env._emscripten_glUniformMatrix4fv;
@@ -7085,8 +11255,9 @@ var asm = (function(global, env, buffer) {
var _emscripten_glBindFramebuffer=env._emscripten_glBindFramebuffer;
var _emscripten_glIsRenderbuffer=env._emscripten_glIsRenderbuffer;
var _glfwGetTime=env._glfwGetTime;
- var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
+ var _emscripten_glShaderSource=env._emscripten_glShaderSource;
var _emscripten_set_gamepadconnected_callback=env._emscripten_set_gamepadconnected_callback;
+ var _emscripten_syscall=env._emscripten_syscall;
var _emscripten_glGetVertexAttribiv=env._emscripten_glGetVertexAttribiv;
var _emscripten_glBindVertexArray=env._emscripten_glBindVertexArray;
var _emscripten_glDrawArraysInstanced=env._emscripten_glDrawArraysInstanced;
@@ -7096,18 +11267,19 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDeleteTextures=env._emscripten_glDeleteTextures;
var _emscripten_glBindRenderbuffer=env._emscripten_glBindRenderbuffer;
var _glfwGetPrimaryMonitor=env._glfwGetPrimaryMonitor;
- var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
+ var _glLinkProgram=env._glLinkProgram;
var _emscripten_glVertexAttribDivisor=env._emscripten_glVertexAttribDivisor;
var _emscripten_set_touchend_callback=env._emscripten_set_touchend_callback;
var _emscripten_glGetUniformfv=env._emscripten_glGetUniformfv;
var _emscripten_glGetVertexAttribfv=env._emscripten_glGetVertexAttribfv;
var _emscripten_glGetRenderbufferParameteriv=env._emscripten_glGetRenderbufferParameteriv;
+ var _emscripten_futex_wait=env._emscripten_futex_wait;
var _emscripten_glDeleteFramebuffers=env._emscripten_glDeleteFramebuffers;
var _glGetShaderiv=env._glGetShaderiv;
var _emscripten_glVertexAttrib3fv=env._emscripten_glVertexAttrib3fv;
var _glGetUniformLocation=env._glGetUniformLocation;
var _emscripten_glGetInfoLogARB=env._emscripten_glGetInfoLogARB;
- var _emscripten_glCompileShader=env._emscripten_glCompileShader;
+ var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
var _glClear=env._glClear;
var _glGenTextures=env._glGenTextures;
var _emscripten_glDisable=env._emscripten_glDisable;
@@ -7117,12 +11289,14 @@ var asm = (function(global, env, buffer) {
var _emscripten_glUniform3f=env._emscripten_glUniform3f;
var _emscripten_glGetShaderInfoLog=env._emscripten_glGetShaderInfoLog;
var _emscripten_glStencilOp=env._emscripten_glStencilOp;
+ var ___pthread_setcancelstate=env.___pthread_setcancelstate;
var _glBindAttribLocation=env._glBindAttribLocation;
var _glPixelStorei=env._glPixelStorei;
var _emscripten_glColorMask=env._emscripten_glColorMask;
var _emscripten_glLinkProgram=env._emscripten_glLinkProgram;
var _emscripten_glBlendEquation=env._emscripten_glBlendEquation;
var _emscripten_glIsTexture=env._emscripten_glIsTexture;
+ var _confstr=env._confstr;
var _emscripten_glGetProgramiv=env._emscripten_glGetProgramiv;
var _emscripten_glVertexAttrib1fv=env._emscripten_glVertexAttrib1fv;
var _emscripten_glBindTexture=env._emscripten_glBindTexture;
@@ -7132,29 +11306,42 @@ var asm = (function(global, env, buffer) {
var _emscripten_glDrawRangeElements=env._emscripten_glDrawRangeElements;
var ___syscall54=env.___syscall54;
var _emscripten_glDeleteBuffers=env._emscripten_glDeleteBuffers;
- var _glfwWaitEvents=env._glfwWaitEvents;
+ var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
var _glfwSwapBuffers=env._glfwSwapBuffers;
var _pthread_create=env._pthread_create;
var _emscripten_set_main_loop=env._emscripten_set_main_loop;
var _emscripten_glGetProgramInfoLog=env._emscripten_glGetProgramInfoLog;
var _glfwWindowHint=env._glfwWindowHint;
+ var _pthread_getschedparam=env._pthread_getschedparam;
var _emscripten_glIsShader=env._emscripten_glIsShader;
var _emscripten_glUniform4fv=env._emscripten_glUniform4fv;
var _emscripten_glGenVertexArrays=env._emscripten_glGenVertexArrays;
var _emscripten_glDrawArrays=env._emscripten_glDrawArrays;
var _emscripten_glCompressedTexImage2D=env._emscripten_glCompressedTexImage2D;
var _emscripten_glClearColor=env._emscripten_glClearColor;
+ var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
var _emscripten_glCreateProgram=env._emscripten_glCreateProgram;
var _emscripten_glCopyTexSubImage2D=env._emscripten_glCopyTexSubImage2D;
+ var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
var _glTexParameteri=env._glTexParameteri;
var _emscripten_glBindBuffer=env._emscripten_glBindBuffer;
+ var _atexit=env._atexit;
var _emscripten_glGetFloatv=env._emscripten_glGetFloatv;
var _emscripten_glDetachShader=env._emscripten_glDetachShader;
var _glClearColor=env._glClearColor;
var _glfwSetCursorPosCallback=env._glfwSetCursorPosCallback;
- var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
+ var _setenv=env._setenv;
var _emscripten_glCopyTexImage2D=env._emscripten_glCopyTexImage2D;
var _emscripten_glTexImage2D=env._emscripten_glTexImage2D;
+ var Atomics_load=global.Atomics.load;
+ var Atomics_store=global.Atomics.store;
+ var Atomics_exchange=global.Atomics.exchange;
+ var Atomics_compareExchange=global.Atomics.compareExchange;
+ var Atomics_add=global.Atomics.add;
+ var Atomics_sub=global.Atomics.sub;
+ var Atomics_and=global.Atomics.and;
+ var Atomics_or=global.Atomics.or;
+ var Atomics_xor=global.Atomics.xor;
var tempFloat = 0.0;
// EMSCRIPTEN_START_FUNCS
@@ -7203,7 +11390,7 @@ function getTempRet0() {
function _InitPhysics() {
var label = 0, sp = 0;
sp = STACKTOP;
- (_pthread_create((14000|0),(0|0),(2|0),(0|0))|0);
+ (_pthread_create((14280|0),(0|0),(2|0),(0|0))|0);
return;
}
function _PhysicsLoop($0) {
@@ -7211,53 +11398,53 @@ function _PhysicsLoop($0) {
var $$0 = 0, $$010 = 0, $$011 = 0, $$09 = 0, $$0912 = 0, $$0913 = 0, $$pr = 0.0, $1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0;
var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3501] = 1;
- HEAPF64[1712] = 0.0;
+ HEAP32[3571] = 1;
+ HEAPF64[1747] = 0.0;
_InitTimer();
- $1 = HEAP32[3501]|0;
+ $1 = HEAP32[3571]|0;
$2 = ($1|0)==(0);
if (!($2)) {
while(1) {
$3 = (+_GetCurrentTime());
- HEAPF64[1713] = $3;
- $4 = +HEAPF64[1714];
+ HEAPF64[1748] = $3;
+ $4 = +HEAPF64[1749];
$5 = $3 - $4;
- HEAPF64[1715] = $5;
- $6 = +HEAPF64[1712];
+ HEAPF64[1750] = $5;
+ $6 = +HEAPF64[1747];
$7 = $5 + $6;
- HEAPF64[1712] = $7;
+ HEAPF64[1747] = $7;
_MathClamp();
- $$pr = +HEAPF64[1712];
+ $$pr = +HEAPF64[1747];
$8 = !($$pr >= 0.016666666666666666);
if (!($8)) {
while(1) {
_PhysicsStep();
- $9 = +HEAPF64[1715];
- $10 = +HEAPF64[1712];
+ $9 = +HEAPF64[1750];
+ $10 = +HEAPF64[1747];
$11 = $10 - $9;
- HEAPF64[1712] = $11;
+ HEAPF64[1747] = $11;
$12 = !($11 >= 0.016666666666666666);
if ($12) {
break;
}
}
}
- $13 = +HEAPF64[1713];
- HEAPF64[1714] = $13;
- $14 = HEAP32[3501]|0;
+ $13 = +HEAPF64[1748];
+ HEAPF64[1749] = $13;
+ $14 = HEAP32[3571]|0;
$15 = ($14|0)==(0);
if ($15) {
break;
}
}
}
- $16 = HEAP32[3568]|0;
+ $16 = HEAP32[3638]|0;
$$0912 = (($16) + -1)|0;
$17 = ($$0912|0)>(-1);
if ($17) {
$$0913 = $$0912;
while(1) {
- $20 = (14276 + ($$0913<<2)|0);
+ $20 = (14556 + ($$0913<<2)|0);
$21 = HEAP32[$20>>2]|0;
_DestroyPhysicsManifold($21);
$$09 = (($$0913) + -1)|0;
@@ -7269,7 +11456,7 @@ function _PhysicsLoop($0) {
}
}
}
- $18 = HEAP32[3503]|0;
+ $18 = HEAP32[3573]|0;
$$010 = (($18) + -1)|0;
$19 = ($$010|0)>(-1);
if ($19) {
@@ -7278,7 +11465,7 @@ function _PhysicsLoop($0) {
return (0|0);
}
while(1) {
- $23 = (14016 + ($$011<<2)|0);
+ $23 = (14296 + ($$011<<2)|0);
$24 = HEAP32[$23>>2]|0;
_DestroyPhysicsBody($24);
$$0 = (($$011) + -1)|0;
@@ -7296,8 +11483,8 @@ function _SetPhysicsGravity($0,$1) {
$1 = +$1;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAPF32[7666] = $0;
- HEAPF32[2] = $1;
+ HEAPF32[7738] = $0;
+ HEAPF32[5] = $1;
return;
}
function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
@@ -7321,10 +11508,10 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
$5 = sp + 8|0;
$6 = sp;
$7 = (_malloc(500)|0);
- $8 = HEAP32[3502]|0;
+ $8 = HEAP32[3572]|0;
$9 = (($8) + 500)|0;
- HEAP32[3502] = $9;
- $10 = HEAP32[3503]|0;
+ HEAP32[3572] = $9;
+ $10 = HEAP32[3573]|0;
$11 = ($10|0)==(0);
$$0116149 = 0;
L1: while(1) {
@@ -7335,7 +11522,7 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
$$0119144 = 0;
}
while(1) {
- $14 = (14016 + ($$0119144<<2)|0);
+ $14 = (14296 + ($$0119144<<2)|0);
$15 = HEAP32[$14>>2]|0;
$16 = HEAP32[$15>>2]|0;
$17 = ($16|0)==($$0116149|0);
@@ -7531,11 +11718,11 @@ function _CreatePhysicsBodyPolygon($0,$1,$2,$3) {
HEAP32[$118>>2] = 0;
$119 = ((($7)) + 80|0);
HEAP32[$119>>2] = 0;
- $120 = HEAP32[3503]|0;
- $121 = (14016 + ($120<<2)|0);
+ $120 = HEAP32[3573]|0;
+ $121 = (14296 + ($120<<2)|0);
HEAP32[$121>>2] = $7;
$122 = (($120) + 1)|0;
- HEAP32[3503] = $122;
+ HEAP32[3573] = $122;
STACKTOP = sp;return ($7|0);
}
function _MathCrossVector2($0,$1) {
@@ -8188,16 +12375,16 @@ function _DestroyPhysicsBody($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3503]|0;
+ $3 = HEAP32[3573]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3503]|0;
+ $5 = HEAP32[3573]|0;
$$02023 = 0;
while(1) {
- $6 = (14016 + ($$02023<<2)|0);
+ $6 = (14296 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -8216,24 +12403,24 @@ function _DestroyPhysicsBody($0) {
}
}
} while(0);
- $12 = (14016 + ($$021<<2)|0);
+ $12 = (14296 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3502]|0;
+ $14 = HEAP32[3572]|0;
$15 = (($14) + -500)|0;
- HEAP32[3502] = $15;
+ HEAP32[3572] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3503]|0;
+ $16 = HEAP32[3573]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3503]|0;
+ $18 = HEAP32[3573]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14016 + ($$022<<2)|0);
- $25 = (14016 + ($20<<2)|0);
+ $24 = (14296 + ($$022<<2)|0);
+ $25 = (14296 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -8249,7 +12436,7 @@ function _DestroyPhysicsBody($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3503] = $19;
+ HEAP32[3573] = $19;
return;
}
function _TriangleBarycenter($0,$1,$2,$3) {
@@ -8321,20 +12508,20 @@ function _MathNormalize($0) {
function _GetPhysicsBodiesCount() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[3503]|0;
+ $0 = HEAP32[3573]|0;
return ($0|0);
}
function _GetPhysicsBody($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3503]|0;
+ $1 = HEAP32[3573]|0;
$2 = ($1>>>0)>($0>>>0);
if (!($2)) {
$$0 = 0;
return ($$0|0);
}
- $3 = (14016 + ($0<<2)|0);
+ $3 = (14296 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$0 = $4;
return ($$0|0);
@@ -8343,11 +12530,11 @@ function _GetPhysicsShapeVerticesCount($0) {
$0 = $0|0;
var $$1 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[3503]|0;
+ $1 = HEAP32[3573]|0;
$2 = ($1>>>0)>($0>>>0);
L1: do {
if ($2) {
- $3 = (14016 + ($0<<2)|0);
+ $3 = (14296 + ($0<<2)|0);
$4 = HEAP32[$3>>2]|0;
$5 = ($4|0)==(0|0);
if ($5) {
@@ -8474,20 +12661,20 @@ function _ResetPhysics() {
var $$0 = 0, $$016 = 0, $$01620 = 0, $$01621 = 0, $$018 = 0, $$019 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
var $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[3503]|0;
+ $0 = HEAP32[3573]|0;
$$01620 = (($0) + -1)|0;
$1 = ($$01620|0)>(-1);
if ($1) {
$$01621 = $$01620;
while(1) {
- $4 = (14016 + ($$01621<<2)|0);
+ $4 = (14296 + ($$01621<<2)|0);
$5 = HEAP32[$4>>2]|0;
$6 = ($5|0)==(0|0);
if (!($6)) {
_free($5);
- $8 = HEAP32[3502]|0;
+ $8 = HEAP32[3572]|0;
$9 = (($8) + -500)|0;
- HEAP32[3502] = $9;
+ HEAP32[3572] = $9;
}
$$016 = (($$01621) + -1)|0;
$7 = ($$016|0)>(-1);
@@ -8498,25 +12685,25 @@ function _ResetPhysics() {
}
}
}
- HEAP32[3503] = 0;
- $2 = HEAP32[3568]|0;
+ HEAP32[3573] = 0;
+ $2 = HEAP32[3638]|0;
$$018 = (($2) + -1)|0;
$3 = ($$018|0)>(-1);
if ($3) {
$$019 = $$018;
} else {
- HEAP32[3568] = 0;
+ HEAP32[3638] = 0;
return;
}
while(1) {
- $10 = (14276 + ($$019<<2)|0);
+ $10 = (14556 + ($$019<<2)|0);
$11 = HEAP32[$10>>2]|0;
$12 = ($11|0)==(0|0);
if (!($12)) {
_free($11);
- $14 = HEAP32[3502]|0;
+ $14 = HEAP32[3572]|0;
$15 = (($14) + -56)|0;
- HEAP32[3502] = $15;
+ HEAP32[3572] = $15;
}
$$0 = (($$019) + -1)|0;
$13 = ($$0|0)>(-1);
@@ -8526,176 +12713,193 @@ function _ResetPhysics() {
break;
}
}
- HEAP32[3568] = 0;
+ HEAP32[3638] = 0;
return;
}
function _ClosePhysics() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[3501] = 0;
- $0 = HEAP32[3500]|0;
+ HEAP32[3571] = 0;
+ $0 = HEAP32[3570]|0;
(_pthread_join(($0|0),(0|0))|0);
return;
}
function _main() {
- var $$06063 = 0, $$06063$in = 0, $$06166 = 0, $$064 = 0, $$byval_copy4 = 0, $$byval_copy5 = 0, $$byval_copy6 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0;
- var $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0;
- var $39 = 0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
- var $exitcond = 0, $exitcond73 = 0, label = 0, sp = 0;
+ var $$byval_copy = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0.0, $16 = 0, $17 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, label = 0;
+ var sp = 0;
sp = STACKTOP;
- STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
- $$byval_copy6 = sp + 80|0;
- $$byval_copy5 = sp + 72|0;
- $$byval_copy4 = sp + 64|0;
- $0 = sp + 56|0;
- $1 = sp + 48|0;
- $2 = sp + 40|0;
- $3 = sp + 92|0;
- $4 = sp + 24|0;
- $5 = sp + 8|0;
- $6 = sp + 88|0;
- $7 = sp + 32|0;
- $8 = sp + 16|0;
- $9 = sp;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $$byval_copy = sp + 8|0;
+ $0 = sp;
_SetConfigFlags(32);
- _InitWindow(800,450,3352);
- _SetTargetFPS(60);
- $10 = (_MeasureText(3383,30)|0);
- $11 = (800 - ($10))|0;
- $12 = (($11) + -10)|0;
+ $1 = HEAP32[2]|0;
+ $2 = HEAP32[3]|0;
+ _InitWindow($1,$2,3244);
+ $3 = HEAP32[2]|0;
+ $4 = (_MeasureText(3275,30)|0);
+ $5 = (($3) + -10)|0;
+ $6 = (($5) - ($4))|0;
+ HEAP32[7735] = $6;
_InitPhysics();
_SetPhysicsGravity(0.0,0.0);
- HEAPF32[$0>>2] = 400.0;
- $13 = ((($0)) + 4|0);
- HEAPF32[$13>>2] = 225.0;
+ $7 = HEAP32[2]|0;
+ $8 = (($7|0) / 2)&-1;
+ $9 = (+($8|0));
+ HEAPF32[$0>>2] = $9;
+ $10 = ((($0)) + 4|0);
+ $11 = HEAP32[3]|0;
+ $12 = (($11|0) / 2)&-1;
+ $13 = (+($12|0));
+ HEAPF32[$10>>2] = $13;
$14 = (_GetRandomValue(80,200)|0);
$15 = (+($14|0));
$16 = (_GetRandomValue(3,8)|0);
- ;HEAP32[$$byval_copy6>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy6+4>>2]=HEAP32[$0+4>>2]|0;
- (_CreatePhysicsBodyPolygon($$byval_copy6,$15,$16,10.0)|0);
- $17 = (_WindowShouldClose()|0);
- $18 = ($17|0)==(0);
- if (!($18)) {
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
+ ;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;
+ $17 = (_CreatePhysicsBodyPolygon($$byval_copy,$15,$16,10.0)|0);
+ HEAP32[7736] = $17;
+ _emscripten_set_main_loop((1|0),0,1);
+ _ClosePhysics();
+ _CloseWindow();
+ STACKTOP = sp;return 0;
+}
+function _UpdateDrawFrame() {
+ var $$03840 = 0, $$03941 = 0, $$046 = 0, $$046$in = 0, $$byval_copy3 = 0, $$byval_copy4 = 0, $$byval_copy5 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0, $19 = 0.0, $2 = 0;
+ var $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0.0, $31 = 0.0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0;
+ var $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
+ var $exitcond = 0, $exitcond49 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 80|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(80|0);
+ $$byval_copy5 = sp + 64|0;
+ $$byval_copy4 = sp + 56|0;
+ $$byval_copy3 = sp + 48|0;
+ $0 = sp + 40|0;
+ $1 = sp + 32|0;
+ $2 = sp + 76|0;
+ $3 = sp + 24|0;
+ $4 = sp + 8|0;
+ $5 = sp + 72|0;
+ $6 = sp + 20|0;
+ $7 = sp + 16|0;
+ $8 = sp;
+ $9 = (_IsKeyPressed(82)|0);
+ $10 = ($9|0)==(0);
+ if (!($10)) {
+ _ResetPhysics();
+ $11 = HEAP32[2]|0;
+ $12 = (($11|0) / 2)&-1;
+ $13 = (+($12|0));
+ HEAPF32[$0>>2] = $13;
+ $14 = ((($0)) + 4|0);
+ $15 = HEAP32[3]|0;
+ $16 = (($15|0) / 2)&-1;
+ $17 = (+($16|0));
+ HEAPF32[$14>>2] = $17;
+ $18 = (_GetRandomValue(80,200)|0);
+ $19 = (+($18|0));
+ $20 = (_GetRandomValue(3,8)|0);
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$0+4>>2]|0;
+ $21 = (_CreatePhysicsBodyPolygon($$byval_copy5,$19,$20,10.0)|0);
+ HEAP32[7736] = $21;
+ }
+ $22 = (_IsMouseButtonPressed(0)|0);
+ $23 = ($22|0)==(0);
+ if (!($23)) {
+ $24 = (_GetPhysicsBodiesCount()|0);
+ $25 = ($24|0)>(0);
+ if ($25) {
+ $$046$in = $24;
+ while(1) {
+ $$046 = (($$046$in) + -1)|0;
+ $26 = (_GetPhysicsBody($$046)|0);
+ $27 = ($26|0)==(0|0);
+ if (!($27)) {
+ _GetMousePosition($1);
+ $29 = ((($26)) + 56|0);
+ $30 = +HEAPF32[$29>>2];
+ $31 = 10.0 / $30;
+ ;HEAP32[$$byval_copy5>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$1+4>>2]|0;
+ _PhysicsShatter($26,$$byval_copy5,$31);
+ }
+ $28 = ($$046$in|0)>(1);
+ if ($28) {
+ $$046$in = $$046;
+ } else {
+ break;
+ }
+ }
+ }
}
- $19 = ((($3)) + 1|0);
- $20 = ((($3)) + 2|0);
- $21 = ((($3)) + 3|0);
- $22 = (($11) + 40)|0;
- $23 = ((($6)) + 1|0);
- $24 = ((($6)) + 2|0);
- $25 = ((($6)) + 3|0);
- $26 = ((($1)) + 4|0);
- while(1) {
- $27 = (_IsKeyPressed(82)|0);
- $28 = ($27|0)==(0);
- if (!($28)) {
- _ResetPhysics();
- HEAPF32[$1>>2] = 400.0;
- HEAPF32[$26>>2] = 225.0;
- $29 = (_GetRandomValue(80,200)|0);
- $30 = (+($29|0));
- $31 = (_GetRandomValue(3,8)|0);
- ;HEAP32[$$byval_copy6>>2]=HEAP32[$1>>2]|0;HEAP32[$$byval_copy6+4>>2]=HEAP32[$1+4>>2]|0;
- (_CreatePhysicsBodyPolygon($$byval_copy6,$30,$31,10.0)|0);
- }
- $32 = (_IsMouseButtonPressed(0)|0);
- $33 = ($32|0)==(0);
- if (!($33)) {
- $34 = (_GetPhysicsBodiesCount()|0);
- $35 = ($34|0)>(0);
- if ($35) {
- $$06063$in = $34;
+ _BeginDrawing();
+ HEAP8[$2>>0] = 0;
+ $32 = ((($2)) + 1|0);
+ HEAP8[$32>>0] = 0;
+ $33 = ((($2)) + 2|0);
+ HEAP8[$33>>0] = 0;
+ $34 = ((($2)) + 3|0);
+ HEAP8[$34>>0] = -1;
+ ;HEAP8[$$byval_copy5>>0]=HEAP8[$2>>0]|0;HEAP8[$$byval_copy5+1>>0]=HEAP8[$2+1>>0]|0;HEAP8[$$byval_copy5+2>>0]=HEAP8[$2+2>>0]|0;HEAP8[$$byval_copy5+3>>0]=HEAP8[$2+3>>0]|0;
+ _ClearBackground($$byval_copy5);
+ $35 = (_GetPhysicsBodiesCount()|0);
+ $36 = ($35|0)>(0);
+ if ($36) {
+ $37 = ((($5)) + 1|0);
+ $38 = ((($5)) + 2|0);
+ $39 = ((($5)) + 3|0);
+ $$03941 = 0;
+ while(1) {
+ $46 = (_GetPhysicsBody($$03941)|0);
+ $47 = (_GetPhysicsShapeVerticesCount($$03941)|0);
+ $48 = ($47|0)>(0);
+ if ($48) {
+ $$03840 = 0;
while(1) {
- $$06063 = (($$06063$in) + -1)|0;
- $36 = (_GetPhysicsBody($$06063)|0);
- $37 = ($36|0)==(0|0);
- if (!($37)) {
- _GetMousePosition($2);
- $39 = ((($36)) + 56|0);
- $40 = +HEAPF32[$39>>2];
- $41 = 10.0 / $40;
- ;HEAP32[$$byval_copy6>>2]=HEAP32[$2>>2]|0;HEAP32[$$byval_copy6+4>>2]=HEAP32[$2+4>>2]|0;
- _PhysicsShatter($36,$$byval_copy6,$41);
- }
- $38 = ($$06063$in|0)>(1);
- if ($38) {
- $$06063$in = $$06063;
- } else {
+ _GetPhysicsShapeVertex($3,$46,$$03840);
+ $50 = (($$03840) + 1)|0;
+ $51 = ($50|0)<($47|0);
+ $52 = $51 ? $50 : 0;
+ _GetPhysicsShapeVertex($4,$46,$52);
+ HEAP8[$5>>0] = 0;
+ HEAP8[$37>>0] = -28;
+ HEAP8[$38>>0] = 48;
+ HEAP8[$39>>0] = -1;
+ ;HEAP32[$$byval_copy3>>2]=HEAP32[$3>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[$3+4>>2]|0;
+ ;HEAP32[$$byval_copy4>>2]=HEAP32[$4>>2]|0;HEAP32[$$byval_copy4+4>>2]=HEAP32[$4+4>>2]|0;
+ ;HEAP8[$$byval_copy5>>0]=HEAP8[$5>>0]|0;HEAP8[$$byval_copy5+1>>0]=HEAP8[$5+1>>0]|0;HEAP8[$$byval_copy5+2>>0]=HEAP8[$5+2>>0]|0;HEAP8[$$byval_copy5+3>>0]=HEAP8[$5+3>>0]|0;
+ _DrawLineV($$byval_copy3,$$byval_copy4,$$byval_copy5);
+ $exitcond = ($50|0)==($47|0);
+ if ($exitcond) {
break;
+ } else {
+ $$03840 = $50;
}
}
}
- }
- _BeginDrawing();
- HEAP8[$3>>0] = 0;
- HEAP8[$19>>0] = 0;
- HEAP8[$20>>0] = 0;
- HEAP8[$21>>0] = -1;
- ;HEAP8[$$byval_copy6>>0]=HEAP8[$3>>0]|0;HEAP8[$$byval_copy6+1>>0]=HEAP8[$3+1>>0]|0;HEAP8[$$byval_copy6+2>>0]=HEAP8[$3+2>>0]|0;HEAP8[$$byval_copy6+3>>0]=HEAP8[$3+3>>0]|0;
- _ClearBackground($$byval_copy6);
- $42 = (_GetPhysicsBodiesCount()|0);
- $43 = ($42|0)>(0);
- if ($43) {
- $$06166 = 0;
- while(1) {
- $46 = (_GetPhysicsBody($$06166)|0);
- $47 = (_GetPhysicsShapeVerticesCount($$06166)|0);
- $48 = ($47|0)>(0);
- if ($48) {
- $$064 = 0;
- while(1) {
- _GetPhysicsShapeVertex($4,$46,$$064);
- $50 = (($$064) + 1)|0;
- $51 = ($50|0)<($47|0);
- $52 = $51 ? $50 : 0;
- _GetPhysicsShapeVertex($5,$46,$52);
- HEAP8[$6>>0] = 0;
- HEAP8[$23>>0] = -28;
- HEAP8[$24>>0] = 48;
- HEAP8[$25>>0] = -1;
- ;HEAP32[$$byval_copy4>>2]=HEAP32[$4>>2]|0;HEAP32[$$byval_copy4+4>>2]=HEAP32[$4+4>>2]|0;
- ;HEAP32[$$byval_copy5>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$5+4>>2]|0;
- ;HEAP8[$$byval_copy6>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy6+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy6+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy6+3>>0]=HEAP8[$6+3>>0]|0;
- _DrawLineV($$byval_copy4,$$byval_copy5,$$byval_copy6);
- $exitcond = ($50|0)==($47|0);
- if ($exitcond) {
- break;
- } else {
- $$064 = $50;
- }
- }
- }
- $49 = (($$06166) + 1)|0;
- $exitcond73 = ($49|0)==($42|0);
- if ($exitcond73) {
- break;
- } else {
- $$06166 = $49;
- }
- }
- }
- HEAP32[$7>>2] = -1;
- ;HEAP8[$$byval_copy6>>0]=HEAP8[$7>>0]|0;HEAP8[$$byval_copy6+1>>0]=HEAP8[$7+1>>0]|0;HEAP8[$$byval_copy6+2>>0]=HEAP8[$7+2>>0]|0;HEAP8[$$byval_copy6+3>>0]=HEAP8[$7+3>>0]|0;
- _DrawText(3390,10,10,10,$$byval_copy6);
- HEAP32[$8>>2] = -1;
- ;HEAP8[$$byval_copy6>>0]=HEAP8[$8>>0]|0;HEAP8[$$byval_copy6+1>>0]=HEAP8[$8+1>>0]|0;HEAP8[$$byval_copy6+2>>0]=HEAP8[$8+2>>0]|0;HEAP8[$$byval_copy6+3>>0]=HEAP8[$8+3>>0]|0;
- _DrawText(3383,$12,15,30,$$byval_copy6);
- HEAP32[$9>>2] = -1;
- ;HEAP8[$$byval_copy6>>0]=HEAP8[$9>>0]|0;HEAP8[$$byval_copy6+1>>0]=HEAP8[$9+1>>0]|0;HEAP8[$$byval_copy6+2>>0]=HEAP8[$9+2>>0]|0;HEAP8[$$byval_copy6+3>>0]=HEAP8[$9+3>>0]|0;
- _DrawText(3467,$22,8,10,$$byval_copy6);
- _EndDrawing();
- $44 = (_WindowShouldClose()|0);
- $45 = ($44|0)==(0);
- if (!($45)) {
- break;
- }
- }
- _ClosePhysics();
- _CloseWindow();
- STACKTOP = sp;return 0;
+ $49 = (($$03941) + 1)|0;
+ $exitcond49 = ($49|0)==($35|0);
+ if ($exitcond49) {
+ break;
+ } else {
+ $$03941 = $49;
+ }
+ }
+ }
+ HEAP32[$6>>2] = -1;
+ ;HEAP8[$$byval_copy5>>0]=HEAP8[$6>>0]|0;HEAP8[$$byval_copy5+1>>0]=HEAP8[$6+1>>0]|0;HEAP8[$$byval_copy5+2>>0]=HEAP8[$6+2>>0]|0;HEAP8[$$byval_copy5+3>>0]=HEAP8[$6+3>>0]|0;
+ _DrawText(3282,10,10,10,$$byval_copy5);
+ $40 = HEAP32[7735]|0;
+ $41 = HEAP32[4]|0;
+ HEAP32[$7>>2] = -1;
+ ;HEAP8[$$byval_copy5>>0]=HEAP8[$7>>0]|0;HEAP8[$$byval_copy5+1>>0]=HEAP8[$7+1>>0]|0;HEAP8[$$byval_copy5+2>>0]=HEAP8[$7+2>>0]|0;HEAP8[$$byval_copy5+3>>0]=HEAP8[$7+3>>0]|0;
+ _DrawText(3275,$40,$41,30,$$byval_copy5);
+ $42 = HEAP32[7735]|0;
+ $43 = (($42) + 50)|0;
+ $44 = HEAP32[4]|0;
+ $45 = (($44) + -7)|0;
+ HEAP32[$8>>2] = -1;
+ ;HEAP8[$$byval_copy5>>0]=HEAP8[$8>>0]|0;HEAP8[$$byval_copy5+1>>0]=HEAP8[$8+1>>0]|0;HEAP8[$$byval_copy5+2>>0]=HEAP8[$8+2>>0]|0;HEAP8[$$byval_copy5+3>>0]=HEAP8[$8+3>>0]|0;
+ _DrawText(3359,$43,$45,10,$$byval_copy5);
+ _EndDrawing();
+ STACKTOP = sp;return;
}
function _GetRandomNumber() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
@@ -8710,7 +12914,7 @@ function _InitTimer() {
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetCurrentTime());
- HEAPF64[1714] = $1;
+ HEAPF64[1749] = $1;
return;
}
function _GetCurrentTime() {
@@ -8737,7 +12941,7 @@ function _GetCurrentTime() {
function _MathClamp() {
var $$sink = 0.0, $0 = 0.0, $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = +HEAPF64[1712];
+ $0 = +HEAPF64[1747];
$1 = $0 < 0.0;
if ($1) {
$$sink = 0.0;
@@ -8749,7 +12953,7 @@ function _MathClamp() {
return;
}
}
- HEAPF64[1712] = $$sink;
+ HEAPF64[1747] = $$sink;
return;
}
function _PhysicsStep() {
@@ -8763,16 +12967,16 @@ function _PhysicsStep() {
var $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0;
var $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7665]|0;
+ $0 = HEAP32[7737]|0;
$1 = (($0) + 1)|0;
- HEAP32[7665] = $1;
- $2 = HEAP32[3568]|0;
+ HEAP32[7737] = $1;
+ $2 = HEAP32[3638]|0;
$$0167 = (($2) + -1)|0;
$3 = ($$0167|0)>(-1);
if ($3) {
$$0168 = $$0167;
while(1) {
- $6 = (14276 + ($$0168<<2)|0);
+ $6 = (14556 + ($$0168<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = ($7|0)==(0|0);
if (!($8)) {
@@ -8787,7 +12991,7 @@ function _PhysicsStep() {
}
}
}
- $4 = HEAP32[3503]|0;
+ $4 = HEAP32[3573]|0;
$5 = ($4|0)==(0);
if ($5) {
$17 = $4;
@@ -8795,7 +12999,7 @@ function _PhysicsStep() {
} else {
$$0125165 = 0;
while(1) {
- $11 = (14016 + ($$0125165<<2)|0);
+ $11 = (14296 + ($$0125165<<2)|0);
$12 = HEAP32[$11>>2]|0;
$13 = ((($12)) + 76|0);
HEAP32[$13>>2] = 0;
@@ -8807,24 +13011,24 @@ function _PhysicsStep() {
break;
}
}
- $$pr = HEAP32[3503]|0;
+ $$pr = HEAP32[3573]|0;
$10 = ($$pr|0)==(0);
if (!($10)) {
$$0126163 = 0;
while(1) {
- $19 = (14016 + ($$0126163<<2)|0);
+ $19 = (14296 + ($$0126163<<2)|0);
$20 = HEAP32[$19>>2]|0;
$21 = ($20|0)==(0|0);
if (!($21)) {
$$0130160 = (($$0126163) + 1)|0;
- $22 = HEAP32[3503]|0;
+ $22 = HEAP32[3573]|0;
$23 = ($$0130160>>>0)<($22>>>0);
if ($23) {
$24 = ((($20)) + 56|0);
$25 = ((($20)) + 84|0);
$$0130161 = $$0130160;
while(1) {
- $26 = (14016 + ($$0130161<<2)|0);
+ $26 = (14296 + ($$0130161<<2)|0);
$27 = HEAP32[$26>>2]|0;
$28 = ($27|0)==(0|0);
do {
@@ -8930,7 +13134,7 @@ function _PhysicsStep() {
}
} while(0);
$$0130 = (($$0130161) + 1)|0;
- $29 = HEAP32[3503]|0;
+ $29 = HEAP32[3573]|0;
$30 = ($$0130>>>0)<($29>>>0);
if ($30) {
$$0130161 = $$0130;
@@ -8941,7 +13145,7 @@ function _PhysicsStep() {
}
}
$97 = (($$0126163) + 1)|0;
- $98 = HEAP32[3503]|0;
+ $98 = HEAP32[3573]|0;
$99 = ($97>>>0)<($98>>>0);
if ($99) {
$$0126163 = $97;
@@ -8956,10 +13160,10 @@ function _PhysicsStep() {
if ((label|0) == 8) {
$16 = ($17|0)==(0);
if (!($16)) {
- $18 = HEAP32[3503]|0;
+ $18 = HEAP32[3573]|0;
$$0135158 = 0;
while(1) {
- $103 = (14016 + ($$0135158<<2)|0);
+ $103 = (14296 + ($$0135158<<2)|0);
$104 = HEAP32[$103>>2]|0;
$105 = ($104|0)==(0|0);
if (!($105)) {
@@ -8975,15 +13179,15 @@ function _PhysicsStep() {
}
}
}
- $100 = HEAP32[3568]|0;
+ $100 = HEAP32[3638]|0;
$101 = ($100|0)==(0);
if ($101) {
$$0134155 = 0;$114 = 0;
} else {
- $102 = HEAP32[3568]|0;
+ $102 = HEAP32[3638]|0;
$$0136156 = 0;
while(1) {
- $108 = (14276 + ($$0136156<<2)|0);
+ $108 = (14556 + ($$0136156<<2)|0);
$109 = HEAP32[$108>>2]|0;
$110 = ($109|0)==(0|0);
if (!($110)) {
@@ -9003,12 +13207,12 @@ function _PhysicsStep() {
while(1) {
if ((label|0) == 32) {
label = 0;
- $$pr172 = HEAP32[3568]|0;
+ $$pr172 = HEAP32[3638]|0;
$$0134155 = $$0134155$ph;$114 = $$pr172;
}
$113 = ($114|0)==(0);
if (!($113)) {
- $115 = (14276 + ($$0134155<<2)|0);
+ $115 = (14556 + ($$0134155<<2)|0);
$$0133152 = 0;
while(1) {
$120 = HEAP32[$115>>2]|0;
@@ -9017,7 +13221,7 @@ function _PhysicsStep() {
_IntegratePhysicsImpulses($120);
}
$122 = (($$0133152) + 1)|0;
- $123 = HEAP32[3568]|0;
+ $123 = HEAP32[3638]|0;
$124 = ($122>>>0)<($123>>>0);
if ($124) {
$$0133152 = $122;
@@ -9035,13 +13239,13 @@ function _PhysicsStep() {
label = 32;
}
}
- $116 = HEAP32[3503]|0;
+ $116 = HEAP32[3573]|0;
$117 = ($116|0)==(0);
if (!($117)) {
- $118 = HEAP32[3503]|0;
+ $118 = HEAP32[3573]|0;
$$0131150 = 0;
while(1) {
- $128 = (14016 + ($$0131150<<2)|0);
+ $128 = (14296 + ($$0131150<<2)|0);
$129 = HEAP32[$128>>2]|0;
$130 = ($129|0)==(0|0);
if (!($130)) {
@@ -9056,13 +13260,13 @@ function _PhysicsStep() {
}
}
}
- $125 = HEAP32[3568]|0;
+ $125 = HEAP32[3638]|0;
$126 = ($125|0)==(0);
if (!($126)) {
- $127 = HEAP32[3568]|0;
+ $127 = HEAP32[3638]|0;
$$0129148 = 0;
while(1) {
- $136 = (14276 + ($$0129148<<2)|0);
+ $136 = (14556 + ($$0129148<<2)|0);
$137 = HEAP32[$136>>2]|0;
$138 = ($137|0)==(0|0);
if (!($138)) {
@@ -9077,15 +13281,15 @@ function _PhysicsStep() {
}
}
}
- $133 = HEAP32[3503]|0;
+ $133 = HEAP32[3573]|0;
$134 = ($133|0)==(0);
if ($134) {
return;
}
- $135 = HEAP32[3503]|0;
+ $135 = HEAP32[3573]|0;
$$0127147 = 0;
while(1) {
- $141 = (14016 + ($$0127147<<2)|0);
+ $141 = (14296 + ($$0127147<<2)|0);
$142 = HEAP32[$141>>2]|0;
$143 = ($142|0)==(0|0);
if (!($143)) {
@@ -9116,16 +13320,16 @@ function _DestroyPhysicsManifold($0) {
return;
}
$2 = HEAP32[$0>>2]|0;
- $3 = HEAP32[3568]|0;
+ $3 = HEAP32[3638]|0;
$4 = ($3|0)==(0);
L4: do {
if ($4) {
$$021 = -1;
} else {
- $5 = HEAP32[3568]|0;
+ $5 = HEAP32[3638]|0;
$$02023 = 0;
while(1) {
- $6 = (14276 + ($$02023<<2)|0);
+ $6 = (14556 + ($$02023<<2)|0);
$7 = HEAP32[$6>>2]|0;
$8 = HEAP32[$7>>2]|0;
$9 = ($8|0)==($2|0);
@@ -9144,24 +13348,24 @@ function _DestroyPhysicsManifold($0) {
}
}
} while(0);
- $12 = (14276 + ($$021<<2)|0);
+ $12 = (14556 + ($$021<<2)|0);
$13 = HEAP32[$12>>2]|0;
_free($13);
- $14 = HEAP32[3502]|0;
+ $14 = HEAP32[3572]|0;
$15 = (($14) + -56)|0;
- HEAP32[3502] = $15;
+ HEAP32[3572] = $15;
HEAP32[$12>>2] = 0;
- $16 = HEAP32[3568]|0;
+ $16 = HEAP32[3638]|0;
$17 = ($$021>>>0)<($16>>>0);
if ($17) {
- $18 = HEAP32[3568]|0;
+ $18 = HEAP32[3638]|0;
$$022 = $$021;$22 = $16;
while(1) {
$20 = (($$022) + 1)|0;
$21 = ($20>>>0)<($22>>>0);
if ($21) {
- $24 = (14276 + ($$022<<2)|0);
- $25 = (14276 + ($20<<2)|0);
+ $24 = (14556 + ($$022<<2)|0);
+ $25 = (14556 + ($20<<2)|0);
$26 = HEAP32[$25>>2]|0;
HEAP32[$24>>2] = $26;
}
@@ -9177,7 +13381,7 @@ function _DestroyPhysicsManifold($0) {
$$lcssa = $16;
}
$19 = (($$lcssa) + -1)|0;
- HEAP32[3568] = $19;
+ HEAP32[3638] = $19;
return;
}
function _CreatePhysicsManifold($0,$1) {
@@ -9187,10 +13391,10 @@ function _CreatePhysicsManifold($0,$1) {
var $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
sp = STACKTOP;
$2 = (_malloc(56)|0);
- $3 = HEAP32[3502]|0;
+ $3 = HEAP32[3572]|0;
$4 = (($3) + 56)|0;
- HEAP32[3502] = $4;
- $5 = HEAP32[3568]|0;
+ HEAP32[3572] = $4;
+ $5 = HEAP32[3638]|0;
$6 = ($5|0)==(0);
$$04457 = 0;
L1: while(1) {
@@ -9201,7 +13405,7 @@ function _CreatePhysicsManifold($0,$1) {
$$04755 = 0;
}
while(1) {
- $9 = (14276 + ($$04755<<2)|0);
+ $9 = (14556 + ($$04755<<2)|0);
$10 = HEAP32[$9>>2]|0;
$11 = HEAP32[$10>>2]|0;
$12 = ($11|0)==($$04457|0);
@@ -9244,11 +13448,11 @@ function _CreatePhysicsManifold($0,$1) {
HEAP32[$17>>2] = $1;
$18 = ((($2)) + 12|0);
dest=$18; stop=dest+44|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
- $19 = HEAP32[3568]|0;
- $20 = (14276 + ($19<<2)|0);
+ $19 = HEAP32[3638]|0;
+ $20 = (14556 + ($19<<2)|0);
HEAP32[$20>>2] = $2;
$21 = (($19) + 1)|0;
- HEAP32[3568] = $21;
+ HEAP32[3638] = $21;
return ($2|0);
}
function _SolvePhysicsManifold($0) {
@@ -9348,7 +13552,7 @@ function _IntegratePhysicsForces($0) {
$8 = +HEAPF32[$7>>2];
$9 = $2 * $8;
$10 = $9;
- $11 = +HEAPF64[1715];
+ $11 = +HEAPF64[1750];
$12 = $11 * 0.5;
$13 = $10 * $12;
$14 = ((($0)) + 16|0);
@@ -9372,7 +13576,7 @@ function _IntegratePhysicsForces($0) {
$30 = HEAP32[$29>>2]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = +HEAPF32[7666];
+ $32 = +HEAPF32[7738];
$33 = $32;
$34 = $12 * $33;
$35 = +HEAPF32[$14>>2];
@@ -9380,7 +13584,7 @@ function _IntegratePhysicsForces($0) {
$37 = $36 + $34;
$38 = $37;
HEAPF32[$14>>2] = $38;
- $39 = +HEAPF32[2];
+ $39 = +HEAPF32[5];
$40 = $39;
$41 = $12 * $40;
$42 = +HEAPF32[$24>>2];
@@ -9465,13 +13669,13 @@ function _InitializePhysicsManifolds($0) {
$39 = ((($7)) + 20|0);
$40 = ((($$byval_copy9)) + 4|0);
$41 = ((($4)) + 4|0);
- $42 = +HEAPF32[7666];
+ $42 = +HEAPF32[7738];
$43 = $42;
- $44 = +HEAPF64[1715];
+ $44 = +HEAPF64[1750];
$45 = $43 * $44;
$46 = $45;
$47 = ((($5)) + 4|0);
- $48 = +HEAPF32[2];
+ $48 = +HEAPF32[5];
$49 = $48;
$50 = $49 * $44;
$51 = $50;
@@ -9968,7 +14172,7 @@ function _IntegratePhysicsVelocity($0) {
$4 = ((($0)) + 16|0);
$5 = +HEAPF32[$4>>2];
$6 = $5;
- $7 = +HEAPF64[1715];
+ $7 = +HEAPF64[1750];
$8 = $6 * $7;
$9 = ((($0)) + 8|0);
$10 = +HEAPF32[$9>>2];
@@ -12389,7 +16593,7 @@ function _ProcessGestureEvent($0) {
$moveDownPosition$byval_copy11 = sp;
$1 = ((($0)) + 4|0);
$2 = HEAP32[$1>>2]|0;
- HEAP32[7668] = $2;
+ HEAP32[7740] = $2;
$3 = ($2|0)<(2);
$4 = HEAP32[$0>>2]|0;
$5 = ($4|0)==(1);
@@ -12402,7 +16606,7 @@ function _ProcessGestureEvent($0) {
$92 = (($89) + 4)|0;
$93 = $92;
$94 = HEAP32[$93>>2]|0;
- $95 = 13728;
+ $95 = 14008;
$96 = $95;
HEAP32[$96>>2] = $91;
$97 = (($95) + 4)|0;
@@ -12415,48 +16619,48 @@ function _ProcessGestureEvent($0) {
$103 = (($100) + 4)|0;
$104 = $103;
$105 = HEAP32[$104>>2]|0;
- $106 = 13768;
+ $106 = 14048;
$107 = $106;
HEAP32[$107>>2] = $102;
$108 = (($106) + 4)|0;
$109 = $108;
HEAP32[$109>>2] = $105;
- $110 = +HEAPF32[3442];
- $111 = +HEAPF32[3432];
+ $110 = +HEAPF32[3512];
+ $111 = +HEAPF32[3502];
$112 = $110 - $111;
- HEAPF32[3444] = $112;
- $113 = +HEAPF32[(13772)>>2];
- $114 = +HEAPF32[(13732)>>2];
+ HEAPF32[3514] = $112;
+ $113 = +HEAPF32[(14052)>>2];
+ $114 = +HEAPF32[(14012)>>2];
$115 = $113 - $114;
- HEAPF32[(13780)>>2] = $115;
- HEAP32[7667] = 4;
+ HEAPF32[(14060)>>2] = $115;
+ HEAP32[7739] = 4;
STACKTOP = sp;return;
}
switch ($4|0) {
case 2: {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13760>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13760+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13784>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13784+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14064>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14064+4>>2]|0;
$116 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- HEAPF32[7673] = $116;
- $117 = 13760;
+ HEAPF32[7745] = $116;
+ $117 = 14040;
$118 = $117;
$119 = HEAP32[$118>>2]|0;
$120 = (($117) + 4)|0;
$121 = $120;
$122 = HEAP32[$121>>2]|0;
- $123 = 13728;
+ $123 = 14008;
$124 = $123;
HEAP32[$124>>2] = $119;
$125 = (($123) + 4)|0;
$126 = $125;
HEAP32[$126>>2] = $122;
- $127 = 13784;
+ $127 = 14064;
$128 = $127;
$129 = HEAP32[$128>>2]|0;
$130 = (($127) + 4)|0;
$131 = $130;
$132 = HEAP32[$131>>2]|0;
- $133 = 13768;
+ $133 = 14048;
$134 = $133;
HEAP32[$134>>2] = $129;
$135 = (($133) + 4)|0;
@@ -12469,7 +16673,7 @@ function _ProcessGestureEvent($0) {
$141 = (($138) + 4)|0;
$142 = $141;
$143 = HEAP32[$142>>2]|0;
- $144 = 13760;
+ $144 = 14040;
$145 = $144;
HEAP32[$145>>2] = $140;
$146 = (($144) + 4)|0;
@@ -12482,27 +16686,27 @@ function _ProcessGestureEvent($0) {
$152 = (($149) + 4)|0;
$153 = $152;
$154 = HEAP32[$153>>2]|0;
- $155 = 13784;
+ $155 = 14064;
$156 = $155;
HEAP32[$156>>2] = $151;
$157 = (($155) + 4)|0;
$158 = $157;
HEAP32[$158>>2] = $154;
- $159 = +HEAPF32[3446];
- $160 = +HEAPF32[3440];
+ $159 = +HEAPF32[3516];
+ $160 = +HEAPF32[3510];
$161 = $159 - $160;
- HEAPF32[3444] = $161;
- $162 = +HEAPF32[(13788)>>2];
- $163 = +HEAPF32[(13764)>>2];
+ HEAPF32[3514] = $161;
+ $162 = +HEAPF32[(14068)>>2];
+ $163 = +HEAPF32[(14044)>>2];
$164 = $162 - $163;
- HEAPF32[(13780)>>2] = $164;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13728>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13728+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13760>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13760+4>>2]|0;
+ HEAPF32[(14060)>>2] = $164;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14008>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14008+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14040+4>>2]|0;
$165 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$166 = !($165 >= 0.004999999888241291);
if ($166) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13768>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13768+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13784>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13784+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14048>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14048+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14064>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14064+4>>2]|0;
$167 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$168 = !($167 >= 0.004999999888241291);
if ($168) {
@@ -12514,31 +16718,31 @@ function _ProcessGestureEvent($0) {
label = 29;
}
if ((label|0) == 29) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13760>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13760+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13784>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13784+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14064>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14064+4>>2]|0;
$169 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
- $170 = +HEAPF32[7673];
+ $170 = +HEAPF32[7745];
$171 = $169 - $170;
$172 = $171 < 0.0;
$$sink11 = $172 ? 256 : 512;
$$sink16 = $$sink11;
}
- HEAP32[7667] = $$sink16;
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13760>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13760+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13784>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13784+4>>2]|0;
+ HEAP32[7739] = $$sink16;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14040+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14064>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14064+4>>2]|0;
$173 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$174 = 360.0 - $173;
- HEAPF32[7674] = $174;
+ HEAPF32[7746] = $174;
STACKTOP = sp;return;
break;
}
case 0: {
- HEAPF32[7673] = 0.0;
- HEAPF32[7674] = 0.0;
- HEAPF32[3444] = 0.0;
- HEAPF32[(13780)>>2] = 0.0;
- HEAP32[7668] = 0;
- HEAP32[7667] = 0;
+ HEAPF32[7745] = 0.0;
+ HEAPF32[7746] = 0.0;
+ HEAPF32[3514] = 0.0;
+ HEAPF32[(14060)>>2] = 0.0;
+ HEAP32[7740] = 0;
+ HEAP32[7739] = 0;
STACKTOP = sp;return;
break;
}
@@ -12548,22 +16752,22 @@ function _ProcessGestureEvent($0) {
}
}
if ($5) {
- $6 = HEAP32[7669]|0;
+ $6 = HEAP32[7741]|0;
$7 = (($6) + 1)|0;
- HEAP32[7669] = $7;
- $8 = HEAP32[7667]|0;
+ HEAP32[7741] = $7;
+ $8 = HEAP32[7739]|0;
$9 = ($8|0)==(0);
$10 = ($6|0)>(0);
$or$cond = $10 & $9;
if ($or$cond) {
$11 = ((($0)) + 24|0);
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13728>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13728+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14008>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14008+4>>2]|0;
;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[$11>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[$11+4>>2]|0;
$12 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$13 = $12 < 0.029999999329447746;
if ($13) {
- HEAP32[7667] = 2;
- HEAP32[7669] = 0;
+ HEAP32[7739] = 2;
+ HEAP32[7741] = 0;
} else {
label = 6;
}
@@ -12571,8 +16775,8 @@ function _ProcessGestureEvent($0) {
label = 6;
}
if ((label|0) == 6) {
- HEAP32[7669] = 1;
- HEAP32[7667] = 1;
+ HEAP32[7741] = 1;
+ HEAP32[7739] = 1;
}
$14 = ((($0)) + 24|0);
$15 = $14;
@@ -12581,19 +16785,19 @@ function _ProcessGestureEvent($0) {
$18 = (($15) + 4)|0;
$19 = $18;
$20 = HEAP32[$19>>2]|0;
- $21 = 13728;
+ $21 = 14008;
$22 = $21;
HEAP32[$22>>2] = $17;
$23 = (($21) + 4)|0;
$24 = $23;
HEAP32[$24>>2] = $20;
- $25 = 13736;
+ $25 = 14016;
$26 = $25;
HEAP32[$26>>2] = $17;
$27 = (($25) + 4)|0;
$28 = $27;
HEAP32[$28>>2] = $20;
- $29 = 13744;
+ $29 = 14024;
$30 = $29;
HEAP32[$30>>2] = $17;
$31 = (($29) + 4)|0;
@@ -12601,14 +16805,14 @@ function _ProcessGestureEvent($0) {
HEAP32[$32>>2] = $20;
$33 = ((($0)) + 8|0);
$34 = HEAP32[$33>>2]|0;
- HEAP32[3] = $34;
- HEAPF32[3438] = 0.0;
- HEAPF32[(13756)>>2] = 0.0;
+ HEAP32[6] = $34;
+ HEAPF32[3508] = 0.0;
+ HEAPF32[(14036)>>2] = 0.0;
STACKTOP = sp;return;
}
switch ($4|0) {
case 0: {
- $35 = HEAP32[7667]|0;
+ $35 = HEAP32[7739]|0;
$36 = ($35|0)==(8);
if ($36) {
$37 = ((($0)) + 24|0);
@@ -12618,31 +16822,31 @@ function _ProcessGestureEvent($0) {
$41 = (($38) + 4)|0;
$42 = $41;
$43 = HEAP32[$42>>2]|0;
- $44 = 13744;
+ $44 = 14024;
$45 = $44;
HEAP32[$45>>2] = $40;
$46 = (($44) + 4)|0;
$47 = $46;
HEAP32[$47>>2] = $43;
}
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13728>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13728+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13744>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13744+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14008>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14008+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14024>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14024+4>>2]|0;
$48 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$49 = $48 / 0.0;
- HEAPF32[7670] = $49;
- HEAP32[7671] = 0;
+ HEAPF32[7742] = $49;
+ HEAP32[7743] = 0;
$50 = $49 > 5.0000002374872565E-4;
if ($50) {
- $51 = HEAP32[3]|0;
+ $51 = HEAP32[6]|0;
$52 = ((($0)) + 8|0);
$53 = HEAP32[$52>>2]|0;
$54 = ($51|0)==($53|0);
if ($54) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13728>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13728+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13744>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13744+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14008>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14008+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14024>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14024+4>>2]|0;
$55 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$56 = 360.0 - $55;
- HEAPF32[7672] = $56;
+ HEAPF32[7744] = $56;
$57 = $56 < 30.0;
$58 = $56 > 330.0;
$or$cond3 = $57 | $58;
@@ -12673,22 +16877,22 @@ function _ProcessGestureEvent($0) {
label = 16;
}
if ((label|0) == 16) {
- HEAPF32[7670] = 0.0;
- HEAPF32[7672] = 0.0;
+ HEAPF32[7742] = 0.0;
+ HEAPF32[7744] = 0.0;
$$sink10 = 0;
}
- HEAP32[7667] = $$sink10;
- HEAPF32[3434] = 0.0;
- HEAPF32[(13740)>>2] = 0.0;
- HEAP32[7668] = 0;
+ HEAP32[7739] = $$sink10;
+ HEAPF32[3504] = 0.0;
+ HEAPF32[(14020)>>2] = 0.0;
+ HEAP32[7740] = 0;
STACKTOP = sp;return;
break;
}
case 2: {
- $65 = HEAP32[7671]|0;
+ $65 = HEAP32[7743]|0;
$66 = ($65|0)==(0);
if ($66) {
- HEAP32[7671] = 1;
+ HEAP32[7743] = 1;
}
$67 = ((($0)) + 24|0);
$68 = $67;
@@ -12697,31 +16901,31 @@ function _ProcessGestureEvent($0) {
$71 = (($68) + 4)|0;
$72 = $71;
$73 = HEAP32[$72>>2]|0;
- $74 = 13760;
+ $74 = 14040;
$75 = $74;
HEAP32[$75>>2] = $70;
$76 = (($74) + 4)|0;
$77 = $76;
HEAP32[$77>>2] = $73;
- $78 = HEAP32[7667]|0;
+ $78 = HEAP32[7739]|0;
$79 = ($78|0)==(4);
if ($79) {
- ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[13728>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[13728+4>>2]|0;
- ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[13760>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[13760+4>>2]|0;
+ ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14008>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14008+4>>2]|0;
+ ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14040>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14040+4>>2]|0;
$80 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
$81 = !($80 >= 0.014999999664723873);
if (!($81)) {
- HEAP32[7667] = 8;
+ HEAP32[7739] = 8;
}
}
- $82 = +HEAPF32[3440];
- $83 = +HEAPF32[3434];
+ $82 = +HEAPF32[3510];
+ $83 = +HEAPF32[3504];
$84 = $82 - $83;
- HEAPF32[3438] = $84;
- $85 = +HEAPF32[(13764)>>2];
- $86 = +HEAPF32[(13740)>>2];
+ HEAPF32[3508] = $84;
+ $85 = +HEAPF32[(14044)>>2];
+ $86 = +HEAPF32[(14020)>>2];
$87 = $85 - $86;
- HEAPF32[(13756)>>2] = $87;
+ HEAPF32[(14036)>>2] = $87;
STACKTOP = sp;return;
break;
}
@@ -12733,16 +16937,16 @@ function _ProcessGestureEvent($0) {
function _UpdateGestures() {
var $$off = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $or$cond3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7667]|0;
+ $0 = HEAP32[7739]|0;
$$off = (($0) + -1)|0;
$1 = ($$off>>>0)<(2);
- $2 = HEAP32[7668]|0;
+ $2 = HEAP32[7740]|0;
$3 = ($2|0)<(2);
$or$cond3 = $1 & $3;
if ($or$cond3) {
- HEAP32[7667] = 4;
+ HEAP32[7739] = 4;
}
- $4 = HEAP32[7667]|0;
+ $4 = HEAP32[7739]|0;
$5 = (($4) + -16)|0;
$6 = $5 >>> 4;
$7 = $5 << 28;
@@ -12755,14 +16959,14 @@ function _UpdateGestures() {
return;
}
}
- HEAP32[7667] = 0;
+ HEAP32[7739] = 0;
return;
}
function _GetMousePosition($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = 13792;
+ $1 = 14072;
$2 = $1;
$3 = HEAP32[$2>>2]|0;
$4 = (($1) + 4)|0;
@@ -12779,13 +16983,13 @@ function _GetMousePosition($0) {
function _GetScreenWidth() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7677]|0;
+ $0 = HEAP32[7749]|0;
return ($0|0);
}
function _GetScreenHeight() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7676]|0;
+ $0 = HEAP32[7748]|0;
return ($0|0);
}
function _InitWindow($0,$1,$2) {
@@ -12796,29 +17000,29 @@ function _InitWindow($0,$1,$2) {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- _TraceLog(0,3478,$vararg_buffer);
- HEAP32[7679] = $2;
+ _TraceLog(0,3370,$vararg_buffer);
+ HEAP32[7751] = $2;
_InitGraphicsDevice($0,$1);
_LoadDefaultFont();
- _InitTimer_10();
- (_emscripten_set_fullscreenchange_callback((0|0),(0|0),1,(3|0))|0);
- (_emscripten_set_keypress_callback((3507|0),(0|0),1,(4|0))|0);
- (_emscripten_set_click_callback((3507|0),(0|0),1,(5|0))|0);
- (_emscripten_set_touchstart_callback((3507|0),(0|0),1,(6|0))|0);
- (_emscripten_set_touchend_callback((3507|0),(0|0),1,(6|0))|0);
- (_emscripten_set_touchmove_callback((3507|0),(0|0),1,(6|0))|0);
- (_emscripten_set_touchcancel_callback((3507|0),(0|0),1,(6|0))|0);
- (_emscripten_set_gamepadconnected_callback((0|0),1,(7|0))|0);
- (_emscripten_set_gamepaddisconnected_callback((0|0),1,(7|0))|0);
- $3 = HEAP32[7677]|0;
+ _InitTimer_12();
+ (_emscripten_set_fullscreenchange_callback((0|0),(0|0),1,(4|0))|0);
+ (_emscripten_set_keypress_callback((3399|0),(0|0),1,(5|0))|0);
+ (_emscripten_set_click_callback((3399|0),(0|0),1,(6|0))|0);
+ (_emscripten_set_touchstart_callback((3399|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchend_callback((3399|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchmove_callback((3399|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_touchcancel_callback((3399|0),(0|0),1,(7|0))|0);
+ (_emscripten_set_gamepadconnected_callback((0|0),1,(8|0))|0);
+ (_emscripten_set_gamepaddisconnected_callback((0|0),1,(8|0))|0);
+ $3 = HEAP32[7749]|0;
$4 = (+($3|0));
$5 = $4 * 0.5;
- HEAPF32[3448] = $5;
- $6 = HEAP32[7676]|0;
+ HEAPF32[3518] = $5;
+ $6 = HEAP32[7748]|0;
$7 = (+($6|0));
$8 = $7 * 0.5;
- HEAPF32[(13796)>>2] = $8;
- $9 = HEAP32[7680]|0;
+ HEAPF32[(14076)>>2] = $8;
+ $9 = HEAP32[7752]|0;
$10 = ($9|0)==(0);
if ($10) {
STACKTOP = sp;return;
@@ -12837,11 +17041,11 @@ function _TraceLog($0,$1,$varargs) {
$2 = sp;
switch ($0|0) {
case 0: {
- ;HEAP8[13832>>0]=HEAP8[8036>>0]|0;HEAP8[13832+1>>0]=HEAP8[8036+1>>0]|0;HEAP8[13832+2>>0]=HEAP8[8036+2>>0]|0;HEAP8[13832+3>>0]=HEAP8[8036+3>>0]|0;HEAP8[13832+4>>0]=HEAP8[8036+4>>0]|0;HEAP8[13832+5>>0]=HEAP8[8036+5>>0]|0;HEAP8[13832+6>>0]=HEAP8[8036+6>>0]|0;
+ ;HEAP8[14112>>0]=HEAP8[7928>>0]|0;HEAP8[14112+1>>0]=HEAP8[7928+1>>0]|0;HEAP8[14112+2>>0]=HEAP8[7928+2>>0]|0;HEAP8[14112+3>>0]=HEAP8[7928+3>>0]|0;HEAP8[14112+4>>0]=HEAP8[7928+4>>0]|0;HEAP8[14112+5>>0]=HEAP8[7928+5>>0]|0;HEAP8[14112+6>>0]=HEAP8[7928+6>>0]|0;
break;
}
case 1: {
- $3 = 13832;
+ $3 = 14112;
$4 = $3;
HEAP32[$4>>2] = 1330795077;
$5 = (($3) + 4)|0;
@@ -12850,11 +17054,11 @@ function _TraceLog($0,$1,$varargs) {
break;
}
case 2: {
- dest=13832; src=8043; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
+ dest=14112; src=7935; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
break;
}
case 3: {
- $7 = 13832;
+ $7 = 14112;
$8 = $7;
HEAP32[$8>>2] = 1430406468;
$9 = (($7) + 4)|0;
@@ -12865,16 +17069,16 @@ function _TraceLog($0,$1,$varargs) {
default: {
}
}
- (_strcat(13832,$1)|0);
- $strlen = (_strlen(13832)|0);
- $endptr = (13832 + ($strlen)|0);
+ (_strcat(14112,$1)|0);
+ $strlen = (_strlen(14112)|0);
+ $endptr = (14112 + ($strlen)|0);
HEAP8[$endptr>>0]=10&255;HEAP8[$endptr+1>>0]=10>>8;
HEAP32[$2>>2] = $varargs;
$11 = ($0|0)==(3);
if ($11) {
STACKTOP = sp;return;
}
- (_vprintf(13832,$2)|0);
+ (_vprintf(14112,$2)|0);
$12 = ($0|0)==(1);
if ($12) {
_exit(1);
@@ -12906,22 +17110,22 @@ function _InitGraphicsDevice($0,$1) {
$vararg_buffer = sp;
$2 = sp + 72|0;
$3 = sp + 140|0;
- HEAP32[7677] = $0;
- HEAP32[7676] = $1;
+ HEAP32[7749] = $0;
+ HEAP32[7748] = $1;
_MatrixIdentity($2);
- dest=30796; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31084; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_glfwSetErrorCallback((1|0))|0);
$4 = (_glfwInit()|0);
$5 = ($4|0)==(0);
if ($5) {
- _TraceLog(1,4178,$vararg_buffer);
+ _TraceLog(1,4070,$vararg_buffer);
}
- $6 = HEAP32[7677]|0;
- HEAP32[7715] = $6;
- $7 = HEAP32[7676]|0;
- HEAP32[7716] = $7;
+ $6 = HEAP32[7749]|0;
+ HEAP32[7787] = $6;
+ $7 = HEAP32[7748]|0;
+ HEAP32[7788] = $7;
_glfwDefaultWindowHints();
- $8 = HEAP8[33512]|0;
+ $8 = HEAP8[35952]|0;
$9 = $8 & 4;
$10 = ($9<<24>>24)==(0);
if ($10) {
@@ -12929,18 +17133,18 @@ function _InitGraphicsDevice($0,$1) {
} else {
_glfwWindowHint(131075,1);
}
- $11 = HEAP8[33512]|0;
+ $11 = HEAP8[35952]|0;
$12 = $11 & 8;
$13 = ($12<<24>>24)==(0);
if (!($13)) {
_glfwWindowHint(131077,1);
}
- $14 = HEAP8[33512]|0;
+ $14 = HEAP8[35952]|0;
$15 = $14 & 32;
$16 = ($15<<24>>24)==(0);
if (!($16)) {
_glfwWindowHint(135181,4);
- _TraceLog(0,4204,$vararg_buffer1);
+ _TraceLog(0,4096,$vararg_buffer1);
}
$17 = (_rlGetVersion()|0);
$18 = ($17|0)==(2);
@@ -12957,18 +17161,18 @@ function _InitGraphicsDevice($0,$1) {
_glfwWindowHint(139270,0);
}
}
- $21 = HEAP32[7717]|0;
+ $21 = HEAP32[7789]|0;
$22 = ($21|0)==(0);
if ($22) {
- $47 = HEAP32[7677]|0;
- $48 = HEAP32[7676]|0;
- $49 = HEAP32[7679]|0;
+ $47 = HEAP32[7749]|0;
+ $48 = HEAP32[7748]|0;
+ $49 = HEAP32[7751]|0;
$50 = (_glfwCreateWindow(($47|0),($48|0),($49|0),(0|0),(0|0))|0);
- HEAP32[7675] = $50;
- $51 = HEAP32[7677]|0;
- HEAP32[7718] = $51;
- $52 = HEAP32[7676]|0;
- HEAP32[7719] = $52;
+ HEAP32[7747] = $50;
+ $51 = HEAP32[7749]|0;
+ HEAP32[7790] = $51;
+ $52 = HEAP32[7748]|0;
+ HEAP32[7791] = $52;
$54 = $50;
} else {
$23 = (_glfwGetPrimaryMonitor()|0);
@@ -12977,9 +17181,9 @@ function _InitGraphicsDevice($0,$1) {
$26 = ($25|0)>(0);
L22: do {
if ($26) {
- $27 = HEAP32[7677]|0;
+ $27 = HEAP32[7749]|0;
$28 = HEAP32[$$byval_copy>>2]|0;
- $29 = HEAP32[7676]|0;
+ $29 = HEAP32[7748]|0;
$$015 = 0;
while(1) {
$30 = (($24) + (($$015*24)|0)|0);
@@ -13001,87 +17205,87 @@ function _InitGraphicsDevice($0,$1) {
break L22;
}
}
- HEAP32[7715] = $31;
- HEAP32[7716] = $34;
+ HEAP32[7787] = $31;
+ HEAP32[7788] = $34;
}
} while(0);
- $38 = HEAP32[7715]|0;
- $39 = HEAP32[7716]|0;
+ $38 = HEAP32[7787]|0;
+ $39 = HEAP32[7788]|0;
HEAP32[$vararg_buffer3>>2] = $38;
$vararg_ptr5 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr5>>2] = $39;
- _TraceLog(2,4229,$vararg_buffer3);
- $40 = HEAP32[7715]|0;
- $41 = HEAP32[7716]|0;
+ _TraceLog(2,4121,$vararg_buffer3);
+ $40 = HEAP32[7787]|0;
+ $41 = HEAP32[7788]|0;
_SetupFramebufferSize($40,$41);
- $42 = HEAP32[7715]|0;
- $43 = HEAP32[7716]|0;
- $44 = HEAP32[7679]|0;
+ $42 = HEAP32[7787]|0;
+ $43 = HEAP32[7788]|0;
+ $44 = HEAP32[7751]|0;
$45 = (_glfwGetPrimaryMonitor()|0);
$46 = (_glfwCreateWindow(($42|0),($43|0),($44|0),($45|0),(0|0))|0);
- HEAP32[7675] = $46;
+ HEAP32[7747] = $46;
$54 = $46;
}
$53 = ($54|0)==(0|0);
if ($53) {
_glfwTerminate();
- _TraceLog(1,4267,$vararg_buffer6);
+ _TraceLog(1,4159,$vararg_buffer6);
} else {
- _TraceLog(0,4300,$vararg_buffer8);
- $55 = HEAP32[7718]|0;
- $56 = HEAP32[7719]|0;
+ _TraceLog(0,4192,$vararg_buffer8);
+ $55 = HEAP32[7790]|0;
+ $56 = HEAP32[7791]|0;
HEAP32[$vararg_buffer10>>2] = $55;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $56;
- _TraceLog(0,4340,$vararg_buffer10);
- $57 = HEAP32[7677]|0;
- $58 = HEAP32[7676]|0;
+ _TraceLog(0,4232,$vararg_buffer10);
+ $57 = HEAP32[7749]|0;
+ $58 = HEAP32[7748]|0;
HEAP32[$vararg_buffer14>>2] = $57;
$vararg_ptr17 = ((($vararg_buffer14)) + 4|0);
HEAP32[$vararg_ptr17>>2] = $58;
- _TraceLog(0,4361,$vararg_buffer14);
- $59 = HEAP32[7720]|0;
- $60 = HEAP32[7721]|0;
+ _TraceLog(0,4253,$vararg_buffer14);
+ $59 = HEAP32[7792]|0;
+ $60 = HEAP32[7793]|0;
HEAP32[$vararg_buffer18>>2] = $59;
$vararg_ptr21 = ((($vararg_buffer18)) + 4|0);
HEAP32[$vararg_ptr21>>2] = $60;
- _TraceLog(0,4382,$vararg_buffer18);
+ _TraceLog(0,4274,$vararg_buffer18);
}
- $61 = HEAP32[7675]|0;
+ $61 = HEAP32[7747]|0;
(_glfwSetWindowSizeCallback(($61|0),(1|0))|0);
- $62 = HEAP32[7675]|0;
+ $62 = HEAP32[7747]|0;
(_glfwSetCursorEnterCallback(($62|0),(2|0))|0);
- $63 = HEAP32[7675]|0;
+ $63 = HEAP32[7747]|0;
(_glfwSetKeyCallback(($63|0),(1|0))|0);
- $64 = HEAP32[7675]|0;
+ $64 = HEAP32[7747]|0;
(_glfwSetMouseButtonCallback(($64|0),(1|0))|0);
- $65 = HEAP32[7675]|0;
+ $65 = HEAP32[7747]|0;
(_glfwSetCursorPosCallback(($65|0),(1|0))|0);
- $66 = HEAP32[7675]|0;
+ $66 = HEAP32[7747]|0;
(_glfwSetCharCallback(($66|0),(3|0))|0);
- $67 = HEAP32[7675]|0;
+ $67 = HEAP32[7747]|0;
(_glfwSetScrollCallback(($67|0),(2|0))|0);
- $68 = HEAP32[7675]|0;
+ $68 = HEAP32[7747]|0;
(_glfwSetWindowIconifyCallback(($68|0),(4|0))|0);
- $69 = HEAP32[7675]|0;
+ $69 = HEAP32[7747]|0;
_glfwMakeContextCurrent(($69|0));
_glfwSwapInterval(0);
- $70 = HEAP8[33512]|0;
+ $70 = HEAP8[35952]|0;
$71 = $70 & 64;
$72 = ($71<<24>>24)==(0);
if ($72) {
- $73 = HEAP32[7677]|0;
- $74 = HEAP32[7676]|0;
+ $73 = HEAP32[7749]|0;
+ $74 = HEAP32[7748]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7718]|0;
- $76 = HEAP32[7720]|0;
+ $75 = HEAP32[7790]|0;
+ $76 = HEAP32[7792]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7719]|0;
- $80 = HEAP32[7721]|0;
+ $79 = HEAP32[7791]|0;
+ $80 = HEAP32[7793]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -13099,19 +17303,19 @@ function _InitGraphicsDevice($0,$1) {
STACKTOP = sp;return;
}
_glfwSwapInterval(1);
- _TraceLog(0,4407,$vararg_buffer22);
- $73 = HEAP32[7677]|0;
- $74 = HEAP32[7676]|0;
+ _TraceLog(0,4299,$vararg_buffer22);
+ $73 = HEAP32[7749]|0;
+ $74 = HEAP32[7748]|0;
_rlglInit($73,$74);
_SetupViewport();
_rlMatrixMode(5889);
_rlLoadIdentity();
- $75 = HEAP32[7718]|0;
- $76 = HEAP32[7720]|0;
+ $75 = HEAP32[7790]|0;
+ $76 = HEAP32[7792]|0;
$77 = (($75) - ($76))|0;
$78 = (+($77|0));
- $79 = HEAP32[7719]|0;
- $80 = HEAP32[7721]|0;
+ $79 = HEAP32[7791]|0;
+ $80 = HEAP32[7793]|0;
$81 = (($79) - ($80))|0;
$82 = (+($81|0));
_rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
@@ -13139,12 +17343,12 @@ function _LoadDefaultFont() {
$vararg_buffer = sp;
$0 = sp + 4|0;
$1 = sp + 24|0;
- HEAP32[(30764)>>2] = 224;
+ HEAP32[(31052)>>2] = 224;
$2 = (_malloc(65536)|0);
_memset(($2|0),0,65536)|0;
$$095104 = 0;$$096103 = 0;
while(1) {
- $3 = (16 + ($$095104<<2)|0);
+ $3 = (28 + ($$095104<<2)|0);
$4 = HEAP32[$3>>2]|0;
$$097102 = 31;
while(1) {
@@ -13180,27 +17384,27 @@ function _LoadDefaultFont() {
_free($2);
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_LoadTextureFromImage($1,$$byval_copy1);
- ;HEAP32[30740>>2]=HEAP32[$1>>2]|0;HEAP32[30740+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[30740+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[30740+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[30740+16>>2]=HEAP32[$1+16>>2]|0;
+ ;HEAP32[31028>>2]=HEAP32[$1>>2]|0;HEAP32[31028+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[31028+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[31028+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[31028+16>>2]=HEAP32[$1+16>>2]|0;
;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
_UnloadImage($$byval_copy1);
- $5 = HEAP32[(30764)>>2]|0;
+ $5 = HEAP32[(31052)>>2]|0;
$6 = $5 << 5;
$7 = (_malloc($6)|0);
- HEAP32[(30768)>>2] = $7;
+ HEAP32[(31056)>>2] = $7;
$8 = ($5|0)>(0);
if (!($8)) {
$$lcssa = $7;
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30760)>>2] = $23;
- $24 = HEAP32[7685]|0;
+ HEAP32[(31048)>>2] = $23;
+ $24 = HEAP32[7757]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3702,$vararg_buffer);
+ _TraceLog(0,3594,$vararg_buffer);
STACKTOP = sp;return;
}
- $9 = HEAP32[(30744)>>2]|0;
- $10 = HEAP32[(30764)>>2]|0;
- $11 = HEAP32[(30768)>>2]|0;
+ $9 = HEAP32[(31032)>>2]|0;
+ $10 = HEAP32[(31052)>>2]|0;
+ $11 = HEAP32[(31056)>>2]|0;
$$0101 = 0;$$090100 = 1;$$09299 = 0;$27 = $7;
while(1) {
$25 = (($$0101) + 32)|0;
@@ -13212,7 +17416,7 @@ function _LoadDefaultFont() {
$30 = (($29) + 1)|0;
$31 = (((($27) + ($$0101<<5)|0)) + 8|0);
HEAP32[$31>>2] = $30;
- $32 = (2064 + ($$0101<<2)|0);
+ $32 = (2076 + ($$0101<<2)|0);
$33 = HEAP32[$32>>2]|0;
$34 = (((($27) + ($$0101<<5)|0)) + 12|0);
HEAP32[$34>>2] = $33;
@@ -13249,19 +17453,19 @@ function _LoadDefaultFont() {
}
$22 = ((($$lcssa)) + 16|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(30760)>>2] = $23;
- $24 = HEAP32[7685]|0;
+ HEAP32[(31048)>>2] = $23;
+ $24 = HEAP32[7757]|0;
HEAP32[$vararg_buffer>>2] = $24;
- _TraceLog(0,3702,$vararg_buffer);
+ _TraceLog(0,3594,$vararg_buffer);
STACKTOP = sp;return;
}
-function _InitTimer_10() {
+function _InitTimer_12() {
var $0 = 0, $1 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_time((0|0))|0);
_srand($0);
$1 = (+_GetTime());
- HEAPF64[1728] = $1;
+ HEAPF64[1763] = $1;
return;
}
function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
@@ -13291,7 +17495,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr8>>2] = $10;
$vararg_ptr9 = ((($vararg_buffer4)) + 12|0);
HEAP32[$vararg_ptr9>>2] = $12;
- _TraceLog(0,3635,$vararg_buffer4);
+ _TraceLog(0,3527,$vararg_buffer4);
STACKTOP = sp;return 0;
} else {
HEAP32[$vararg_buffer>>2] = $6;
@@ -13301,7 +17505,7 @@ function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
HEAP32[$vararg_ptr2>>2] = $10;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $12;
- _TraceLog(0,3566,$vararg_buffer);
+ _TraceLog(0,3458,$vararg_buffer);
STACKTOP = sp;return 0;
}
return (0)|0;
@@ -13317,7 +17521,7 @@ function _EmscriptenKeyboardCallback($0,$1,$2) {
return 0;
}
$4 = ((($1)) + 32|0);
- $5 = (_strcmp($4,3559)|0);
+ $5 = (_strcmp($4,3451)|0);
$6 = ($5|0)==(0);
if (!($6)) {
return 0;
@@ -13420,7 +17624,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$28 = (($25) + 4)|0;
$29 = $28;
$30 = HEAP32[$29>>2]|0;
- $31 = 13808;
+ $31 = 14088;
$32 = $31;
HEAP32[$32>>2] = $27;
$33 = (($31) + 4)|0;
@@ -13433,7 +17637,7 @@ function _EmscriptenTouchCallback($0,$1,$2) {
$39 = (($36) + 4)|0;
$40 = $39;
$41 = HEAP32[$40>>2]|0;
- $42 = (13816);
+ $42 = (14096);
$43 = $42;
HEAP32[$43>>2] = $38;
$44 = (($42) + 4)|0;
@@ -13489,7 +17693,7 @@ function _EmscriptenGamepadCallback($0,$1,$2) {
}
$9 = ((($1)) + 1300|0);
$10 = HEAP32[$9>>2]|0;
- $11 = (30724 + ($10<<2)|0);
+ $11 = (31012 + ($10<<2)|0);
HEAP32[$11>>2] = $$sink;
return 0;
}
@@ -13503,19 +17707,19 @@ function _SetTargetFPS($0) {
$2 = (+($0|0));
$3 = 1.0 / $2;
$$ = $1 ? 0.0 : $3;
- HEAPF64[1725] = $$;
+ HEAPF64[1760] = $$;
$4 = $3;
$$op = $4 * 1000.0;
$5 = $$op;
$6 = $1 ? 0.0 : $5;
HEAPF64[$vararg_buffer>>3] = $6;
- _TraceLog(0,3515,$vararg_buffer);
+ _TraceLog(0,3407,$vararg_buffer);
STACKTOP = sp;return;
}
function _LogoAnimation() {
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7680] = 0;
+ HEAP32[7752] = 0;
return;
}
function _GetTime() {
@@ -13614,7 +17818,7 @@ function _ImageFormat($0,$1) {
$6 = ($1|0)<(8);
$or$cond = $6 & $5;
if (!($or$cond)) {
- _TraceLog(2,4078,$vararg_buffer);
+ _TraceLog(2,3970,$vararg_buffer);
STACKTOP = sp;return;
}
;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[$0+16>>2]|0;
@@ -14091,52 +18295,52 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$5 = sp + 68|0;
_glBindTexture(3553,0);
HEAP32[$5>>2] = 0;
- $6 = HEAP32[7693]|0;
+ $6 = HEAP32[7765]|0;
$7 = ($6|0)==(0);
$8 = $3 & -4;
$switch = ($8|0)==(8);
$or$cond100 = $switch & $7;
if ($or$cond100) {
- _TraceLog(2,3747,$vararg_buffer);
+ _TraceLog(2,3639,$vararg_buffer);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $9 = HEAP32[7694]|0;
+ $9 = HEAP32[7766]|0;
$10 = ($9|0)==(0);
$11 = ($3|0)==(12);
$or$cond7 = $11 & $10;
if ($or$cond7) {
- _TraceLog(2,3791,$vararg_buffer1);
+ _TraceLog(2,3683,$vararg_buffer1);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $12 = HEAP32[7695]|0;
+ $12 = HEAP32[7767]|0;
$13 = ($12|0)==(0);
$$off = (($3) + -13)|0;
$14 = ($$off>>>0)<(2);
$or$cond = $14 & $13;
if ($or$cond) {
- _TraceLog(2,3836,$vararg_buffer3);
+ _TraceLog(2,3728,$vararg_buffer3);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $15 = HEAP32[7696]|0;
+ $15 = HEAP32[7768]|0;
$16 = ($15|0)==(0);
$$off92 = (($3) + -15)|0;
$17 = ($$off92>>>0)<(2);
$or$cond96 = $17 & $16;
if ($or$cond96) {
- _TraceLog(2,3881,$vararg_buffer5);
+ _TraceLog(2,3773,$vararg_buffer5);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
- $18 = HEAP32[7697]|0;
+ $18 = HEAP32[7769]|0;
$19 = ($18|0)==(0);
$$off93 = (($3) + -17)|0;
$20 = ($$off93>>>0)<(2);
$or$cond98 = $20 & $19;
if ($or$cond98) {
- _TraceLog(2,3926,$vararg_buffer7);
+ _TraceLog(2,3818,$vararg_buffer7);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14174,7 +18378,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 8: {
- $22 = HEAP32[7693]|0;
+ $22 = HEAP32[7765]|0;
$23 = ($22|0)==(0);
if (!($23)) {
_LoadCompressedTexture($0,$1,$2,$4,33776);
@@ -14182,7 +18386,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 9: {
- $24 = HEAP32[7693]|0;
+ $24 = HEAP32[7765]|0;
$25 = ($24|0)==(0);
if (!($25)) {
_LoadCompressedTexture($0,$1,$2,$4,33777);
@@ -14190,7 +18394,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 10: {
- $26 = HEAP32[7693]|0;
+ $26 = HEAP32[7765]|0;
$27 = ($26|0)==(0);
if (!($27)) {
_LoadCompressedTexture($0,$1,$2,$4,33778);
@@ -14198,7 +18402,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 11: {
- $28 = HEAP32[7693]|0;
+ $28 = HEAP32[7765]|0;
$29 = ($28|0)==(0);
if (!($29)) {
_LoadCompressedTexture($0,$1,$2,$4,33779);
@@ -14206,7 +18410,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 12: {
- $30 = HEAP32[7694]|0;
+ $30 = HEAP32[7766]|0;
$31 = ($30|0)==(0);
if (!($31)) {
_LoadCompressedTexture($0,$1,$2,$4,36196);
@@ -14214,7 +18418,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 13: {
- $32 = HEAP32[7695]|0;
+ $32 = HEAP32[7767]|0;
$33 = ($32|0)==(0);
if (!($33)) {
_LoadCompressedTexture($0,$1,$2,$4,37492);
@@ -14222,7 +18426,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 14: {
- $34 = HEAP32[7695]|0;
+ $34 = HEAP32[7767]|0;
$35 = ($34|0)==(0);
if (!($35)) {
_LoadCompressedTexture($0,$1,$2,$4,37496);
@@ -14230,7 +18434,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 15: {
- $36 = HEAP32[7696]|0;
+ $36 = HEAP32[7768]|0;
$37 = ($36|0)==(0);
if (!($37)) {
_LoadCompressedTexture($0,$1,$2,$4,35840);
@@ -14238,7 +18442,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 16: {
- $38 = HEAP32[7696]|0;
+ $38 = HEAP32[7768]|0;
$39 = ($38|0)==(0);
if (!($39)) {
_LoadCompressedTexture($0,$1,$2,$4,35842);
@@ -14246,7 +18450,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 17: {
- $40 = HEAP32[7697]|0;
+ $40 = HEAP32[7769]|0;
$41 = ($40|0)==(0);
if (!($41)) {
_LoadCompressedTexture($0,$1,$2,$4,37808);
@@ -14254,7 +18458,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
case 18: {
- $42 = HEAP32[7697]|0;
+ $42 = HEAP32[7769]|0;
$43 = ($42|0)==(0);
if (!($43)) {
_LoadCompressedTexture($0,$1,$2,$4,37815);
@@ -14262,11 +18466,11 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
break;
}
default: {
- _TraceLog(2,3971,$vararg_buffer9);
+ _TraceLog(2,3863,$vararg_buffer9);
}
}
} while(0);
- $44 = HEAP32[7698]|0;
+ $44 = HEAP32[7770]|0;
$45 = ($44|0)==(0);
if ($45) {
_glTexParameteri(3553,10242,33071);
@@ -14281,7 +18485,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
$46 = HEAP32[$5>>2]|0;
$47 = ($46|0)==(0);
if ($47) {
- _TraceLog(2,4049,$vararg_buffer15);
+ _TraceLog(2,3941,$vararg_buffer15);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
} else {
@@ -14290,7 +18494,7 @@ function _rlglLoadTexture($0,$1,$2,$3,$4) {
HEAP32[$vararg_ptr13>>2] = $1;
$vararg_ptr14 = ((($vararg_buffer11)) + 8|0);
HEAP32[$vararg_ptr14>>2] = $2;
- _TraceLog(0,4000,$vararg_buffer11);
+ _TraceLog(0,3892,$vararg_buffer11);
$$0 = HEAP32[$5>>2]|0;
STACKTOP = sp;return ($$0|0);
}
@@ -14564,7 +18768,7 @@ function _GetImageData($0) {
break;
}
default: {
- _TraceLog(2,4132,$vararg_buffer);
+ _TraceLog(2,4024,$vararg_buffer);
$$1 = $$0106;
}
}
@@ -14591,7 +18795,7 @@ function _ErrorCallback($0,$1) {
HEAP32[$vararg_buffer>>2] = $0;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $1;
- _TraceLog(2,7998,$vararg_buffer);
+ _TraceLog(2,7890,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlGetVersion() {
@@ -14612,20 +18816,20 @@ function _SetupFramebufferSize($0,$1) {
$vararg_buffer4 = sp + 16|0;
$vararg_buffer = sp;
$2 = sp + 40|0;
- $3 = HEAP32[7677]|0;
+ $3 = HEAP32[7749]|0;
$4 = ($3|0)>($0|0);
if (!($4)) {
- $5 = HEAP32[7676]|0;
+ $5 = HEAP32[7748]|0;
$6 = ($5|0)>($1|0);
if (!($6)) {
$30 = ($3|0)<($0|0);
$31 = ($5|0)<($1|0);
$or$cond = $30 | $31;
if (!($or$cond)) {
- HEAP32[7718] = $3;
- HEAP32[7719] = $5;
- HEAP32[7720] = 0;
- HEAP32[7721] = 0;
+ HEAP32[7790] = $3;
+ HEAP32[7791] = $5;
+ HEAP32[7792] = 0;
+ HEAP32[7793] = 0;
STACKTOP = sp;return;
}
HEAP32[$vararg_buffer8>>2] = $3;
@@ -14635,13 +18839,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr12>>2] = $0;
$vararg_ptr13 = ((($vararg_buffer8)) + 12|0);
HEAP32[$vararg_ptr13>>2] = $1;
- _TraceLog(0,7932,$vararg_buffer8);
+ _TraceLog(0,7824,$vararg_buffer8);
$32 = (+($0|0));
$33 = (+($1|0));
$34 = $32 / $33;
- $35 = HEAP32[7677]|0;
+ $35 = HEAP32[7749]|0;
$36 = (+($35|0));
- $37 = HEAP32[7676]|0;
+ $37 = HEAP32[7748]|0;
$38 = (+($37|0));
$39 = $36 / $38;
$40 = !($34 <= $39);
@@ -14649,26 +18853,26 @@ function _SetupFramebufferSize($0,$1) {
$44 = $34 * $38;
$roundf = (+_roundf((+$44)));
$45 = (~~(($roundf)));
- HEAP32[7718] = $45;
- HEAP32[7719] = $37;
+ HEAP32[7790] = $45;
+ HEAP32[7791] = $37;
$46 = (($45) - ($35))|0;
- HEAP32[7720] = $46;
+ HEAP32[7792] = $46;
$$sink1 = 0;
} else {
- HEAP32[7718] = $35;
+ HEAP32[7790] = $35;
$41 = $36 / $34;
$roundf38 = (+_roundf((+$41)));
$42 = (~~(($roundf38)));
- HEAP32[7719] = $42;
- HEAP32[7720] = 0;
+ HEAP32[7791] = $42;
+ HEAP32[7792] = 0;
$43 = (($42) - ($37))|0;
$$sink1 = $43;
}
- HEAP32[7721] = $$sink1;
+ HEAP32[7793] = $$sink1;
STACKTOP = sp;return;
}
}
- $7 = HEAP32[7676]|0;
+ $7 = HEAP32[7748]|0;
HEAP32[$vararg_buffer>>2] = $3;
$vararg_ptr1 = ((($vararg_buffer)) + 4|0);
HEAP32[$vararg_ptr1>>2] = $7;
@@ -14676,13 +18880,13 @@ function _SetupFramebufferSize($0,$1) {
HEAP32[$vararg_ptr2>>2] = $0;
$vararg_ptr3 = ((($vararg_buffer)) + 12|0);
HEAP32[$vararg_ptr3>>2] = $1;
- _TraceLog(2,7789,$vararg_buffer);
+ _TraceLog(2,7681,$vararg_buffer);
$8 = (+($0|0));
- $9 = HEAP32[7677]|0;
+ $9 = HEAP32[7749]|0;
$10 = (+($9|0));
$11 = $8 / $10;
$12 = (+($1|0));
- $13 = HEAP32[7676]|0;
+ $13 = HEAP32[7748]|0;
$14 = (+($13|0));
$15 = $12 / $14;
$16 = !($11 <= $15);
@@ -14690,37 +18894,37 @@ function _SetupFramebufferSize($0,$1) {
$22 = $10 * $15;
$roundf39 = (+_roundf((+$22)));
$23 = (~~(($roundf39)));
- HEAP32[7718] = $23;
- HEAP32[7719] = $1;
+ HEAP32[7790] = $23;
+ HEAP32[7791] = $1;
$24 = (($0) - ($23))|0;
- HEAP32[7720] = $24;
+ HEAP32[7792] = $24;
$$sink = 0;
} else {
- HEAP32[7718] = $0;
- $17 = HEAP32[7676]|0;
+ HEAP32[7790] = $0;
+ $17 = HEAP32[7748]|0;
$18 = (+($17|0));
$19 = $11 * $18;
$roundf40 = (+_roundf((+$19)));
$20 = (~~(($roundf40)));
- HEAP32[7719] = $20;
- HEAP32[7720] = 0;
+ HEAP32[7791] = $20;
+ HEAP32[7792] = 0;
$21 = (($1) - ($20))|0;
$$sink = $21;
}
- HEAP32[7721] = $$sink;
- $25 = HEAP32[7718]|0;
+ HEAP32[7793] = $$sink;
+ $25 = HEAP32[7790]|0;
$26 = (+($25|0));
- $27 = HEAP32[7677]|0;
+ $27 = HEAP32[7749]|0;
$28 = (+($27|0));
$29 = $26 / $28;
_MatrixScale($2,$29,$29,$29);
- dest=30796; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7718] = $0;
- HEAP32[7719] = $1;
+ dest=31084; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7790] = $0;
+ HEAP32[7791] = $1;
HEAP32[$vararg_buffer4>>2] = $0;
$vararg_ptr7 = ((($vararg_buffer4)) + 4|0);
HEAP32[$vararg_ptr7>>2] = $1;
- _TraceLog(2,7867,$vararg_buffer4);
+ _TraceLog(2,7759,$vararg_buffer4);
STACKTOP = sp;return;
}
function _WindowSizeCallback($0,$1,$2) {
@@ -14738,10 +18942,10 @@ function _WindowSizeCallback($0,$1,$2) {
_rlMatrixMode(5888);
_rlLoadIdentity();
_rlClearScreenBuffers();
- HEAP32[7677] = $1;
- HEAP32[7676] = $2;
- HEAP32[7718] = $1;
- HEAP32[7719] = $2;
+ HEAP32[7749] = $1;
+ HEAP32[7748] = $2;
+ HEAP32[7790] = $1;
+ HEAP32[7791] = $2;
return;
}
function _CursorEnterCallback($0,$1) {
@@ -14759,7 +18963,7 @@ function _KeyCallback($0,$1,$2,$3,$4) {
$4 = $4|0;
var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $5 = HEAP32[741]|0;
+ $5 = HEAP32[744]|0;
$6 = ($5|0)==($1|0);
$7 = ($3|0)==(1);
$or$cond = $7 & $6;
@@ -14768,12 +18972,12 @@ function _KeyCallback($0,$1,$2,$3,$4) {
return;
}
$8 = $3&255;
- $9 = (33519 + ($1)|0);
+ $9 = (35959 + ($1)|0);
HEAP8[$9>>0] = $8;
if (!($7)) {
return;
}
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _MouseButtonCallback($0,$1,$2,$3) {
@@ -14789,7 +18993,7 @@ function _MouseButtonCallback($0,$1,$2,$3) {
$4 = sp + 8|0;
$5 = sp;
$6 = $2&255;
- $7 = (33513 + ($1)|0);
+ $7 = (35953 + ($1)|0);
HEAP8[$7>>0] = $6;
$8 = (_IsMouseButtonPressed(0)|0);
$9 = ($8|0)==(0);
@@ -14868,7 +19072,7 @@ function _MouseCursorPosCallback($0,$1,$2) {
$12 = (($9) + 4)|0;
$13 = $12;
$14 = HEAP32[$13>>2]|0;
- $15 = 13808;
+ $15 = 14088;
$16 = $15;
HEAP32[$16>>2] = $11;
$17 = (($15) + 4)|0;
@@ -14893,7 +19097,7 @@ function _CharCallback($0,$1) {
$1 = $1|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[740] = $1;
+ HEAP32[743] = $1;
return;
}
function _ScrollCallback($0,$1,$2) {
@@ -14903,7 +19107,7 @@ function _ScrollCallback($0,$1,$2) {
var $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
$3 = (~~(($2)));
- HEAP32[8091] = $3;
+ HEAP32[8163] = $3;
return;
}
function _WindowIconifyCallback($0,$1) {
@@ -14913,7 +19117,7 @@ function _WindowIconifyCallback($0,$1) {
sp = STACKTOP;
$2 = ($1|0)!=(0);
$$sink = $2&1;
- HEAP32[8090] = $$sink;
+ HEAP32[8162] = $$sink;
return;
}
function _rlglInit($0,$1) {
@@ -14953,16 +19157,16 @@ function _rlglInit($0,$1) {
$6 = sp + 2192|0;
$7 = (_glGetString(7936)|0);
HEAP32[$vararg_buffer>>2] = $7;
- _TraceLog(0,4430,$vararg_buffer);
+ _TraceLog(0,4322,$vararg_buffer);
$8 = (_glGetString(7937)|0);
HEAP32[$vararg_buffer1>>2] = $8;
- _TraceLog(0,4448,$vararg_buffer1);
+ _TraceLog(0,4340,$vararg_buffer1);
$9 = (_glGetString(7938)|0);
HEAP32[$vararg_buffer4>>2] = $9;
- _TraceLog(0,4466,$vararg_buffer4);
+ _TraceLog(0,4358,$vararg_buffer4);
$10 = (_glGetString(35724)|0);
HEAP32[$vararg_buffer7>>2] = $10;
- _TraceLog(0,4484,$vararg_buffer7);
+ _TraceLog(0,4376,$vararg_buffer7);
$11 = (_glGetString(7939)|0);
$12 = (_strlen($11)|0);
$13 = (($12) + 1)|0;
@@ -14970,7 +19174,7 @@ function _rlglInit($0,$1) {
_memcpy(($14|0),($11|0),($13|0))|0;
$$062 = 0;$$sink63 = $14;
while(1) {
- $15 = (_strtok($$sink63,4502)|0);
+ $15 = (_strtok($$sink63,4394)|0);
$16 = (($vararg_buffer7) + ($$062<<2)|0);
HEAP32[$16>>2] = $15;
$17 = ($15|0)==(0|0);
@@ -14984,41 +19188,41 @@ function _rlglInit($0,$1) {
_free($14);
$19 = (($$062) + -1)|0;
HEAP32[$vararg_buffer10>>2] = $19;
- _TraceLog(0,4504,$vararg_buffer10);
+ _TraceLog(0,4396,$vararg_buffer10);
$20 = ($$062|0)>(1);
if ($20) {
$$06167 = 0;
while(1) {
$23 = (($vararg_buffer7) + ($$06167<<2)|0);
$24 = HEAP32[$23>>2]|0;
- $25 = (_strcmp($24,4539)|0);
+ $25 = (_strcmp($24,4431)|0);
$26 = ($25|0)==(0);
if ($26) {
- HEAP32[7756] = 1;
- $27 = (_eglGetProcAddress((4566|0))|0);
- HEAP32[7757] = $27;
- $28 = (_eglGetProcAddress((4587|0))|0);
- HEAP32[7758] = $28;
- $29 = (_eglGetProcAddress((4608|0))|0);
- HEAP32[7759] = $29;
- }
- $30 = (_strcmp($24,4632)|0);
+ HEAP32[7828] = 1;
+ $27 = (_eglGetProcAddress((4458|0))|0);
+ HEAP32[7829] = $27;
+ $28 = (_eglGetProcAddress((4479|0))|0);
+ HEAP32[7830] = $28;
+ $29 = (_eglGetProcAddress((4500|0))|0);
+ HEAP32[7831] = $29;
+ }
+ $30 = (_strcmp($24,4524)|0);
$31 = ($30|0)==(0);
if ($31) {
- HEAP32[7698] = 1;
+ HEAP32[7770] = 1;
}
- $32 = (_strcmp($24,4652)|0);
+ $32 = (_strcmp($24,4544)|0);
$33 = ($32|0)==(0);
if ($33) {
label = 12;
} else {
$34 = HEAP32[$23>>2]|0;
- $35 = (_strcmp($34,4684)|0);
+ $35 = (_strcmp($34,4576)|0);
$36 = ($35|0)==(0);
if ($36) {
label = 12;
} else {
- $37 = (_strcmp($34,4717)|0);
+ $37 = (_strcmp($34,4609)|0);
$38 = ($37|0)==(0);
if ($38) {
label = 12;
@@ -15027,15 +19231,15 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 12) {
label = 0;
- HEAP32[7693] = 1;
+ HEAP32[7765] = 1;
}
- $39 = (_strcmp($24,4757)|0);
+ $39 = (_strcmp($24,4649)|0);
$40 = ($39|0)==(0);
if ($40) {
label = 15;
} else {
$41 = HEAP32[$23>>2]|0;
- $42 = (_strcmp($41,4793)|0);
+ $42 = (_strcmp($41,4685)|0);
$43 = ($42|0)==(0);
if ($43) {
label = 15;
@@ -15043,35 +19247,35 @@ function _rlglInit($0,$1) {
}
if ((label|0) == 15) {
label = 0;
- HEAP32[7694] = 1;
+ HEAP32[7766] = 1;
}
$44 = HEAP32[$23>>2]|0;
- $45 = (_strcmp($44,4826)|0);
+ $45 = (_strcmp($44,4718)|0);
$46 = ($45|0)==(0);
if ($46) {
- HEAP32[7695] = 1;
+ HEAP32[7767] = 1;
}
- $47 = (_strcmp($44,4851)|0);
+ $47 = (_strcmp($44,4743)|0);
$48 = ($47|0)==(0);
if ($48) {
- HEAP32[7696] = 1;
+ HEAP32[7768] = 1;
}
- $49 = (_strcmp($44,4884)|0);
+ $49 = (_strcmp($44,4776)|0);
$50 = ($49|0)==(0);
if ($50) {
- HEAP32[7697] = 1;
+ HEAP32[7769] = 1;
}
- $51 = (_strcmp($44,4920)|0);
+ $51 = (_strcmp($44,4812)|0);
$52 = ($51|0)==(0);
if ($52) {
- HEAP32[7760] = 1;
- _glGetFloatv(34047,(31044|0));
+ HEAP32[7832] = 1;
+ _glGetFloatv(34047,(31332|0));
}
$53 = HEAP32[$23>>2]|0;
- $54 = (_strcmp($53,4954)|0);
+ $54 = (_strcmp($53,4846)|0);
$55 = ($54|0)==(0);
if ($55) {
- HEAP32[7762] = 1;
+ HEAP32[7834] = 1;
}
$56 = (($$06167) + 1)|0;
$exitcond70 = ($56|0)==($19|0);
@@ -15082,77 +19286,77 @@ function _rlglInit($0,$1) {
}
}
}
- $21 = HEAP32[7756]|0;
+ $21 = HEAP32[7828]|0;
$22 = ($21|0)==(0);
if ($22) {
- _TraceLog(2,5057,$vararg_buffer15);
+ _TraceLog(2,4949,$vararg_buffer15);
} else {
- _TraceLog(0,4982,$vararg_buffer13);
+ _TraceLog(0,4874,$vararg_buffer13);
}
- $57 = HEAP32[7698]|0;
+ $57 = HEAP32[7770]|0;
$58 = ($57|0)==(0);
if ($58) {
- _TraceLog(2,5193,$vararg_buffer19);
+ _TraceLog(2,5085,$vararg_buffer19);
} else {
- _TraceLog(0,5118,$vararg_buffer17);
+ _TraceLog(0,5010,$vararg_buffer17);
}
- $59 = HEAP32[7693]|0;
+ $59 = HEAP32[7765]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- _TraceLog(0,5285,$vararg_buffer21);
+ _TraceLog(0,5177,$vararg_buffer21);
}
- $61 = HEAP32[7694]|0;
+ $61 = HEAP32[7766]|0;
$62 = ($61|0)==(0);
if (!($62)) {
- _TraceLog(0,5331,$vararg_buffer23);
+ _TraceLog(0,5223,$vararg_buffer23);
}
- $63 = HEAP32[7695]|0;
+ $63 = HEAP32[7767]|0;
$64 = ($63|0)==(0);
if (!($64)) {
- _TraceLog(0,5378,$vararg_buffer25);
+ _TraceLog(0,5270,$vararg_buffer25);
}
- $65 = HEAP32[7696]|0;
+ $65 = HEAP32[7768]|0;
$66 = ($65|0)==(0);
if (!($66)) {
- _TraceLog(0,5429,$vararg_buffer27);
+ _TraceLog(0,5321,$vararg_buffer27);
}
- $67 = HEAP32[7697]|0;
+ $67 = HEAP32[7769]|0;
$68 = ($67|0)==(0);
if (!($68)) {
- _TraceLog(0,5476,$vararg_buffer29);
+ _TraceLog(0,5368,$vararg_buffer29);
}
- $69 = HEAP32[7760]|0;
+ $69 = HEAP32[7832]|0;
$70 = ($69|0)==(0);
if (!($70)) {
- $71 = +HEAPF32[7761];
+ $71 = +HEAPF32[7833];
$72 = $71;
HEAPF64[$vararg_buffer31>>3] = $72;
- _TraceLog(0,5523,$vararg_buffer31);
+ _TraceLog(0,5415,$vararg_buffer31);
}
- $73 = HEAP32[7762]|0;
+ $73 = HEAP32[7834]|0;
$74 = ($73|0)==(0);
if (!($74)) {
- _TraceLog(0,5589,$vararg_buffer34);
+ _TraceLog(0,5481,$vararg_buffer34);
}
HEAP32[$vararg_buffer10>>2] = -1;
$75 = (_rlglLoadTexture($vararg_buffer10,1,1,7,1)|0);
- HEAP32[7763] = $75;
+ HEAP32[7835] = $75;
$76 = ($75|0)==(0);
if ($76) {
- _TraceLog(2,5693,$vararg_buffer39);
+ _TraceLog(2,5585,$vararg_buffer39);
} else {
HEAP32[$vararg_buffer36>>2] = $75;
- _TraceLog(0,5642,$vararg_buffer36);
+ _TraceLog(0,5534,$vararg_buffer36);
}
_LoadDefaultShader($2);
- dest=31056; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=31112; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31344; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31400; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_LoadDefaultBuffers();
$77 = (_malloc(49152)|0);
- HEAP32[7792] = $77;
+ HEAP32[7864] = $77;
$$06066 = 0;
while(1) {
- $79 = HEAP32[7792]|0;
+ $79 = HEAP32[7864]|0;
$80 = (($79) + (($$06066*12)|0)|0);
_VectorZero($3);
;HEAP32[$80>>2]=HEAP32[$3>>2]|0;HEAP32[$80+4>>2]=HEAP32[$3+4>>2]|0;HEAP32[$80+8>>2]=HEAP32[$3+8>>2]|0;
@@ -15165,7 +19369,7 @@ function _rlglInit($0,$1) {
}
}
$78 = (_malloc(36864)|0);
- HEAP32[7793] = $78;
+ HEAP32[7865] = $78;
$$05965 = 0;
while(1) {
$82 = (((($78) + (($$05965*144)|0)|0)) + 8|0);
@@ -15180,48 +19384,48 @@ function _rlglInit($0,$1) {
$$05965 = $84;
}
}
- HEAP32[7794] = 1;
- $85 = HEAP32[7763]|0;
+ HEAP32[7866] = 1;
+ $85 = HEAP32[7835]|0;
$86 = ((($78)) + 8|0);
HEAP32[$86>>2] = $85;
- HEAP32[7795] = 4;
+ HEAP32[7867] = 4;
_MatrixIdentity($4);
- dest=31184; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31472; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31248); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31536); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31312); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31600); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31376); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31664); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31440); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31728); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31504); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31792); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31568); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31856); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31632); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31920); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31696); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(31984); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31760); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32048); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31824); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32112); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31888); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32176); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(31952); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32240); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32016); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32304); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32080); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32368); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($4);
- dest=(32144); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=(32432); src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($5);
- dest=30892; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31180; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixIdentity($6);
- dest=30956; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- HEAP32[7722] = 30956;
+ dest=31244; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[7794] = 31244;
_glDepthFunc(515);
_glDisable(2929);
_glBlendFunc(770,771);
@@ -15232,21 +19436,21 @@ function _rlglInit($0,$1) {
_glClearColor(0.0,0.0,0.0,1.0);
_glClearDepthf(1.0);
_glClear(16640);
- HEAP32[8052] = $0;
- HEAP32[8053] = $1;
- _TraceLog(0,5732,$vararg_buffer41);
+ HEAP32[8124] = $0;
+ HEAP32[8125] = $1;
+ _TraceLog(0,5624,$vararg_buffer41);
STACKTOP = sp;return;
}
function _SetupViewport() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7720]|0;
+ $0 = HEAP32[7792]|0;
$1 = (($0|0) / 2)&-1;
- $2 = HEAP32[7721]|0;
+ $2 = HEAP32[7793]|0;
$3 = (($2|0) / 2)&-1;
- $4 = HEAP32[7718]|0;
+ $4 = HEAP32[7790]|0;
$5 = (($4) - ($0))|0;
- $6 = HEAP32[7719]|0;
+ $6 = HEAP32[7791]|0;
$7 = (($6) - ($2))|0;
_rlViewport($1,$3,$5,$7);
return;
@@ -15257,12 +19461,12 @@ function _rlMatrixMode($0) {
sp = STACKTOP;
switch ($0|0) {
case 5889: {
- $modelview$sink = 30892;
+ $modelview$sink = 31180;
label = 3;
break;
}
case 5888: {
- $modelview$sink = 30956;
+ $modelview$sink = 31244;
label = 3;
break;
}
@@ -15270,9 +19474,9 @@ function _rlMatrixMode($0) {
}
}
if ((label|0) == 3) {
- HEAP32[7722] = $modelview$sink;
+ HEAP32[7794] = $modelview$sink;
}
- HEAP32[7755] = $0;
+ HEAP32[7827] = $0;
return;
}
function _rlLoadIdentity() {
@@ -15280,7 +19484,7 @@ function _rlLoadIdentity() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$0 = sp;
- $1 = HEAP32[7722]|0;
+ $1 = HEAP32[7794]|0;
_MatrixIdentity($0);
dest=$1; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
@@ -15301,7 +19505,7 @@ function _rlOrtho($0,$1,$2,$3,$4,$5) {
$7 = sp;
_MatrixOrtho($6,$0,$1,$2,$3,$4,$5);
_MatrixTranspose($6);
- $8 = HEAP32[7722]|0;
+ $8 = HEAP32[7794]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy,$$byval_copy1);
@@ -15360,17 +19564,17 @@ function _LoadDefaultShader($0) {
$1 = sp + 16|0;
$2 = sp + 513|0;
$3 = sp + 72|0;
- _memcpy(($2|0),(6308|0),489)|0;
- _memcpy(($3|0),(6797|0),441)|0;
+ _memcpy(($2|0),(6200|0),489)|0;
+ _memcpy(($3|0),(6689|0),441)|0;
$4 = (_LoadShaderProgram($2,$3)|0);
HEAP32[$1>>2] = $4;
$5 = ($4|0)==(0);
if ($5) {
HEAP32[$vararg_buffer1>>2] = $4;
- _TraceLog(2,7286,$vararg_buffer1);
+ _TraceLog(2,7178,$vararg_buffer1);
} else {
HEAP32[$vararg_buffer>>2] = $4;
- _TraceLog(0,7238,$vararg_buffer);
+ _TraceLog(0,7130,$vararg_buffer);
}
$6 = HEAP32[$1>>2]|0;
$7 = ($6|0)==(0);
@@ -15398,15 +19602,15 @@ function _LoadDefaultBuffers() {
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
$0 = (_malloc(24576)|0);
- HEAP32[(32228)>>2] = $0;
+ HEAP32[(32516)>>2] = $0;
$1 = (_malloc(8192)|0);
- HEAP32[(32236)>>2] = $1;
- HEAP32[(32232)>>2] = 0;
- HEAP32[(32240)>>2] = 0;
+ HEAP32[(32524)>>2] = $1;
+ HEAP32[(32520)>>2] = 0;
+ HEAP32[(32528)>>2] = 0;
_memset(($0|0),0,24576)|0;
$$05972 = 0;
while(1) {
- $2 = HEAP32[(32236)>>2]|0;
+ $2 = HEAP32[(32524)>>2]|0;
$3 = (($2) + ($$05972)|0);
HEAP8[$3>>0] = 0;
$4 = (($$05972) + 1)|0;
@@ -15417,19 +19621,19 @@ function _LoadDefaultBuffers() {
$$05972 = $4;
}
}
- HEAP32[8054] = 0;
- HEAP32[(32224)>>2] = 0;
- HEAP32[(32220)>>2] = 0;
+ HEAP32[8126] = 0;
+ HEAP32[(32512)>>2] = 0;
+ HEAP32[(32508)>>2] = 0;
$5 = (_malloc(73728)|0);
- HEAP32[(32276)>>2] = $5;
+ HEAP32[(32564)>>2] = $5;
$6 = (_malloc(24576)|0);
- HEAP32[(32284)>>2] = $6;
- HEAP32[(32280)>>2] = 0;
- HEAP32[(32288)>>2] = 0;
+ HEAP32[(32572)>>2] = $6;
+ HEAP32[(32568)>>2] = 0;
+ HEAP32[(32576)>>2] = 0;
_memset(($5|0),0,73728)|0;
$$05770 = 0;
while(1) {
- $7 = HEAP32[(32284)>>2]|0;
+ $7 = HEAP32[(32572)>>2]|0;
$8 = (($7) + ($$05770)|0);
HEAP8[$8>>0] = 0;
$9 = (($$05770) + 1)|0;
@@ -15440,24 +19644,24 @@ function _LoadDefaultBuffers() {
$$05770 = $9;
}
}
- HEAP32[8066] = 0;
- HEAP32[(32272)>>2] = 0;
- HEAP32[(32268)>>2] = 0;
+ HEAP32[8138] = 0;
+ HEAP32[(32560)>>2] = 0;
+ HEAP32[(32556)>>2] = 0;
$10 = (_malloc(49152)|0);
- HEAP32[(32324)>>2] = $10;
+ HEAP32[(32612)>>2] = $10;
$11 = (_malloc(32768)|0);
- HEAP32[(32328)>>2] = $11;
+ HEAP32[(32616)>>2] = $11;
$12 = (_malloc(16384)|0);
- HEAP32[(32332)>>2] = $12;
+ HEAP32[(32620)>>2] = $12;
$13 = (_malloc(12288)|0);
- HEAP32[(32336)>>2] = $13;
- $14 = HEAP32[(32324)>>2]|0;
+ HEAP32[(32624)>>2] = $13;
+ $14 = HEAP32[(32612)>>2]|0;
_memset(($14|0),0,49152)|0;
- $15 = HEAP32[(32328)>>2]|0;
+ $15 = HEAP32[(32616)>>2]|0;
_memset(($15|0),0,32768)|0;
$$05467 = 0;
while(1) {
- $17 = HEAP32[(32332)>>2]|0;
+ $17 = HEAP32[(32620)>>2]|0;
$18 = (($17) + ($$05467)|0);
HEAP8[$18>>0] = 0;
$19 = (($$05467) + 1)|0;
@@ -15468,7 +19672,7 @@ function _LoadDefaultBuffers() {
$$05467 = $19;
}
}
- $16 = HEAP32[(32336)>>2]|0;
+ $16 = HEAP32[(32624)>>2]|0;
$$05365 = 0;$$066 = 0;
while(1) {
$22 = $$05365 << 2;
@@ -15505,140 +19709,140 @@ function _LoadDefaultBuffers() {
$$05365 = $41;$$066 = $42;
}
}
- HEAP32[8078] = 0;
- HEAP32[(32316)>>2] = 0;
- HEAP32[(32320)>>2] = 0;
- _TraceLog(0,5779,$vararg_buffer);
- $20 = HEAP32[7756]|0;
+ HEAP32[8150] = 0;
+ HEAP32[(32604)>>2] = 0;
+ HEAP32[(32608)>>2] = 0;
+ _TraceLog(0,5671,$vararg_buffer);
+ $20 = HEAP32[7828]|0;
$21 = ($20|0)==(0);
if (!($21)) {
- $43 = HEAP32[7757]|0;
- FUNCTION_TABLE_vii[$43 & 63](1,(32244));
- $44 = HEAP32[7758]|0;
- $45 = HEAP32[(32244)>>2]|0;
+ $43 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$43 & 63](1,(32532));
+ $44 = HEAP32[7830]|0;
+ $45 = HEAP32[(32532)>>2]|0;
FUNCTION_TABLE_vi[$44 & 31]($45);
}
- _glGenBuffers(2,((32248)|0));
- $46 = HEAP32[(32248)>>2]|0;
+ _glGenBuffers(2,((32536)|0));
+ $46 = HEAP32[(32536)>>2]|0;
_glBindBuffer(34962,($46|0));
- $47 = HEAP32[(32228)>>2]|0;
+ $47 = HEAP32[(32516)>>2]|0;
_glBufferData(34962,24576,($47|0),35048);
- $48 = HEAP32[(31116)>>2]|0;
+ $48 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($48|0));
- $49 = HEAP32[(31116)>>2]|0;
+ $49 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($49|0),3,5126,0,0,(0|0));
- _glGenBuffers(2,((32252)|0));
- $50 = HEAP32[(32252)>>2]|0;
+ _glGenBuffers(2,((32540)|0));
+ $50 = HEAP32[(32540)>>2]|0;
_glBindBuffer(34962,($50|0));
- $51 = HEAP32[(32236)>>2]|0;
+ $51 = HEAP32[(32524)>>2]|0;
_glBufferData(34962,8192,($51|0),35048);
- $52 = HEAP32[(31136)>>2]|0;
+ $52 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($52|0));
- $53 = HEAP32[(31136)>>2]|0;
+ $53 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($53|0),4,5121,1,0,(0|0));
- $54 = HEAP32[7756]|0;
+ $54 = HEAP32[7828]|0;
$55 = ($54|0)==(0);
if ($55) {
- $57 = HEAP32[(32248)>>2]|0;
- $58 = HEAP32[(32252)>>2]|0;
+ $57 = HEAP32[(32536)>>2]|0;
+ $58 = HEAP32[(32540)>>2]|0;
HEAP32[$vararg_buffer3>>2] = $57;
$vararg_ptr6 = ((($vararg_buffer3)) + 4|0);
HEAP32[$vararg_ptr6>>2] = $58;
- _TraceLog(0,5917,$vararg_buffer3);
+ _TraceLog(0,5809,$vararg_buffer3);
} else {
- $56 = HEAP32[(32244)>>2]|0;
+ $56 = HEAP32[(32532)>>2]|0;
HEAP32[$vararg_buffer1>>2] = $56;
- _TraceLog(0,5852,$vararg_buffer1);
+ _TraceLog(0,5744,$vararg_buffer1);
}
- $59 = HEAP32[7756]|0;
+ $59 = HEAP32[7828]|0;
$60 = ($59|0)==(0);
if (!($60)) {
- $61 = HEAP32[7757]|0;
- FUNCTION_TABLE_vii[$61 & 63](1,(32292));
- $62 = HEAP32[7758]|0;
- $63 = HEAP32[(32292)>>2]|0;
+ $61 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$61 & 63](1,(32580));
+ $62 = HEAP32[7830]|0;
+ $63 = HEAP32[(32580)>>2]|0;
FUNCTION_TABLE_vi[$62 & 31]($63);
}
- _glGenBuffers(1,((32296)|0));
- $64 = HEAP32[(32296)>>2]|0;
+ _glGenBuffers(1,((32584)|0));
+ $64 = HEAP32[(32584)>>2]|0;
_glBindBuffer(34962,($64|0));
- $65 = HEAP32[(32276)>>2]|0;
+ $65 = HEAP32[(32564)>>2]|0;
_glBufferData(34962,73728,($65|0),35048);
- $66 = HEAP32[(31116)>>2]|0;
+ $66 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($66|0));
- $67 = HEAP32[(31116)>>2]|0;
+ $67 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($67|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32300)|0));
- $68 = HEAP32[(32300)>>2]|0;
+ _glGenBuffers(1,((32588)|0));
+ $68 = HEAP32[(32588)>>2]|0;
_glBindBuffer(34962,($68|0));
- $69 = HEAP32[(32284)>>2]|0;
+ $69 = HEAP32[(32572)>>2]|0;
_glBufferData(34962,24576,($69|0),35048);
- $70 = HEAP32[(31136)>>2]|0;
+ $70 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($70|0));
- $71 = HEAP32[(31136)>>2]|0;
+ $71 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($71|0),4,5121,1,0,(0|0));
- $72 = HEAP32[7756]|0;
+ $72 = HEAP32[7828]|0;
$73 = ($72|0)==(0);
if ($73) {
- $75 = HEAP32[(32296)>>2]|0;
- $76 = HEAP32[(32300)>>2]|0;
+ $75 = HEAP32[(32584)>>2]|0;
+ $76 = HEAP32[(32588)>>2]|0;
HEAP32[$vararg_buffer10>>2] = $75;
$vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
HEAP32[$vararg_ptr13>>2] = $76;
- _TraceLog(0,6063,$vararg_buffer10);
+ _TraceLog(0,5955,$vararg_buffer10);
} else {
- $74 = HEAP32[(32292)>>2]|0;
+ $74 = HEAP32[(32580)>>2]|0;
HEAP32[$vararg_buffer7>>2] = $74;
- _TraceLog(0,5994,$vararg_buffer7);
+ _TraceLog(0,5886,$vararg_buffer7);
}
- $77 = HEAP32[7756]|0;
+ $77 = HEAP32[7828]|0;
$78 = ($77|0)==(0);
if (!($78)) {
- $79 = HEAP32[7757]|0;
- FUNCTION_TABLE_vii[$79 & 63](1,(32340));
- $80 = HEAP32[7758]|0;
- $81 = HEAP32[(32340)>>2]|0;
+ $79 = HEAP32[7829]|0;
+ FUNCTION_TABLE_vii[$79 & 63](1,(32628));
+ $80 = HEAP32[7830]|0;
+ $81 = HEAP32[(32628)>>2]|0;
FUNCTION_TABLE_vi[$80 & 31]($81);
}
- _glGenBuffers(1,((32344)|0));
- $82 = HEAP32[(32344)>>2]|0;
+ _glGenBuffers(1,((32632)|0));
+ $82 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($82|0));
- $83 = HEAP32[(32324)>>2]|0;
+ $83 = HEAP32[(32612)>>2]|0;
_glBufferData(34962,49152,($83|0),35048);
- $84 = HEAP32[(31116)>>2]|0;
+ $84 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($84|0));
- $85 = HEAP32[(31116)>>2]|0;
+ $85 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($85|0),3,5126,0,0,(0|0));
- _glGenBuffers(1,((32348)|0));
- $86 = HEAP32[(32348)>>2]|0;
+ _glGenBuffers(1,((32636)|0));
+ $86 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34962,($86|0));
- $87 = HEAP32[(32328)>>2]|0;
+ $87 = HEAP32[(32616)>>2]|0;
_glBufferData(34962,32768,($87|0),35048);
- $88 = HEAP32[(31120)>>2]|0;
+ $88 = HEAP32[(31408)>>2]|0;
_glEnableVertexAttribArray(($88|0));
- $89 = HEAP32[(31120)>>2]|0;
+ $89 = HEAP32[(31408)>>2]|0;
_glVertexAttribPointer(($89|0),2,5126,0,0,(0|0));
- _glGenBuffers(1,((32352)|0));
- $90 = HEAP32[(32352)>>2]|0;
+ _glGenBuffers(1,((32640)|0));
+ $90 = HEAP32[(32640)>>2]|0;
_glBindBuffer(34962,($90|0));
- $91 = HEAP32[(32332)>>2]|0;
+ $91 = HEAP32[(32620)>>2]|0;
_glBufferData(34962,16384,($91|0),35048);
- $92 = HEAP32[(31136)>>2]|0;
+ $92 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($92|0));
- $93 = HEAP32[(31136)>>2]|0;
+ $93 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($93|0),4,5121,1,0,(0|0));
- _glGenBuffers(1,((32356)|0));
- $94 = HEAP32[(32356)>>2]|0;
+ _glGenBuffers(1,((32644)|0));
+ $94 = HEAP32[(32644)>>2]|0;
_glBindBuffer(34963,($94|0));
- $95 = HEAP32[(32336)>>2]|0;
+ $95 = HEAP32[(32624)>>2]|0;
_glBufferData(34963,12288,($95|0),35044);
- $96 = HEAP32[7756]|0;
+ $96 = HEAP32[7828]|0;
$97 = ($96|0)==(0);
if ($97) {
- $99 = HEAP32[(32344)>>2]|0;
- $100 = HEAP32[(32348)>>2]|0;
- $101 = HEAP32[(32352)>>2]|0;
- $102 = HEAP32[(32356)>>2]|0;
+ $99 = HEAP32[(32632)>>2]|0;
+ $100 = HEAP32[(32636)>>2]|0;
+ $101 = HEAP32[(32640)>>2]|0;
+ $102 = HEAP32[(32644)>>2]|0;
HEAP32[$vararg_buffer17>>2] = $99;
$vararg_ptr20 = ((($vararg_buffer17)) + 4|0);
HEAP32[$vararg_ptr20>>2] = $100;
@@ -15646,18 +19850,18 @@ function _LoadDefaultBuffers() {
HEAP32[$vararg_ptr21>>2] = $101;
$vararg_ptr22 = ((($vararg_buffer17)) + 12|0);
HEAP32[$vararg_ptr22>>2] = $102;
- _TraceLog(0,6209,$vararg_buffer17);
+ _TraceLog(0,6101,$vararg_buffer17);
} else {
- $98 = HEAP32[(32340)>>2]|0;
+ $98 = HEAP32[(32628)>>2]|0;
HEAP32[$vararg_buffer14>>2] = $98;
- _TraceLog(0,6144,$vararg_buffer14);
+ _TraceLog(0,6036,$vararg_buffer14);
}
- $103 = HEAP32[7756]|0;
+ $103 = HEAP32[7828]|0;
$104 = ($103|0)==(0);
if ($104) {
STACKTOP = sp;return;
}
- $105 = HEAP32[7758]|0;
+ $105 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$105 & 31](0);
STACKTOP = sp;return;
}
@@ -15694,10 +19898,10 @@ function _LoadShaderProgram($0,$1) {
$9 = ($8|0)==(1);
if ($9) {
HEAP32[$vararg_buffer4>>2] = $6;
- _TraceLog(0,7542,$vararg_buffer4);
+ _TraceLog(0,7434,$vararg_buffer4);
} else {
HEAP32[$vararg_buffer>>2] = $6;
- _TraceLog(2,7490,$vararg_buffer);
+ _TraceLog(2,7382,$vararg_buffer);
HEAP32[$vararg_buffer>>2] = 0;
_glGetShaderiv(($6|0),35716,($vararg_buffer|0));
$10 = HEAP32[$vararg_buffer>>2]|0;
@@ -15707,7 +19911,7 @@ function _LoadShaderProgram($0,$1) {
$13 = HEAP32[$vararg_buffer>>2]|0;
_glGetShaderInfoLog(($6|0),($13|0),($5|0),($12|0));
HEAP32[$vararg_buffer1>>2] = $12;
- _TraceLog(0,7539,$vararg_buffer1);
+ _TraceLog(0,7431,$vararg_buffer1);
_llvm_stackrestore(($11|0));
}
_glCompileShader(($7|0));
@@ -15716,10 +19920,10 @@ function _LoadShaderProgram($0,$1) {
$15 = ($14|0)==(1);
if ($15) {
HEAP32[$vararg_buffer13>>2] = $7;
- _TraceLog(0,7643,$vararg_buffer13);
+ _TraceLog(0,7535,$vararg_buffer13);
} else {
HEAP32[$vararg_buffer7>>2] = $7;
- _TraceLog(2,7592,$vararg_buffer7);
+ _TraceLog(2,7484,$vararg_buffer7);
HEAP32[$vararg_buffer7>>2] = 0;
_glGetShaderiv(($7|0),35716,($vararg_buffer7|0));
$16 = HEAP32[$vararg_buffer7>>2]|0;
@@ -15729,25 +19933,25 @@ function _LoadShaderProgram($0,$1) {
$19 = HEAP32[$vararg_buffer7>>2]|0;
_glGetShaderInfoLog(($7|0),($19|0),($5|0),($18|0));
HEAP32[$vararg_buffer10>>2] = $18;
- _TraceLog(0,7539,$vararg_buffer10);
+ _TraceLog(0,7431,$vararg_buffer10);
_llvm_stackrestore(($17|0));
}
$20 = (_glCreateProgram()|0);
_glAttachShader(($20|0),($6|0));
_glAttachShader(($20|0),($7|0));
- _glBindAttribLocation(($20|0),0,(7334|0));
- _glBindAttribLocation(($20|0),1,(7349|0));
- _glBindAttribLocation(($20|0),2,(7380|0));
- _glBindAttribLocation(($20|0),3,(7407|0));
- _glBindAttribLocation(($20|0),4,(7393|0));
- _glBindAttribLocation(($20|0),5,(7364|0));
+ _glBindAttribLocation(($20|0),0,(7226|0));
+ _glBindAttribLocation(($20|0),1,(7241|0));
+ _glBindAttribLocation(($20|0),2,(7272|0));
+ _glBindAttribLocation(($20|0),3,(7299|0));
+ _glBindAttribLocation(($20|0),4,(7285|0));
+ _glBindAttribLocation(($20|0),5,(7256|0));
_glLinkProgram(($20|0));
_glGetProgramiv(($20|0),35714,($4|0));
$21 = HEAP32[$4>>2]|0;
$22 = ($21|0)==(0);
if ($22) {
HEAP32[$vararg_buffer16>>2] = $20;
- _TraceLog(2,7695,$vararg_buffer16);
+ _TraceLog(2,7587,$vararg_buffer16);
HEAP32[$vararg_buffer16>>2] = 0;
_glGetProgramiv(($20|0),35716,($vararg_buffer16|0));
$23 = HEAP32[$vararg_buffer16>>2]|0;
@@ -15757,7 +19961,7 @@ function _LoadShaderProgram($0,$1) {
$26 = HEAP32[$vararg_buffer16>>2]|0;
_glGetProgramInfoLog(($20|0),($26|0),($5|0),($25|0));
HEAP32[$vararg_buffer19>>2] = $25;
- _TraceLog(0,7539,$vararg_buffer19);
+ _TraceLog(0,7431,$vararg_buffer19);
_glDeleteProgram(($20|0));
_llvm_stackrestore(($24|0));
$$0 = 0;
@@ -15766,7 +19970,7 @@ function _LoadShaderProgram($0,$1) {
STACKTOP = sp;return ($$0|0);
} else {
HEAP32[$vararg_buffer22>>2] = $20;
- _TraceLog(0,7741,$vararg_buffer22);
+ _TraceLog(0,7633,$vararg_buffer22);
$$0 = $20;
_glDeleteShader(($6|0));
_glDeleteShader(($7|0));
@@ -15781,55 +19985,55 @@ function _LoadDefaultShaderLocations($0) {
var sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- $2 = (_glGetAttribLocation(($1|0),(7334|0))|0);
+ $2 = (_glGetAttribLocation(($1|0),(7226|0))|0);
$3 = ((($0)) + 4|0);
HEAP32[$3>>2] = $2;
$4 = HEAP32[$0>>2]|0;
- $5 = (_glGetAttribLocation(($4|0),(7349|0))|0);
+ $5 = (_glGetAttribLocation(($4|0),(7241|0))|0);
$6 = ((($0)) + 8|0);
HEAP32[$6>>2] = $5;
$7 = HEAP32[$0>>2]|0;
- $8 = (_glGetAttribLocation(($7|0),(7364|0))|0);
+ $8 = (_glGetAttribLocation(($7|0),(7256|0))|0);
$9 = ((($0)) + 12|0);
HEAP32[$9>>2] = $8;
$10 = HEAP32[$0>>2]|0;
- $11 = (_glGetAttribLocation(($10|0),(7380|0))|0);
+ $11 = (_glGetAttribLocation(($10|0),(7272|0))|0);
$12 = ((($0)) + 16|0);
HEAP32[$12>>2] = $11;
$13 = HEAP32[$0>>2]|0;
- $14 = (_glGetAttribLocation(($13|0),(7393|0))|0);
+ $14 = (_glGetAttribLocation(($13|0),(7285|0))|0);
$15 = ((($0)) + 20|0);
HEAP32[$15>>2] = $14;
$16 = HEAP32[$0>>2]|0;
- $17 = (_glGetAttribLocation(($16|0),(7407|0))|0);
+ $17 = (_glGetAttribLocation(($16|0),(7299|0))|0);
$18 = ((($0)) + 24|0);
HEAP32[$18>>2] = $17;
$19 = HEAP32[$0>>2]|0;
- $20 = (_glGetUniformLocation(($19|0),(7419|0))|0);
+ $20 = (_glGetUniformLocation(($19|0),(7311|0))|0);
$21 = ((($0)) + 28|0);
HEAP32[$21>>2] = $20;
$22 = HEAP32[$0>>2]|0;
- $23 = (_glGetUniformLocation(($22|0),(7429|0))|0);
+ $23 = (_glGetUniformLocation(($22|0),(7321|0))|0);
$24 = ((($0)) + 32|0);
HEAP32[$24>>2] = $23;
$25 = HEAP32[$0>>2]|0;
- $26 = (_glGetUniformLocation(($25|0),(7440|0))|0);
+ $26 = (_glGetUniformLocation(($25|0),(7332|0))|0);
$27 = ((($0)) + 36|0);
HEAP32[$27>>2] = $26;
$28 = HEAP32[$0>>2]|0;
- $29 = (_glGetUniformLocation(($28|0),(7451|0))|0);
+ $29 = (_glGetUniformLocation(($28|0),(7343|0))|0);
$30 = ((($0)) + 40|0);
HEAP32[$30>>2] = $29;
$31 = HEAP32[$0>>2]|0;
- $32 = (_glGetUniformLocation(($31|0),(7463|0))|0);
+ $32 = (_glGetUniformLocation(($31|0),(7355|0))|0);
$33 = ((($0)) + 44|0);
HEAP32[$33>>2] = $32;
$34 = HEAP32[$0>>2]|0;
- $35 = (_glGetUniformLocation(($34|0),(7472|0))|0);
+ $35 = (_glGetUniformLocation(($34|0),(7364|0))|0);
$36 = ((($0)) + 48|0);
HEAP32[$36>>2] = $35;
$37 = HEAP32[$0>>2]|0;
- $38 = (_glGetUniformLocation(($37|0),(7481|0))|0);
+ $38 = (_glGetUniformLocation(($37|0),(7373|0))|0);
$39 = ((($0)) + 52|0);
HEAP32[$39>>2] = $38;
return;
@@ -15838,9 +20042,9 @@ function _IsMouseButtonPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33513 + ($0)|0);
+ $1 = (35953 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33516 + ($0)|0);
+ $3 = (35956 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -15852,9 +20056,9 @@ function _IsMouseButtonReleased($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33513 + ($0)|0);
+ $1 = (35953 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (33516 + ($0)|0);
+ $3 = (35956 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(0);
@@ -15875,10 +20079,10 @@ function _CloseWindow() {
$vararg_buffer = sp;
_UnloadDefaultFont();
_rlglClose();
- $0 = HEAP32[7675]|0;
+ $0 = HEAP32[7747]|0;
_glfwDestroyWindow(($0|0));
_glfwTerminate();
- _TraceLog(0,8053,$vararg_buffer);
+ _TraceLog(0,7945,$vararg_buffer);
STACKTOP = sp;return;
}
function _UnloadDefaultFont() {
@@ -15886,9 +20090,9 @@ function _UnloadDefaultFont() {
sp = STACKTOP;
STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
$$byval_copy = sp;
- ;HEAP32[$$byval_copy>>2]=HEAP32[30740>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[30740+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[30740+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[30740+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[30740+16>>2]|0;
+ ;HEAP32[$$byval_copy>>2]=HEAP32[31028>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[31028+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[31028+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[31028+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[31028+16>>2]|0;
_UnloadTexture($$byval_copy);
- $0 = HEAP32[(30768)>>2]|0;
+ $0 = HEAP32[(31056)>>2]|0;
_free($0);
STACKTOP = sp;return;
}
@@ -15899,11 +20103,11 @@ function _rlglClose() {
$vararg_buffer = sp;
_UnloadDefaultShader();
_UnloadDefaultBuffers();
- _glDeleteTextures(1,(31052|0));
- $0 = HEAP32[7763]|0;
+ _glDeleteTextures(1,(31340|0));
+ $0 = HEAP32[7835]|0;
HEAP32[$vararg_buffer>>2] = $0;
- _TraceLog(0,8080,$vararg_buffer);
- $1 = HEAP32[7793]|0;
+ _TraceLog(0,7972,$vararg_buffer);
+ $1 = HEAP32[7865]|0;
_free($1);
STACKTOP = sp;return;
}
@@ -15911,17 +20115,17 @@ function _UnloadDefaultShader() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
_glUseProgram(0);
- $0 = HEAP32[7764]|0;
+ $0 = HEAP32[7836]|0;
_glDeleteProgram(($0|0));
return;
}
function _UnloadDefaultBuffers() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7756]|0;
+ $0 = HEAP32[7828]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[7758]|0;
+ $2 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$2 & 31](0);
}
_glDisableVertexAttribArray(0);
@@ -15930,39 +20134,39 @@ function _UnloadDefaultBuffers() {
_glDisableVertexAttribArray(3);
_glBindBuffer(34962,0);
_glBindBuffer(34963,0);
- _glDeleteBuffers(1,((32248)|0));
- _glDeleteBuffers(1,((32252)|0));
- _glDeleteBuffers(1,((32296)|0));
- _glDeleteBuffers(1,((32300)|0));
- _glDeleteBuffers(1,((32344)|0));
- _glDeleteBuffers(1,((32348)|0));
- _glDeleteBuffers(1,((32352)|0));
- _glDeleteBuffers(1,((32356)|0));
- $3 = HEAP32[7756]|0;
+ _glDeleteBuffers(1,((32536)|0));
+ _glDeleteBuffers(1,((32540)|0));
+ _glDeleteBuffers(1,((32584)|0));
+ _glDeleteBuffers(1,((32588)|0));
+ _glDeleteBuffers(1,((32632)|0));
+ _glDeleteBuffers(1,((32636)|0));
+ _glDeleteBuffers(1,((32640)|0));
+ _glDeleteBuffers(1,((32644)|0));
+ $3 = HEAP32[7828]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7759]|0;
- FUNCTION_TABLE_vii[$5 & 63](1,(32244));
- $6 = HEAP32[7759]|0;
- FUNCTION_TABLE_vii[$6 & 63](1,(32292));
- $7 = HEAP32[7759]|0;
- FUNCTION_TABLE_vii[$7 & 63](1,(32340));
- }
- $8 = HEAP32[(32228)>>2]|0;
+ $5 = HEAP32[7831]|0;
+ FUNCTION_TABLE_vii[$5 & 63](1,(32532));
+ $6 = HEAP32[7831]|0;
+ FUNCTION_TABLE_vii[$6 & 63](1,(32580));
+ $7 = HEAP32[7831]|0;
+ FUNCTION_TABLE_vii[$7 & 63](1,(32628));
+ }
+ $8 = HEAP32[(32516)>>2]|0;
_free($8);
- $9 = HEAP32[(32236)>>2]|0;
+ $9 = HEAP32[(32524)>>2]|0;
_free($9);
- $10 = HEAP32[(32276)>>2]|0;
+ $10 = HEAP32[(32564)>>2]|0;
_free($10);
- $11 = HEAP32[(32284)>>2]|0;
+ $11 = HEAP32[(32572)>>2]|0;
_free($11);
- $12 = HEAP32[(32324)>>2]|0;
+ $12 = HEAP32[(32612)>>2]|0;
_free($12);
- $13 = HEAP32[(32328)>>2]|0;
+ $13 = HEAP32[(32616)>>2]|0;
_free($13);
- $14 = HEAP32[(32332)>>2]|0;
+ $14 = HEAP32[(32620)>>2]|0;
_free($14);
- $15 = HEAP32[(32336)>>2]|0;
+ $15 = HEAP32[(32624)>>2]|0;
_free($15);
return;
}
@@ -15980,7 +20184,7 @@ function _UnloadTexture($0) {
_rlDeleteTextures($1);
$3 = HEAP32[$0>>2]|0;
HEAP32[$vararg_buffer>>2] = $3;
- _TraceLog(0,8145,$vararg_buffer);
+ _TraceLog(0,8037,$vararg_buffer);
STACKTOP = sp;return;
}
function _rlDeleteTextures($0) {
@@ -15996,41 +20200,22 @@ function _rlDeleteTextures($0) {
}
STACKTOP = sp;return;
}
-function _WindowShouldClose() {
- var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
- sp = STACKTOP;
- $0 = HEAP32[8090]|0;
- $1 = ($0|0)==(0);
- if (!($1)) {
- while(1) {
- _glfwWaitEvents();
- $2 = HEAP32[8090]|0;
- $3 = ($2|0)==(0);
- if ($3) {
- break;
- }
- }
- }
- $4 = HEAP32[7675]|0;
- $5 = (_glfwWindowShouldClose(($4|0))|0);
- return ($5|0);
-}
function _BeginDrawing() {
var $0 = 0.0, $1 = 0.0, $2 = 0.0, $downscaleView$byval_copy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$downscaleView$byval_copy = sp;
$0 = (+_GetTime());
- HEAPF64[1745] = $0;
- $1 = +HEAPF64[1728];
+ HEAPF64[1780] = $0;
+ $1 = +HEAPF64[1763];
$2 = $0 - $1;
- HEAPF64[1746] = $2;
- HEAPF64[1728] = $0;
+ HEAPF64[1781] = $2;
+ HEAPF64[1763] = $0;
_rlClearScreenBuffers();
_rlLoadIdentity();
- dest=$downscaleView$byval_copy; src=30796; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$downscaleView$byval_copy; src=31084; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
(_MatrixToFloat($downscaleView$byval_copy)|0);
- _rlMultMatrixf(32368);
+ _rlMultMatrixf(32656);
STACKTOP = sp;return;
}
function _MatrixToFloat($0) {
@@ -16039,53 +20224,53 @@ function _MatrixToFloat($0) {
var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = HEAP32[$0>>2]|0;
- HEAP32[8092] = $1;
+ HEAP32[8164] = $1;
$2 = ((($0)) + 4|0);
$3 = HEAP32[$2>>2]|0;
- HEAP32[(32372)>>2] = $3;
+ HEAP32[(32660)>>2] = $3;
$4 = ((($0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
- HEAP32[(32376)>>2] = $5;
+ HEAP32[(32664)>>2] = $5;
$6 = ((($0)) + 12|0);
$7 = HEAP32[$6>>2]|0;
- HEAP32[(32380)>>2] = $7;
+ HEAP32[(32668)>>2] = $7;
$8 = ((($0)) + 16|0);
$9 = HEAP32[$8>>2]|0;
- HEAP32[(32384)>>2] = $9;
+ HEAP32[(32672)>>2] = $9;
$10 = ((($0)) + 20|0);
$11 = HEAP32[$10>>2]|0;
- HEAP32[(32388)>>2] = $11;
+ HEAP32[(32676)>>2] = $11;
$12 = ((($0)) + 24|0);
$13 = HEAP32[$12>>2]|0;
- HEAP32[(32392)>>2] = $13;
+ HEAP32[(32680)>>2] = $13;
$14 = ((($0)) + 28|0);
$15 = HEAP32[$14>>2]|0;
- HEAP32[(32396)>>2] = $15;
+ HEAP32[(32684)>>2] = $15;
$16 = ((($0)) + 32|0);
$17 = HEAP32[$16>>2]|0;
- HEAP32[(32400)>>2] = $17;
+ HEAP32[(32688)>>2] = $17;
$18 = ((($0)) + 36|0);
$19 = HEAP32[$18>>2]|0;
- HEAP32[(32404)>>2] = $19;
+ HEAP32[(32692)>>2] = $19;
$20 = ((($0)) + 40|0);
$21 = HEAP32[$20>>2]|0;
- HEAP32[(32408)>>2] = $21;
+ HEAP32[(32696)>>2] = $21;
$22 = ((($0)) + 44|0);
$23 = HEAP32[$22>>2]|0;
- HEAP32[(32412)>>2] = $23;
+ HEAP32[(32700)>>2] = $23;
$24 = ((($0)) + 48|0);
$25 = HEAP32[$24>>2]|0;
- HEAP32[(32416)>>2] = $25;
+ HEAP32[(32704)>>2] = $25;
$26 = ((($0)) + 52|0);
$27 = HEAP32[$26>>2]|0;
- HEAP32[(32420)>>2] = $27;
+ HEAP32[(32708)>>2] = $27;
$28 = ((($0)) + 56|0);
$29 = HEAP32[$28>>2]|0;
- HEAP32[(32424)>>2] = $29;
+ HEAP32[(32712)>>2] = $29;
$30 = ((($0)) + 60|0);
$31 = HEAP32[$30>>2]|0;
- HEAP32[(32428)>>2] = $31;
- return (32368|0);
+ HEAP32[(32716)>>2] = $31;
+ return (32656|0);
}
function _rlMultMatrixf($0) {
$0 = $0|0;
@@ -16160,7 +20345,7 @@ function _rlMultMatrixf($0) {
$47 = ((($0)) + 60|0);
$48 = HEAP32[$47>>2]|0;
HEAP32[$46>>2] = $48;
- $49 = HEAP32[7722]|0;
+ $49 = HEAP32[7794]|0;
dest=$$byval_copy; src=$49; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$$byval_copy,$$byval_copy1);
@@ -16174,15 +20359,15 @@ function _EndDrawing() {
_SwapBuffers();
_PollInputEvents();
$0 = (+_GetTime());
- HEAPF64[1745] = $0;
- $1 = +HEAPF64[1728];
+ HEAPF64[1780] = $0;
+ $1 = +HEAPF64[1763];
$2 = $0 - $1;
- HEAPF64[1747] = $2;
- HEAPF64[1728] = $0;
- $3 = +HEAPF64[1746];
+ HEAPF64[1782] = $2;
+ HEAPF64[1763] = $0;
+ $3 = +HEAPF64[1781];
$4 = $2 + $3;
- HEAPF64[1748] = $4;
- $5 = +HEAPF64[1725];
+ HEAPF64[1783] = $4;
+ $5 = +HEAPF64[1760];
$6 = $4 < $5;
if (!($6)) {
return;
@@ -16192,13 +20377,13 @@ function _EndDrawing() {
$9 = $8;
_Wait($9);
$10 = (+_GetTime());
- HEAPF64[1745] = $10;
- $11 = +HEAPF64[1728];
+ HEAPF64[1780] = $10;
+ $11 = +HEAPF64[1763];
$12 = $10 - $11;
- HEAPF64[1728] = $10;
- $13 = +HEAPF64[1748];
+ HEAPF64[1763] = $10;
+ $13 = +HEAPF64[1783];
$14 = $12 + $13;
- HEAPF64[1748] = $14;
+ HEAPF64[1783] = $14;
return;
}
function _rlglDraw() {
@@ -16211,7 +20396,7 @@ function _rlglDraw() {
function _SwapBuffers() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[7675]|0;
+ $0 = HEAP32[7747]|0;
_glfwSwapBuffers(($0|0));
return;
}
@@ -16225,22 +20410,22 @@ function _PollInputEvents() {
$1 = sp + 1432|0;
$2 = sp;
_UpdateGestures();
- HEAP32[740] = -1;
- HEAP32[742] = -1;
- HEAP32[8108] = 0;
- $3 = HEAP32[7675]|0;
+ HEAP32[743] = -1;
+ HEAP32[745] = -1;
+ HEAP32[8180] = 0;
+ $3 = HEAP32[7747]|0;
_glfwGetCursorPos(($3|0),($0|0),($1|0));
$4 = +HEAPF64[$0>>3];
$5 = $4;
- HEAPF32[3448] = $5;
+ HEAPF32[3518] = $5;
$6 = +HEAPF64[$1>>3];
$7 = $6;
- HEAPF32[(13796)>>2] = $7;
- _memcpy((34031|0),(33519|0),512)|0;
- ;HEAP8[33516>>0]=HEAP8[33513>>0]|0;HEAP8[33516+1>>0]=HEAP8[33513+1>>0]|0;HEAP8[33516+2>>0]=HEAP8[33513+2>>0]|0;
- $8 = HEAP32[8091]|0;
- HEAP32[7678] = $8;
- HEAP32[8091] = 0;
+ HEAPF32[(14076)>>2] = $7;
+ _memcpy((36471|0),(35959|0),512)|0;
+ ;HEAP8[35956>>0]=HEAP8[35953>>0]|0;HEAP8[35956+1>>0]=HEAP8[35953+1>>0]|0;HEAP8[35956+2>>0]=HEAP8[35953+2>>0]|0;
+ $8 = HEAP32[8163]|0;
+ HEAP32[7750] = $8;
+ HEAP32[8163] = 0;
$9 = (_emscripten_get_num_gamepads()|0);
$10 = ($9|0)>(0);
if (!($10)) {
@@ -16250,8 +20435,8 @@ function _PollInputEvents() {
$12 = ((($2)) + 8|0);
$$05160 = 0;
while(1) {
- $scevgep = (34543 + ($$05160<<5)|0);
- $scevgep67 = (34671 + ($$05160<<5)|0);
+ $scevgep = (36983 + ($$05160<<5)|0);
+ $scevgep67 = (37111 + ($$05160<<5)|0);
dest=$scevgep; src=$scevgep67; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
$13 = (_emscripten_get_gamepad_status(($$05160|0),($2|0))|0);
$14 = ($13|0)==(0);
@@ -16265,10 +20450,10 @@ function _PollInputEvents() {
$21 = (((($2)) + 1040|0) + ($$04857<<2)|0);
$22 = HEAP32[$21>>2]|0;
$23 = ($22|0)==(1);
- $24 = ((34671 + ($$05160<<5)|0) + ($$04857)|0);
+ $24 = ((37111 + ($$05160<<5)|0) + ($$04857)|0);
if ($23) {
HEAP8[$24>>0] = 1;
- HEAP32[742] = $$04857;
+ HEAP32[745] = $$04857;
} else {
HEAP8[$24>>0] = 0;
}
@@ -16292,7 +20477,7 @@ function _PollInputEvents() {
$29 = (((($2)) + 16|0) + ($$058<<3)|0);
$30 = +HEAPF64[$29>>3];
$31 = $30;
- $32 = ((32436 + ($$05160<<5)|0) + ($$058<<2)|0);
+ $32 = ((32724 + ($$05160<<5)|0) + ($$058<<2)|0);
HEAPF32[$32>>2] = $31;
$33 = (($$058) + 1)|0;
$34 = ($33|0)<($20|0);
@@ -16308,7 +20493,7 @@ function _PollInputEvents() {
} else {
$$lcssa = $18;
}
- HEAP32[8108] = $$lcssa;
+ HEAP32[8180] = $$lcssa;
}
$37 = (($$05160) + 1)|0;
$38 = ($37|0)<($9|0);
@@ -16349,87 +20534,87 @@ function _UpdateDefaultBuffers() {
var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8054]|0;
+ $0 = HEAP32[8126]|0;
$1 = ($0|0)>(0);
if ($1) {
- $2 = HEAP32[7756]|0;
+ $2 = HEAP32[7828]|0;
$3 = ($2|0)==(0);
if (!($3)) {
- $4 = HEAP32[7758]|0;
- $5 = HEAP32[(32244)>>2]|0;
+ $4 = HEAP32[7830]|0;
+ $5 = HEAP32[(32532)>>2]|0;
FUNCTION_TABLE_vi[$4 & 31]($5);
}
- $6 = HEAP32[(32248)>>2]|0;
+ $6 = HEAP32[(32536)>>2]|0;
_glBindBuffer(34962,($6|0));
- $7 = HEAP32[8054]|0;
+ $7 = HEAP32[8126]|0;
$8 = ($7*12)|0;
- $9 = HEAP32[(32228)>>2]|0;
+ $9 = HEAP32[(32516)>>2]|0;
_glBufferSubData(34962,0,($8|0),($9|0));
- $10 = HEAP32[(32252)>>2]|0;
+ $10 = HEAP32[(32540)>>2]|0;
_glBindBuffer(34962,($10|0));
- $11 = HEAP32[(32224)>>2]|0;
+ $11 = HEAP32[(32512)>>2]|0;
$12 = $11 << 2;
- $13 = HEAP32[(32236)>>2]|0;
+ $13 = HEAP32[(32524)>>2]|0;
_glBufferSubData(34962,0,($12|0),($13|0));
}
- $14 = HEAP32[8066]|0;
+ $14 = HEAP32[8138]|0;
$15 = ($14|0)>(0);
if ($15) {
- $16 = HEAP32[7756]|0;
+ $16 = HEAP32[7828]|0;
$17 = ($16|0)==(0);
if (!($17)) {
- $18 = HEAP32[7758]|0;
- $19 = HEAP32[(32292)>>2]|0;
+ $18 = HEAP32[7830]|0;
+ $19 = HEAP32[(32580)>>2]|0;
FUNCTION_TABLE_vi[$18 & 31]($19);
}
- $20 = HEAP32[(32296)>>2]|0;
+ $20 = HEAP32[(32584)>>2]|0;
_glBindBuffer(34962,($20|0));
- $21 = HEAP32[8066]|0;
+ $21 = HEAP32[8138]|0;
$22 = ($21*12)|0;
- $23 = HEAP32[(32276)>>2]|0;
+ $23 = HEAP32[(32564)>>2]|0;
_glBufferSubData(34962,0,($22|0),($23|0));
- $24 = HEAP32[(32300)>>2]|0;
+ $24 = HEAP32[(32588)>>2]|0;
_glBindBuffer(34962,($24|0));
- $25 = HEAP32[(32272)>>2]|0;
+ $25 = HEAP32[(32560)>>2]|0;
$26 = $25 << 2;
- $27 = HEAP32[(32284)>>2]|0;
+ $27 = HEAP32[(32572)>>2]|0;
_glBufferSubData(34962,0,($26|0),($27|0));
}
- $28 = HEAP32[8078]|0;
+ $28 = HEAP32[8150]|0;
$29 = ($28|0)>(0);
if ($29) {
- $30 = HEAP32[7756]|0;
+ $30 = HEAP32[7828]|0;
$31 = ($30|0)==(0);
if (!($31)) {
- $32 = HEAP32[7758]|0;
- $33 = HEAP32[(32340)>>2]|0;
+ $32 = HEAP32[7830]|0;
+ $33 = HEAP32[(32628)>>2]|0;
FUNCTION_TABLE_vi[$32 & 31]($33);
}
- $34 = HEAP32[(32344)>>2]|0;
+ $34 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($34|0));
- $35 = HEAP32[8078]|0;
+ $35 = HEAP32[8150]|0;
$36 = ($35*12)|0;
- $37 = HEAP32[(32324)>>2]|0;
+ $37 = HEAP32[(32612)>>2]|0;
_glBufferSubData(34962,0,($36|0),($37|0));
- $38 = HEAP32[(32348)>>2]|0;
+ $38 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34962,($38|0));
- $39 = HEAP32[8078]|0;
+ $39 = HEAP32[8150]|0;
$40 = $39 << 3;
- $41 = HEAP32[(32328)>>2]|0;
+ $41 = HEAP32[(32616)>>2]|0;
_glBufferSubData(34962,0,($40|0),($41|0));
- $42 = HEAP32[(32352)>>2]|0;
+ $42 = HEAP32[(32640)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[8078]|0;
+ $43 = HEAP32[8150]|0;
$44 = $43 << 2;
- $45 = HEAP32[(32332)>>2]|0;
+ $45 = HEAP32[(32620)>>2]|0;
_glBufferSubData(34962,0,($44|0),($45|0));
}
- $46 = HEAP32[7756]|0;
+ $46 = HEAP32[7828]|0;
$47 = ($46|0)==(0);
if ($47) {
return;
}
- $48 = HEAP32[7758]|0;
+ $48 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$48 & 31](0);
return;
}
@@ -16447,9 +20632,9 @@ function _DrawDefaultBuffers() {
$0 = sp + 128|0;
$1 = sp + 64|0;
$2 = sp;
- dest=$0; src=30892; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$1; src=30956; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $3 = HEAP32[8141]|0;
+ dest=$0; src=31180; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$1; src=31244; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ $3 = HEAP32[8213]|0;
$4 = ($3|0)!=(0);
$$ = $4 ? 2 : 1;
$$02932 = 0;
@@ -16459,134 +20644,134 @@ function _DrawDefaultBuffers() {
dest=$$byval_copy2; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetStereoView($$02932,$modelview$byval_copy,$$byval_copy2);
}
- $8 = HEAP32[8054]|0;
+ $8 = HEAP32[8126]|0;
$9 = ($8|0)>(0);
- $10 = HEAP32[8066]|0;
+ $10 = HEAP32[8138]|0;
$11 = ($10|0)>(0);
$or$cond = $9 | $11;
- $12 = HEAP32[8078]|0;
+ $12 = HEAP32[8150]|0;
$13 = ($12|0)>(0);
$or$cond3 = $or$cond | $13;
if ($or$cond3) {
- $14 = HEAP32[7778]|0;
+ $14 = HEAP32[7850]|0;
_glUseProgram(($14|0));
- dest=$modelview$byval_copy; src=30956; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=$$byval_copy2; src=30892; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$modelview$byval_copy; src=31244; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=$$byval_copy2; src=31180; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($2,$modelview$byval_copy,$$byval_copy2);
- $15 = HEAP32[(31140)>>2]|0;
+ $15 = HEAP32[(31428)>>2]|0;
dest=$$byval_copy2; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
$16 = (_MatrixToFloat($$byval_copy2)|0);
_glUniformMatrix4fv(($15|0),1,0,($16|0));
- $17 = HEAP32[(31144)>>2]|0;
+ $17 = HEAP32[(31432)>>2]|0;
_glUniform4f(($17|0),1.0,1.0,1.0,1.0);
- $18 = HEAP32[(31156)>>2]|0;
+ $18 = HEAP32[(31444)>>2]|0;
_glUniform1i(($18|0),0);
}
- $19 = HEAP32[8054]|0;
+ $19 = HEAP32[8126]|0;
$20 = ($19|0)>(0);
if ($20) {
- $21 = HEAP32[7763]|0;
+ $21 = HEAP32[7835]|0;
_glBindTexture(3553,($21|0));
- $22 = HEAP32[7756]|0;
+ $22 = HEAP32[7828]|0;
$23 = ($22|0)==(0);
if ($23) {
- $26 = HEAP32[(32248)>>2]|0;
+ $26 = HEAP32[(32536)>>2]|0;
_glBindBuffer(34962,($26|0));
- $27 = HEAP32[(31116)>>2]|0;
+ $27 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($27|0),3,5126,0,0,(0|0));
- $28 = HEAP32[(31116)>>2]|0;
+ $28 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($28|0));
- $29 = HEAP32[(32252)>>2]|0;
+ $29 = HEAP32[(32540)>>2]|0;
_glBindBuffer(34962,($29|0));
- $30 = HEAP32[(31136)>>2]|0;
+ $30 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($30|0),4,5121,1,0,(0|0));
- $31 = HEAP32[(31136)>>2]|0;
+ $31 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($31|0));
} else {
- $24 = HEAP32[7758]|0;
- $25 = HEAP32[(32244)>>2]|0;
+ $24 = HEAP32[7830]|0;
+ $25 = HEAP32[(32532)>>2]|0;
FUNCTION_TABLE_vi[$24 & 31]($25);
}
- $32 = HEAP32[8054]|0;
+ $32 = HEAP32[8126]|0;
_glDrawArrays(1,0,($32|0));
- $33 = HEAP32[7756]|0;
+ $33 = HEAP32[7828]|0;
$34 = ($33|0)==(0);
if ($34) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $35 = HEAP32[8066]|0;
+ $35 = HEAP32[8138]|0;
$36 = ($35|0)>(0);
if ($36) {
- $37 = HEAP32[7763]|0;
+ $37 = HEAP32[7835]|0;
_glBindTexture(3553,($37|0));
- $38 = HEAP32[7756]|0;
+ $38 = HEAP32[7828]|0;
$39 = ($38|0)==(0);
if ($39) {
- $42 = HEAP32[(32296)>>2]|0;
+ $42 = HEAP32[(32584)>>2]|0;
_glBindBuffer(34962,($42|0));
- $43 = HEAP32[(31116)>>2]|0;
+ $43 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($43|0),3,5126,0,0,(0|0));
- $44 = HEAP32[(31116)>>2]|0;
+ $44 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($44|0));
- $45 = HEAP32[(32300)>>2]|0;
+ $45 = HEAP32[(32588)>>2]|0;
_glBindBuffer(34962,($45|0));
- $46 = HEAP32[(31136)>>2]|0;
+ $46 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($46|0),4,5121,1,0,(0|0));
- $47 = HEAP32[(31136)>>2]|0;
+ $47 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($47|0));
} else {
- $40 = HEAP32[7758]|0;
- $41 = HEAP32[(32292)>>2]|0;
+ $40 = HEAP32[7830]|0;
+ $41 = HEAP32[(32580)>>2]|0;
FUNCTION_TABLE_vi[$40 & 31]($41);
}
- $48 = HEAP32[8066]|0;
+ $48 = HEAP32[8138]|0;
_glDrawArrays(4,0,($48|0));
- $49 = HEAP32[7756]|0;
+ $49 = HEAP32[7828]|0;
$50 = ($49|0)==(0);
if ($50) {
_glBindBuffer(34962,0);
}
_glBindTexture(3553,0);
}
- $51 = HEAP32[8078]|0;
+ $51 = HEAP32[8150]|0;
$52 = ($51|0)>(0);
if ($52) {
- $53 = HEAP32[7756]|0;
+ $53 = HEAP32[7828]|0;
$54 = ($53|0)==(0);
if ($54) {
- $57 = HEAP32[(32344)>>2]|0;
+ $57 = HEAP32[(32632)>>2]|0;
_glBindBuffer(34962,($57|0));
- $58 = HEAP32[(31116)>>2]|0;
+ $58 = HEAP32[(31404)>>2]|0;
_glVertexAttribPointer(($58|0),3,5126,0,0,(0|0));
- $59 = HEAP32[(31116)>>2]|0;
+ $59 = HEAP32[(31404)>>2]|0;
_glEnableVertexAttribArray(($59|0));
- $60 = HEAP32[(32348)>>2]|0;
+ $60 = HEAP32[(32636)>>2]|0;
_glBindBuffer(34962,($60|0));
- $61 = HEAP32[(31120)>>2]|0;
+ $61 = HEAP32[(31408)>>2]|0;
_glVertexAttribPointer(($61|0),2,5126,0,0,(0|0));
- $62 = HEAP32[(31120)>>2]|0;
+ $62 = HEAP32[(31408)>>2]|0;
_glEnableVertexAttribArray(($62|0));
- $63 = HEAP32[(32352)>>2]|0;
+ $63 = HEAP32[(32640)>>2]|0;
_glBindBuffer(34962,($63|0));
- $64 = HEAP32[(31136)>>2]|0;
+ $64 = HEAP32[(31424)>>2]|0;
_glVertexAttribPointer(($64|0),4,5121,1,0,(0|0));
- $65 = HEAP32[(31136)>>2]|0;
+ $65 = HEAP32[(31424)>>2]|0;
_glEnableVertexAttribArray(($65|0));
- $66 = HEAP32[(32356)>>2]|0;
+ $66 = HEAP32[(32644)>>2]|0;
_glBindBuffer(34963,($66|0));
} else {
- $55 = HEAP32[7758]|0;
- $56 = HEAP32[(32340)>>2]|0;
+ $55 = HEAP32[7830]|0;
+ $56 = HEAP32[(32628)>>2]|0;
FUNCTION_TABLE_vi[$55 & 31]($56);
}
- $67 = HEAP32[7794]|0;
+ $67 = HEAP32[7866]|0;
$68 = ($67|0)>(0);
if ($68) {
$$02830 = 0;$$031 = 0;
while(1) {
- $71 = HEAP32[7793]|0;
+ $71 = HEAP32[7865]|0;
$72 = (($71) + (($$031*144)|0)|0);
$73 = HEAP32[$72>>2]|0;
$74 = (($73|0) / 4)&-1;
@@ -16597,14 +20782,14 @@ function _DrawDefaultBuffers() {
$78 = $$02830 << 1;
$79 = $78;
_glDrawElements(4,($75|0),5123,($79|0));
- $80 = HEAP32[7793]|0;
+ $80 = HEAP32[7865]|0;
$81 = (($80) + (($$031*144)|0)|0);
$82 = HEAP32[$81>>2]|0;
$83 = (($82|0) / 4)&-1;
$84 = ($83*6)|0;
$85 = (($84) + ($$02830))|0;
$86 = (($$031) + 1)|0;
- $87 = HEAP32[7794]|0;
+ $87 = HEAP32[7866]|0;
$88 = ($86|0)<($87|0);
if ($88) {
$$02830 = $85;$$031 = $86;
@@ -16613,7 +20798,7 @@ function _DrawDefaultBuffers() {
}
}
}
- $69 = HEAP32[7756]|0;
+ $69 = HEAP32[7828]|0;
$70 = ($69|0)==(0);
if ($70) {
_glBindBuffer(34962,0);
@@ -16621,10 +20806,10 @@ function _DrawDefaultBuffers() {
}
_glBindTexture(3553,0);
}
- $89 = HEAP32[7756]|0;
+ $89 = HEAP32[7828]|0;
$90 = ($89|0)==(0);
if (!($90)) {
- $91 = HEAP32[7758]|0;
+ $91 = HEAP32[7830]|0;
FUNCTION_TABLE_vi[$91 & 31](0);
}
_glUseProgram(0);
@@ -16636,22 +20821,22 @@ function _DrawDefaultBuffers() {
break;
}
}
- HEAP32[7794] = 1;
- $5 = HEAP32[7763]|0;
- $6 = HEAP32[7793]|0;
+ HEAP32[7866] = 1;
+ $5 = HEAP32[7835]|0;
+ $6 = HEAP32[7865]|0;
$7 = ((($6)) + 8|0);
HEAP32[$7>>2] = $5;
HEAP32[$6>>2] = 0;
- HEAP32[8054] = 0;
- HEAP32[(32224)>>2] = 0;
- HEAP32[8066] = 0;
- HEAP32[(32272)>>2] = 0;
- HEAP32[8078] = 0;
- HEAP32[(32316)>>2] = 0;
- HEAP32[(32320)>>2] = 0;
- HEAPF32[743] = -1.0;
- dest=30892; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- dest=30956; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[8126] = 0;
+ HEAP32[(32512)>>2] = 0;
+ HEAP32[8138] = 0;
+ HEAP32[(32560)>>2] = 0;
+ HEAP32[8150] = 0;
+ HEAP32[(32604)>>2] = 0;
+ HEAP32[(32608)>>2] = 0;
+ HEAPF32[746] = -1.0;
+ dest=31180; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31244; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
STACKTOP = sp;return;
}
function _SetStereoView($0,$1,$2) {
@@ -16666,17 +20851,17 @@ function _SetStereoView($0,$1,$2) {
$3 = sp;
$4 = sp + 128|0;
dest=$3; src=$1; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
- $5 = HEAP32[8052]|0;
+ $5 = HEAP32[8124]|0;
$6 = Math_imul($5, $0)|0;
$7 = (($6|0) / 2)&-1;
$8 = (($5|0) / 2)&-1;
- $9 = HEAP32[8053]|0;
+ $9 = HEAP32[8125]|0;
_rlViewport($7,0,$8,$9);
- $10 = (32796 + ($0<<6)|0);
+ $10 = (33084 + ($0<<6)|0);
dest=$$byval_copy; src=$2; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$10; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy3);
- $11 = (32668 + ($0<<6)|0);
+ $11 = (32956 + ($0<<6)|0);
dest=$3; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_SetMatrixModelview($$byval_copy3);
@@ -16688,14 +20873,14 @@ function _SetMatrixModelview($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=30956; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31244; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _SetMatrixProjection($0) {
$0 = $0|0;
var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
sp = STACKTOP;
- dest=30892; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ dest=31180; src=$0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
return;
}
function _rlPushMatrix() {
@@ -16703,43 +20888,43 @@ function _rlPushMatrix() {
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$vararg_buffer = sp;
- $0 = HEAP32[8231]|0;
+ $0 = HEAP32[8303]|0;
$1 = ($0|0)==(15);
if ($1) {
HEAP32[$vararg_buffer>>2] = 16;
- _TraceLog(1,8195,$vararg_buffer);
+ _TraceLog(1,8087,$vararg_buffer);
}
- $2 = HEAP32[8231]|0;
- $3 = (31184 + ($2<<6)|0);
- $4 = HEAP32[7722]|0;
+ $2 = HEAP32[8303]|0;
+ $3 = (31472 + ($2<<6)|0);
+ $4 = HEAP32[7794]|0;
dest=$3; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_rlLoadIdentity();
- $5 = HEAP32[8231]|0;
+ $5 = HEAP32[8303]|0;
$6 = (($5) + 1)|0;
- HEAP32[8231] = $6;
- $7 = HEAP32[7755]|0;
+ HEAP32[8303] = $6;
+ $7 = HEAP32[7827]|0;
$8 = ($7|0)==(5888);
if (!($8)) {
STACKTOP = sp;return;
}
- HEAP32[8232] = 1;
+ HEAP32[8304] = 1;
STACKTOP = sp;return;
}
function _rlPopMatrix() {
var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8231]|0;
+ $0 = HEAP32[8303]|0;
$1 = ($0|0)>(0);
if (!($1)) {
return;
}
- $2 = HEAP32[8231]|0;
+ $2 = HEAP32[8303]|0;
$3 = (($2) + -1)|0;
- $4 = (31184 + ($3<<6)|0);
- $5 = HEAP32[7722]|0;
+ $4 = (31472 + ($3<<6)|0);
+ $5 = HEAP32[7794]|0;
_memmove(($5|0),($4|0),64)|0;
$6 = (($2) + -1)|0;
- HEAP32[8231] = $6;
+ HEAP32[8303] = $6;
return;
}
function _GetRandomValue($0,$1) {
@@ -16764,28 +20949,28 @@ function _SetConfigFlags($0) {
$0 = $0|0;
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
- HEAP8[33512] = $0;
+ HEAP8[35952] = $0;
$1 = $0 & 1;
$2 = ($1<<24>>24)==(0);
if (!($2)) {
- HEAP32[7680] = 1;
+ HEAP32[7752] = 1;
}
- $3 = HEAP8[33512]|0;
+ $3 = HEAP8[35952]|0;
$4 = $3 & 2;
$5 = ($4<<24>>24)==(0);
if ($5) {
return;
}
- HEAP32[7717] = 1;
+ HEAP32[7789] = 1;
return;
}
function _IsKeyPressed($0) {
$0 = $0|0;
var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = (33519 + ($0)|0);
+ $1 = (35959 + ($0)|0);
$2 = HEAP8[$1>>0]|0;
- $3 = (34031 + ($0)|0);
+ $3 = (36471 + ($0)|0);
$4 = HEAP8[$3>>0]|0;
$5 = ($2<<24>>24)!=($4<<24>>24);
$6 = ($2<<24>>24)==(1);
@@ -16806,7 +20991,7 @@ function _rlTranslatef($0,$1,$2) {
$4 = sp;
_MatrixTranslate($3,$0,$1,$2);
_MatrixTranspose($3);
- $5 = HEAP32[7722]|0;
+ $5 = HEAP32[7794]|0;
dest=$$byval_copy; src=$5; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy1; src=$3; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($4,$$byval_copy,$$byval_copy1);
@@ -16839,7 +21024,7 @@ function _rlRotatef($0,$1,$2,$3) {
_MatrixRotate($6,$$byval_copy2,$10);
dest=$4; src=$6; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixTranspose($4);
- $11 = HEAP32[7722]|0;
+ $11 = HEAP32[7794]|0;
dest=$$byval_copy1; src=$11; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
dest=$$byval_copy2; src=$4; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_MatrixMultiply($7,$$byval_copy1,$$byval_copy2);
@@ -16850,7 +21035,7 @@ function _rlBegin($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- HEAP32[7795] = $0;
+ HEAP32[7867] = $0;
return;
}
function _rlEnd() {
@@ -16866,21 +21051,21 @@ function _rlEnd() {
sp = STACKTOP;
STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
$$byval_copy = sp;
- $0 = HEAP32[8232]|0;
+ $0 = HEAP32[8304]|0;
$1 = ($0|0)==(0);
if (!($1)) {
- $2 = HEAP32[8233]|0;
+ $2 = HEAP32[8305]|0;
$3 = ($2|0)>(0);
if ($3) {
$$03956 = 0;
while(1) {
- $6 = HEAP32[7792]|0;
+ $6 = HEAP32[7864]|0;
$7 = (($6) + (($$03956*12)|0)|0);
- $8 = HEAP32[7722]|0;
+ $8 = HEAP32[7794]|0;
dest=$$byval_copy; src=$8; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
_VectorTransform($7,$$byval_copy);
$9 = (($$03956) + 1)|0;
- $5 = HEAP32[8233]|0;
+ $5 = HEAP32[8305]|0;
$10 = ($9|0)<($5|0);
if ($10) {
$$03956 = $9;
@@ -16888,12 +21073,12 @@ function _rlEnd() {
break;
}
}
- HEAP32[8232] = 0;
+ HEAP32[8304] = 0;
$4 = ($5|0)>(0);
if ($4) {
$$04154 = 0;
while(1) {
- $11 = HEAP32[7792]|0;
+ $11 = HEAP32[7864]|0;
$12 = (($11) + (($$04154*12)|0)|0);
$13 = +HEAPF32[$12>>2];
$14 = (((($11) + (($$04154*12)|0)|0)) + 4|0);
@@ -16902,7 +21087,7 @@ function _rlEnd() {
$17 = +HEAPF32[$16>>2];
_rlVertex3f($13,$15,$17);
$18 = (($$04154) + 1)|0;
- $19 = HEAP32[8233]|0;
+ $19 = HEAP32[8305]|0;
$20 = ($18|0)<($19|0);
if ($20) {
$$04154 = $18;
@@ -16912,20 +21097,20 @@ function _rlEnd() {
}
}
} else {
- HEAP32[8232] = 0;
+ HEAP32[8304] = 0;
}
- HEAP32[8233] = 0;
+ HEAP32[8305] = 0;
}
- $21 = HEAP32[7795]|0;
+ $21 = HEAP32[7867]|0;
switch ($21|0) {
case 1: {
- $22 = HEAP32[8054]|0;
- $23 = HEAP32[(32224)>>2]|0;
+ $22 = HEAP32[8126]|0;
+ $23 = HEAP32[(32512)>>2]|0;
$24 = ($22|0)==($23|0);
if ($24) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$25 = (($22) - ($23))|0;
@@ -16933,22 +21118,22 @@ function _rlEnd() {
if ($26) {
$$04347 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $27 = HEAP32[(32236)>>2]|0;
- $28 = HEAP32[(32224)>>2]|0;
+ $27 = HEAP32[(32524)>>2]|0;
+ $28 = HEAP32[(32512)>>2]|0;
$29 = $28 << 2;
$30 = (($29) + -4)|0;
$31 = (($27) + ($30)|0);
$32 = HEAP8[$31>>0]|0;
$33 = (($27) + ($29)|0);
HEAP8[$33>>0] = $32;
- $34 = HEAP32[(32236)>>2]|0;
- $35 = HEAP32[(32224)>>2]|0;
+ $34 = HEAP32[(32524)>>2]|0;
+ $35 = HEAP32[(32512)>>2]|0;
$36 = $35 << 2;
$37 = (($36) + -3)|0;
$38 = (($34) + ($37)|0);
@@ -16956,8 +21141,8 @@ function _rlEnd() {
$40 = $36 | 1;
$41 = (($34) + ($40)|0);
HEAP8[$41>>0] = $39;
- $42 = HEAP32[(32236)>>2]|0;
- $43 = HEAP32[(32224)>>2]|0;
+ $42 = HEAP32[(32524)>>2]|0;
+ $43 = HEAP32[(32512)>>2]|0;
$44 = $43 << 2;
$45 = (($44) + -2)|0;
$46 = (($42) + ($45)|0);
@@ -16965,8 +21150,8 @@ function _rlEnd() {
$48 = $44 | 2;
$49 = (($42) + ($48)|0);
HEAP8[$49>>0] = $47;
- $50 = HEAP32[(32236)>>2]|0;
- $51 = HEAP32[(32224)>>2]|0;
+ $50 = HEAP32[(32524)>>2]|0;
+ $51 = HEAP32[(32512)>>2]|0;
$52 = $51 << 2;
$53 = (($52) + -1)|0;
$54 = (($50) + ($53)|0);
@@ -16974,9 +21159,9 @@ function _rlEnd() {
$56 = $52 | 3;
$57 = (($50) + ($56)|0);
HEAP8[$57>>0] = $55;
- $58 = HEAP32[(32224)>>2]|0;
+ $58 = HEAP32[(32512)>>2]|0;
$59 = (($58) + 1)|0;
- HEAP32[(32224)>>2] = $59;
+ HEAP32[(32512)>>2] = $59;
$60 = (($$04347) + 1)|0;
$exitcond = ($60|0)==($25|0);
if ($exitcond) {
@@ -16985,20 +21170,20 @@ function _rlEnd() {
$$04347 = $60;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 4: {
- $61 = HEAP32[8066]|0;
- $62 = HEAP32[(32272)>>2]|0;
+ $61 = HEAP32[8138]|0;
+ $62 = HEAP32[(32560)>>2]|0;
$63 = ($61|0)==($62|0);
if ($63) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
$64 = (($61) - ($62))|0;
@@ -17006,22 +21191,22 @@ function _rlEnd() {
if ($65) {
$$04248 = 0;
} else {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
while(1) {
- $66 = HEAP32[(32284)>>2]|0;
- $67 = HEAP32[(32272)>>2]|0;
+ $66 = HEAP32[(32572)>>2]|0;
+ $67 = HEAP32[(32560)>>2]|0;
$68 = $67 << 2;
$69 = (($68) + -4)|0;
$70 = (($66) + ($69)|0);
$71 = HEAP8[$70>>0]|0;
$72 = (($66) + ($68)|0);
HEAP8[$72>>0] = $71;
- $73 = HEAP32[(32284)>>2]|0;
- $74 = HEAP32[(32272)>>2]|0;
+ $73 = HEAP32[(32572)>>2]|0;
+ $74 = HEAP32[(32560)>>2]|0;
$75 = $74 << 2;
$76 = (($75) + -3)|0;
$77 = (($73) + ($76)|0);
@@ -17029,8 +21214,8 @@ function _rlEnd() {
$79 = $75 | 1;
$80 = (($73) + ($79)|0);
HEAP8[$80>>0] = $78;
- $81 = HEAP32[(32284)>>2]|0;
- $82 = HEAP32[(32272)>>2]|0;
+ $81 = HEAP32[(32572)>>2]|0;
+ $82 = HEAP32[(32560)>>2]|0;
$83 = $82 << 2;
$84 = (($83) + -2)|0;
$85 = (($81) + ($84)|0);
@@ -17038,8 +21223,8 @@ function _rlEnd() {
$87 = $83 | 2;
$88 = (($81) + ($87)|0);
HEAP8[$88>>0] = $86;
- $89 = HEAP32[(32284)>>2]|0;
- $90 = HEAP32[(32272)>>2]|0;
+ $89 = HEAP32[(32572)>>2]|0;
+ $90 = HEAP32[(32560)>>2]|0;
$91 = $90 << 2;
$92 = (($91) + -1)|0;
$93 = (($89) + ($92)|0);
@@ -17047,9 +21232,9 @@ function _rlEnd() {
$95 = $91 | 3;
$96 = (($89) + ($95)|0);
HEAP8[$96>>0] = $94;
- $97 = HEAP32[(32272)>>2]|0;
+ $97 = HEAP32[(32560)>>2]|0;
$98 = (($97) + 1)|0;
- HEAP32[(32272)>>2] = $98;
+ HEAP32[(32560)>>2] = $98;
$99 = (($$04248) + 1)|0;
$exitcond60 = ($99|0)==($64|0);
if ($exitcond60) {
@@ -17058,15 +21243,15 @@ function _rlEnd() {
$$04248 = $99;
}
}
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
case 7: {
- $100 = HEAP32[8078]|0;
- $101 = HEAP32[(32320)>>2]|0;
+ $100 = HEAP32[8150]|0;
+ $101 = HEAP32[(32608)>>2]|0;
$102 = ($100|0)==($101|0);
if (!($102)) {
$103 = (($100) - ($101))|0;
@@ -17074,16 +21259,16 @@ function _rlEnd() {
if ($104) {
$$04052 = 0;
while(1) {
- $105 = HEAP32[(32332)>>2]|0;
- $106 = HEAP32[(32320)>>2]|0;
+ $105 = HEAP32[(32620)>>2]|0;
+ $106 = HEAP32[(32608)>>2]|0;
$107 = $106 << 2;
$108 = (($107) + -4)|0;
$109 = (($105) + ($108)|0);
$110 = HEAP8[$109>>0]|0;
$111 = (($105) + ($107)|0);
HEAP8[$111>>0] = $110;
- $112 = HEAP32[(32332)>>2]|0;
- $113 = HEAP32[(32320)>>2]|0;
+ $112 = HEAP32[(32620)>>2]|0;
+ $113 = HEAP32[(32608)>>2]|0;
$114 = $113 << 2;
$115 = (($114) + -3)|0;
$116 = (($112) + ($115)|0);
@@ -17091,8 +21276,8 @@ function _rlEnd() {
$118 = $114 | 1;
$119 = (($112) + ($118)|0);
HEAP8[$119>>0] = $117;
- $120 = HEAP32[(32332)>>2]|0;
- $121 = HEAP32[(32320)>>2]|0;
+ $120 = HEAP32[(32620)>>2]|0;
+ $121 = HEAP32[(32608)>>2]|0;
$122 = $121 << 2;
$123 = (($122) + -2)|0;
$124 = (($120) + ($123)|0);
@@ -17100,8 +21285,8 @@ function _rlEnd() {
$126 = $122 | 2;
$127 = (($120) + ($126)|0);
HEAP8[$127>>0] = $125;
- $128 = HEAP32[(32332)>>2]|0;
- $129 = HEAP32[(32320)>>2]|0;
+ $128 = HEAP32[(32620)>>2]|0;
+ $129 = HEAP32[(32608)>>2]|0;
$130 = $129 << 2;
$131 = (($130) + -1)|0;
$132 = (($128) + ($131)|0);
@@ -17109,9 +21294,9 @@ function _rlEnd() {
$134 = $130 | 3;
$135 = (($128) + ($134)|0);
HEAP8[$135>>0] = $133;
- $136 = HEAP32[(32320)>>2]|0;
+ $136 = HEAP32[(32608)>>2]|0;
$137 = (($136) + 1)|0;
- HEAP32[(32320)>>2] = $137;
+ HEAP32[(32608)>>2] = $137;
$138 = (($$04052) + 1)|0;
$exitcond63 = ($138|0)==($103|0);
if ($exitcond63) {
@@ -17122,17 +21307,17 @@ function _rlEnd() {
}
}
}
- $139 = HEAP32[8078]|0;
- $140 = HEAP32[(32316)>>2]|0;
+ $139 = HEAP32[8150]|0;
+ $140 = HEAP32[(32604)>>2]|0;
$141 = ($139|0)>($140|0);
if (!($141)) {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
- $142 = HEAP32[(32328)>>2]|0;
- $$promoted = HEAP32[(32316)>>2]|0;
+ $142 = HEAP32[(32616)>>2]|0;
+ $$promoted = HEAP32[(32604)>>2]|0;
$143 = $$promoted << 1;
$scevgep = (($142) + ($143<<2)|0);
$144 = (($139) - ($140))|0;
@@ -17140,17 +21325,17 @@ function _rlEnd() {
_memset(($scevgep|0),0,($145|0))|0;
$146 = (($139) + ($$promoted))|0;
$147 = (($146) - ($140))|0;
- HEAP32[(32316)>>2] = $147;
- $148 = +HEAPF32[743];
+ HEAP32[(32604)>>2] = $147;
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
break;
}
default: {
- $148 = +HEAPF32[743];
+ $148 = +HEAPF32[746];
$149 = $148 + 4.9999998736893758E-5;
- HEAPF32[743] = $149;
+ HEAPF32[746] = $149;
STACKTOP = sp;return;
}
}
@@ -17167,11 +21352,11 @@ function _rlVertex3f($0,$1,$2) {
$vararg_buffer3 = sp + 16|0;
$vararg_buffer1 = sp + 8|0;
$vararg_buffer = sp;
- $3 = HEAP32[8232]|0;
+ $3 = HEAP32[8304]|0;
$4 = ($3|0)==(0);
if (!($4)) {
- $5 = HEAP32[7792]|0;
- $6 = HEAP32[8233]|0;
+ $5 = HEAP32[7864]|0;
+ $6 = HEAP32[8305]|0;
$7 = (($5) + (($6*12)|0)|0);
HEAPF32[$7>>2] = $0;
$8 = (((($5) + (($6*12)|0)|0)) + 4|0);
@@ -17179,16 +21364,16 @@ function _rlVertex3f($0,$1,$2) {
$9 = (((($5) + (($6*12)|0)|0)) + 8|0);
HEAPF32[$9>>2] = $2;
$10 = (($6) + 1)|0;
- HEAP32[8233] = $10;
+ HEAP32[8305] = $10;
STACKTOP = sp;return;
}
- $11 = HEAP32[7795]|0;
+ $11 = HEAP32[7867]|0;
switch ($11|0) {
case 1: {
- $12 = HEAP32[8054]|0;
+ $12 = HEAP32[8126]|0;
$13 = ($12|0)<(2048);
if ($13) {
- $14 = HEAP32[(32228)>>2]|0;
+ $14 = HEAP32[(32516)>>2]|0;
$15 = ($12*3)|0;
$16 = (($14) + ($15<<2)|0);
HEAPF32[$16>>2] = $0;
@@ -17199,19 +21384,19 @@ function _rlVertex3f($0,$1,$2) {
$20 = (($14) + ($19<<2)|0);
HEAPF32[$20>>2] = $2;
$21 = (($12) + 1)|0;
- HEAP32[8054] = $21;
+ HEAP32[8126] = $21;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8233,$vararg_buffer);
+ _TraceLog(1,8125,$vararg_buffer);
STACKTOP = sp;return;
}
break;
}
case 4: {
- $22 = HEAP32[8066]|0;
+ $22 = HEAP32[8138]|0;
$23 = ($22|0)<(6144);
if ($23) {
- $24 = HEAP32[(32276)>>2]|0;
+ $24 = HEAP32[(32564)>>2]|0;
$25 = ($22*3)|0;
$26 = (($24) + ($25<<2)|0);
HEAPF32[$26>>2] = $0;
@@ -17222,19 +21407,19 @@ function _rlVertex3f($0,$1,$2) {
$30 = (($24) + ($29<<2)|0);
HEAPF32[$30>>2] = $2;
$31 = (($22) + 1)|0;
- HEAP32[8066] = $31;
+ HEAP32[8138] = $31;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8258,$vararg_buffer1);
+ _TraceLog(1,8150,$vararg_buffer1);
STACKTOP = sp;return;
}
break;
}
case 7: {
- $32 = HEAP32[8078]|0;
+ $32 = HEAP32[8150]|0;
$33 = ($32|0)<(4096);
if ($33) {
- $34 = HEAP32[(32324)>>2]|0;
+ $34 = HEAP32[(32612)>>2]|0;
$35 = ($32*3)|0;
$36 = (($34) + ($35<<2)|0);
HEAPF32[$36>>2] = $0;
@@ -17245,9 +21430,9 @@ function _rlVertex3f($0,$1,$2) {
$40 = (($34) + ($39<<2)|0);
HEAPF32[$40>>2] = $2;
$41 = (($32) + 1)|0;
- HEAP32[8078] = $41;
- $42 = HEAP32[7793]|0;
- $43 = HEAP32[7794]|0;
+ HEAP32[8150] = $41;
+ $42 = HEAP32[7865]|0;
+ $43 = HEAP32[7866]|0;
$44 = (($43) + -1)|0;
$45 = (($42) + (($44*144)|0)|0);
$46 = HEAP32[$45>>2]|0;
@@ -17255,7 +21440,7 @@ function _rlVertex3f($0,$1,$2) {
HEAP32[$45>>2] = $47;
STACKTOP = sp;return;
} else {
- _TraceLog(1,8287,$vararg_buffer3);
+ _TraceLog(1,8179,$vararg_buffer3);
STACKTOP = sp;return;
}
break;
@@ -17270,7 +21455,7 @@ function _rlVertex2f($0,$1) {
$1 = +$1;
var $2 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = +HEAPF32[743];
+ $2 = +HEAPF32[746];
_rlVertex3f($0,$1,$2);
return;
}
@@ -17279,13 +21464,13 @@ function _rlTexCoord2f($0,$1) {
$1 = +$1;
var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[7795]|0;
+ $2 = HEAP32[7867]|0;
$3 = ($2|0)==(7);
if (!($3)) {
return;
}
- $4 = HEAP32[(32328)>>2]|0;
- $5 = HEAP32[(32316)>>2]|0;
+ $4 = HEAP32[(32616)>>2]|0;
+ $5 = HEAP32[(32604)>>2]|0;
$6 = $5 << 1;
$7 = (($4) + ($6<<2)|0);
HEAPF32[$7>>2] = $0;
@@ -17293,7 +21478,7 @@ function _rlTexCoord2f($0,$1) {
$9 = (($4) + ($8<<2)|0);
HEAPF32[$9>>2] = $1;
$10 = (($5) + 1)|0;
- HEAP32[(32316)>>2] = $10;
+ HEAP32[(32604)>>2] = $10;
return;
}
function _rlNormal3f($0,$1,$2) {
@@ -17312,18 +21497,18 @@ function _rlColor4ub($0,$1,$2,$3) {
var $$sink37 = 0, $$sink38 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $4 = 0, $5 = 0;
var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $4 = HEAP32[7795]|0;
+ $4 = HEAP32[7867]|0;
switch ($4|0) {
case 1: {
- $$sink37 = (32224);$$sink38 = (32236);
+ $$sink37 = (32512);$$sink38 = (32524);
break;
}
case 4: {
- $$sink37 = (32272);$$sink38 = (32284);
+ $$sink37 = (32560);$$sink38 = (32572);
break;
}
case 7: {
- $$sink37 = (32320);$$sink38 = (32332);
+ $$sink37 = (32608);$$sink38 = (32620);
break;
}
default: {
@@ -17362,8 +21547,8 @@ function _rlEnableTexture($0) {
$0 = $0|0;
var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $1 = HEAP32[7793]|0;
- $2 = HEAP32[7794]|0;
+ $1 = HEAP32[7865]|0;
+ $2 = HEAP32[7866]|0;
$3 = (($2) + -1)|0;
$4 = (((($1) + (($3*144)|0)|0)) + 8|0);
$5 = HEAP32[$4>>2]|0;
@@ -17376,9 +21561,9 @@ function _rlEnableTexture($0) {
$9 = ($8|0)>(0);
if ($9) {
$10 = (($2) + 1)|0;
- HEAP32[7794] = $10;
+ HEAP32[7866] = $10;
}
- $11 = HEAP32[7794]|0;
+ $11 = HEAP32[7866]|0;
$12 = (($11) + -1)|0;
$13 = (((($1) + (($12*144)|0)|0)) + 8|0);
HEAP32[$13>>2] = $0;
@@ -17389,7 +21574,7 @@ function _rlEnableTexture($0) {
function _rlDisableTexture() {
var $0 = 0, $1 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = HEAP32[8078]|0;
+ $0 = HEAP32[8150]|0;
$1 = ($0|0)>(4095);
if (!($1)) {
return;
@@ -17427,7 +21612,7 @@ function _GetDefaultFont($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
- ;HEAP32[$0>>2]=HEAP32[30740>>2]|0;HEAP32[$0+4>>2]=HEAP32[30740+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[30740+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[30740+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[30740+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[30740+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[30740+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[30740+28>>2]|0;
+ ;HEAP32[$0>>2]=HEAP32[31028>>2]|0;HEAP32[$0+4>>2]=HEAP32[31028+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[31028+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[31028+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[31028+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[31028+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[31028+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[31028+28>>2]|0;
return;
}
function _MeasureTextEx($0,$1,$2,$3,$4) {
@@ -17970,7 +22155,7 @@ function _emscripten_GetProcAddress($0) {
$10 = HEAP32[$2>>2]|0;
(_strcpy($9,$10)|0);
$11 = HEAP32[$3>>2]|0;
- $12 = (_strstr($11,8312)|0);
+ $12 = (_strstr($11,8204)|0);
HEAP32[$4>>2] = $12;
$13 = HEAP32[$4>>2]|0;
$14 = ($13|0)!=(0|0);
@@ -17979,7 +22164,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$15>>0] = 0;
}
$16 = HEAP32[$3>>2]|0;
- $17 = (_strstr($16,8316)|0);
+ $17 = (_strstr($16,8208)|0);
HEAP32[$4>>2] = $17;
$18 = HEAP32[$4>>2]|0;
$19 = ($18|0)!=(0|0);
@@ -17988,7 +22173,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$20>>0] = 0;
}
$21 = HEAP32[$3>>2]|0;
- $22 = (_strstr($21,8320)|0);
+ $22 = (_strstr($21,8212)|0);
HEAP32[$4>>2] = $22;
$23 = HEAP32[$4>>2]|0;
$24 = ($23|0)!=(0|0);
@@ -17997,7 +22182,7 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$25>>0] = 0;
}
$26 = HEAP32[$3>>2]|0;
- $27 = (_strstr($26,8324)|0);
+ $27 = (_strstr($26,8216)|0);
HEAP32[$4>>2] = $27;
$28 = HEAP32[$4>>2]|0;
$29 = ($28|0)!=(0|0);
@@ -18006,1210 +22191,1210 @@ function _emscripten_GetProcAddress($0) {
HEAP8[$30>>0] = 0;
}
$31 = HEAP32[$3>>2]|0;
- $32 = (_strcmp($31,8330)|0);
+ $32 = (_strcmp($31,8222)|0);
$33 = ($32|0)!=(0);
do {
if ($33) {
$34 = HEAP32[$3>>2]|0;
- $35 = (_strcmp($34,8368)|0);
+ $35 = (_strcmp($34,8260)|0);
$36 = ($35|0)!=(0);
if (!($36)) {
- HEAP32[$3>>2] = 8387;
+ HEAP32[$3>>2] = 8279;
break;
}
$37 = HEAP32[$3>>2]|0;
- $38 = (_strcmp($37,8400)|0);
+ $38 = (_strcmp($37,8292)|0);
$39 = ($38|0)!=(0);
if (!($39)) {
- HEAP32[$3>>2] = 8421;
+ HEAP32[$3>>2] = 8313;
break;
}
$40 = HEAP32[$3>>2]|0;
- $41 = (_strcmp($40,8436)|0);
+ $41 = (_strcmp($40,8328)|0);
$42 = ($41|0)!=(0);
if (!($42)) {
- HEAP32[$3>>2] = 8451;
+ HEAP32[$3>>2] = 8343;
break;
}
$43 = HEAP32[$3>>2]|0;
- $44 = (_strcmp($43,8466)|0);
+ $44 = (_strcmp($43,8358)|0);
$45 = ($44|0)!=(0);
if (!($45)) {
- HEAP32[$3>>2] = 8481;
+ HEAP32[$3>>2] = 8373;
}
} else {
- HEAP32[$3>>2] = 8352;
+ HEAP32[$3>>2] = 8244;
}
} while(0);
$46 = HEAP32[$3>>2]|0;
- $47 = (_strcmp($46,8496)|0);
+ $47 = (_strcmp($46,8388)|0);
$48 = ($47|0)!=(0);
do {
if ($48) {
$49 = HEAP32[$3>>2]|0;
- $50 = (_strcmp($49,8510)|0);
+ $50 = (_strcmp($49,8402)|0);
$51 = ($50|0)!=(0);
if (!($51)) {
HEAP32[$1>>2] = 3;
break;
}
$52 = HEAP32[$3>>2]|0;
- $53 = (_strcmp($52,8522)|0);
+ $53 = (_strcmp($52,8414)|0);
$54 = ($53|0)!=(0);
if (!($54)) {
HEAP32[$1>>2] = 6;
break;
}
$55 = HEAP32[$3>>2]|0;
- $56 = (_strcmp($55,8536)|0);
+ $56 = (_strcmp($55,8428)|0);
$57 = ($56|0)!=(0);
if (!($57)) {
HEAP32[$1>>2] = 7;
break;
}
$58 = HEAP32[$3>>2]|0;
- $59 = (_strcmp($58,8548)|0);
+ $59 = (_strcmp($58,8440)|0);
$60 = ($59|0)!=(0);
if (!($60)) {
HEAP32[$1>>2] = 8;
break;
}
$61 = HEAP32[$3>>2]|0;
- $62 = (_strcmp($61,8562)|0);
+ $62 = (_strcmp($61,8454)|0);
$63 = ($62|0)!=(0);
if (!($63)) {
HEAP32[$1>>2] = 9;
break;
}
$64 = HEAP32[$3>>2]|0;
- $65 = (_strcmp($64,8576)|0);
+ $65 = (_strcmp($64,8468)|0);
$66 = ($65|0)!=(0);
if (!($66)) {
HEAP32[$1>>2] = 10;
break;
}
$67 = HEAP32[$3>>2]|0;
- $68 = (_strcmp($67,8593)|0);
+ $68 = (_strcmp($67,8485)|0);
$69 = ($68|0)!=(0);
if (!($69)) {
HEAP32[$1>>2] = 1;
break;
}
$70 = HEAP32[$3>>2]|0;
- $71 = (_strcmp($70,8616)|0);
+ $71 = (_strcmp($70,8508)|0);
$72 = ($71|0)!=(0);
if (!($72)) {
HEAP32[$1>>2] = 1;
break;
}
$73 = HEAP32[$3>>2]|0;
- $74 = (_strcmp($73,8642)|0);
+ $74 = (_strcmp($73,8534)|0);
$75 = ($74|0)!=(0);
if (!($75)) {
HEAP32[$1>>2] = 2;
break;
}
$76 = HEAP32[$3>>2]|0;
- $77 = (_strcmp($76,8655)|0);
+ $77 = (_strcmp($76,8547)|0);
$78 = ($77|0)!=(0);
if (!($78)) {
HEAP32[$1>>2] = 3;
break;
}
$79 = HEAP32[$3>>2]|0;
- $80 = (_strcmp($79,8671)|0);
+ $80 = (_strcmp($79,8563)|0);
$81 = ($80|0)!=(0);
if (!($81)) {
HEAP32[$1>>2] = 1;
break;
}
$82 = HEAP32[$3>>2]|0;
- $83 = (_strcmp($82,8684)|0);
+ $83 = (_strcmp($82,8576)|0);
$84 = ($83|0)!=(0);
if (!($84)) {
HEAP32[$1>>2] = 11;
break;
}
$85 = HEAP32[$3>>2]|0;
- $86 = (_strcmp($85,8698)|0);
+ $86 = (_strcmp($85,8590)|0);
$87 = ($86|0)!=(0);
if (!($87)) {
HEAP32[$1>>2] = 2;
break;
}
$88 = HEAP32[$3>>2]|0;
- $89 = (_strcmp($88,8718)|0);
+ $89 = (_strcmp($88,8610)|0);
$90 = ($89|0)!=(0);
if (!($90)) {
HEAP32[$1>>2] = 3;
break;
}
$91 = HEAP32[$3>>2]|0;
- $92 = (_strcmp($91,8738)|0);
+ $92 = (_strcmp($91,8630)|0);
$93 = ($92|0)!=(0);
if (!($93)) {
HEAP32[$1>>2] = 4;
break;
}
$94 = HEAP32[$3>>2]|0;
- $95 = (_strcmp($94,8755)|0);
+ $95 = (_strcmp($94,8647)|0);
$96 = ($95|0)!=(0);
if (!($96)) {
HEAP32[$1>>2] = 5;
break;
}
$97 = HEAP32[$3>>2]|0;
- $98 = (_strcmp($97,8772)|0);
+ $98 = (_strcmp($97,8664)|0);
$99 = ($98|0)!=(0);
if (!($99)) {
HEAP32[$1>>2] = 4;
break;
}
$100 = HEAP32[$3>>2]|0;
- $101 = (_strcmp($100,8784)|0);
+ $101 = (_strcmp($100,8676)|0);
$102 = ($101|0)!=(0);
if (!($102)) {
HEAP32[$1>>2] = 12;
break;
}
$103 = HEAP32[$3>>2]|0;
- $104 = (_strcmp($103,8797)|0);
+ $104 = (_strcmp($103,8689)|0);
$105 = ($104|0)!=(0);
if (!($105)) {
HEAP32[$1>>2] = 13;
break;
}
$106 = HEAP32[$3>>2]|0;
- $107 = (_strcmp($106,8813)|0);
+ $107 = (_strcmp($106,8705)|0);
$108 = ($107|0)!=(0);
if (!($108)) {
HEAP32[$1>>2] = 6;
break;
}
$109 = HEAP32[$3>>2]|0;
- $110 = (_strcmp($109,8836)|0);
+ $110 = (_strcmp($109,8728)|0);
$111 = ($110|0)!=(0);
if (!($111)) {
HEAP32[$1>>2] = 2;
break;
}
$112 = HEAP32[$3>>2]|0;
- $113 = (_strcmp($112,8849)|0);
+ $113 = (_strcmp($112,8741)|0);
$114 = ($113|0)!=(0);
if (!($114)) {
HEAP32[$1>>2] = 3;
break;
}
$115 = HEAP32[$3>>2]|0;
- $116 = (_strcmp($115,8865)|0);
+ $116 = (_strcmp($115,8757)|0);
$117 = ($116|0)!=(0);
if (!($117)) {
HEAP32[$1>>2] = 5;
break;
}
$118 = HEAP32[$3>>2]|0;
- $119 = (_strcmp($118,8876)|0);
+ $119 = (_strcmp($118,8768)|0);
$120 = ($119|0)!=(0);
if (!($120)) {
HEAP32[$1>>2] = 14;
break;
}
$121 = HEAP32[$3>>2]|0;
- $122 = (_strcmp($121,8895)|0);
+ $122 = (_strcmp($121,8787)|0);
$123 = ($122|0)!=(0);
if (!($123)) {
HEAP32[$1>>2] = 15;
break;
}
$124 = HEAP32[$3>>2]|0;
- $125 = (_strcmp($124,8917)|0);
+ $125 = (_strcmp($124,8809)|0);
$126 = ($125|0)!=(0);
if (!($126)) {
HEAP32[$1>>2] = 16;
break;
}
$127 = HEAP32[$3>>2]|0;
- $128 = (_strcmp($127,8936)|0);
+ $128 = (_strcmp($127,8828)|0);
$129 = ($128|0)!=(0);
if (!($129)) {
HEAP32[$1>>2] = 7;
break;
}
$130 = HEAP32[$3>>2]|0;
- $131 = (_strcmp($130,8965)|0);
+ $131 = (_strcmp($130,8857)|0);
$132 = ($131|0)!=(0);
if (!($132)) {
HEAP32[$1>>2] = 6;
break;
}
$133 = HEAP32[$3>>2]|0;
- $134 = (_strcmp($133,8982)|0);
+ $134 = (_strcmp($133,8874)|0);
$135 = ($134|0)!=(0);
if (!($135)) {
HEAP32[$1>>2] = 8;
break;
}
$136 = HEAP32[$3>>2]|0;
- $137 = (_strcmp($136,8997)|0);
+ $137 = (_strcmp($136,8889)|0);
$138 = ($137|0)!=(0);
if (!($138)) {
HEAP32[$1>>2] = 9;
break;
}
$139 = HEAP32[$3>>2]|0;
- $140 = (_strcmp($139,9012)|0);
+ $140 = (_strcmp($139,8904)|0);
$141 = ($140|0)!=(0);
if (!($141)) {
HEAP32[$1>>2] = 1;
break;
}
$142 = HEAP32[$3>>2]|0;
- $143 = (_strcmp($142,9033)|0);
+ $143 = (_strcmp($142,8925)|0);
$144 = ($143|0)!=(0);
if (!($144)) {
HEAP32[$1>>2] = 10;
break;
}
$145 = HEAP32[$3>>2]|0;
- $146 = (_strcmp($145,9053)|0);
+ $146 = (_strcmp($145,8945)|0);
$147 = ($146|0)!=(0);
if (!($147)) {
HEAP32[$1>>2] = 11;
break;
}
$148 = HEAP32[$3>>2]|0;
- $149 = (_strcmp($148,9073)|0);
+ $149 = (_strcmp($148,8965)|0);
$150 = ($149|0)!=(0);
if (!($150)) {
HEAP32[$1>>2] = 12;
break;
}
$151 = HEAP32[$3>>2]|0;
- $152 = (_strcmp($151,9099)|0);
+ $152 = (_strcmp($151,8991)|0);
$153 = ($152|0)!=(0);
if (!($153)) {
HEAP32[$1>>2] = 2;
break;
}
$154 = HEAP32[$3>>2]|0;
- $155 = (_strcmp($154,9118)|0);
+ $155 = (_strcmp($154,9010)|0);
$156 = ($155|0)!=(0);
if (!($156)) {
HEAP32[$1>>2] = 1;
break;
}
$157 = HEAP32[$3>>2]|0;
- $158 = (_strcmp($157,9130)|0);
+ $158 = (_strcmp($157,9022)|0);
$159 = ($158|0)!=(0);
if (!($159)) {
HEAP32[$1>>2] = 3;
break;
}
$160 = HEAP32[$3>>2]|0;
- $161 = (_strcmp($160,9142)|0);
+ $161 = (_strcmp($160,9034)|0);
$162 = ($161|0)!=(0);
if (!($162)) {
HEAP32[$1>>2] = 1;
break;
}
$163 = HEAP32[$3>>2]|0;
- $164 = (_strcmp($163,9154)|0);
+ $164 = (_strcmp($163,9046)|0);
$165 = ($164|0)!=(0);
if (!($165)) {
HEAP32[$1>>2] = 1;
break;
}
$166 = HEAP32[$3>>2]|0;
- $167 = (_strcmp($166,9166)|0);
+ $167 = (_strcmp($166,9058)|0);
$168 = ($167|0)!=(0);
if (!($168)) {
HEAP32[$1>>2] = 17;
break;
}
$169 = HEAP32[$3>>2]|0;
- $170 = (_strcmp($169,9178)|0);
+ $170 = (_strcmp($169,9070)|0);
$171 = ($170|0)!=(0);
if (!($171)) {
HEAP32[$1>>2] = 13;
break;
}
$172 = HEAP32[$3>>2]|0;
- $173 = (_strcmp($172,9190)|0);
+ $173 = (_strcmp($172,9082)|0);
$174 = ($173|0)!=(0);
if (!($174)) {
HEAP32[$1>>2] = 4;
break;
}
$175 = HEAP32[$3>>2]|0;
- $176 = (_strcmp($175,9202)|0);
+ $176 = (_strcmp($175,9094)|0);
$177 = ($176|0)!=(0);
if (!($177)) {
HEAP32[$1>>2] = 2;
break;
}
$178 = HEAP32[$3>>2]|0;
- $179 = (_strcmp($178,9214)|0);
+ $179 = (_strcmp($178,9106)|0);
$180 = ($179|0)!=(0);
if (!($180)) {
HEAP32[$1>>2] = 14;
break;
}
$181 = HEAP32[$3>>2]|0;
- $182 = (_strcmp($181,9227)|0);
+ $182 = (_strcmp($181,9119)|0);
$183 = ($182|0)!=(0);
if (!($183)) {
HEAP32[$1>>2] = 15;
break;
}
$184 = HEAP32[$3>>2]|0;
- $185 = (_strcmp($184,9240)|0);
+ $185 = (_strcmp($184,9132)|0);
$186 = ($185|0)!=(0);
if (!($186)) {
HEAP32[$1>>2] = 16;
break;
}
$187 = HEAP32[$3>>2]|0;
- $188 = (_strcmp($187,9253)|0);
+ $188 = (_strcmp($187,9145)|0);
$189 = ($188|0)!=(0);
if (!($189)) {
HEAP32[$1>>2] = 17;
break;
}
$190 = HEAP32[$3>>2]|0;
- $191 = (_strcmp($190,9266)|0);
+ $191 = (_strcmp($190,9158)|0);
$192 = ($191|0)!=(0);
if (!($192)) {
HEAP32[$1>>2] = 18;
break;
}
$193 = HEAP32[$3>>2]|0;
- $194 = (_strcmp($193,9279)|0);
+ $194 = (_strcmp($193,9171)|0);
$195 = ($194|0)!=(0);
if (!($195)) {
HEAP32[$1>>2] = 19;
break;
}
$196 = HEAP32[$3>>2]|0;
- $197 = (_strcmp($196,9292)|0);
+ $197 = (_strcmp($196,9184)|0);
$198 = ($197|0)!=(0);
if (!($198)) {
HEAP32[$1>>2] = 20;
break;
}
$199 = HEAP32[$3>>2]|0;
- $200 = (_strcmp($199,9305)|0);
+ $200 = (_strcmp($199,9197)|0);
$201 = ($200|0)!=(0);
if (!($201)) {
HEAP32[$1>>2] = 21;
break;
}
$202 = HEAP32[$3>>2]|0;
- $203 = (_strcmp($202,9318)|0);
+ $203 = (_strcmp($202,9210)|0);
$204 = ($203|0)!=(0);
if (!($204)) {
HEAP32[$1>>2] = 5;
break;
}
$205 = HEAP32[$3>>2]|0;
- $206 = (_strcmp($205,9337)|0);
+ $206 = (_strcmp($205,9229)|0);
$207 = ($206|0)!=(0);
if (!($207)) {
HEAP32[$1>>2] = 6;
break;
}
$208 = HEAP32[$3>>2]|0;
- $209 = (_strcmp($208,9356)|0);
+ $209 = (_strcmp($208,9248)|0);
$210 = ($209|0)!=(0);
if (!($210)) {
HEAP32[$1>>2] = 7;
break;
}
$211 = HEAP32[$3>>2]|0;
- $212 = (_strcmp($211,9375)|0);
+ $212 = (_strcmp($211,9267)|0);
$213 = ($212|0)!=(0);
if (!($213)) {
HEAP32[$1>>2] = 18;
break;
}
$214 = HEAP32[$3>>2]|0;
- $215 = (_strcmp($214,9388)|0);
+ $215 = (_strcmp($214,9280)|0);
$216 = ($215|0)!=(0);
if (!($216)) {
HEAP32[$1>>2] = 19;
break;
}
$217 = HEAP32[$3>>2]|0;
- $218 = (_strcmp($217,9406)|0);
+ $218 = (_strcmp($217,9298)|0);
$219 = ($218|0)!=(0);
if (!($219)) {
HEAP32[$1>>2] = 20;
break;
}
$220 = HEAP32[$3>>2]|0;
- $221 = (_strcmp($220,9424)|0);
+ $221 = (_strcmp($220,9316)|0);
$222 = ($221|0)!=(0);
if (!($222)) {
HEAP32[$1>>2] = 21;
break;
}
$223 = HEAP32[$3>>2]|0;
- $224 = (_strcmp($223,9442)|0);
+ $224 = (_strcmp($223,9334)|0);
$225 = ($224|0)!=(0);
if (!($225)) {
HEAP32[$1>>2] = 22;
break;
}
$226 = HEAP32[$3>>2]|0;
- $227 = (_strcmp($226,9460)|0);
+ $227 = (_strcmp($226,9352)|0);
$228 = ($227|0)!=(0);
if (!($228)) {
HEAP32[$1>>2] = 2;
break;
}
$229 = HEAP32[$3>>2]|0;
- $230 = (_strcmp($229,9480)|0);
+ $230 = (_strcmp($229,9372)|0);
$231 = ($230|0)!=(0);
if (!($231)) {
HEAP32[$1>>2] = 3;
break;
}
$232 = HEAP32[$3>>2]|0;
- $233 = (_strcmp($232,8421)|0);
+ $233 = (_strcmp($232,8313)|0);
$234 = ($233|0)!=(0);
if (!($234)) {
HEAP32[$1>>2] = 7;
break;
}
$235 = HEAP32[$3>>2]|0;
- $236 = (_strcmp($235,9498)|0);
+ $236 = (_strcmp($235,9390)|0);
$237 = ($236|0)!=(0);
if (!($237)) {
HEAP32[$1>>2] = 1;
break;
}
$238 = HEAP32[$3>>2]|0;
- $239 = (_strcmp($238,9513)|0);
+ $239 = (_strcmp($238,9405)|0);
$240 = ($239|0)!=(0);
if (!($240)) {
HEAP32[$1>>2] = 8;
break;
}
$241 = HEAP32[$3>>2]|0;
- $242 = (_strcmp($241,9534)|0);
+ $242 = (_strcmp($241,9426)|0);
$243 = ($242|0)!=(0);
if (!($243)) {
HEAP32[$1>>2] = 9;
break;
}
$244 = HEAP32[$3>>2]|0;
- $245 = (_strcmp($244,9549)|0);
+ $245 = (_strcmp($244,9441)|0);
$246 = ($245|0)!=(0);
if (!($246)) {
HEAP32[$1>>2] = 10;
break;
}
$247 = HEAP32[$3>>2]|0;
- $248 = (_strcmp($247,9567)|0);
+ $248 = (_strcmp($247,9459)|0);
$249 = ($248|0)!=(0);
if (!($249)) {
HEAP32[$1>>2] = 2;
break;
}
$250 = HEAP32[$3>>2]|0;
- $251 = (_strcmp($250,9583)|0);
+ $251 = (_strcmp($250,9475)|0);
$252 = ($251|0)!=(0);
if (!($252)) {
HEAP32[$1>>2] = 11;
break;
}
$253 = HEAP32[$3>>2]|0;
- $254 = (_strcmp($253,9602)|0);
+ $254 = (_strcmp($253,9494)|0);
$255 = ($254|0)!=(0);
if (!($255)) {
HEAP32[$1>>2] = 22;
break;
}
$256 = HEAP32[$3>>2]|0;
- $257 = (_strcmp($256,9616)|0);
+ $257 = (_strcmp($256,9508)|0);
$258 = ($257|0)!=(0);
if (!($258)) {
HEAP32[$1>>2] = 23;
break;
}
$259 = HEAP32[$3>>2]|0;
- $260 = (_strcmp($259,9631)|0);
+ $260 = (_strcmp($259,9523)|0);
$261 = ($260|0)!=(0);
if (!($261)) {
HEAP32[$1>>2] = 8;
break;
}
$262 = HEAP32[$3>>2]|0;
- $263 = (_strcmp($262,8352)|0);
+ $263 = (_strcmp($262,8244)|0);
$264 = ($263|0)!=(0);
if (!($264)) {
HEAP32[$1>>2] = 1;
break;
}
$265 = HEAP32[$3>>2]|0;
- $266 = (_strcmp($265,9642)|0);
+ $266 = (_strcmp($265,9534)|0);
$267 = ($266|0)!=(0);
if (!($267)) {
HEAP32[$1>>2] = 3;
break;
}
$268 = HEAP32[$3>>2]|0;
- $269 = (_strcmp($268,8451)|0);
+ $269 = (_strcmp($268,8343)|0);
$270 = ($269|0)!=(0);
if (!($270)) {
HEAP32[$1>>2] = 23;
break;
}
$271 = HEAP32[$3>>2]|0;
- $272 = (_strcmp($271,8481)|0);
+ $272 = (_strcmp($271,8373)|0);
$273 = ($272|0)!=(0);
if (!($273)) {
HEAP32[$1>>2] = 24;
break;
}
$274 = HEAP32[$3>>2]|0;
- $275 = (_strcmp($274,9658)|0);
+ $275 = (_strcmp($274,9550)|0);
$276 = ($275|0)!=(0);
if (!($276)) {
HEAP32[$1>>2] = 12;
break;
}
$277 = HEAP32[$3>>2]|0;
- $278 = (_strcmp($277,9685)|0);
+ $278 = (_strcmp($277,9577)|0);
$279 = ($278|0)!=(0);
if (!($279)) {
HEAP32[$1>>2] = 4;
break;
}
$280 = HEAP32[$3>>2]|0;
- $281 = (_strcmp($280,9699)|0);
+ $281 = (_strcmp($280,9591)|0);
$282 = ($281|0)!=(0);
if (!($282)) {
HEAP32[$1>>2] = 13;
break;
}
$283 = HEAP32[$3>>2]|0;
- $284 = (_strcmp($283,8387)|0);
+ $284 = (_strcmp($283,8279)|0);
$285 = ($284|0)!=(0);
if (!($285)) {
HEAP32[$1>>2] = 5;
break;
}
$286 = HEAP32[$3>>2]|0;
- $287 = (_strcmp($286,9719)|0);
+ $287 = (_strcmp($286,9611)|0);
$288 = ($287|0)!=(0);
if (!($288)) {
HEAP32[$1>>2] = 6;
break;
}
$289 = HEAP32[$3>>2]|0;
- $290 = (_strcmp($289,9737)|0);
+ $290 = (_strcmp($289,9629)|0);
$291 = ($290|0)!=(0);
if (!($291)) {
HEAP32[$1>>2] = 9;
break;
}
$292 = HEAP32[$3>>2]|0;
- $293 = (_strcmp($292,9749)|0);
+ $293 = (_strcmp($292,9641)|0);
$294 = ($293|0)!=(0);
if (!($294)) {
HEAP32[$1>>2] = 24;
break;
}
$295 = HEAP32[$3>>2]|0;
- $296 = (_strcmp($295,9770)|0);
+ $296 = (_strcmp($295,9662)|0);
$297 = ($296|0)!=(0);
if (!($297)) {
HEAP32[$1>>2] = 25;
break;
}
$298 = HEAP32[$3>>2]|0;
- $299 = (_strcmp($298,9788)|0);
+ $299 = (_strcmp($298,9680)|0);
$300 = ($299|0)!=(0);
if (!($300)) {
HEAP32[$1>>2] = 26;
break;
}
$301 = HEAP32[$3>>2]|0;
- $302 = (_strcmp($301,9806)|0);
+ $302 = (_strcmp($301,9698)|0);
$303 = ($302|0)!=(0);
if (!($303)) {
HEAP32[$1>>2] = 27;
break;
}
$304 = HEAP32[$3>>2]|0;
- $305 = (_strcmp($304,9827)|0);
+ $305 = (_strcmp($304,9719)|0);
$306 = ($305|0)!=(0);
if (!($306)) {
HEAP32[$1>>2] = 14;
break;
}
$307 = HEAP32[$3>>2]|0;
- $308 = (_strcmp($307,9853)|0);
+ $308 = (_strcmp($307,9745)|0);
$309 = ($308|0)!=(0);
if (!($309)) {
HEAP32[$1>>2] = 3;
break;
}
$310 = HEAP32[$3>>2]|0;
- $311 = (_strcmp($310,9876)|0);
+ $311 = (_strcmp($310,9768)|0);
$312 = ($311|0)!=(0);
if (!($312)) {
HEAP32[$1>>2] = 15;
break;
}
$313 = HEAP32[$3>>2]|0;
- $314 = (_strcmp($313,9914)|0);
+ $314 = (_strcmp($313,9806)|0);
$315 = ($314|0)!=(0);
if (!($315)) {
HEAP32[$1>>2] = 10;
break;
}
$316 = HEAP32[$3>>2]|0;
- $317 = (_strcmp($316,9930)|0);
+ $317 = (_strcmp($316,9822)|0);
$318 = ($317|0)!=(0);
if (!($318)) {
HEAP32[$1>>2] = 7;
break;
}
$319 = HEAP32[$3>>2]|0;
- $320 = (_strcmp($319,9945)|0);
+ $320 = (_strcmp($319,9837)|0);
$321 = ($320|0)!=(0);
if (!($321)) {
HEAP32[$1>>2] = 25;
break;
}
$322 = HEAP32[$3>>2]|0;
- $323 = (_strcmp($322,9968)|0);
+ $323 = (_strcmp($322,9860)|0);
$324 = ($323|0)!=(0);
if (!($324)) {
HEAP32[$1>>2] = 16;
break;
}
$325 = HEAP32[$3>>2]|0;
- $326 = (_strcmp($325,9981)|0);
+ $326 = (_strcmp($325,9873)|0);
$327 = ($326|0)!=(0);
if (!($327)) {
HEAP32[$1>>2] = 28;
break;
}
$328 = HEAP32[$3>>2]|0;
- $329 = (_strcmp($328,9995)|0);
+ $329 = (_strcmp($328,9887)|0);
$330 = ($329|0)!=(0);
if (!($330)) {
HEAP32[$1>>2] = 29;
break;
}
$331 = HEAP32[$3>>2]|0;
- $332 = (_strcmp($331,10009)|0);
+ $332 = (_strcmp($331,9901)|0);
$333 = ($332|0)!=(0);
if (!($333)) {
HEAP32[$1>>2] = 1;
break;
}
$334 = HEAP32[$3>>2]|0;
- $335 = (_strcmp($334,10029)|0);
+ $335 = (_strcmp($334,9921)|0);
$336 = ($335|0)!=(0);
if (!($336)) {
HEAP32[$1>>2] = 8;
break;
}
$337 = HEAP32[$3>>2]|0;
- $338 = (_strcmp($337,10049)|0);
+ $338 = (_strcmp($337,9941)|0);
$339 = ($338|0)!=(0);
if (!($339)) {
HEAP32[$1>>2] = 17;
break;
}
$340 = HEAP32[$3>>2]|0;
- $341 = (_strcmp($340,10065)|0);
+ $341 = (_strcmp($340,9957)|0);
$342 = ($341|0)!=(0);
if (!($342)) {
HEAP32[$1>>2] = 18;
break;
}
$343 = HEAP32[$3>>2]|0;
- $344 = (_strcmp($343,10083)|0);
+ $344 = (_strcmp($343,9975)|0);
$345 = ($344|0)!=(0);
if (!($345)) {
HEAP32[$1>>2] = 26;
break;
}
$346 = HEAP32[$3>>2]|0;
- $347 = (_strcmp($346,10099)|0);
+ $347 = (_strcmp($346,9991)|0);
$348 = ($347|0)!=(0);
if (!($348)) {
HEAP32[$1>>2] = 19;
break;
}
$349 = HEAP32[$3>>2]|0;
- $350 = (_strcmp($349,10114)|0);
+ $350 = (_strcmp($349,10006)|0);
$351 = ($350|0)!=(0);
if (!($351)) {
HEAP32[$1>>2] = 9;
break;
}
$352 = HEAP32[$3>>2]|0;
- $353 = (_strcmp($352,10136)|0);
+ $353 = (_strcmp($352,10028)|0);
$354 = ($353|0)!=(0);
if (!($354)) {
HEAP32[$1>>2] = 30;
break;
}
$355 = HEAP32[$3>>2]|0;
- $356 = (_strcmp($355,10154)|0);
+ $356 = (_strcmp($355,10046)|0);
$357 = ($356|0)!=(0);
if (!($357)) {
HEAP32[$1>>2] = 31;
break;
}
$358 = HEAP32[$3>>2]|0;
- $359 = (_strcmp($358,10175)|0);
+ $359 = (_strcmp($358,10067)|0);
$360 = ($359|0)!=(0);
if (!($360)) {
HEAP32[$1>>2] = 10;
break;
}
$361 = HEAP32[$3>>2]|0;
- $362 = (_strcmp($361,10193)|0);
+ $362 = (_strcmp($361,10085)|0);
$363 = ($362|0)!=(0);
if (!($363)) {
HEAP32[$1>>2] = 11;
break;
}
$364 = HEAP32[$3>>2]|0;
- $365 = (_strcmp($364,10206)|0);
+ $365 = (_strcmp($364,10098)|0);
$366 = ($365|0)!=(0);
if (!($366)) {
- HEAP32[$1>>2] = 1;
+ HEAP32[$1>>2] = 2;
break;
}
$367 = HEAP32[$3>>2]|0;
- $368 = (_strcmp($367,10221)|0);
+ $368 = (_strcmp($367,10113)|0);
$369 = ($368|0)!=(0);
if (!($369)) {
HEAP32[$1>>2] = 12;
break;
}
$370 = HEAP32[$3>>2]|0;
- $371 = (_strcmp($370,10235)|0);
+ $371 = (_strcmp($370,10127)|0);
$372 = ($371|0)!=(0);
if (!($372)) {
HEAP32[$1>>2] = 1;
break;
}
$373 = HEAP32[$3>>2]|0;
- $374 = (_strcmp($373,10245)|0);
+ $374 = (_strcmp($373,10137)|0);
$375 = ($374|0)!=(0);
if (!($375)) {
HEAP32[$1>>2] = 1;
break;
}
$376 = HEAP32[$3>>2]|0;
- $377 = (_strcmp($376,10255)|0);
+ $377 = (_strcmp($376,10147)|0);
$378 = ($377|0)!=(0);
if (!($378)) {
HEAP32[$1>>2] = 2;
break;
}
$379 = HEAP32[$3>>2]|0;
- $380 = (_strcmp($379,10277)|0);
+ $380 = (_strcmp($379,10169)|0);
$381 = ($380|0)!=(0);
if (!($381)) {
HEAP32[$1>>2] = 13;
break;
}
$382 = HEAP32[$3>>2]|0;
- $383 = (_strcmp($382,10303)|0);
+ $383 = (_strcmp($382,10195)|0);
$384 = ($383|0)!=(0);
if (!($384)) {
HEAP32[$1>>2] = 14;
break;
}
$385 = HEAP32[$3>>2]|0;
- $386 = (_strcmp($385,10330)|0);
+ $386 = (_strcmp($385,10222)|0);
$387 = ($386|0)!=(0);
if (!($387)) {
HEAP32[$1>>2] = 27;
break;
}
$388 = HEAP32[$3>>2]|0;
- $389 = (_strcmp($388,10343)|0);
+ $389 = (_strcmp($388,10235)|0);
$390 = ($389|0)!=(0);
if (!($390)) {
HEAP32[$1>>2] = 20;
break;
}
$391 = HEAP32[$3>>2]|0;
- $392 = (_strcmp($391,10358)|0);
+ $392 = (_strcmp($391,10250)|0);
$393 = ($392|0)!=(0);
if (!($393)) {
HEAP32[$1>>2] = 4;
break;
}
$394 = HEAP32[$3>>2]|0;
- $395 = (_strcmp($394,10373)|0);
+ $395 = (_strcmp($394,10265)|0);
$396 = ($395|0)!=(0);
if (!($396)) {
- HEAP32[$1>>2] = 2;
+ HEAP32[$1>>2] = 3;
break;
}
$397 = HEAP32[$3>>2]|0;
- $398 = (_strcmp($397,10397)|0);
+ $398 = (_strcmp($397,10289)|0);
$399 = ($398|0)!=(0);
if (!($399)) {
HEAP32[$1>>2] = 2;
break;
}
$400 = HEAP32[$3>>2]|0;
- $401 = (_strcmp($400,10408)|0);
+ $401 = (_strcmp($400,10300)|0);
$402 = ($401|0)!=(0);
if (!($402)) {
HEAP32[$1>>2] = 32;
break;
}
$403 = HEAP32[$3>>2]|0;
- $404 = (_strcmp($403,10430)|0);
+ $404 = (_strcmp($403,10322)|0);
$405 = ($404|0)!=(0);
if (!($405)) {
HEAP32[$1>>2] = 21;
break;
}
$406 = HEAP32[$3>>2]|0;
- $407 = (_strcmp($406,10452)|0);
+ $407 = (_strcmp($406,10344)|0);
$408 = ($407|0)!=(0);
if (!($408)) {
HEAP32[$1>>2] = 5;
break;
}
$409 = HEAP32[$3>>2]|0;
- $410 = (_strcmp($409,10476)|0);
+ $410 = (_strcmp($409,10368)|0);
$411 = ($410|0)!=(0);
if (!($411)) {
- HEAP32[$1>>2] = 3;
+ HEAP32[$1>>2] = 4;
break;
}
$412 = HEAP32[$3>>2]|0;
- $413 = (_strcmp($412,10485)|0);
+ $413 = (_strcmp($412,10377)|0);
$414 = ($413|0)!=(0);
if (!($414)) {
- HEAP32[$1>>2] = 4;
+ HEAP32[$1>>2] = 5;
break;
}
$415 = HEAP32[$3>>2]|0;
- $416 = (_strcmp($415,10493)|0);
+ $416 = (_strcmp($415,10385)|0);
$417 = ($416|0)!=(0);
if (!($417)) {
HEAP32[$1>>2] = 1;
break;
}
$418 = HEAP32[$3>>2]|0;
- $419 = (_strcmp($418,10506)|0);
+ $419 = (_strcmp($418,10398)|0);
$420 = ($419|0)!=(0);
if (!($420)) {
HEAP32[$1>>2] = 2;
break;
}
$421 = HEAP32[$3>>2]|0;
- $422 = (_strcmp($421,10520)|0);
+ $422 = (_strcmp($421,10412)|0);
$423 = ($422|0)!=(0);
if (!($423)) {
HEAP32[$1>>2] = 15;
break;
}
$424 = HEAP32[$3>>2]|0;
- $425 = (_strcmp($424,10532)|0);
+ $425 = (_strcmp($424,10424)|0);
$426 = ($425|0)!=(0);
if (!($426)) {
HEAP32[$1>>2] = 16;
break;
}
$427 = HEAP32[$3>>2]|0;
- $428 = (_strcmp($427,10541)|0);
+ $428 = (_strcmp($427,10433)|0);
$429 = ($428|0)!=(0);
if (!($429)) {
HEAP32[$1>>2] = 17;
break;
}
$430 = HEAP32[$3>>2]|0;
- $431 = (_strcmp($430,10551)|0);
+ $431 = (_strcmp($430,10443)|0);
$432 = ($431|0)!=(0);
if (!($432)) {
HEAP32[$1>>2] = 18;
break;
}
$433 = HEAP32[$3>>2]|0;
- $434 = (_strcmp($433,10563)|0);
+ $434 = (_strcmp($433,10455)|0);
$435 = ($434|0)!=(0);
if (!($435)) {
HEAP32[$1>>2] = 19;
break;
}
$436 = HEAP32[$3>>2]|0;
- $437 = (_strcmp($436,10574)|0);
+ $437 = (_strcmp($436,10466)|0);
$438 = ($437|0)!=(0);
if (!($438)) {
HEAP32[$1>>2] = 20;
break;
}
$439 = HEAP32[$3>>2]|0;
- $440 = (_strcmp($439,10582)|0);
+ $440 = (_strcmp($439,10474)|0);
$441 = ($440|0)!=(0);
if (!($441)) {
HEAP32[$1>>2] = 3;
break;
}
$442 = HEAP32[$3>>2]|0;
- $443 = (_strcmp($442,10594)|0);
+ $443 = (_strcmp($442,10486)|0);
$444 = ($443|0)!=(0);
if (!($444)) {
HEAP32[$1>>2] = 21;
break;
}
$445 = HEAP32[$3>>2]|0;
- $446 = (_strcmp($445,10609)|0);
+ $446 = (_strcmp($445,10501)|0);
$447 = ($446|0)!=(0);
if (!($447)) {
HEAP32[$1>>2] = 22;
break;
}
$448 = HEAP32[$3>>2]|0;
- $449 = (_strcmp($448,10621)|0);
+ $449 = (_strcmp($448,10513)|0);
$450 = ($449|0)!=(0);
if (!($450)) {
HEAP32[$1>>2] = 23;
break;
}
$451 = HEAP32[$3>>2]|0;
- $452 = (_strcmp($451,10635)|0);
+ $452 = (_strcmp($451,10527)|0);
$453 = ($452|0)!=(0);
if (!($453)) {
HEAP32[$1>>2] = 11;
break;
}
$454 = HEAP32[$3>>2]|0;
- $455 = (_strcmp($454,10660)|0);
+ $455 = (_strcmp($454,10552)|0);
$456 = ($455|0)!=(0);
if (!($456)) {
HEAP32[$1>>2] = 24;
break;
}
$457 = HEAP32[$3>>2]|0;
- $458 = (_strcmp($457,10677)|0);
+ $458 = (_strcmp($457,10569)|0);
$459 = ($458|0)!=(0);
if (!($459)) {
HEAP32[$1>>2] = 25;
break;
}
$460 = HEAP32[$3>>2]|0;
- $461 = (_strcmp($460,10693)|0);
+ $461 = (_strcmp($460,10585)|0);
$462 = ($461|0)!=(0);
if (!($462)) {
HEAP32[$1>>2] = 26;
break;
}
$463 = HEAP32[$3>>2]|0;
- $464 = (_strcmp($463,10709)|0);
+ $464 = (_strcmp($463,10601)|0);
$465 = ($464|0)!=(0);
if (!($465)) {
HEAP32[$1>>2] = 12;
break;
}
$466 = HEAP32[$3>>2]|0;
- $467 = (_strcmp($466,10721)|0);
+ $467 = (_strcmp($466,10613)|0);
$468 = ($467|0)!=(0);
if (!($468)) {
HEAP32[$1>>2] = 33;
break;
}
$469 = HEAP32[$3>>2]|0;
- $470 = (_strcmp($469,10733)|0);
+ $470 = (_strcmp($469,10625)|0);
$471 = ($470|0)!=(0);
if (!($471)) {
HEAP32[$1>>2] = 34;
break;
}
$472 = HEAP32[$3>>2]|0;
- $473 = (_strcmp($472,10757)|0);
+ $473 = (_strcmp($472,10649)|0);
$474 = ($473|0)!=(0);
if (!($474)) {
HEAP32[$1>>2] = 1;
break;
}
$475 = HEAP32[$3>>2]|0;
- $476 = (_strcmp($475,10770)|0);
+ $476 = (_strcmp($475,10662)|0);
$477 = ($476|0)!=(0);
if (!($477)) {
HEAP32[$1>>2] = 2;
break;
}
$478 = HEAP32[$3>>2]|0;
- $479 = (_strcmp($478,10784)|0);
+ $479 = (_strcmp($478,10676)|0);
$480 = ($479|0)!=(0);
if (!($480)) {
HEAP32[$1>>2] = 35;
break;
}
$481 = HEAP32[$3>>2]|0;
- $482 = (_strcmp($481,10806)|0);
+ $482 = (_strcmp($481,10698)|0);
$483 = ($482|0)!=(0);
if (!($483)) {
HEAP32[$1>>2] = 36;
break;
}
$484 = HEAP32[$3>>2]|0;
- $485 = (_strcmp($484,10813)|0);
+ $485 = (_strcmp($484,10705)|0);
$486 = ($485|0)!=(0);
if (!($486)) {
HEAP32[$1>>2] = 3;
break;
}
$487 = HEAP32[$3>>2]|0;
- $488 = (_strcmp($487,10829)|0);
+ $488 = (_strcmp($487,10721)|0);
$489 = ($488|0)!=(0);
if (!($489)) {
HEAP32[$1>>2] = 2;
break;
}
$490 = HEAP32[$3>>2]|0;
- $491 = (_strcmp($490,10846)|0);
+ $491 = (_strcmp($490,10738)|0);
$492 = ($491|0)!=(0);
if (!($492)) {
HEAP32[$1>>2] = 1;
break;
}
$493 = HEAP32[$3>>2]|0;
- $494 = (_strcmp($493,10863)|0);
+ $494 = (_strcmp($493,10755)|0);
$495 = ($494|0)!=(0);
if (!($495)) {
HEAP32[$1>>2] = 28;
break;
}
$496 = HEAP32[$3>>2]|0;
- $497 = (_strcmp($496,10879)|0);
+ $497 = (_strcmp($496,10771)|0);
$498 = ($497|0)!=(0);
if (!($498)) {
HEAP32[$1>>2] = 1;
break;
}
$499 = HEAP32[$3>>2]|0;
- $500 = (_strcmp($499,10895)|0);
+ $500 = (_strcmp($499,10787)|0);
$501 = ($500|0)!=(0);
if (!($501)) {
HEAP32[$1>>2] = 4;
break;
}
$502 = HEAP32[$3>>2]|0;
- $503 = (_strcmp($502,10912)|0);
+ $503 = (_strcmp($502,10804)|0);
$504 = ($503|0)!=(0);
if (!($504)) {
HEAP32[$1>>2] = 29;
break;
}
$505 = HEAP32[$3>>2]|0;
- $506 = (_strcmp($505,10926)|0);
+ $506 = (_strcmp($505,10818)|0);
$507 = ($506|0)!=(0);
if (!($507)) {
HEAP32[$1>>2] = 30;
break;
}
$508 = HEAP32[$3>>2]|0;
- $509 = (_strcmp($508,10938)|0);
+ $509 = (_strcmp($508,10830)|0);
$510 = ($509|0)!=(0);
if (!($510)) {
HEAP32[$1>>2] = 22;
break;
}
$511 = HEAP32[$3>>2]|0;
- $512 = (_strcmp($511,10949)|0);
+ $512 = (_strcmp($511,10841)|0);
$513 = ($512|0)!=(0);
if (!($513)) {
HEAP32[$1>>2] = 2;
break;
}
$514 = HEAP32[$3>>2]|0;
- $515 = (_strcmp($514,10962)|0);
+ $515 = (_strcmp($514,10854)|0);
$516 = ($515|0)!=(0);
if (!($516)) {
HEAP32[$1>>2] = 23;
break;
}
$517 = HEAP32[$3>>2]|0;
- $518 = (_strcmp($517,10972)|0);
+ $518 = (_strcmp($517,10864)|0);
$519 = ($518|0)!=(0);
if (!($519)) {
HEAP32[$1>>2] = 2;
break;
}
$520 = HEAP32[$3>>2]|0;
- $521 = (_strcmp($520,10989)|0);
+ $521 = (_strcmp($520,10881)|0);
$522 = ($521|0)!=(0);
if (!($522)) {
HEAP32[$1>>2] = 24;
break;
}
$523 = HEAP32[$3>>2]|0;
- $524 = (_strcmp($523,11001)|0);
+ $524 = (_strcmp($523,10893)|0);
$525 = ($524|0)!=(0);
if (!($525)) {
HEAP32[$1>>2] = 25;
break;
}
$526 = HEAP32[$3>>2]|0;
- $527 = (_strcmp($526,11023)|0);
+ $527 = (_strcmp($526,10915)|0);
$528 = ($527|0)!=(0);
if (!($528)) {
HEAP32[$1>>2] = 26;
break;
}
$529 = HEAP32[$3>>2]|0;
- $530 = (_strcmp($529,11043)|0);
+ $530 = (_strcmp($529,10935)|0);
$531 = ($530|0)!=(0);
if (!($531)) {
HEAP32[$1>>2] = 3;
break;
}
$532 = HEAP32[$3>>2]|0;
- $533 = (_strcmp($532,11056)|0);
+ $533 = (_strcmp($532,10948)|0);
$534 = ($533|0)!=(0);
if (!($534)) {
HEAP32[$1>>2] = 27;
break;
}
$535 = HEAP32[$3>>2]|0;
- $536 = (_strcmp($535,11078)|0);
+ $536 = (_strcmp($535,10970)|0);
$537 = ($536|0)!=(0);
if (!($537)) {
HEAP32[$1>>2] = 28;
break;
}
$538 = HEAP32[$3>>2]|0;
- $539 = (_strcmp($538,11098)|0);
+ $539 = (_strcmp($538,10990)|0);
$540 = ($539|0)!=(0);
if (!($540)) {
HEAP32[$1>>2] = 2;
break;
}
$541 = HEAP32[$3>>2]|0;
- $542 = (_strcmp($541,11115)|0);
+ $542 = (_strcmp($541,11007)|0);
$543 = ($542|0)!=(0);
if (!($543)) {
HEAP32[$1>>2] = 2;
break;
}
$544 = HEAP32[$3>>2]|0;
- $545 = (_strcmp($544,11132)|0);
+ $545 = (_strcmp($544,11024)|0);
$546 = ($545|0)!=(0);
if (!($546)) {
HEAP32[$1>>2] = 3;
break;
}
$547 = HEAP32[$3>>2]|0;
- $548 = (_strcmp($547,11152)|0);
+ $548 = (_strcmp($547,11044)|0);
$549 = ($548|0)!=(0);
if ($549) {
$550 = HEAP32[$2>>2]|0;
@@ -19231,7 +23416,15 @@ function _emscripten_GetProcAddress($0) {
function _emscripten_get_global_libc() {
var label = 0, sp = 0;
sp = STACKTOP;
- return (32936|0);
+ return (33224|0);
+}
+function ___emscripten_pthread_data_constructor() {
+ var $0 = 0, $1 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 188|0);
+ HEAP32[$1>>2] = (33264);
+ return;
}
function ___stdio_close($0) {
$0 = $0|0;
@@ -19241,7 +23434,7 @@ function ___stdio_close($0) {
$vararg_buffer = sp;
$1 = ((($0)) + 60|0);
$2 = HEAP32[$1>>2]|0;
- $3 = (_dummy_738($2)|0);
+ $3 = (_dummy_736($2)|0);
HEAP32[$vararg_buffer>>2] = $3;
$4 = (___syscall6(6,($vararg_buffer|0))|0);
$5 = (___syscall_ret($4)|0);
@@ -19421,12 +23614,7 @@ function ___pthread_self_108() {
$0 = (_pthread_self()|0);
return ($0|0);
}
-function _pthread_self() {
- var label = 0, sp = 0;
- sp = STACKTOP;
- return (2976|0);
-}
-function _dummy_738($0) {
+function _dummy_736($0) {
$0 = $0|0;
var label = 0, sp = 0;
sp = STACKTOP;
@@ -19442,7 +23630,7 @@ function ___stdout_write($0,$1,$2) {
$vararg_buffer = sp;
$3 = sp + 16|0;
$4 = ((($0)) + 36|0);
- HEAP32[$4>>2] = 8;
+ HEAP32[$4>>2] = 9;
$5 = HEAP32[$0>>2]|0;
$6 = $5 & 64;
$7 = ($6|0)==(0);
@@ -19539,6 +23727,66 @@ function _memcmp($0,$1,$2) {
} while(0);
return ($14|0);
}
+function _vsnprintf($0,$1,$2,$3) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ var $$$015 = 0, $$0 = 0, $$014 = 0, $$015 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
+ var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
+ $4 = sp + 124|0;
+ $5 = sp;
+ dest=$5; src=3120; stop=dest+124|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
+ $6 = (($1) + -1)|0;
+ $7 = ($6>>>0)>(2147483646);
+ if ($7) {
+ $8 = ($1|0)==(0);
+ if ($8) {
+ $$014 = $4;$$015 = 1;
+ label = 4;
+ } else {
+ $9 = (___errno_location()|0);
+ HEAP32[$9>>2] = 75;
+ $$0 = -1;
+ }
+ } else {
+ $$014 = $0;$$015 = $1;
+ label = 4;
+ }
+ if ((label|0) == 4) {
+ $10 = $$014;
+ $11 = (-2 - ($10))|0;
+ $12 = ($$015>>>0)>($11>>>0);
+ $$$015 = $12 ? $11 : $$015;
+ $13 = ((($5)) + 48|0);
+ HEAP32[$13>>2] = $$$015;
+ $14 = ((($5)) + 20|0);
+ HEAP32[$14>>2] = $$014;
+ $15 = ((($5)) + 44|0);
+ HEAP32[$15>>2] = $$014;
+ $16 = (($$014) + ($$$015)|0);
+ $17 = ((($5)) + 16|0);
+ HEAP32[$17>>2] = $16;
+ $18 = ((($5)) + 28|0);
+ HEAP32[$18>>2] = $16;
+ $19 = (_vfprintf($5,$2,$3)|0);
+ $20 = ($$$015|0)==(0);
+ if ($20) {
+ $$0 = $19;
+ } else {
+ $21 = HEAP32[$14>>2]|0;
+ $22 = HEAP32[$17>>2]|0;
+ $23 = ($21|0)==($22|0);
+ $24 = $23 << 31 >> 31;
+ $25 = (($21) + ($24)|0);
+ HEAP8[$25>>0] = 0;
+ $$0 = $19;
+ }
+ }
+ STACKTOP = sp;return ($$0|0);
+}
function _vfprintf($0,$1,$2) {
$0 = $0|0;
$1 = $1|0;
@@ -19561,7 +23809,7 @@ function _vfprintf($0,$1,$2) {
$$0 = -1;
} else {
$9 = ((($0)) + 76|0);
- $10 = HEAP32[$9>>2]|0;
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
$11 = ($10|0)>(-1);
if ($11) {
$12 = (___lockfile($0)|0);
@@ -19974,7 +24222,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$133 = HEAP8[$128>>0]|0;
$134 = $133 << 24 >> 24;
$135 = (($134) + -65)|0;
- $136 = ((11268 + (($$0252*58)|0)|0) + ($135)|0);
+ $136 = ((11160 + (($$0252*58)|0)|0) + ($135)|0);
$137 = HEAP8[$136>>0]|0;
$138 = $137&255;
$139 = (($138) + -1)|0;
@@ -20152,7 +24400,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$222 = (($220) + 1)|0;
$223 = $218 | $221;
$$0254$$0254$ = $223 ? $$0254 : $222;
- $$0228 = $216;$$1233 = 0;$$1238 = 11732;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
+ $$0228 = $216;$$1233 = 0;$$1238 = 11624;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
label = 67;
break;
}
@@ -20173,7 +24421,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$235 = (($233) + 4)|0;
$236 = $235;
HEAP32[$236>>2] = $232;
- $$0232 = 1;$$0237 = 11732;$242 = $231;$243 = $232;
+ $$0232 = 1;$$0237 = 11624;$242 = $231;$243 = $232;
label = 66;
break L71;
} else {
@@ -20181,8 +24429,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$238 = ($237|0)==(0);
$239 = $$1263$ & 1;
$240 = ($239|0)==(0);
- $$ = $240 ? 11732 : (11734);
- $$$ = $238 ? $$ : (11733);
+ $$ = $240 ? 11624 : (11626);
+ $$$ = $238 ? $$ : (11625);
$241 = $$1263$ & 2049;
$narrow = ($241|0)!=(0);
$$284$ = $narrow&1;
@@ -20199,7 +24447,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$168 = (($165) + 4)|0;
$169 = $168;
$170 = HEAP32[$169>>2]|0;
- $$0232 = 0;$$0237 = 11732;$242 = $167;$243 = $170;
+ $$0232 = 0;$$0237 = 11624;$242 = $167;$243 = $170;
label = 66;
break;
}
@@ -20212,7 +24460,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$264 = HEAP32[$263>>2]|0;
$265 = $261&255;
HEAP8[$13>>0] = $265;
- $$2 = $13;$$2234 = 0;$$2239 = 11732;$$2251 = $11;$$5 = 1;$$6268 = $164;
+ $$2 = $13;$$2234 = 0;$$2239 = 11624;$$2251 = $11;$$5 = 1;$$6268 = $164;
break;
}
case 109: {
@@ -20226,7 +24474,7 @@ function _printf_core($0,$1,$2,$3,$4) {
case 115: {
$269 = HEAP32[$6>>2]|0;
$270 = ($269|0)!=(0|0);
- $271 = $270 ? $269 : 11742;
+ $271 = $270 ? $269 : 11634;
$$1 = $271;
label = 71;
break;
@@ -20249,7 +24497,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$pre349 = HEAP32[$6>>2]|0;
$284 = ($$0254|0)==(0);
if ($284) {
- _pad_674($0,32,$$1260,0,$$1263$);
+ _pad_672($0,32,$$1260,0,$$1263$);
$$0240$lcssa357 = 0;
label = 84;
} else {
@@ -20266,7 +24514,7 @@ function _printf_core($0,$1,$2,$3,$4) {
break;
}
default: {
- $$2 = $21;$$2234 = 0;$$2239 = 11732;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
+ $$2 = $21;$$2234 = 0;$$2239 = 11624;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
}
}
} while(0);
@@ -20288,8 +24536,8 @@ function _printf_core($0,$1,$2,$3,$4) {
$207 = ($206|0)==(0);
$or$cond283 = $207 | $205;
$208 = $$1236 >> 4;
- $209 = (11732 + ($208)|0);
- $$289 = $or$cond283 ? 11732 : $209;
+ $209 = (11624 + ($208)|0);
+ $$289 = $or$cond283 ? 11624 : $209;
$$290 = $or$cond283 ? 0 : 2;
$$0228 = $202;$$1233 = $$290;$$1238 = $$289;$$2256 = $$1255;$$4266 = $$3265;$248 = $197;$250 = $200;
label = 67;
@@ -20310,7 +24558,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$277 = (($$1) + ($$0254)|0);
$$3257 = $273 ? $$0254 : $276;
$$1250 = $273 ? $277 : $272;
- $$2 = $$1;$$2234 = 0;$$2239 = 11732;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
+ $$2 = $$1;$$2234 = 0;$$2239 = 11624;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
}
else if ((label|0) == 75) {
label = 0;
@@ -20346,7 +24594,7 @@ function _printf_core($0,$1,$2,$3,$4) {
$$0 = -1;
break L1;
}
- _pad_674($0,32,$$1260,$$0240$lcssa,$$1263$);
+ _pad_672($0,32,$$1260,$$0240$lcssa,$$1263$);
$295 = ($$0240$lcssa|0)==(0);
if ($295) {
$$0240$lcssa357 = 0;
@@ -20407,7 +24655,7 @@ function _printf_core($0,$1,$2,$3,$4) {
else if ((label|0) == 84) {
label = 0;
$303 = $$1263$ ^ 8192;
- _pad_674($0,32,$$1260,$$0240$lcssa357,$303);
+ _pad_672($0,32,$$1260,$$0240$lcssa357,$303);
$304 = ($$1260|0)>($$0240$lcssa357|0);
$305 = $304 ? $$1260 : $$0240$lcssa357;
$$0243 = $305;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
@@ -20421,14 +24669,14 @@ function _printf_core($0,$1,$2,$3,$4) {
$312 = (($$$5) + ($$2234))|0;
$313 = ($$1260|0)<($312|0);
$$2261 = $313 ? $312 : $$1260;
- _pad_674($0,32,$$2261,$312,$$6268);
+ _pad_672($0,32,$$2261,$312,$$6268);
_out($0,$$2239,$$2234);
$314 = $$6268 ^ 65536;
- _pad_674($0,48,$$2261,$312,$314);
- _pad_674($0,48,$$$5,$310,0);
+ _pad_672($0,48,$$2261,$312,$314);
+ _pad_672($0,48,$$$5,$310,0);
_out($0,$$2,$310);
$315 = $$6268 ^ 8192;
- _pad_674($0,32,$$2261,$312,$315);
+ _pad_672($0,32,$$2261,$312,$315);
$$0243 = $$2261;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
}
L114: do {
@@ -20840,7 +25088,7 @@ function _fmt_x($0,$1,$2,$3) {
$$056 = $2;$15 = $1;$8 = $0;
while(1) {
$7 = $8 & 15;
- $9 = (11784 + ($7)|0);
+ $9 = (11676 + ($7)|0);
$10 = HEAP8[$9>>0]|0;
$11 = $10&255;
$12 = $11 | $3;
@@ -21095,7 +25343,7 @@ function _memchr($0,$1,$2) {
$39 = $38 ? $$2 : 0;
return ($39|0);
}
-function _pad_674($0,$1,$2,$3,$4) {
+function _pad_672($0,$1,$2,$3,$4) {
$0 = $0|0;
$1 = $1|0;
$2 = $2|0;
@@ -21193,25 +25441,25 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$10 = sp + 512|0;
HEAP32[$7>>2] = 0;
$11 = ((($10)) + 12|0);
- (___DOUBLE_BITS_675($1)|0);
+ (___DOUBLE_BITS_673($1)|0);
$12 = tempRet0;
$13 = ($12|0)<(0);
if ($13) {
$14 = -$1;
- $$0471 = $14;$$0520 = 1;$$0521 = 11749;
+ $$0471 = $14;$$0520 = 1;$$0521 = 11641;
} else {
$15 = $4 & 2048;
$16 = ($15|0)==(0);
$17 = $4 & 1;
$18 = ($17|0)==(0);
- $$ = $18 ? (11750) : (11755);
- $$$ = $16 ? $$ : (11752);
+ $$ = $18 ? (11642) : (11647);
+ $$$ = $16 ? $$ : (11644);
$19 = $4 & 2049;
$narrow = ($19|0)!=(0);
$$534$ = $narrow&1;
$$0471 = $1;$$0520 = $$534$;$$0521 = $$$;
}
- (___DOUBLE_BITS_675($$0471)|0);
+ (___DOUBLE_BITS_673($$0471)|0);
$20 = tempRet0;
$21 = $20 & 2146435072;
$22 = ($21>>>0)<(2146435072);
@@ -21304,7 +25552,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$0523 = $8;$$2473 = $$1472;
while(1) {
$80 = (~~(($$2473)));
- $81 = (11784 + ($80)|0);
+ $81 = (11676 + ($80)|0);
$82 = HEAP8[$81>>0]|0;
$83 = $82&255;
$84 = $83 | $42;
@@ -21351,16 +25599,16 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$pn = $or$cond537 ? $103 : $99;
$$0525 = (($100) + ($45))|0;
$104 = (($$0525) + ($$pn))|0;
- _pad_674($0,32,$2,$104,$4);
+ _pad_672($0,32,$2,$104,$4);
_out($0,$$0521$,$45);
$105 = $4 ^ 65536;
- _pad_674($0,48,$2,$104,$105);
+ _pad_672($0,48,$2,$104,$105);
_out($0,$8,$99);
$106 = (($$pn) - ($99))|0;
- _pad_674($0,48,$106,0,0);
+ _pad_672($0,48,$106,0,0);
_out($0,$77,$100);
$107 = $4 ^ 8192;
- _pad_674($0,32,$2,$104,$107);
+ _pad_672($0,32,$2,$104,$107);
$$sink562 = $104;
break;
}
@@ -21858,10 +26106,10 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$319 = (($318) + ($$3477))|0;
$$1526 = (($319) + ($291))|0;
$320 = (($$1526) + ($$pn566))|0;
- _pad_674($0,32,$2,$320,$4);
+ _pad_672($0,32,$2,$320,$4);
_out($0,$$0521,$$0520);
$321 = $4 ^ 65536;
- _pad_674($0,48,$2,$320,$321);
+ _pad_672($0,48,$2,$320,$321);
if ($293) {
$322 = ($$9$ph>>>0)>($$556>>>0);
$$0496$$9 = $322 ? $$556 : $$9$ph;
@@ -21915,7 +26163,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
}
$339 = ($289|0)==(0);
if (!($339)) {
- _out($0,11800,1);
+ _out($0,11692,1);
}
$340 = ($337>>>0)<($$7505>>>0);
$341 = ($$3477|0)>(0);
@@ -21963,7 +26211,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$4478$lcssa = $$3477;
}
$357 = (($$4478$lcssa) + 9)|0;
- _pad_674($0,48,$357,9,0);
+ _pad_672($0,48,$357,9,0);
} else {
$358 = ((($$9$ph)) + 4|0);
$$7505$ = $$lcssa673 ? $$7505 : $358;
@@ -21996,7 +26244,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$2 = $372;
break;
}
- _out($0,11800,1);
+ _out($0,11692,1);
$$2 = $372;
} else {
$369 = ($$0>>>0)>($8>>>0);
@@ -22041,29 +26289,29 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$5$lcssa = $$3477;
}
$383 = (($$5$lcssa) + 18)|0;
- _pad_674($0,48,$383,18,0);
+ _pad_672($0,48,$383,18,0);
$384 = $11;
$385 = $$2513;
$386 = (($384) - ($385))|0;
_out($0,$$2513,$386);
}
$387 = $4 ^ 8192;
- _pad_674($0,32,$2,$320,$387);
+ _pad_672($0,32,$2,$320,$387);
$$sink562 = $320;
} else {
$27 = $5 & 32;
$28 = ($27|0)!=(0);
- $29 = $28 ? 11768 : 11772;
+ $29 = $28 ? 11660 : 11664;
$30 = ($$0471 != $$0471) | (0.0 != 0.0);
- $31 = $28 ? 11776 : 11780;
+ $31 = $28 ? 11668 : 11672;
$$0510 = $30 ? $31 : $29;
$32 = (($$0520) + 3)|0;
$33 = $4 & -65537;
- _pad_674($0,32,$2,$32,$33);
+ _pad_672($0,32,$2,$32,$33);
_out($0,$$0521,$$0520);
_out($0,$$0510,3);
$34 = $4 ^ 8192;
- _pad_674($0,32,$2,$32,$34);
+ _pad_672($0,32,$2,$32,$34);
$$sink562 = $32;
}
} while(0);
@@ -22071,7 +26319,7 @@ function _fmt_fp($0,$1,$2,$3,$4,$5) {
$$555 = $388 ? $2 : $$sink562;
STACKTOP = sp;return ($$555|0);
}
-function ___DOUBLE_BITS_675($0) {
+function ___DOUBLE_BITS_673($0) {
$0 = +$0;
var $1 = 0, $2 = 0, label = 0, sp = 0;
sp = STACKTOP;
@@ -22152,10 +26400,10 @@ function _wcrtomb($0,$1,$2) {
$$0 = 1;
break;
}
- $6 = (___pthread_self_448()|0);
+ $6 = (___pthread_self_446()|0);
$7 = ((($6)) + 188|0);
$8 = HEAP32[$7>>2]|0;
- $9 = HEAP32[$8>>2]|0;
+ $9 = (Atomics_load(HEAP32,$8>>2)|0);
$not$ = ($9|0)==(0|0);
if ($not$) {
$10 = $1 & -128;
@@ -22245,7 +26493,7 @@ function _wcrtomb($0,$1,$2) {
} while(0);
return ($$0|0);
}
-function ___pthread_self_448() {
+function ___pthread_self_446() {
var $0 = 0, label = 0, sp = 0;
sp = STACKTOP;
$0 = (_pthread_self()|0);
@@ -22265,7 +26513,7 @@ function ___strerror_l($0,$1) {
sp = STACKTOP;
$$016 = 0;
while(1) {
- $3 = (11802 + ($$016)|0);
+ $3 = (11694 + ($$016)|0);
$4 = HEAP8[$3>>0]|0;
$5 = $4&255;
$6 = ($5|0)==($0|0);
@@ -22276,7 +26524,7 @@ function ___strerror_l($0,$1) {
$7 = (($$016) + 1)|0;
$8 = ($7|0)==(87);
if ($8) {
- $$01214 = 11890;$$115 = 87;
+ $$01214 = 11782;$$115 = 87;
label = 5;
break;
} else {
@@ -22286,9 +26534,9 @@ function ___strerror_l($0,$1) {
if ((label|0) == 2) {
$2 = ($$016|0)==(0);
if ($2) {
- $$012$lcssa = 11890;
+ $$012$lcssa = 11782;
} else {
- $$01214 = 11890;$$115 = $$016;
+ $$01214 = 11782;$$115 = $$016;
label = 5;
}
}
@@ -22318,7 +26566,7 @@ function ___strerror_l($0,$1) {
}
}
$14 = ((($1)) + 20|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = (___lctrans($$012$lcssa,$15)|0);
return ($16|0);
}
@@ -22604,6 +26852,26 @@ function ___towrite($0) {
}
return ($$0|0);
}
+function _sn_write($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $$ = 0, $10 = 0, $11 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = ((($0)) + 16|0);
+ $4 = HEAP32[$3>>2]|0;
+ $5 = ((($0)) + 20|0);
+ $6 = HEAP32[$5>>2]|0;
+ $7 = $6;
+ $8 = (($4) - ($7))|0;
+ $9 = ($8>>>0)>($2>>>0);
+ $$ = $9 ? $2 : $8;
+ _memcpy(($6|0),($1|0),($$|0))|0;
+ $10 = HEAP32[$5>>2]|0;
+ $11 = (($10) + ($$)|0);
+ HEAP32[$5>>2] = $11;
+ return ($2|0);
+}
function _strlen($0) {
$0 = $0|0;
var $$0 = 0, $$015$lcssa = 0, $$01519 = 0, $$1$lcssa = 0, $$pn = 0, $$pre = 0, $$sink = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0;
@@ -22905,13 +27173,13 @@ function ___stpcpy($0,$1) {
function ___ofl_lock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___lock((33000|0));
- return (33008|0);
+ ___lock((33288|0));
+ return (33296|0);
}
function ___ofl_unlock() {
var label = 0, sp = 0;
sp = STACKTOP;
- ___unlock((33000|0));
+ ___unlock((33288|0));
return;
}
function _fflush($0) {
@@ -22922,12 +27190,12 @@ function _fflush($0) {
$1 = ($0|0)==(0|0);
do {
if ($1) {
- $8 = HEAP32[837]|0;
+ $8 = (Atomics_load(HEAP32,779)|0);
$9 = ($8|0)==(0|0);
if ($9) {
$29 = 0;
} else {
- $10 = HEAP32[837]|0;
+ $10 = (Atomics_load(HEAP32,779)|0);
$11 = (_fflush($10)|0);
$29 = $11;
}
@@ -22940,7 +27208,7 @@ function _fflush($0) {
$$02327 = $$02325;$$02426 = $29;
while(1) {
$14 = ((($$02327)) + 76|0);
- $15 = HEAP32[$14>>2]|0;
+ $15 = (Atomics_load(HEAP32,$14>>2)|0);
$16 = ($15|0)>(-1);
if ($16) {
$17 = (___lockfile($$02327)|0);
@@ -22979,7 +27247,7 @@ function _fflush($0) {
$$0 = $$024$lcssa;
} else {
$2 = ((($0)) + 76|0);
- $3 = HEAP32[$2>>2]|0;
+ $3 = (Atomics_load(HEAP32,$2>>2)|0);
$4 = ($3|0)>(-1);
if (!($4)) {
$5 = (___fflush_unlocked($0)|0);
@@ -23751,7 +28019,7 @@ function _srand($0) {
var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = (($0) + -1)|0;
- $2 = 13992;
+ $2 = 14272;
$3 = $2;
HEAP32[$3>>2] = $1;
$4 = (($2) + 4)|0;
@@ -23762,7 +28030,7 @@ function _srand($0) {
function _rand() {
var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $0 = 13992;
+ $0 = 14272;
$1 = $0;
$2 = HEAP32[$1>>2]|0;
$3 = (($0) + 4)|0;
@@ -23772,7 +28040,7 @@ function _rand() {
$7 = tempRet0;
$8 = (_i64Add(($6|0),($7|0),1,0)|0);
$9 = tempRet0;
- $10 = 13992;
+ $10 = 14272;
$11 = $10;
HEAP32[$11>>2] = $8;
$12 = (($10) + 4)|0;
@@ -23787,7 +28055,7 @@ function _vprintf($0,$1) {
$1 = $1|0;
var $2 = 0, $3 = 0, label = 0, sp = 0;
sp = STACKTOP;
- $2 = HEAP32[805]|0;
+ $2 = HEAP32[747]|0;
$3 = (_vfprintf($2,$0,$1)|0);
return ($3|0);
}
@@ -23894,7 +28162,7 @@ function _strtok($0,$1) {
sp = STACKTOP;
$2 = ($0|0)==(0|0);
if ($2) {
- $3 = HEAP32[8253]|0;
+ $3 = HEAP32[8325]|0;
$4 = ($3|0)==(0|0);
if ($4) {
$$0 = 0;
@@ -23913,22 +28181,22 @@ function _strtok($0,$1) {
$7 = HEAP8[$6>>0]|0;
$8 = ($7<<24>>24)==(0);
if ($8) {
- HEAP32[8253] = 0;
+ HEAP32[8325] = 0;
$$0 = 0;
break;
}
$9 = (_strcspn($6,$1)|0);
$10 = (($6) + ($9)|0);
- HEAP32[8253] = $10;
+ HEAP32[8325] = $10;
$11 = HEAP8[$10>>0]|0;
$12 = ($11<<24>>24)==(0);
if ($12) {
- HEAP32[8253] = 0;
+ HEAP32[8325] = 0;
$$0 = $6;
break;
} else {
$13 = ((($10)) + 1|0);
- HEAP32[8253] = $13;
+ HEAP32[8325] = $13;
HEAP8[$10>>0] = 0;
$$0 = $6;
break;
@@ -23937,112 +28205,2175 @@ function _strtok($0,$1) {
} while(0);
return ($$0|0);
}
-function _malloc($0) {
+function __emscripten_atomic_fetch_and_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function __emscripten_atomic_fetch_and_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_async_run_in_main_thread($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$0$in = 0, $$0$in19 = 0, $$0$lcssa = 0, $$020 = 0, $$expand_i1_val = 0, $$lcssa = 0, $$lcssa18 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, $call_queue$init$val = 0, $call_queue$init$val$pre_trunc = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ($0|0)==(0|0);
+ if ($1) {
+ ___assert_fail((13876|0),(13708|0),260,(13881|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ if (!($3)) {
+ __do_call($0);
+ return;
+ }
+ (___pthread_mutex_lock(33820)|0);
+ $call_queue$init$val$pre_trunc = HEAP8[38271]|0;
+ $call_queue$init$val = $call_queue$init$val$pre_trunc&1;
+ if (!($call_queue$init$val)) {
+ $$expand_i1_val = 1;
+ HEAP8[38271] = $$expand_i1_val;
+ }
+ $4 = (Atomics_load(HEAP32, 8462)|0);
+ $5 = (Atomics_load(HEAP32, 8463)|0);
+ $$0$in19 = (($5) + 1)|0;
+ $$020 = (($$0$in19|0) % 128)&-1;
+ $6 = ($$020|0)==($4|0);
+ if ($6) {
+ $7 = $4;
+ while(1) {
+ (___pthread_mutex_unlock(33820)|0);
+ (_emscripten_futex_wait((33848|0),($7|0),inf)|0);
+ (___pthread_mutex_lock(33820)|0);
+ $8 = (Atomics_load(HEAP32, 8462)|0);
+ $9 = (Atomics_load(HEAP32, 8463)|0);
+ $$0$in = (($9) + 1)|0;
+ $$0 = (($$0$in|0) % 128)&-1;
+ $10 = ($$0|0)==($8|0);
+ if ($10) {
+ $7 = $8;
+ } else {
+ $$0$lcssa = $$0;$$lcssa = $9;$$lcssa18 = $8;
+ break;
+ }
+ }
+ } else {
+ $$0$lcssa = $$020;$$lcssa = $5;$$lcssa18 = $4;
+ }
+ $11 = (33856 + ($$lcssa<<2)|0);
+ HEAP32[$11>>2] = $0;
+ $12 = ($$lcssa18|0)==($$lcssa|0);
+ if ($12) {
+ _emscripten_asm_const_v(1);
+ }
+ $13 = (Atomics_store(HEAP32, 8463, $$0$lcssa)|0);
+ (___pthread_mutex_unlock(33820)|0);
+ return;
+}
+function _emscripten_atomic_add_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Add(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_and_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 & $1;
+ $18 = $16 & $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_cas_u64($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $5 = $0;
+ $6 = $5 >>> 3;
+ $7 = $6 & 255;
+ $8 = (34376 + ($7<<2)|0);
+ while(1) {
+ while(1) {
+ $9 = (Atomics_load(HEAP32, $8>>2)|0);
+ $10 = (Atomics_compareExchange(HEAP32, $8>>2, $9, 1)|0);
+ $11 = ($9|0)==($10|0);
+ if ($11) {
+ break;
+ }
+ }
+ $12 = ($9|0)==(0);
+ if ($12) {
+ break;
+ }
+ }
+ $13 = $0;
+ $14 = $13;
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (($13) + 4)|0;
+ $17 = $16;
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($15|0)==($1|0);
+ $20 = ($18|0)==($2|0);
+ $21 = $19 & $20;
+ if (!($21)) {
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+ }
+ $22 = $0;
+ $23 = $22;
+ HEAP32[$23>>2] = $3;
+ $24 = (($22) + 4)|0;
+ $25 = $24;
+ HEAP32[$25>>2] = $4;
+ $26 = (Atomics_store(HEAP32, $8>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($15|0);
+}
+function _emscripten_atomic_exchange_u32($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ while(1) {
+ $2 = (Atomics_load(HEAP32, $0>>2)|0);
+ $3 = (Atomics_compareExchange(HEAP32, $0>>2, $2, $1)|0);
+ $4 = ($2|0)==($3|0);
+ if ($4) {
+ break;
+ }
+ }
+ return ($2|0);
+}
+function _emscripten_atomic_exchange_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
+ var sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $0;
+ $18 = $17;
+ HEAP32[$18>>2] = $1;
+ $19 = (($17) + 4)|0;
+ $20 = $19;
+ HEAP32[$20>>2] = $2;
+ $21 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($16);
+ return ($13|0);
+}
+function _emscripten_atomic_load_f32($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = (Atomics_load(HEAP32, $0>>2)|0);
+ $2 = (HEAP32[tempDoublePtr>>2]=$1,+HEAPF32[tempDoublePtr>>2]);
+ return (+$2);
+}
+function _emscripten_atomic_load_f64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34376 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = +HEAPF64[$0>>3];
+ $10 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ return (+$9);
+}
+function _emscripten_atomic_load_u64($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = $0;
+ $2 = $1 >>> 3;
+ $3 = $2 & 255;
+ $4 = (34376 + ($3<<2)|0);
+ while(1) {
+ while(1) {
+ $5 = (Atomics_load(HEAP32, $4>>2)|0);
+ $6 = (Atomics_compareExchange(HEAP32, $4>>2, $5, 1)|0);
+ $7 = ($5|0)==($6|0);
+ if ($7) {
+ break;
+ }
+ }
+ $8 = ($5|0)==(0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = $0;
+ $10 = $9;
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (($9) + 4)|0;
+ $13 = $12;
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (Atomics_store(HEAP32, $4>>2, 0)|0);
+ tempRet0 = ($14);
+ return ($11|0);
+}
+function _emscripten_atomic_or_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 | $1;
+ $18 = $16 | $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_store_f32($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $2 = 0, $3 = 0, $4 = 0.0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = (HEAPF32[tempDoublePtr>>2]=$1,HEAP32[tempDoublePtr>>2]|0);
+ $3 = (Atomics_store(HEAP32, $0>>2, $2)|0);
+ $4 = (+($3>>>0));
+ return (+$4);
+}
+function _emscripten_atomic_store_f64($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = $0;
+ $3 = $2 >>> 3;
+ $4 = $3 & 255;
+ $5 = (34376 + ($4<<2)|0);
+ while(1) {
+ while(1) {
+ $6 = (Atomics_load(HEAP32, $5>>2)|0);
+ $7 = (Atomics_compareExchange(HEAP32, $5>>2, $6, 1)|0);
+ $8 = ($6|0)==($7|0);
+ if ($8) {
+ break;
+ }
+ }
+ $9 = ($6|0)==(0);
+ if ($9) {
+ break;
+ }
+ }
+ HEAPF64[$0>>3] = $1;
+ $10 = (Atomics_store(HEAP32, $5>>2, 0)|0);
+ return (+$1);
+}
+function _emscripten_atomic_store_u64($0,$1,$2) {
$0 = $0|0;
- var $$$0192$i = 0, $$$0193$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0 = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i18$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0197 = 0, $$0199 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
- var $$0212$i$i = 0, $$024371$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1196$i = 0, $$1198$i = 0;
- var $$124470$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i201 = 0, $$3350$i = 0, $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0;
- var $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$723948$i = 0, $$749$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i19$i = 0, $$pre$i210 = 0, $$pre$i212 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i20$iZ2D = 0, $$pre$phi$i211Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0;
- var $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i204 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0;
- var $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0;
- var $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0;
- var $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0;
- var $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0;
- var $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0;
- var $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0;
- var $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0;
- var $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0;
- var $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0;
- var $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0;
- var $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0;
- var $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0;
- var $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0;
- var $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0;
- var $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0;
- var $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0;
- var $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0;
- var $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0;
- var $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0;
- var $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0;
- var $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0;
- var $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0;
- var $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0;
- var $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0;
- var $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0;
- var $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0;
- var $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0;
- var $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0;
- var $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0;
- var $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0;
- var $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0;
- var $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0;
- var $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0;
- var $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0;
- var $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0;
- var $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0;
- var $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0;
- var $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0;
- var $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0;
- var $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0;
- var $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0;
- var $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0;
- var $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0;
- var $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0;
- var $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0;
- var $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0;
- var $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0;
- var $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0;
- var $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0;
- var $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0;
- var $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0;
- var $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0;
- var $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0, $cond$i$i = 0, $cond$i208 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i17$i = 0, $not$$i209 = 0, $not$$i216 = 0, $not$1$i = 0, $not$1$i203 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0;
- var $or$cond$i = 0, $or$cond$i214 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond11$not$i = 0, $or$cond12$i = 0, $or$cond2$i = 0, $or$cond2$i215 = 0, $or$cond5$i = 0, $or$cond50$i = 0, $or$cond51$i = 0, $or$cond7$i = 0, label = 0, sp = 0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ HEAP32[$12>>2] = $1;
+ $13 = (($11) + 4)|0;
+ $14 = $13;
+ HEAP32[$14>>2] = $2;
+ $15 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($2);
+ return ($1|0);
+}
+function _emscripten_atomic_sub_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = (_i64Subtract(($13|0),($16|0),($1|0),($2|0))|0);
+ $18 = tempRet0;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_atomic_xor_u64($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
+ var $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $3 = $0;
+ $4 = $3 >>> 3;
+ $5 = $4 & 255;
+ $6 = (34376 + ($5<<2)|0);
+ while(1) {
+ while(1) {
+ $7 = (Atomics_load(HEAP32, $6>>2)|0);
+ $8 = (Atomics_compareExchange(HEAP32, $6>>2, $7, 1)|0);
+ $9 = ($7|0)==($8|0);
+ if ($9) {
+ break;
+ }
+ }
+ $10 = ($7|0)==(0);
+ if ($10) {
+ break;
+ }
+ }
+ $11 = $0;
+ $12 = $11;
+ $13 = HEAP32[$12>>2]|0;
+ $14 = (($11) + 4)|0;
+ $15 = $14;
+ $16 = HEAP32[$15>>2]|0;
+ $17 = $13 ^ $1;
+ $18 = $16 ^ $2;
+ $19 = $0;
+ $20 = $19;
+ HEAP32[$20>>2] = $17;
+ $21 = (($19) + 4)|0;
+ $22 = $21;
+ HEAP32[$22>>2] = $18;
+ $23 = (Atomics_store(HEAP32, $6>>2, 0)|0);
+ tempRet0 = ($18);
+ return ($17|0);
+}
+function _emscripten_main_thread_process_queued_calls() {
+ var $$0910 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_emscripten_is_main_runtime_thread()|0);
+ $1 = ($0|0)==(0);
+ if ($1) {
+ ___assert_fail((13586|0),(13708|0),424,(13772|0));
+ // unreachable;
+ }
+ $2 = (_emscripten_is_main_runtime_thread()|0);
+ $3 = ($2|0)==(0);
+ $4 = HEAP32[8454]|0;
+ $5 = ($4|0)!=(0);
+ $or$cond = $3 | $5;
+ if ($or$cond) {
+ return;
+ }
+ HEAP32[8454] = 1;
+ (___pthread_mutex_lock(33820)|0);
+ $6 = (Atomics_load(HEAP32, 8462)|0);
+ $7 = (Atomics_load(HEAP32, 8463)|0);
+ $8 = ($6|0)==($7|0);
+ (___pthread_mutex_unlock(33820)|0);
+ if (!($8)) {
+ $$0910 = $6;
+ while(1) {
+ $9 = (33856 + ($$0910<<2)|0);
+ $10 = HEAP32[$9>>2]|0;
+ __do_call($10);
+ (___pthread_mutex_lock(33820)|0);
+ $11 = (($$0910) + 1)|0;
+ $12 = (($11|0) % 128)&-1;
+ $13 = (Atomics_store(HEAP32, 8462, $12)|0);
+ $14 = (Atomics_load(HEAP32, 8463)|0);
+ $15 = ($12|0)==($14|0);
+ (___pthread_mutex_unlock(33820)|0);
+ if ($15) {
+ break;
+ } else {
+ $$0910 = $12;
+ }
+ }
+ }
+ (_emscripten_futex_wake((33848|0),2147483647)|0);
+ HEAP32[8454] = 0;
+ return;
+}
+function _emscripten_sync_run_in_main_thread($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ _emscripten_async_run_in_main_thread($0);
+ (_emscripten_wait_for_call_v($0,inf)|0);
+ return;
+}
+function _emscripten_sync_run_in_main_thread_0($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $1 = sp;
+ dest=$1; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$1>>2] = $0;
+ $2 = ((($1)) + 80|0);
+ HEAP32[$2>>2] = 0;
+ _emscripten_async_run_in_main_thread($1);
+ (_emscripten_wait_for_call_v($1,inf)|0);
+ $3 = HEAP32[$2>>2]|0;
+ STACKTOP = sp;return ($3|0);
+}
+function _emscripten_sync_run_in_main_thread_1($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $2 = sp;
+ dest=$2; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$2>>2] = $0;
+ $3 = ((($2)) + 16|0);
+ HEAP32[$3>>2] = $1;
+ $4 = ((($2)) + 80|0);
+ HEAP32[$4>>2] = 0;
+ _emscripten_async_run_in_main_thread($2);
+ (_emscripten_wait_for_call_v($2,inf)|0);
+ $5 = HEAP32[$4>>2]|0;
+ STACKTOP = sp;return ($5|0);
+}
+function _emscripten_sync_run_in_main_thread_2($0,$1,$2) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $3 = sp;
+ dest=$3; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$3>>2] = $0;
+ $4 = ((($3)) + 16|0);
+ HEAP32[$4>>2] = $1;
+ $5 = ((($3)) + 24|0);
+ HEAP32[$5>>2] = $2;
+ $6 = ((($3)) + 80|0);
+ HEAP32[$6>>2] = 0;
+ _emscripten_async_run_in_main_thread($3);
+ (_emscripten_wait_for_call_v($3,inf)|0);
+ $7 = HEAP32[$6>>2]|0;
+ STACKTOP = sp;return ($7|0);
+}
+function _emscripten_sync_run_in_main_thread_3($0,$1,$2,$3) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $4 = sp;
+ dest=$4; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$4>>2] = $0;
+ $5 = ((($4)) + 16|0);
+ HEAP32[$5>>2] = $1;
+ $6 = ((($4)) + 24|0);
+ HEAP32[$6>>2] = $2;
+ $7 = ((($4)) + 32|0);
+ HEAP32[$7>>2] = $3;
+ $8 = ((($4)) + 80|0);
+ HEAP32[$8>>2] = 0;
+ _emscripten_async_run_in_main_thread($4);
+ (_emscripten_wait_for_call_v($4,inf)|0);
+ $9 = HEAP32[$8>>2]|0;
+ STACKTOP = sp;return ($9|0);
+}
+function _emscripten_sync_run_in_main_thread_4($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $10 = 0, $11 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $5 = sp;
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $6 = ((($5)) + 16|0);
+ HEAP32[$6>>2] = $1;
+ $7 = ((($5)) + 24|0);
+ HEAP32[$7>>2] = $2;
+ $8 = ((($5)) + 32|0);
+ HEAP32[$8>>2] = $3;
+ $9 = ((($5)) + 40|0);
+ HEAP32[$9>>2] = $4;
+ $10 = ((($5)) + 80|0);
+ HEAP32[$10>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $11 = HEAP32[$10>>2]|0;
+ STACKTOP = sp;return ($11|0);
+}
+function _emscripten_sync_run_in_main_thread_5($0,$1,$2,$3,$4,$5) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $6 = sp;
+ dest=$6; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$6>>2] = $0;
+ $7 = ((($6)) + 16|0);
+ HEAP32[$7>>2] = $1;
+ $8 = ((($6)) + 24|0);
+ HEAP32[$8>>2] = $2;
+ $9 = ((($6)) + 32|0);
+ HEAP32[$9>>2] = $3;
+ $10 = ((($6)) + 40|0);
+ HEAP32[$10>>2] = $4;
+ $11 = ((($6)) + 48|0);
+ HEAP32[$11>>2] = $5;
+ $12 = ((($6)) + 80|0);
+ HEAP32[$12>>2] = 0;
+ _emscripten_async_run_in_main_thread($6);
+ (_emscripten_wait_for_call_v($6,inf)|0);
+ $13 = HEAP32[$12>>2]|0;
+ STACKTOP = sp;return ($13|0);
+}
+function _emscripten_sync_run_in_main_thread_6($0,$1,$2,$3,$4,$5,$6) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $7 = sp;
+ dest=$7; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$7>>2] = $0;
+ $8 = ((($7)) + 16|0);
+ HEAP32[$8>>2] = $1;
+ $9 = ((($7)) + 24|0);
+ HEAP32[$9>>2] = $2;
+ $10 = ((($7)) + 32|0);
+ HEAP32[$10>>2] = $3;
+ $11 = ((($7)) + 40|0);
+ HEAP32[$11>>2] = $4;
+ $12 = ((($7)) + 48|0);
+ HEAP32[$12>>2] = $5;
+ $13 = ((($7)) + 56|0);
+ HEAP32[$13>>2] = $6;
+ $14 = ((($7)) + 80|0);
+ HEAP32[$14>>2] = 0;
+ _emscripten_async_run_in_main_thread($7);
+ (_emscripten_wait_for_call_v($7,inf)|0);
+ $15 = HEAP32[$14>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function _emscripten_sync_run_in_main_thread_7($0,$1,$2,$3,$4,$5,$6,$7) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ $5 = $5|0;
+ $6 = $6|0;
+ $7 = $7|0;
+ var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
+ $8 = sp;
+ dest=$8; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$8>>2] = $0;
+ $9 = ((($8)) + 16|0);
+ HEAP32[$9>>2] = $1;
+ $10 = ((($8)) + 24|0);
+ HEAP32[$10>>2] = $2;
+ $11 = ((($8)) + 32|0);
+ HEAP32[$11>>2] = $3;
+ $12 = ((($8)) + 40|0);
+ HEAP32[$12>>2] = $4;
+ $13 = ((($8)) + 48|0);
+ HEAP32[$13>>2] = $5;
+ $14 = ((($8)) + 56|0);
+ HEAP32[$14>>2] = $6;
+ $15 = ((($8)) + 64|0);
+ HEAP32[$15>>2] = $7;
+ $16 = ((($8)) + 80|0);
+ HEAP32[$16>>2] = 0;
+ _emscripten_async_run_in_main_thread($8);
+ (_emscripten_wait_for_call_v($8,inf)|0);
+ $17 = HEAP32[$16>>2]|0;
+ STACKTOP = sp;return ($17|0);
+}
+function _emscripten_sync_run_in_main_thread_xprintf_varargs($0,$1,$2,$varargs) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $varargs = $varargs|0;
+ var $$0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 240|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(240|0);
+ $3 = sp + 96|0;
+ $4 = sp + 112|0;
+ $5 = sp;
+ HEAP32[$3>>2] = $varargs;
+ $6 = (_vsnprintf($4,128,$2,$3)|0);
+ $7 = ($6|0)>(127);
+ $8 = (($6) + 1)|0;
+ if ($7) {
+ $9 = (_malloc($8)|0);
+ HEAP32[$3>>2] = $varargs;
+ (_vsnprintf($9,$8,$2,$3)|0);
+ $$0 = $9;
+ } else {
+ $$0 = $4;
+ }
+ dest=$5; stop=dest+96|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
+ HEAP32[$5>>2] = $0;
+ $10 = $1;
+ $11 = ((($5)) + 16|0);
+ HEAP32[$11>>2] = $10;
+ $12 = ((($5)) + 24|0);
+ HEAP32[$12>>2] = $$0;
+ $13 = ((($5)) + 80|0);
+ HEAP32[$13>>2] = 0;
+ _emscripten_async_run_in_main_thread($5);
+ (_emscripten_wait_for_call_v($5,inf)|0);
+ $14 = ($$0|0)==($4|0);
+ if ($14) {
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+ }
+ _free($$0);
+ $15 = HEAP32[$13>>2]|0;
+ STACKTOP = sp;return ($15|0);
+}
+function ___pthread_tsd_run_dtors() {
+ var $$02427 = 0, $$026 = 0, $$125 = 0, $$2 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
+ var $8 = 0, $9 = 0, $exitcond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (_pthread_self()|0);
+ $1 = ((($0)) + 60|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ $4 = ((($0)) + 116|0);
+ $$02427 = 0;
+ while(1) {
+ $$026 = 0;$$125 = 0;
+ while(1) {
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (($5) + ($$026<<2)|0);
+ $7 = HEAP32[$6>>2]|0;
+ $8 = ($7|0)==(0|0);
+ if ($8) {
+ $$2 = $$125;
+ } else {
+ $9 = (33304 + ($$026<<2)|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = ($10|0)==(0|0);
+ if ($11) {
+ $$2 = $$125;
+ } else {
+ HEAP32[$6>>2] = 0;
+ $12 = (Atomics_load(HEAP32,$9>>2)|0);
+ FUNCTION_TABLE_vi[$12 & 31]($7);
+ $$2 = 1;
+ }
+ }
+ $13 = (($$026) + 1)|0;
+ $exitcond = ($13|0)==(128);
+ if ($exitcond) {
+ break;
+ } else {
+ $$026 = $13;$$125 = $$2;
+ }
+ }
+ $14 = (($$02427) + 1)|0;
+ $15 = ($$2|0)!=(0);
+ $16 = ($14|0)<(4);
+ $17 = $16 & $15;
+ if ($17) {
+ $$02427 = $14;
+ } else {
+ break;
+ }
+ }
+ return;
+}
+function _emscripten_wait_for_call_v($0,$1) {
+ $0 = $0|0;
+ $1 = +$1;
+ var $$ = 0, $$01921 = 0.0, $$020$lcssa = 0, $$1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = ((($0)) + 8|0);
+ $3 = (Atomics_load(HEAP32, $2>>2)|0);
+ $4 = ($3|0)==(0);
+ if (!($4)) {
+ $$1 = $3;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+ }
+ $5 = (+_emscripten_get_now());
+ $6 = $5 + $1;
+ _emscripten_set_current_thread_status(5);
+ $7 = $5 < $6;
+ if ($7) {
+ $$01921 = $5;
+ while(1) {
+ $8 = $6 - $$01921;
+ (_emscripten_futex_wait(($2|0),0,(+$8))|0);
+ $9 = (Atomics_load(HEAP32, $2>>2)|0);
+ $10 = (+_emscripten_get_now());
+ $11 = ($9|0)==(0);
+ $12 = $10 < $6;
+ $or$cond = $11 & $12;
+ if ($or$cond) {
+ $$01921 = $10;
+ } else {
+ $$020$lcssa = $9;
+ break;
+ }
+ }
+ } else {
+ $$020$lcssa = 0;
+ }
+ _emscripten_set_current_thread_status(1);
+ $$1 = $$020$lcssa;
+ $13 = ($$1|0)==(0);
+ $$ = $13 ? -8 : 0;
+ return ($$|0);
+}
+function __do_call($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0;
+ var $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ do {
+ switch ($1|0) {
+ case 12: {
+ $2 = ((($0)) + 16|0);
+ $3 = HEAP32[$2>>2]|0;
+ $4 = ((($0)) + 24|0);
+ $5 = HEAP32[$4>>2]|0;
+ $6 = (_utime(($3|0),($5|0))|0);
+ $7 = ((($0)) + 80|0);
+ HEAP32[$7>>2] = $6;
+ break;
+ }
+ case 13: {
+ $8 = ((($0)) + 16|0);
+ $9 = HEAP32[$8>>2]|0;
+ $10 = ((($0)) + 24|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = (_utimes(($9|0),($11|0))|0);
+ $13 = ((($0)) + 80|0);
+ HEAP32[$13>>2] = $12;
+ break;
+ }
+ case 37: {
+ $14 = ((($0)) + 16|0);
+ $15 = HEAP32[$14>>2]|0;
+ $16 = (_chroot(($15|0))|0);
+ $17 = ((($0)) + 80|0);
+ HEAP32[$17>>2] = $16;
+ break;
+ }
+ case 46: {
+ $18 = ((($0)) + 16|0);
+ $19 = HEAP32[$18>>2]|0;
+ $20 = ((($0)) + 24|0);
+ $21 = HEAP32[$20>>2]|0;
+ $22 = (_fpathconf(($19|0),($21|0))|0);
+ $23 = ((($0)) + 80|0);
+ HEAP32[$23>>2] = $22;
+ break;
+ }
+ case 68: {
+ $24 = ((($0)) + 16|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = ((($0)) + 24|0);
+ $27 = HEAP32[$26>>2]|0;
+ $28 = ((($0)) + 32|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = (_confstr(($25|0),($27|0),($29|0))|0);
+ $31 = ((($0)) + 80|0);
+ HEAP32[$31>>2] = $30;
+ break;
+ }
+ case 72: {
+ $32 = ((($0)) + 16|0);
+ $33 = HEAP32[$32>>2]|0;
+ $34 = (_sysconf(($33|0))|0);
+ $35 = ((($0)) + 80|0);
+ HEAP32[$35>>2] = $34;
+ break;
+ }
+ case 110: {
+ $36 = ((($0)) + 16|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = (_atexit(($37|0))|0);
+ $39 = ((($0)) + 80|0);
+ HEAP32[$39>>2] = $38;
+ break;
+ }
+ case 111: {
+ $40 = ((($0)) + 16|0);
+ $41 = HEAP32[$40>>2]|0;
+ $42 = (_getenv(($41|0))|0);
+ $43 = ((($0)) + 80|0);
+ HEAP32[$43>>2] = $42;
+ break;
+ }
+ case 112: {
+ $44 = (_clearenv()|0);
+ $45 = ((($0)) + 80|0);
+ HEAP32[$45>>2] = $44;
+ break;
+ }
+ case 113: {
+ $46 = ((($0)) + 16|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ((($0)) + 24|0);
+ $49 = HEAP32[$48>>2]|0;
+ $50 = ((($0)) + 32|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = (_setenv(($47|0),($49|0),($51|0))|0);
+ $53 = ((($0)) + 80|0);
+ HEAP32[$53>>2] = $52;
+ break;
+ }
+ case 114: {
+ $54 = ((($0)) + 16|0);
+ $55 = HEAP32[$54>>2]|0;
+ $56 = (_unsetenv(($55|0))|0);
+ $57 = ((($0)) + 80|0);
+ HEAP32[$57>>2] = $56;
+ break;
+ }
+ case 115: {
+ $58 = ((($0)) + 16|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = (_putenv(($59|0))|0);
+ $61 = ((($0)) + 80|0);
+ HEAP32[$61>>2] = $60;
+ break;
+ }
+ case 119: {
+ _tzset();
+ break;
+ }
+ case 137: {
+ $62 = ((($0)) + 16|0);
+ $63 = HEAP32[$62>>2]|0;
+ $64 = ((($0)) + 24|0);
+ $65 = HEAP32[$64>>2]|0;
+ $66 = ((($0)) + 32|0);
+ $67 = HEAP32[$66>>2]|0;
+ $68 = ((($0)) + 40|0);
+ $69 = HEAP32[$68>>2]|0;
+ $70 = (_pthread_create(($63|0),($65|0),($67|0),($69|0))|0);
+ $71 = ((($0)) + 80|0);
+ HEAP32[$71>>2] = $70;
+ break;
+ }
+ case 138: {
+ $72 = ((($0)) + 16|0);
+ $73 = HEAP32[$72>>2]|0;
+ $74 = ((($0)) + 24|0);
+ $75 = HEAP32[$74>>2]|0;
+ $76 = (_emscripten_syscall(($73|0),($75|0))|0);
+ $77 = ((($0)) + 80|0);
+ HEAP32[$77>>2] = $76;
+ break;
+ }
+ case 1024: {
+ $78 = ((($0)) + 4|0);
+ $79 = HEAP32[$78>>2]|0;
+ FUNCTION_TABLE_v[$79 & 7]();
+ break;
+ }
+ case 1025: {
+ $80 = ((($0)) + 4|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ((($0)) + 16|0);
+ $83 = HEAP32[$82>>2]|0;
+ FUNCTION_TABLE_vi[$81 & 31]($83);
+ break;
+ }
+ case 1026: {
+ $84 = ((($0)) + 4|0);
+ $85 = HEAP32[$84>>2]|0;
+ $86 = ((($0)) + 16|0);
+ $87 = HEAP32[$86>>2]|0;
+ $88 = ((($0)) + 24|0);
+ $89 = HEAP32[$88>>2]|0;
+ FUNCTION_TABLE_vii[$85 & 63]($87,$89);
+ break;
+ }
+ case 1027: {
+ $90 = ((($0)) + 4|0);
+ $91 = HEAP32[$90>>2]|0;
+ $92 = ((($0)) + 16|0);
+ $93 = HEAP32[$92>>2]|0;
+ $94 = ((($0)) + 24|0);
+ $95 = HEAP32[$94>>2]|0;
+ $96 = ((($0)) + 32|0);
+ $97 = HEAP32[$96>>2]|0;
+ FUNCTION_TABLE_viii[$91 & 31]($93,$95,$97);
+ break;
+ }
+ case 2048: {
+ $98 = ((($0)) + 4|0);
+ $99 = HEAP32[$98>>2]|0;
+ $100 = (FUNCTION_TABLE_i[$99 & 3]()|0);
+ $101 = ((($0)) + 80|0);
+ HEAP32[$101>>2] = $100;
+ break;
+ }
+ case 2049: {
+ $102 = ((($0)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ((($0)) + 16|0);
+ $105 = HEAP32[$104>>2]|0;
+ $106 = (FUNCTION_TABLE_ii[$103 & 15]($105)|0);
+ $107 = ((($0)) + 80|0);
+ HEAP32[$107>>2] = $106;
+ break;
+ }
+ case 2050: {
+ $108 = ((($0)) + 4|0);
+ $109 = HEAP32[$108>>2]|0;
+ $110 = ((($0)) + 16|0);
+ $111 = HEAP32[$110>>2]|0;
+ $112 = ((($0)) + 24|0);
+ $113 = HEAP32[$112>>2]|0;
+ $114 = (FUNCTION_TABLE_iii[$109 & 3]($111,$113)|0);
+ $115 = ((($0)) + 80|0);
+ HEAP32[$115>>2] = $114;
+ break;
+ }
+ case 2051: {
+ $116 = ((($0)) + 4|0);
+ $117 = HEAP32[$116>>2]|0;
+ $118 = ((($0)) + 16|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = ((($0)) + 24|0);
+ $121 = HEAP32[$120>>2]|0;
+ $122 = ((($0)) + 32|0);
+ $123 = HEAP32[$122>>2]|0;
+ $124 = (FUNCTION_TABLE_iiii[$117 & 15]($119,$121,$123)|0);
+ $125 = ((($0)) + 80|0);
+ HEAP32[$125>>2] = $124;
+ break;
+ }
+ default: {
+ ___assert_fail((13816|0),(13708|0),211,(13867|0));
+ // unreachable;
+ }
+ }
+ } while(0);
+ $126 = ((($0)) + 88|0);
+ $127 = HEAP32[$126>>2]|0;
+ $128 = ($127|0)==(0);
+ if ($128) {
+ $129 = ((($0)) + 8|0);
+ HEAP32[$129>>2] = 1;
+ (_emscripten_futex_wake(($129|0),2147483647)|0);
+ return;
+ } else {
+ _free($0);
+ return;
+ }
+}
+function ___pthread_mutex_unlock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $$045 = 0, $$pre = 0, $$pre$phiZ2D = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
+ var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $5 = 0, $6 = 0;
+ var $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = ((($0)) + 8|0);
+ $2 = (Atomics_load(HEAP32,$1>>2)|0);
+ $3 = HEAP32[$0>>2]|0;
+ $4 = $3 & 15;
+ $5 = $3 & 128;
+ $6 = $5 ^ 128;
+ $7 = ($4|0)==(0);
+ if ($7) {
+ $$pre = ((($0)) + 4|0);
+ $$045 = 0;$$pre$phiZ2D = $$pre;
+ } else {
+ $8 = (_pthread_self()|0);
+ $9 = ((($0)) + 4|0);
+ $10 = (Atomics_load(HEAP32,$9>>2)|0);
+ $11 = $10 & 2147483647;
+ $12 = ((($8)) + 52|0);
+ $13 = HEAP32[$12>>2]|0;
+ $14 = ($11|0)==($13|0);
+ if (!($14)) {
+ $$0 = 1;
+ return ($$0|0);
+ }
+ $15 = $3 & 3;
+ $16 = ($15|0)==(1);
+ if ($16) {
+ $17 = ((($0)) + 20|0);
+ $18 = HEAP32[$17>>2]|0;
+ $19 = ($18|0)==(0);
+ if (!($19)) {
+ $20 = (($18) + -1)|0;
+ HEAP32[$17>>2] = $20;
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $21 = ($6|0)==(0);
+ $22 = ((($0)) + 16|0);
+ if ($21) {
+ $23 = ((($8)) + 176|0);
+ Atomics_store(HEAP32,$23>>2,$22)|0;
+ ___vm_lock();
+ }
+ $24 = ((($0)) + 12|0);
+ $25 = HEAP32[$24>>2]|0;
+ $26 = HEAP32[$22>>2]|0;
+ Atomics_store(HEAP32,$25>>2,$26)|0;
+ $27 = ((($8)) + 168|0);
+ $28 = ($26|0)==($27|0);
+ if ($28) {
+ $$045 = $8;$$pre$phiZ2D = $9;
+ } else {
+ $29 = ((($26)) + -4|0);
+ Atomics_store(HEAP32,$29>>2,$25)|0;
+ $$045 = $8;$$pre$phiZ2D = $9;
+ }
+ }
+ $30 = $3 & 8;
+ $31 = ($30|0)!=(0);
+ $32 = $31 ? 2147483647 : 0;
+ while(1) {
+ $33 = (Atomics_load(HEAP32, $$pre$phiZ2D>>2)|0);
+ $34 = (Atomics_compareExchange(HEAP32, $$pre$phiZ2D>>2, $33, $32)|0);
+ $35 = ($34|0)==($33|0);
+ if ($35) {
+ break;
+ }
+ }
+ $36 = ($6|0)!=(0);
+ $or$cond = $7 | $36;
+ if (!($or$cond)) {
+ $37 = ((($$045)) + 176|0);
+ Atomics_store(HEAP32,$37>>2,0)|0;
+ ___vm_unlock();
+ }
+ $38 = ($2|0)!=(0);
+ $39 = ($33|0)<(0);
+ $or$cond3 = $38 | $39;
+ if (!($or$cond3)) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ (_emscripten_futex_wake(($$pre$phiZ2D|0),1)|0);
+ $$0 = 0;
+ return ($$0|0);
+}
+function ___vm_lock() {
+ var $0 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8592, 1)|0);
+ return;
+}
+function ___vm_unlock() {
+ var $0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $0 = (Atomics_add(HEAP32, 8592, -1)|0);
+ $1 = ($0|0)==(1);
+ if (!($1)) {
+ return;
+ }
+ $2 = (Atomics_load(HEAP32,(34372)>>2)|0);
+ $3 = ($2|0)==(0);
+ if ($3) {
+ return;
+ }
+ (_emscripten_futex_wake((34368|0),2147483647)|0);
+ return;
+}
+function ___pthread_mutex_lock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = ($5|0)==(0);
+ if ($6) {
+ $$0 = 0;
+ return ($$0|0);
+ }
+ }
+ $7 = (___pthread_mutex_timedlock($0,0)|0);
+ $$0 = $7;
+ return ($$0|0);
+}
+function ___pthread_mutex_timedlock($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$0 = 0, $$2 = 0, $$pre = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
+ var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
+ var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond40 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $2 = HEAP32[$0>>2]|0;
+ $3 = $2 & 15;
+ $4 = ($3|0)==(0);
+ do {
+ if ($4) {
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_compareExchange(HEAP32, $5>>2, 0, 16)|0);
+ $7 = ($6|0)==(0);
+ if ($7) {
+ $$2 = 0;
+ return ($$2|0);
+ } else {
+ $$pre = HEAP32[$0>>2]|0;
+ $9 = $$pre;
+ break;
+ }
+ } else {
+ $9 = $2;
+ }
+ } while(0);
+ $8 = $9 & 128;
+ $10 = $8 ^ 128;
+ $11 = (___pthread_mutex_trylock($0)|0);
+ $12 = ($11|0)==(16);
+ if (!($12)) {
+ $$2 = $11;
+ return ($$2|0);
+ }
+ $13 = ((($0)) + 4|0);
+ $14 = ((($0)) + 8|0);
+ $$0 = 100;
+ while(1) {
+ $15 = (($$0) + -1)|0;
+ $16 = ($$0|0)==(0);
+ if ($16) {
+ break;
+ }
+ $17 = (Atomics_load(HEAP32,$13>>2)|0);
+ $18 = ($17|0)==(0);
+ if ($18) {
+ break;
+ }
+ $19 = (Atomics_load(HEAP32,$14>>2)|0);
+ $20 = ($19|0)==(0);
+ if ($20) {
+ $$0 = $15;
+ } else {
+ break;
+ }
+ }
+ $21 = (___pthread_mutex_trylock($0)|0);
+ $22 = ($21|0)==(16);
+ if (!($22)) {
+ $$2 = $21;
+ return ($$2|0);
+ }
+ L18: while(1) {
+ $23 = (Atomics_load(HEAP32,$13>>2)|0);
+ $24 = ($23|0)==(0);
+ if (!($24)) {
+ $27 = $23 & 1073741824;
+ $28 = ($27|0)==(0);
+ $29 = HEAP32[$0>>2]|0;
+ $30 = $29 & 4;
+ $31 = ($30|0)==(0);
+ $or$cond40 = $28 | $31;
+ if ($or$cond40) {
+ $32 = $29 & 3;
+ $33 = ($32|0)==(2);
+ if ($33) {
+ $34 = $23 & 2147483647;
+ $35 = (_pthread_self()|0);
+ $36 = ((($35)) + 52|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($34|0)==($37|0);
+ if ($38) {
+ $$2 = 35;
+ label = 17;
+ break;
+ }
+ }
+ $39 = (Atomics_add(HEAP32, $14>>2, 1)|0);
+ $40 = $23 | -2147483648;
+ $41 = (Atomics_compareExchange(HEAP32, $13>>2, $23, $40)|0);
+ $42 = (___timedwait($13,$40,0,$1,$10)|0);
+ $43 = (Atomics_sub(HEAP32, $14>>2, 1)|0);
+ switch ($42|0) {
+ case 0: case 4: {
+ break;
+ }
+ default: {
+ $$2 = $42;
+ label = 17;
+ break L18;
+ }
+ }
+ }
+ }
+ $25 = (___pthread_mutex_trylock($0)|0);
+ $26 = ($25|0)==(16);
+ if (!($26)) {
+ $$2 = $25;
+ label = 17;
+ break;
+ }
+ }
+ if ((label|0) == 17) {
+ return ($$2|0);
+ }
+ return (0)|0;
+}
+function ___timedwait($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ (___pthread_setcancelstate(1,($5|0))|0);
+ _emscripten_conditional_set_current_thread_status(1,4);
+ $6 = (___timedwait_cp($0,$1,$2,$3,$4)|0);
+ _emscripten_conditional_set_current_thread_status(4,1);
+ $7 = HEAP32[$5>>2]|0;
+ (___pthread_setcancelstate(($7|0),(0|0))|0);
+ STACKTOP = sp;return ($6|0);
+}
+function ___timedwait_cp($0,$1,$2,$3,$4) {
+ $0 = $0|0;
+ $1 = $1|0;
+ $2 = $2|0;
+ $3 = $3|0;
+ $4 = $4|0;
+ var $$$0$us = 0.0, $$$045 = 0.0, $$$046$us = 0.0, $$0$us = 0.0, $$0$us53 = 0.0, $$138 = 0, $$138$ph = 0, $$138$ph70 = 0, $$138$ph72 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0;
+ var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $40 = 0;
+ var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $5 = sp;
+ $6 = ($3|0)!=(0|0);
+ if ($6) {
+ $7 = ((($3)) + 4|0);
+ $8 = HEAP32[$7>>2]|0;
+ $9 = ($8>>>0)>(999999999);
+ if ($9) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $10 = (___clock_gettime(($2|0),($5|0))|0);
+ $11 = ($10|0)==(0);
+ if (!($11)) {
+ $$138 = 22;
+ STACKTOP = sp;return ($$138|0);
+ }
+ $12 = HEAP32[$3>>2]|0;
+ $13 = HEAP32[$5>>2]|0;
+ $14 = (($12) - ($13))|0;
+ HEAP32[$5>>2] = $14;
+ $15 = HEAP32[$7>>2]|0;
+ $16 = ((($5)) + 4|0);
+ $17 = HEAP32[$16>>2]|0;
+ $18 = (($15) - ($17))|0;
+ HEAP32[$16>>2] = $18;
+ $19 = ($18|0)<(0);
+ if ($19) {
+ $20 = (($14) + -1)|0;
+ HEAP32[$5>>2] = $20;
+ $21 = (($18) + 1000000000)|0;
+ HEAP32[$16>>2] = $21;
+ $23 = $20;
+ } else {
+ $23 = $14;
+ }
+ $22 = ($23|0)<(0);
+ if ($22) {
+ $$138 = 110;
+ STACKTOP = sp;return ($$138|0);
+ }
+ }
+ $24 = (_emscripten_is_main_runtime_thread()|0);
+ $25 = ($24|0)!=(0);
+ $$$045 = $25 ? 1.0 : 100.0;
+ if ($25) {
+ L15: while(1) {
+ $26 = (_pthread_self()|0);
+ $27 = (__pthread_isduecanceled($26)|0);
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $$138$ph = 125;
+ break;
+ }
+ _emscripten_main_thread_process_queued_calls();
+ if ($6) {
+ $29 = (+__pthread_msecs_until($3));
+ $30 = !($29 <= 0.0);
+ $31 = $29 > 100.0;
+ $$0$us = $31 ? 100.0 : $29;
+ $32 = $$0$us > 1.0;
+ $$$0$us = $32 ? 1.0 : $$0$us;
+ if ($30) {
+ $$$046$us = $$$0$us;
+ } else {
+ $$138$ph = 110;
+ break;
+ }
+ } else {
+ $$$046$us = $$$045;
+ }
+ $33 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$046$us))|0);
+ $34 = (0 - ($33))|0;
+ switch ($34|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph = $34;
+ break L15;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L15;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph;
+ STACKTOP = sp;return ($$138|0);
+ }
+ if (!($6)) {
+ L27: while(1) {
+ $43 = (_pthread_self()|0);
+ $44 = (__pthread_isduecanceled($43)|0);
+ $45 = ($44|0)==(0);
+ if (!($45)) {
+ $$138$ph72 = 125;
+ break;
+ }
+ $46 = (_emscripten_futex_wait(($0|0),($1|0),(+$$$045))|0);
+ $47 = (0 - ($46))|0;
+ switch ($47|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph72 = $47;
+ break L27;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L27;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph72;
+ STACKTOP = sp;return ($$138|0);
+ }
+ L34: while(1) {
+ $35 = (_pthread_self()|0);
+ $36 = (__pthread_isduecanceled($35)|0);
+ $37 = ($36|0)==(0);
+ if (!($37)) {
+ $$138$ph70 = 125;
+ break;
+ }
+ $38 = (+__pthread_msecs_until($3));
+ $39 = !($38 <= 0.0);
+ if (!($39)) {
+ $$138$ph70 = 110;
+ break;
+ }
+ $40 = $38 > 100.0;
+ $$0$us53 = $40 ? 100.0 : $38;
+ $41 = (_emscripten_futex_wait(($0|0),($1|0),(+$$0$us53))|0);
+ $42 = (0 - ($41))|0;
+ switch ($42|0) {
+ case 110: {
+ break;
+ }
+ case 4: case 125: {
+ $$138$ph70 = $42;
+ break L34;
+ break;
+ }
+ default: {
+ $$138 = 0;
+ label = 21;
+ break L34;
+ }
+ }
+ }
+ if ((label|0) == 21) {
+ STACKTOP = sp;return ($$138|0);
+ }
+ $$138 = $$138$ph70;
+ STACKTOP = sp;return ($$138|0);
+}
+function __pthread_isduecanceled($0) {
+ $0 = $0|0;
+ var $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = ($1|0)==(2);
+ $3 = $2&1;
+ return ($3|0);
+}
+function __pthread_msecs_until($0) {
+ $0 = $0|0;
+ var $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
sp = STACKTOP;
STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
$1 = sp;
- $2 = ($0>>>0)<(245);
+ (_gettimeofday(($1|0),(0|0))|0);
+ $2 = HEAP32[$1>>2]|0;
+ $3 = (+($2|0));
+ $4 = $3 * 1000.0;
+ $5 = ((($1)) + 4|0);
+ $6 = HEAP32[$5>>2]|0;
+ $7 = (+($6|0));
+ $8 = $7 * 0.001;
+ $9 = $4 + $8;
+ $10 = HEAP32[$0>>2]|0;
+ $11 = (+($10|0));
+ $12 = $11 * 1000.0;
+ $13 = ((($0)) + 4|0);
+ $14 = HEAP32[$13>>2]|0;
+ $15 = (+($14|0));
+ $16 = $15 * 9.9999999999999995E-7;
+ $17 = $12 + $16;
+ $18 = $17 - $9;
+ STACKTOP = sp;return (+$18);
+}
+function ___pthread_mutex_trylock($0) {
+ $0 = $0|0;
+ var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = $1 & 15;
+ $3 = ($2|0)==(0);
+ if ($3) {
+ $4 = ((($0)) + 4|0);
+ $5 = (Atomics_compareExchange(HEAP32, $4>>2, 0, 16)|0);
+ $6 = $5 & 16;
+ $$0 = $6;
+ return ($$0|0);
+ } else {
+ $7 = (___pthread_mutex_trylock_owner($0)|0);
+ $$0 = $7;
+ return ($$0|0);
+ }
+ return (0)|0;
+}
+function ___pthread_mutex_trylock_owner($0) {
+ $0 = $0|0;
+ var $$ = 0, $$1 = 0, $$154 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0;
+ var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0;
+ var $43 = 0, $44 = 0, $45 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond57 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ $1 = HEAP32[$0>>2]|0;
+ $2 = (_pthread_self()|0);
+ $3 = ((($2)) + 52|0);
+ $4 = HEAP32[$3>>2]|0;
+ $5 = ((($0)) + 4|0);
+ $6 = (Atomics_load(HEAP32,$5>>2)|0);
+ $7 = $6 & 2147483647;
+ $8 = ($7|0)==($4|0);
+ $9 = $1 & 3;
+ $10 = ($9|0)==(1);
+ $or$cond = $10 & $8;
+ if ($or$cond) {
+ $11 = ((($0)) + 20|0);
+ $12 = HEAP32[$11>>2]|0;
+ $13 = ($12>>>0)>(2147483646);
+ if ($13) {
+ $$1 = 11;
+ return ($$1|0);
+ }
+ $14 = (($12) + 1)|0;
+ HEAP32[$11>>2] = $14;
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $15 = ($7|0)==(2147483647);
+ if ($15) {
+ $$1 = 131;
+ return ($$1|0);
+ }
+ $16 = HEAP32[$0>>2]|0;
+ $17 = $16 & 128;
+ $18 = ($17|0)==(0);
+ if ($18) {
+ $$154 = $4;
+ } else {
+ $19 = ((($2)) + 172|0);
+ $20 = HEAP32[$19>>2]|0;
+ $21 = ($20|0)==(0);
+ if ($21) {
+ HEAP32[$19>>2] = -12;
+ }
+ $22 = ((($0)) + 8|0);
+ $23 = (Atomics_load(HEAP32,$22>>2)|0);
+ $24 = ($23|0)==(0);
+ $25 = $4 | -2147483648;
+ $$ = $24 ? $4 : $25;
+ $26 = ((($0)) + 16|0);
+ $27 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$27>>2,$26)|0;
+ $$154 = $$;
+ }
+ $28 = ($7|0)!=(0);
+ if ($28) {
+ $29 = $6 & 1073741824;
+ $30 = ($29|0)==(0);
+ $31 = $1 & 4;
+ $32 = ($31|0)==(0);
+ $or$cond57 = $32 | $30;
+ if (!($or$cond57)) {
+ label = 11;
+ }
+ } else {
+ label = 11;
+ }
+ if ((label|0) == 11) {
+ $33 = (Atomics_compareExchange(HEAP32, $5>>2, $6, $$154)|0);
+ $34 = ($33|0)==($6|0);
+ if ($34) {
+ $36 = ((($2)) + 168|0);
+ $37 = (Atomics_load(HEAP32,$36>>2)|0);
+ $38 = ((($0)) + 16|0);
+ HEAP32[$38>>2] = $37;
+ $39 = ((($0)) + 12|0);
+ HEAP32[$39>>2] = $36;
+ $40 = ($37|0)==($36|0);
+ if (!($40)) {
+ $41 = ((($37)) + -4|0);
+ Atomics_store(HEAP32,$41>>2,$38)|0;
+ }
+ Atomics_store(HEAP32,$36>>2,$38)|0;
+ $42 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$42>>2,0)|0;
+ if (!($28)) {
+ $$1 = 0;
+ return ($$1|0);
+ }
+ $43 = ((($0)) + 20|0);
+ HEAP32[$43>>2] = 0;
+ $44 = HEAP32[$0>>2]|0;
+ $45 = $44 | 8;
+ HEAP32[$0>>2] = $45;
+ $$1 = 130;
+ return ($$1|0);
+ }
+ }
+ $35 = ((($2)) + 176|0);
+ Atomics_store(HEAP32,$35>>2,0)|0;
+ $$1 = 16;
+ return ($$1|0);
+}
+function _pthread_mutexattr_destroy($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ return 0;
+}
+function _pthread_mutexattr_init($0) {
+ $0 = $0|0;
+ var label = 0, sp = 0;
+ sp = STACKTOP;
+ HEAP32[$0>>2] = 0;
+ return 0;
+}
+function _pthread_mutex_init($0,$1) {
+ $0 = $0|0;
+ $1 = $1|0;
+ var $$sroa$0 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
+ $$sroa$0 = sp;
+ ;HEAP32[$$sroa$0>>2]=0|0;HEAP32[$$sroa$0+4>>2]=0|0;HEAP32[$$sroa$0+8>>2]=0|0;HEAP32[$$sroa$0+12>>2]=0|0;HEAP32[$$sroa$0+16>>2]=0|0;HEAP32[$$sroa$0+20>>2]=0|0;HEAP32[$$sroa$0+24>>2]=0|0;
+ ;HEAP32[$0>>2]=HEAP32[$$sroa$0>>2]|0;HEAP32[$0+4>>2]=HEAP32[$$sroa$0+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[$$sroa$0+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[$$sroa$0+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[$$sroa$0+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[$$sroa$0+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[$$sroa$0+24>>2]|0;
+ $2 = ($1|0)==(0|0);
+ if ($2) {
+ STACKTOP = sp;return 0;
+ }
+ $3 = HEAP32[$1>>2]|0;
+ HEAP32[$0>>2] = $3;
+ STACKTOP = sp;return 0;
+}
+function _malloc($0) {
+ $0 = $0|0;
+ var $$$0192$i = 0, $$$0193$i = 0, $$$4230$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i17$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0198 = 0, $$0200 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
+ var $$0212$i$i = 0, $$024363$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1 = 0, $$1196$i = 0;
+ var $$1198$i = 0, $$124462$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2 = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i202 = 0, $$3229$i = 0, $$3235$i = 0, $$3350$i = 0;
+ var $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0, $$4230$i = 0, $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$7$i = 0, $$7239$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i18$i = 0, $$pre$i211 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i19$iZ2D = 0;
+ var $$pre$phi$i212Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0, $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i205 = 0, $$sink3$i = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0;
+ var $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0;
+ var $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0;
+ var $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0;
+ var $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0;
+ var $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0, $1088 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
+ var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0;
+ var $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0;
+ var $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0;
+ var $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0;
+ var $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0;
+ var $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0;
+ var $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0;
+ var $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0;
+ var $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0;
+ var $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0;
+ var $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0;
+ var $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0;
+ var $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0;
+ var $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0;
+ var $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0;
+ var $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0;
+ var $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0;
+ var $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0;
+ var $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0;
+ var $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0;
+ var $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0;
+ var $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0;
+ var $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0;
+ var $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0;
+ var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0;
+ var $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0;
+ var $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0;
+ var $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0;
+ var $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0;
+ var $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0;
+ var $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0;
+ var $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0;
+ var $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0;
+ var $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0;
+ var $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0;
+ var $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0;
+ var $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0;
+ var $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0;
+ var $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0;
+ var $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0;
+ var $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0;
+ var $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0;
+ var $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0;
+ var $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0;
+ var $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0;
+ var $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0;
+ var $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0;
+ var $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0;
+ var $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0;
+ var $cond$i$i = 0, $cond$i209 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i21$i = 0, $not$$i210 = 0, $not$1$i = 0, $not$1$i204 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0, $or$cond$i = 0, $or$cond$i213 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond12$i = 0, $or$cond2$i = 0;
+ var $or$cond2$i214 = 0, $or$cond43$i = 0, $or$cond5$i = 0, $or$cond7$i = 0, $or$cond9$i = 0, label = 0, sp = 0;
+ sp = STACKTOP;
+ STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
+ $1 = sp + 4|0;
+ $2 = sp;
+ $3 = HEAP32[8850]|0;
+ $4 = ($3|0)==(0);
+ if ($4) {
+ (___pthread_mutex_lock(35424)|0);
+ $5 = HEAP32[8850]|0;
+ $6 = ($5|0)==(0);
+ if ($6) {
+ HEAP32[(35408)>>2] = 4096;
+ HEAP32[(35404)>>2] = 4096;
+ HEAP32[(35412)>>2] = -1;
+ HEAP32[(35416)>>2] = -1;
+ HEAP32[(35420)>>2] = 2;
+ HEAP32[(35896)>>2] = 2;
+ $7 = (_pthread_mutexattr_init($1)|0);
+ $8 = ($7|0)==(0);
+ if ($8) {
+ $9 = (_pthread_mutex_init((35900),$1)|0);
+ $10 = ($9|0)==(0);
+ if ($10) {
+ }
+ }
+ $11 = $2;
+ $12 = $11 & -16;
+ $13 = $12 ^ 1431655768;
+ HEAP32[$2>>2] = $13;
+ Atomics_store(HEAP32,8850,$13)|0;
+ }
+ (___pthread_mutex_unlock(35424)|0);
+ }
+ $14 = HEAP32[(35896)>>2]|0;
+ $15 = $14 & 2;
+ $16 = ($15|0)==(0);
+ if (!($16)) {
+ $17 = (___pthread_mutex_lock((35900))|0);
+ $18 = ($17|0)==(0);
+ if (!($18)) {
+ $$1 = 0;
+ STACKTOP = sp;return ($$1|0);
+ }
+ }
+ $19 = ($0>>>0)<(245);
do {
- if ($2) {
- $3 = ($0>>>0)<(11);
- $4 = (($0) + 11)|0;
- $5 = $4 & -8;
- $6 = $3 ? 16 : $5;
- $7 = $6 >>> 3;
- $8 = HEAP32[8254]|0;
- $9 = $8 >>> $7;
- $10 = $9 & 3;
- $11 = ($10|0)==(0);
- if (!($11)) {
- $12 = $9 & 1;
- $13 = $12 ^ 1;
- $14 = (($13) + ($7))|0;
- $15 = $14 << 1;
- $16 = (33056 + ($15<<2)|0);
- $17 = ((($16)) + 8|0);
- $18 = HEAP32[$17>>2]|0;
- $19 = ((($18)) + 8|0);
- $20 = HEAP32[$19>>2]|0;
- $21 = ($16|0)==($20|0);
+ if ($19) {
+ $20 = ($0>>>0)<(11);
+ $21 = (($0) + 11)|0;
+ $22 = $21 & -8;
+ $23 = $20 ? 16 : $22;
+ $24 = $23 >>> 3;
+ $25 = HEAP32[8863]|0;
+ $26 = $25 >>> $24;
+ $27 = $26 & 3;
+ $28 = ($27|0)==(0);
+ if (!($28)) {
+ $29 = $26 & 1;
+ $30 = $29 ^ 1;
+ $31 = (($30) + ($24))|0;
+ $32 = $31 << 1;
+ $33 = (35492 + ($32<<2)|0);
+ $34 = ((($33)) + 8|0);
+ $35 = HEAP32[$34>>2]|0;
+ $36 = ((($35)) + 8|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($33|0)==($37|0);
do {
- if ($21) {
- $22 = 1 << $14;
- $23 = $22 ^ -1;
- $24 = $8 & $23;
- HEAP32[8254] = $24;
+ if ($38) {
+ $39 = 1 << $31;
+ $40 = $39 ^ -1;
+ $41 = $25 & $40;
+ HEAP32[8863] = $41;
} else {
- $25 = HEAP32[(33032)>>2]|0;
- $26 = ($20>>>0)<($25>>>0);
- if ($26) {
+ $42 = HEAP32[(35468)>>2]|0;
+ $43 = ($37>>>0)<($42>>>0);
+ if ($43) {
_abort();
// unreachable;
}
- $27 = ((($20)) + 12|0);
- $28 = HEAP32[$27>>2]|0;
- $29 = ($28|0)==($18|0);
- if ($29) {
- HEAP32[$27>>2] = $16;
- HEAP32[$17>>2] = $20;
+ $44 = ((($37)) + 12|0);
+ $45 = HEAP32[$44>>2]|0;
+ $46 = ($45|0)==($35|0);
+ if ($46) {
+ HEAP32[$44>>2] = $33;
+ HEAP32[$34>>2] = $37;
break;
} else {
_abort();
@@ -24050,79 +30381,79 @@ function _malloc($0) {
}
}
} while(0);
- $30 = $14 << 3;
- $31 = $30 | 3;
- $32 = ((($18)) + 4|0);
- HEAP32[$32>>2] = $31;
- $33 = (($18) + ($30)|0);
- $34 = ((($33)) + 4|0);
- $35 = HEAP32[$34>>2]|0;
- $36 = $35 | 1;
- HEAP32[$34>>2] = $36;
- $$0 = $19;
- STACKTOP = sp;return ($$0|0);
+ $47 = $31 << 3;
+ $48 = $47 | 3;
+ $49 = ((($35)) + 4|0);
+ HEAP32[$49>>2] = $48;
+ $50 = (($35) + ($47)|0);
+ $51 = ((($50)) + 4|0);
+ $52 = HEAP32[$51>>2]|0;
+ $53 = $52 | 1;
+ HEAP32[$51>>2] = $53;
+ $$2 = $36;
+ break;
}
- $37 = HEAP32[(33024)>>2]|0;
- $38 = ($6>>>0)>($37>>>0);
- if ($38) {
- $39 = ($9|0)==(0);
- if (!($39)) {
- $40 = $9 << $7;
- $41 = 2 << $7;
- $42 = (0 - ($41))|0;
- $43 = $41 | $42;
- $44 = $40 & $43;
- $45 = (0 - ($44))|0;
- $46 = $44 & $45;
- $47 = (($46) + -1)|0;
- $48 = $47 >>> 12;
- $49 = $48 & 16;
- $50 = $47 >>> $49;
- $51 = $50 >>> 5;
- $52 = $51 & 8;
- $53 = $52 | $49;
- $54 = $50 >>> $52;
- $55 = $54 >>> 2;
- $56 = $55 & 4;
- $57 = $53 | $56;
- $58 = $54 >>> $56;
- $59 = $58 >>> 1;
- $60 = $59 & 2;
- $61 = $57 | $60;
- $62 = $58 >>> $60;
- $63 = $62 >>> 1;
- $64 = $63 & 1;
- $65 = $61 | $64;
- $66 = $62 >>> $64;
- $67 = (($65) + ($66))|0;
- $68 = $67 << 1;
- $69 = (33056 + ($68<<2)|0);
- $70 = ((($69)) + 8|0);
- $71 = HEAP32[$70>>2]|0;
- $72 = ((($71)) + 8|0);
- $73 = HEAP32[$72>>2]|0;
- $74 = ($69|0)==($73|0);
+ $54 = HEAP32[(35460)>>2]|0;
+ $55 = ($23>>>0)>($54>>>0);
+ if ($55) {
+ $56 = ($26|0)==(0);
+ if (!($56)) {
+ $57 = $26 << $24;
+ $58 = 2 << $24;
+ $59 = (0 - ($58))|0;
+ $60 = $58 | $59;
+ $61 = $57 & $60;
+ $62 = (0 - ($61))|0;
+ $63 = $61 & $62;
+ $64 = (($63) + -1)|0;
+ $65 = $64 >>> 12;
+ $66 = $65 & 16;
+ $67 = $64 >>> $66;
+ $68 = $67 >>> 5;
+ $69 = $68 & 8;
+ $70 = $69 | $66;
+ $71 = $67 >>> $69;
+ $72 = $71 >>> 2;
+ $73 = $72 & 4;
+ $74 = $70 | $73;
+ $75 = $71 >>> $73;
+ $76 = $75 >>> 1;
+ $77 = $76 & 2;
+ $78 = $74 | $77;
+ $79 = $75 >>> $77;
+ $80 = $79 >>> 1;
+ $81 = $80 & 1;
+ $82 = $78 | $81;
+ $83 = $79 >>> $81;
+ $84 = (($82) + ($83))|0;
+ $85 = $84 << 1;
+ $86 = (35492 + ($85<<2)|0);
+ $87 = ((($86)) + 8|0);
+ $88 = HEAP32[$87>>2]|0;
+ $89 = ((($88)) + 8|0);
+ $90 = HEAP32[$89>>2]|0;
+ $91 = ($86|0)==($90|0);
do {
- if ($74) {
- $75 = 1 << $67;
- $76 = $75 ^ -1;
- $77 = $8 & $76;
- HEAP32[8254] = $77;
- $98 = $77;
+ if ($91) {
+ $92 = 1 << $84;
+ $93 = $92 ^ -1;
+ $94 = $25 & $93;
+ HEAP32[8863] = $94;
+ $115 = $94;
} else {
- $78 = HEAP32[(33032)>>2]|0;
- $79 = ($73>>>0)<($78>>>0);
- if ($79) {
+ $95 = HEAP32[(35468)>>2]|0;
+ $96 = ($90>>>0)<($95>>>0);
+ if ($96) {
_abort();
// unreachable;
}
- $80 = ((($73)) + 12|0);
- $81 = HEAP32[$80>>2]|0;
- $82 = ($81|0)==($71|0);
- if ($82) {
- HEAP32[$80>>2] = $69;
- HEAP32[$70>>2] = $73;
- $98 = $8;
+ $97 = ((($90)) + 12|0);
+ $98 = HEAP32[$97>>2]|0;
+ $99 = ($98|0)==($88|0);
+ if ($99) {
+ HEAP32[$97>>2] = $86;
+ HEAP32[$87>>2] = $90;
+ $115 = $25;
break;
} else {
_abort();
@@ -24130,178 +30461,179 @@ function _malloc($0) {
}
}
} while(0);
- $83 = $67 << 3;
- $84 = (($83) - ($6))|0;
- $85 = $6 | 3;
- $86 = ((($71)) + 4|0);
- HEAP32[$86>>2] = $85;
- $87 = (($71) + ($6)|0);
- $88 = $84 | 1;
- $89 = ((($87)) + 4|0);
- HEAP32[$89>>2] = $88;
- $90 = (($87) + ($84)|0);
- HEAP32[$90>>2] = $84;
- $91 = ($37|0)==(0);
- if (!($91)) {
- $92 = HEAP32[(33036)>>2]|0;
- $93 = $37 >>> 3;
- $94 = $93 << 1;
- $95 = (33056 + ($94<<2)|0);
- $96 = 1 << $93;
- $97 = $98 & $96;
- $99 = ($97|0)==(0);
- if ($99) {
- $100 = $98 | $96;
- HEAP32[8254] = $100;
- $$pre = ((($95)) + 8|0);
- $$0199 = $95;$$pre$phiZ2D = $$pre;
+ $100 = $84 << 3;
+ $101 = (($100) - ($23))|0;
+ $102 = $23 | 3;
+ $103 = ((($88)) + 4|0);
+ HEAP32[$103>>2] = $102;
+ $104 = (($88) + ($23)|0);
+ $105 = $101 | 1;
+ $106 = ((($104)) + 4|0);
+ HEAP32[$106>>2] = $105;
+ $107 = (($104) + ($101)|0);
+ HEAP32[$107>>2] = $101;
+ $108 = ($54|0)==(0);
+ if (!($108)) {
+ $109 = HEAP32[(35472)>>2]|0;
+ $110 = $54 >>> 3;
+ $111 = $110 << 1;
+ $112 = (35492 + ($111<<2)|0);
+ $113 = 1 << $110;
+ $114 = $115 & $113;
+ $116 = ($114|0)==(0);
+ if ($116) {
+ $117 = $115 | $113;
+ HEAP32[8863] = $117;
+ $$pre = ((($112)) + 8|0);
+ $$0200 = $112;$$pre$phiZ2D = $$pre;
} else {
- $101 = ((($95)) + 8|0);
- $102 = HEAP32[$101>>2]|0;
- $103 = HEAP32[(33032)>>2]|0;
- $104 = ($102>>>0)<($103>>>0);
- if ($104) {
+ $118 = ((($112)) + 8|0);
+ $119 = HEAP32[$118>>2]|0;
+ $120 = HEAP32[(35468)>>2]|0;
+ $121 = ($119>>>0)<($120>>>0);
+ if ($121) {
_abort();
// unreachable;
} else {
- $$0199 = $102;$$pre$phiZ2D = $101;
+ $$0200 = $119;$$pre$phiZ2D = $118;
}
}
- HEAP32[$$pre$phiZ2D>>2] = $92;
- $105 = ((($$0199)) + 12|0);
- HEAP32[$105>>2] = $92;
- $106 = ((($92)) + 8|0);
- HEAP32[$106>>2] = $$0199;
- $107 = ((($92)) + 12|0);
- HEAP32[$107>>2] = $95;
+ HEAP32[$$pre$phiZ2D>>2] = $109;
+ $122 = ((($$0200)) + 12|0);
+ HEAP32[$122>>2] = $109;
+ $123 = ((($109)) + 8|0);
+ HEAP32[$123>>2] = $$0200;
+ $124 = ((($109)) + 12|0);
+ HEAP32[$124>>2] = $112;
}
- HEAP32[(33024)>>2] = $84;
- HEAP32[(33036)>>2] = $87;
- $$0 = $72;
- STACKTOP = sp;return ($$0|0);
- }
- $108 = HEAP32[(33020)>>2]|0;
- $109 = ($108|0)==(0);
- if ($109) {
- $$0197 = $6;
+ HEAP32[(35460)>>2] = $101;
+ HEAP32[(35472)>>2] = $104;
+ $$2 = $89;
+ break;
+ }
+ $125 = HEAP32[(35456)>>2]|0;
+ $126 = ($125|0)==(0);
+ if ($126) {
+ $$0198 = $23;
+ label = 153;
} else {
- $110 = (0 - ($108))|0;
- $111 = $108 & $110;
- $112 = (($111) + -1)|0;
- $113 = $112 >>> 12;
- $114 = $113 & 16;
- $115 = $112 >>> $114;
- $116 = $115 >>> 5;
- $117 = $116 & 8;
- $118 = $117 | $114;
- $119 = $115 >>> $117;
- $120 = $119 >>> 2;
- $121 = $120 & 4;
- $122 = $118 | $121;
- $123 = $119 >>> $121;
- $124 = $123 >>> 1;
- $125 = $124 & 2;
- $126 = $122 | $125;
- $127 = $123 >>> $125;
- $128 = $127 >>> 1;
- $129 = $128 & 1;
- $130 = $126 | $129;
- $131 = $127 >>> $129;
- $132 = (($130) + ($131))|0;
- $133 = (33320 + ($132<<2)|0);
- $134 = HEAP32[$133>>2]|0;
- $135 = ((($134)) + 4|0);
- $136 = HEAP32[$135>>2]|0;
- $137 = $136 & -8;
- $138 = (($137) - ($6))|0;
- $139 = ((($134)) + 16|0);
- $140 = HEAP32[$139>>2]|0;
- $not$5$i = ($140|0)==(0|0);
+ $127 = (0 - ($125))|0;
+ $128 = $125 & $127;
+ $129 = (($128) + -1)|0;
+ $130 = $129 >>> 12;
+ $131 = $130 & 16;
+ $132 = $129 >>> $131;
+ $133 = $132 >>> 5;
+ $134 = $133 & 8;
+ $135 = $134 | $131;
+ $136 = $132 >>> $134;
+ $137 = $136 >>> 2;
+ $138 = $137 & 4;
+ $139 = $135 | $138;
+ $140 = $136 >>> $138;
+ $141 = $140 >>> 1;
+ $142 = $141 & 2;
+ $143 = $139 | $142;
+ $144 = $140 >>> $142;
+ $145 = $144 >>> 1;
+ $146 = $145 & 1;
+ $147 = $143 | $146;
+ $148 = $144 >>> $146;
+ $149 = (($147) + ($148))|0;
+ $150 = (35756 + ($149<<2)|0);
+ $151 = HEAP32[$150>>2]|0;
+ $152 = ((($151)) + 4|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = $153 & -8;
+ $155 = (($154) - ($23))|0;
+ $156 = ((($151)) + 16|0);
+ $157 = HEAP32[$156>>2]|0;
+ $not$5$i = ($157|0)==(0|0);
$$sink16$i = $not$5$i&1;
- $141 = (((($134)) + 16|0) + ($$sink16$i<<2)|0);
- $142 = HEAP32[$141>>2]|0;
- $143 = ($142|0)==(0|0);
- if ($143) {
- $$0192$lcssa$i = $134;$$0193$lcssa$i = $138;
+ $158 = (((($151)) + 16|0) + ($$sink16$i<<2)|0);
+ $159 = HEAP32[$158>>2]|0;
+ $160 = ($159|0)==(0|0);
+ if ($160) {
+ $$0192$lcssa$i = $151;$$0193$lcssa$i = $155;
} else {
- $$01928$i = $134;$$01937$i = $138;$145 = $142;
+ $$01928$i = $151;$$01937$i = $155;$162 = $159;
while(1) {
- $144 = ((($145)) + 4|0);
- $146 = HEAP32[$144>>2]|0;
- $147 = $146 & -8;
- $148 = (($147) - ($6))|0;
- $149 = ($148>>>0)<($$01937$i>>>0);
- $$$0193$i = $149 ? $148 : $$01937$i;
- $$$0192$i = $149 ? $145 : $$01928$i;
- $150 = ((($145)) + 16|0);
- $151 = HEAP32[$150>>2]|0;
- $not$$i = ($151|0)==(0|0);
+ $161 = ((($162)) + 4|0);
+ $163 = HEAP32[$161>>2]|0;
+ $164 = $163 & -8;
+ $165 = (($164) - ($23))|0;
+ $166 = ($165>>>0)<($$01937$i>>>0);
+ $$$0193$i = $166 ? $165 : $$01937$i;
+ $$$0192$i = $166 ? $162 : $$01928$i;
+ $167 = ((($162)) + 16|0);
+ $168 = HEAP32[$167>>2]|0;
+ $not$$i = ($168|0)==(0|0);
$$sink1$i = $not$$i&1;
- $152 = (((($145)) + 16|0) + ($$sink1$i<<2)|0);
- $153 = HEAP32[$152>>2]|0;
- $154 = ($153|0)==(0|0);
- if ($154) {
+ $169 = (((($162)) + 16|0) + ($$sink1$i<<2)|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==(0|0);
+ if ($171) {
$$0192$lcssa$i = $$$0192$i;$$0193$lcssa$i = $$$0193$i;
break;
} else {
- $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$145 = $153;
+ $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$162 = $170;
}
}
}
- $155 = HEAP32[(33032)>>2]|0;
- $156 = ($$0192$lcssa$i>>>0)<($155>>>0);
- if ($156) {
+ $172 = HEAP32[(35468)>>2]|0;
+ $173 = ($$0192$lcssa$i>>>0)<($172>>>0);
+ if ($173) {
_abort();
// unreachable;
}
- $157 = (($$0192$lcssa$i) + ($6)|0);
- $158 = ($$0192$lcssa$i>>>0)<($157>>>0);
- if (!($158)) {
+ $174 = (($$0192$lcssa$i) + ($23)|0);
+ $175 = ($$0192$lcssa$i>>>0)<($174>>>0);
+ if (!($175)) {
_abort();
// unreachable;
}
- $159 = ((($$0192$lcssa$i)) + 24|0);
- $160 = HEAP32[$159>>2]|0;
- $161 = ((($$0192$lcssa$i)) + 12|0);
- $162 = HEAP32[$161>>2]|0;
- $163 = ($162|0)==($$0192$lcssa$i|0);
+ $176 = ((($$0192$lcssa$i)) + 24|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ((($$0192$lcssa$i)) + 12|0);
+ $179 = HEAP32[$178>>2]|0;
+ $180 = ($179|0)==($$0192$lcssa$i|0);
do {
- if ($163) {
- $173 = ((($$0192$lcssa$i)) + 20|0);
- $174 = HEAP32[$173>>2]|0;
- $175 = ($174|0)==(0|0);
- if ($175) {
- $176 = ((($$0192$lcssa$i)) + 16|0);
- $177 = HEAP32[$176>>2]|0;
- $178 = ($177|0)==(0|0);
- if ($178) {
+ if ($180) {
+ $190 = ((($$0192$lcssa$i)) + 20|0);
+ $191 = HEAP32[$190>>2]|0;
+ $192 = ($191|0)==(0|0);
+ if ($192) {
+ $193 = ((($$0192$lcssa$i)) + 16|0);
+ $194 = HEAP32[$193>>2]|0;
+ $195 = ($194|0)==(0|0);
+ if ($195) {
$$3$i = 0;
break;
} else {
- $$1196$i = $177;$$1198$i = $176;
+ $$1196$i = $194;$$1198$i = $193;
}
} else {
- $$1196$i = $174;$$1198$i = $173;
+ $$1196$i = $191;$$1198$i = $190;
}
while(1) {
- $179 = ((($$1196$i)) + 20|0);
- $180 = HEAP32[$179>>2]|0;
- $181 = ($180|0)==(0|0);
- if (!($181)) {
- $$1196$i = $180;$$1198$i = $179;
+ $196 = ((($$1196$i)) + 20|0);
+ $197 = HEAP32[$196>>2]|0;
+ $198 = ($197|0)==(0|0);
+ if (!($198)) {
+ $$1196$i = $197;$$1198$i = $196;
continue;
}
- $182 = ((($$1196$i)) + 16|0);
- $183 = HEAP32[$182>>2]|0;
- $184 = ($183|0)==(0|0);
- if ($184) {
+ $199 = ((($$1196$i)) + 16|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($200|0)==(0|0);
+ if ($201) {
break;
} else {
- $$1196$i = $183;$$1198$i = $182;
+ $$1196$i = $200;$$1198$i = $199;
}
}
- $185 = ($$1198$i>>>0)<($155>>>0);
- if ($185) {
+ $202 = ($$1198$i>>>0)<($172>>>0);
+ if ($202) {
_abort();
// unreachable;
} else {
@@ -24310,27 +30642,27 @@ function _malloc($0) {
break;
}
} else {
- $164 = ((($$0192$lcssa$i)) + 8|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165>>>0)<($155>>>0);
- if ($166) {
+ $181 = ((($$0192$lcssa$i)) + 8|0);
+ $182 = HEAP32[$181>>2]|0;
+ $183 = ($182>>>0)<($172>>>0);
+ if ($183) {
_abort();
// unreachable;
}
- $167 = ((($165)) + 12|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = ($168|0)==($$0192$lcssa$i|0);
- if (!($169)) {
+ $184 = ((($182)) + 12|0);
+ $185 = HEAP32[$184>>2]|0;
+ $186 = ($185|0)==($$0192$lcssa$i|0);
+ if (!($186)) {
_abort();
// unreachable;
}
- $170 = ((($162)) + 8|0);
- $171 = HEAP32[$170>>2]|0;
- $172 = ($171|0)==($$0192$lcssa$i|0);
- if ($172) {
- HEAP32[$167>>2] = $162;
- HEAP32[$170>>2] = $165;
- $$3$i = $162;
+ $187 = ((($179)) + 8|0);
+ $188 = HEAP32[$187>>2]|0;
+ $189 = ($188|0)==($$0192$lcssa$i|0);
+ if ($189) {
+ HEAP32[$184>>2] = $179;
+ HEAP32[$187>>2] = $182;
+ $$3$i = $179;
break;
} else {
_abort();
@@ -24338,397 +30670,401 @@ function _malloc($0) {
}
}
} while(0);
- $186 = ($160|0)==(0|0);
- L73: do {
- if (!($186)) {
- $187 = ((($$0192$lcssa$i)) + 28|0);
- $188 = HEAP32[$187>>2]|0;
- $189 = (33320 + ($188<<2)|0);
- $190 = HEAP32[$189>>2]|0;
- $191 = ($$0192$lcssa$i|0)==($190|0);
+ $203 = ($177|0)==(0|0);
+ L85: do {
+ if (!($203)) {
+ $204 = ((($$0192$lcssa$i)) + 28|0);
+ $205 = HEAP32[$204>>2]|0;
+ $206 = (35756 + ($205<<2)|0);
+ $207 = HEAP32[$206>>2]|0;
+ $208 = ($$0192$lcssa$i|0)==($207|0);
do {
- if ($191) {
- HEAP32[$189>>2] = $$3$i;
+ if ($208) {
+ HEAP32[$206>>2] = $$3$i;
$cond$i = ($$3$i|0)==(0|0);
if ($cond$i) {
- $192 = 1 << $188;
- $193 = $192 ^ -1;
- $194 = $108 & $193;
- HEAP32[(33020)>>2] = $194;
- break L73;
+ $209 = 1 << $205;
+ $210 = $209 ^ -1;
+ $211 = $125 & $210;
+ HEAP32[(35456)>>2] = $211;
+ break L85;
}
} else {
- $195 = HEAP32[(33032)>>2]|0;
- $196 = ($160>>>0)<($195>>>0);
- if ($196) {
+ $212 = HEAP32[(35468)>>2]|0;
+ $213 = ($177>>>0)<($212>>>0);
+ if ($213) {
_abort();
// unreachable;
} else {
- $197 = ((($160)) + 16|0);
- $198 = HEAP32[$197>>2]|0;
- $not$1$i = ($198|0)!=($$0192$lcssa$i|0);
+ $214 = ((($177)) + 16|0);
+ $215 = HEAP32[$214>>2]|0;
+ $not$1$i = ($215|0)!=($$0192$lcssa$i|0);
$$sink2$i = $not$1$i&1;
- $199 = (((($160)) + 16|0) + ($$sink2$i<<2)|0);
- HEAP32[$199>>2] = $$3$i;
- $200 = ($$3$i|0)==(0|0);
- if ($200) {
- break L73;
+ $216 = (((($177)) + 16|0) + ($$sink2$i<<2)|0);
+ HEAP32[$216>>2] = $$3$i;
+ $217 = ($$3$i|0)==(0|0);
+ if ($217) {
+ break L85;
} else {
break;
}
}
}
} while(0);
- $201 = HEAP32[(33032)>>2]|0;
- $202 = ($$3$i>>>0)<($201>>>0);
- if ($202) {
+ $218 = HEAP32[(35468)>>2]|0;
+ $219 = ($$3$i>>>0)<($218>>>0);
+ if ($219) {
_abort();
// unreachable;
}
- $203 = ((($$3$i)) + 24|0);
- HEAP32[$203>>2] = $160;
- $204 = ((($$0192$lcssa$i)) + 16|0);
- $205 = HEAP32[$204>>2]|0;
- $206 = ($205|0)==(0|0);
+ $220 = ((($$3$i)) + 24|0);
+ HEAP32[$220>>2] = $177;
+ $221 = ((($$0192$lcssa$i)) + 16|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
do {
- if (!($206)) {
- $207 = ($205>>>0)<($201>>>0);
- if ($207) {
+ if (!($223)) {
+ $224 = ($222>>>0)<($218>>>0);
+ if ($224) {
_abort();
// unreachable;
} else {
- $208 = ((($$3$i)) + 16|0);
- HEAP32[$208>>2] = $205;
- $209 = ((($205)) + 24|0);
- HEAP32[$209>>2] = $$3$i;
+ $225 = ((($$3$i)) + 16|0);
+ HEAP32[$225>>2] = $222;
+ $226 = ((($222)) + 24|0);
+ HEAP32[$226>>2] = $$3$i;
break;
}
}
} while(0);
- $210 = ((($$0192$lcssa$i)) + 20|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
- if (!($212)) {
- $213 = HEAP32[(33032)>>2]|0;
- $214 = ($211>>>0)<($213>>>0);
- if ($214) {
+ $227 = ((($$0192$lcssa$i)) + 20|0);
+ $228 = HEAP32[$227>>2]|0;
+ $229 = ($228|0)==(0|0);
+ if (!($229)) {
+ $230 = HEAP32[(35468)>>2]|0;
+ $231 = ($228>>>0)<($230>>>0);
+ if ($231) {
_abort();
// unreachable;
} else {
- $215 = ((($$3$i)) + 20|0);
- HEAP32[$215>>2] = $211;
- $216 = ((($211)) + 24|0);
- HEAP32[$216>>2] = $$3$i;
+ $232 = ((($$3$i)) + 20|0);
+ HEAP32[$232>>2] = $228;
+ $233 = ((($228)) + 24|0);
+ HEAP32[$233>>2] = $$3$i;
break;
}
}
}
} while(0);
- $217 = ($$0193$lcssa$i>>>0)<(16);
- if ($217) {
- $218 = (($$0193$lcssa$i) + ($6))|0;
- $219 = $218 | 3;
- $220 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$220>>2] = $219;
- $221 = (($$0192$lcssa$i) + ($218)|0);
- $222 = ((($221)) + 4|0);
- $223 = HEAP32[$222>>2]|0;
- $224 = $223 | 1;
- HEAP32[$222>>2] = $224;
+ $234 = ($$0193$lcssa$i>>>0)<(16);
+ if ($234) {
+ $235 = (($$0193$lcssa$i) + ($23))|0;
+ $236 = $235 | 3;
+ $237 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$237>>2] = $236;
+ $238 = (($$0192$lcssa$i) + ($235)|0);
+ $239 = ((($238)) + 4|0);
+ $240 = HEAP32[$239>>2]|0;
+ $241 = $240 | 1;
+ HEAP32[$239>>2] = $241;
} else {
- $225 = $6 | 3;
- $226 = ((($$0192$lcssa$i)) + 4|0);
- HEAP32[$226>>2] = $225;
- $227 = $$0193$lcssa$i | 1;
- $228 = ((($157)) + 4|0);
- HEAP32[$228>>2] = $227;
- $229 = (($157) + ($$0193$lcssa$i)|0);
- HEAP32[$229>>2] = $$0193$lcssa$i;
- $230 = ($37|0)==(0);
- if (!($230)) {
- $231 = HEAP32[(33036)>>2]|0;
- $232 = $37 >>> 3;
- $233 = $232 << 1;
- $234 = (33056 + ($233<<2)|0);
- $235 = 1 << $232;
- $236 = $8 & $235;
- $237 = ($236|0)==(0);
- if ($237) {
- $238 = $8 | $235;
- HEAP32[8254] = $238;
- $$pre$i = ((($234)) + 8|0);
- $$0189$i = $234;$$pre$phi$iZ2D = $$pre$i;
+ $242 = $23 | 3;
+ $243 = ((($$0192$lcssa$i)) + 4|0);
+ HEAP32[$243>>2] = $242;
+ $244 = $$0193$lcssa$i | 1;
+ $245 = ((($174)) + 4|0);
+ HEAP32[$245>>2] = $244;
+ $246 = (($174) + ($$0193$lcssa$i)|0);
+ HEAP32[$246>>2] = $$0193$lcssa$i;
+ $247 = ($54|0)==(0);
+ if (!($247)) {
+ $248 = HEAP32[(35472)>>2]|0;
+ $249 = $54 >>> 3;
+ $250 = $249 << 1;
+ $251 = (35492 + ($250<<2)|0);
+ $252 = 1 << $249;
+ $253 = $25 & $252;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $255 = $25 | $252;
+ HEAP32[8863] = $255;
+ $$pre$i = ((($251)) + 8|0);
+ $$0189$i = $251;$$pre$phi$iZ2D = $$pre$i;
} else {
- $239 = ((($234)) + 8|0);
- $240 = HEAP32[$239>>2]|0;
- $241 = HEAP32[(33032)>>2]|0;
- $242 = ($240>>>0)<($241>>>0);
- if ($242) {
+ $256 = ((($251)) + 8|0);
+ $257 = HEAP32[$256>>2]|0;
+ $258 = HEAP32[(35468)>>2]|0;
+ $259 = ($257>>>0)<($258>>>0);
+ if ($259) {
_abort();
// unreachable;
} else {
- $$0189$i = $240;$$pre$phi$iZ2D = $239;
+ $$0189$i = $257;$$pre$phi$iZ2D = $256;
}
}
- HEAP32[$$pre$phi$iZ2D>>2] = $231;
- $243 = ((($$0189$i)) + 12|0);
- HEAP32[$243>>2] = $231;
- $244 = ((($231)) + 8|0);
- HEAP32[$244>>2] = $$0189$i;
- $245 = ((($231)) + 12|0);
- HEAP32[$245>>2] = $234;
- }
- HEAP32[(33024)>>2] = $$0193$lcssa$i;
- HEAP32[(33036)>>2] = $157;
+ HEAP32[$$pre$phi$iZ2D>>2] = $248;
+ $260 = ((($$0189$i)) + 12|0);
+ HEAP32[$260>>2] = $248;
+ $261 = ((($248)) + 8|0);
+ HEAP32[$261>>2] = $$0189$i;
+ $262 = ((($248)) + 12|0);
+ HEAP32[$262>>2] = $251;
+ }
+ HEAP32[(35460)>>2] = $$0193$lcssa$i;
+ HEAP32[(35472)>>2] = $174;
}
- $246 = ((($$0192$lcssa$i)) + 8|0);
- $$0 = $246;
- STACKTOP = sp;return ($$0|0);
+ $263 = ((($$0192$lcssa$i)) + 8|0);
+ $$2 = $263;
}
} else {
- $$0197 = $6;
+ $$0198 = $23;
+ label = 153;
}
} else {
- $247 = ($0>>>0)>(4294967231);
- if ($247) {
- $$0197 = -1;
+ $264 = ($0>>>0)>(4294967231);
+ if ($264) {
+ $$0198 = -1;
+ label = 153;
} else {
- $248 = (($0) + 11)|0;
- $249 = $248 & -8;
- $250 = HEAP32[(33020)>>2]|0;
- $251 = ($250|0)==(0);
- if ($251) {
- $$0197 = $249;
+ $265 = (($0) + 11)|0;
+ $266 = $265 & -8;
+ $267 = HEAP32[(35456)>>2]|0;
+ $268 = ($267|0)==(0);
+ if ($268) {
+ $$0198 = $266;
+ label = 153;
} else {
- $252 = (0 - ($249))|0;
- $253 = $248 >>> 8;
- $254 = ($253|0)==(0);
- if ($254) {
+ $269 = (0 - ($266))|0;
+ $270 = $265 >>> 8;
+ $271 = ($270|0)==(0);
+ if ($271) {
$$0358$i = 0;
} else {
- $255 = ($249>>>0)>(16777215);
- if ($255) {
+ $272 = ($266>>>0)>(16777215);
+ if ($272) {
$$0358$i = 31;
} else {
- $256 = (($253) + 1048320)|0;
- $257 = $256 >>> 16;
- $258 = $257 & 8;
- $259 = $253 << $258;
- $260 = (($259) + 520192)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 4;
- $263 = $262 | $258;
- $264 = $259 << $262;
- $265 = (($264) + 245760)|0;
- $266 = $265 >>> 16;
- $267 = $266 & 2;
- $268 = $263 | $267;
- $269 = (14 - ($268))|0;
- $270 = $264 << $267;
- $271 = $270 >>> 15;
- $272 = (($269) + ($271))|0;
- $273 = $272 << 1;
- $274 = (($272) + 7)|0;
- $275 = $249 >>> $274;
- $276 = $275 & 1;
- $277 = $276 | $273;
- $$0358$i = $277;
+ $273 = (($270) + 1048320)|0;
+ $274 = $273 >>> 16;
+ $275 = $274 & 8;
+ $276 = $270 << $275;
+ $277 = (($276) + 520192)|0;
+ $278 = $277 >>> 16;
+ $279 = $278 & 4;
+ $280 = $279 | $275;
+ $281 = $276 << $279;
+ $282 = (($281) + 245760)|0;
+ $283 = $282 >>> 16;
+ $284 = $283 & 2;
+ $285 = $280 | $284;
+ $286 = (14 - ($285))|0;
+ $287 = $281 << $284;
+ $288 = $287 >>> 15;
+ $289 = (($286) + ($288))|0;
+ $290 = $289 << 1;
+ $291 = (($289) + 7)|0;
+ $292 = $266 >>> $291;
+ $293 = $292 & 1;
+ $294 = $293 | $290;
+ $$0358$i = $294;
}
}
- $278 = (33320 + ($$0358$i<<2)|0);
- $279 = HEAP32[$278>>2]|0;
- $280 = ($279|0)==(0|0);
- L117: do {
- if ($280) {
- $$2355$i = 0;$$3$i201 = 0;$$3350$i = $252;
- label = 81;
+ $295 = (35756 + ($$0358$i<<2)|0);
+ $296 = HEAP32[$295>>2]|0;
+ $297 = ($296|0)==(0|0);
+ L128: do {
+ if ($297) {
+ $$2355$i = 0;$$3$i202 = 0;$$3350$i = $269;
+ label = 90;
} else {
- $281 = ($$0358$i|0)==(31);
- $282 = $$0358$i >>> 1;
- $283 = (25 - ($282))|0;
- $284 = $281 ? 0 : $283;
- $285 = $249 << $284;
- $$0342$i = 0;$$0347$i = $252;$$0353$i = $279;$$0359$i = $285;$$0362$i = 0;
+ $298 = ($$0358$i|0)==(31);
+ $299 = $$0358$i >>> 1;
+ $300 = (25 - ($299))|0;
+ $301 = $298 ? 0 : $300;
+ $302 = $266 << $301;
+ $$0342$i = 0;$$0347$i = $269;$$0353$i = $296;$$0359$i = $302;$$0362$i = 0;
while(1) {
- $286 = ((($$0353$i)) + 4|0);
- $287 = HEAP32[$286>>2]|0;
- $288 = $287 & -8;
- $289 = (($288) - ($249))|0;
- $290 = ($289>>>0)<($$0347$i>>>0);
- if ($290) {
- $291 = ($289|0)==(0);
- if ($291) {
+ $303 = ((($$0353$i)) + 4|0);
+ $304 = HEAP32[$303>>2]|0;
+ $305 = $304 & -8;
+ $306 = (($305) - ($266))|0;
+ $307 = ($306>>>0)<($$0347$i>>>0);
+ if ($307) {
+ $308 = ($306|0)==(0);
+ if ($308) {
$$415$i = $$0353$i;$$435114$i = 0;$$435713$i = $$0353$i;
- label = 85;
- break L117;
+ label = 94;
+ break L128;
} else {
- $$1343$i = $$0353$i;$$1348$i = $289;
+ $$1343$i = $$0353$i;$$1348$i = $306;
}
} else {
$$1343$i = $$0342$i;$$1348$i = $$0347$i;
}
- $292 = ((($$0353$i)) + 20|0);
- $293 = HEAP32[$292>>2]|0;
- $294 = $$0359$i >>> 31;
- $295 = (((($$0353$i)) + 16|0) + ($294<<2)|0);
- $296 = HEAP32[$295>>2]|0;
- $297 = ($293|0)==(0|0);
- $298 = ($293|0)==($296|0);
- $or$cond2$i = $297 | $298;
- $$1363$i = $or$cond2$i ? $$0362$i : $293;
- $299 = ($296|0)==(0|0);
- $not$8$i = $299 ^ 1;
- $300 = $not$8$i&1;
- $$0359$$i = $$0359$i << $300;
- if ($299) {
- $$2355$i = $$1363$i;$$3$i201 = $$1343$i;$$3350$i = $$1348$i;
- label = 81;
+ $309 = ((($$0353$i)) + 20|0);
+ $310 = HEAP32[$309>>2]|0;
+ $311 = $$0359$i >>> 31;
+ $312 = (((($$0353$i)) + 16|0) + ($311<<2)|0);
+ $313 = HEAP32[$312>>2]|0;
+ $314 = ($310|0)==(0|0);
+ $315 = ($310|0)==($313|0);
+ $or$cond2$i = $314 | $315;
+ $$1363$i = $or$cond2$i ? $$0362$i : $310;
+ $316 = ($313|0)==(0|0);
+ $not$8$i = $316 ^ 1;
+ $317 = $not$8$i&1;
+ $$0359$$i = $$0359$i << $317;
+ if ($316) {
+ $$2355$i = $$1363$i;$$3$i202 = $$1343$i;$$3350$i = $$1348$i;
+ label = 90;
break;
} else {
- $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $296;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
+ $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $313;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
}
}
}
} while(0);
- if ((label|0) == 81) {
- $301 = ($$2355$i|0)==(0|0);
- $302 = ($$3$i201|0)==(0|0);
- $or$cond$i = $301 & $302;
+ if ((label|0) == 90) {
+ $318 = ($$2355$i|0)==(0|0);
+ $319 = ($$3$i202|0)==(0|0);
+ $or$cond$i = $318 & $319;
if ($or$cond$i) {
- $303 = 2 << $$0358$i;
- $304 = (0 - ($303))|0;
- $305 = $303 | $304;
- $306 = $250 & $305;
- $307 = ($306|0)==(0);
- if ($307) {
- $$0197 = $249;
+ $320 = 2 << $$0358$i;
+ $321 = (0 - ($320))|0;
+ $322 = $320 | $321;
+ $323 = $267 & $322;
+ $324 = ($323|0)==(0);
+ if ($324) {
+ $$0198 = $266;
+ label = 153;
break;
}
- $308 = (0 - ($306))|0;
- $309 = $306 & $308;
- $310 = (($309) + -1)|0;
- $311 = $310 >>> 12;
- $312 = $311 & 16;
- $313 = $310 >>> $312;
- $314 = $313 >>> 5;
- $315 = $314 & 8;
- $316 = $315 | $312;
- $317 = $313 >>> $315;
- $318 = $317 >>> 2;
- $319 = $318 & 4;
- $320 = $316 | $319;
- $321 = $317 >>> $319;
- $322 = $321 >>> 1;
- $323 = $322 & 2;
- $324 = $320 | $323;
- $325 = $321 >>> $323;
- $326 = $325 >>> 1;
- $327 = $326 & 1;
- $328 = $324 | $327;
- $329 = $325 >>> $327;
- $330 = (($328) + ($329))|0;
- $331 = (33320 + ($330<<2)|0);
- $332 = HEAP32[$331>>2]|0;
- $$4$ph$i = 0;$$4357$ph$i = $332;
+ $325 = (0 - ($323))|0;
+ $326 = $323 & $325;
+ $327 = (($326) + -1)|0;
+ $328 = $327 >>> 12;
+ $329 = $328 & 16;
+ $330 = $327 >>> $329;
+ $331 = $330 >>> 5;
+ $332 = $331 & 8;
+ $333 = $332 | $329;
+ $334 = $330 >>> $332;
+ $335 = $334 >>> 2;
+ $336 = $335 & 4;
+ $337 = $333 | $336;
+ $338 = $334 >>> $336;
+ $339 = $338 >>> 1;
+ $340 = $339 & 2;
+ $341 = $337 | $340;
+ $342 = $338 >>> $340;
+ $343 = $342 >>> 1;
+ $344 = $343 & 1;
+ $345 = $341 | $344;
+ $346 = $342 >>> $344;
+ $347 = (($345) + ($346))|0;
+ $348 = (35756 + ($347<<2)|0);
+ $349 = HEAP32[$348>>2]|0;
+ $$4$ph$i = 0;$$4357$ph$i = $349;
} else {
- $$4$ph$i = $$3$i201;$$4357$ph$i = $$2355$i;
+ $$4$ph$i = $$3$i202;$$4357$ph$i = $$2355$i;
}
- $333 = ($$4357$ph$i|0)==(0|0);
- if ($333) {
+ $350 = ($$4357$ph$i|0)==(0|0);
+ if ($350) {
$$4$lcssa$i = $$4$ph$i;$$4351$lcssa$i = $$3350$i;
} else {
$$415$i = $$4$ph$i;$$435114$i = $$3350$i;$$435713$i = $$4357$ph$i;
- label = 85;
+ label = 94;
}
}
- if ((label|0) == 85) {
+ if ((label|0) == 94) {
while(1) {
label = 0;
- $334 = ((($$435713$i)) + 4|0);
- $335 = HEAP32[$334>>2]|0;
- $336 = $335 & -8;
- $337 = (($336) - ($249))|0;
- $338 = ($337>>>0)<($$435114$i>>>0);
- $$$4351$i = $338 ? $337 : $$435114$i;
- $$4357$$4$i = $338 ? $$435713$i : $$415$i;
- $339 = ((($$435713$i)) + 16|0);
- $340 = HEAP32[$339>>2]|0;
- $not$1$i203 = ($340|0)==(0|0);
- $$sink2$i204 = $not$1$i203&1;
- $341 = (((($$435713$i)) + 16|0) + ($$sink2$i204<<2)|0);
- $342 = HEAP32[$341>>2]|0;
- $343 = ($342|0)==(0|0);
- if ($343) {
+ $351 = ((($$435713$i)) + 4|0);
+ $352 = HEAP32[$351>>2]|0;
+ $353 = $352 & -8;
+ $354 = (($353) - ($266))|0;
+ $355 = ($354>>>0)<($$435114$i>>>0);
+ $$$4351$i = $355 ? $354 : $$435114$i;
+ $$4357$$4$i = $355 ? $$435713$i : $$415$i;
+ $356 = ((($$435713$i)) + 16|0);
+ $357 = HEAP32[$356>>2]|0;
+ $not$1$i204 = ($357|0)==(0|0);
+ $$sink2$i205 = $not$1$i204&1;
+ $358 = (((($$435713$i)) + 16|0) + ($$sink2$i205<<2)|0);
+ $359 = HEAP32[$358>>2]|0;
+ $360 = ($359|0)==(0|0);
+ if ($360) {
$$4$lcssa$i = $$4357$$4$i;$$4351$lcssa$i = $$$4351$i;
break;
} else {
- $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $342;
- label = 85;
+ $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $359;
+ label = 94;
}
}
}
- $344 = ($$4$lcssa$i|0)==(0|0);
- if ($344) {
- $$0197 = $249;
+ $361 = ($$4$lcssa$i|0)==(0|0);
+ if ($361) {
+ $$0198 = $266;
+ label = 153;
} else {
- $345 = HEAP32[(33024)>>2]|0;
- $346 = (($345) - ($249))|0;
- $347 = ($$4351$lcssa$i>>>0)<($346>>>0);
- if ($347) {
- $348 = HEAP32[(33032)>>2]|0;
- $349 = ($$4$lcssa$i>>>0)<($348>>>0);
- if ($349) {
+ $362 = HEAP32[(35460)>>2]|0;
+ $363 = (($362) - ($266))|0;
+ $364 = ($$4351$lcssa$i>>>0)<($363>>>0);
+ if ($364) {
+ $365 = HEAP32[(35468)>>2]|0;
+ $366 = ($$4$lcssa$i>>>0)<($365>>>0);
+ if ($366) {
_abort();
// unreachable;
}
- $350 = (($$4$lcssa$i) + ($249)|0);
- $351 = ($$4$lcssa$i>>>0)<($350>>>0);
- if (!($351)) {
+ $367 = (($$4$lcssa$i) + ($266)|0);
+ $368 = ($$4$lcssa$i>>>0)<($367>>>0);
+ if (!($368)) {
_abort();
// unreachable;
}
- $352 = ((($$4$lcssa$i)) + 24|0);
- $353 = HEAP32[$352>>2]|0;
- $354 = ((($$4$lcssa$i)) + 12|0);
- $355 = HEAP32[$354>>2]|0;
- $356 = ($355|0)==($$4$lcssa$i|0);
+ $369 = ((($$4$lcssa$i)) + 24|0);
+ $370 = HEAP32[$369>>2]|0;
+ $371 = ((($$4$lcssa$i)) + 12|0);
+ $372 = HEAP32[$371>>2]|0;
+ $373 = ($372|0)==($$4$lcssa$i|0);
do {
- if ($356) {
- $366 = ((($$4$lcssa$i)) + 20|0);
- $367 = HEAP32[$366>>2]|0;
- $368 = ($367|0)==(0|0);
- if ($368) {
- $369 = ((($$4$lcssa$i)) + 16|0);
- $370 = HEAP32[$369>>2]|0;
- $371 = ($370|0)==(0|0);
- if ($371) {
+ if ($373) {
+ $383 = ((($$4$lcssa$i)) + 20|0);
+ $384 = HEAP32[$383>>2]|0;
+ $385 = ($384|0)==(0|0);
+ if ($385) {
+ $386 = ((($$4$lcssa$i)) + 16|0);
+ $387 = HEAP32[$386>>2]|0;
+ $388 = ($387|0)==(0|0);
+ if ($388) {
$$3372$i = 0;
break;
} else {
- $$1370$i = $370;$$1374$i = $369;
+ $$1370$i = $387;$$1374$i = $386;
}
} else {
- $$1370$i = $367;$$1374$i = $366;
+ $$1370$i = $384;$$1374$i = $383;
}
while(1) {
- $372 = ((($$1370$i)) + 20|0);
- $373 = HEAP32[$372>>2]|0;
- $374 = ($373|0)==(0|0);
- if (!($374)) {
- $$1370$i = $373;$$1374$i = $372;
+ $389 = ((($$1370$i)) + 20|0);
+ $390 = HEAP32[$389>>2]|0;
+ $391 = ($390|0)==(0|0);
+ if (!($391)) {
+ $$1370$i = $390;$$1374$i = $389;
continue;
}
- $375 = ((($$1370$i)) + 16|0);
- $376 = HEAP32[$375>>2]|0;
- $377 = ($376|0)==(0|0);
- if ($377) {
+ $392 = ((($$1370$i)) + 16|0);
+ $393 = HEAP32[$392>>2]|0;
+ $394 = ($393|0)==(0|0);
+ if ($394) {
break;
} else {
- $$1370$i = $376;$$1374$i = $375;
+ $$1370$i = $393;$$1374$i = $392;
}
}
- $378 = ($$1374$i>>>0)<($348>>>0);
- if ($378) {
+ $395 = ($$1374$i>>>0)<($365>>>0);
+ if ($395) {
_abort();
// unreachable;
} else {
@@ -24737,27 +31073,27 @@ function _malloc($0) {
break;
}
} else {
- $357 = ((($$4$lcssa$i)) + 8|0);
- $358 = HEAP32[$357>>2]|0;
- $359 = ($358>>>0)<($348>>>0);
- if ($359) {
+ $374 = ((($$4$lcssa$i)) + 8|0);
+ $375 = HEAP32[$374>>2]|0;
+ $376 = ($375>>>0)<($365>>>0);
+ if ($376) {
_abort();
// unreachable;
}
- $360 = ((($358)) + 12|0);
- $361 = HEAP32[$360>>2]|0;
- $362 = ($361|0)==($$4$lcssa$i|0);
- if (!($362)) {
+ $377 = ((($375)) + 12|0);
+ $378 = HEAP32[$377>>2]|0;
+ $379 = ($378|0)==($$4$lcssa$i|0);
+ if (!($379)) {
_abort();
// unreachable;
}
- $363 = ((($355)) + 8|0);
- $364 = HEAP32[$363>>2]|0;
- $365 = ($364|0)==($$4$lcssa$i|0);
- if ($365) {
- HEAP32[$360>>2] = $355;
- HEAP32[$363>>2] = $358;
- $$3372$i = $355;
+ $380 = ((($372)) + 8|0);
+ $381 = HEAP32[$380>>2]|0;
+ $382 = ($381|0)==($$4$lcssa$i|0);
+ if ($382) {
+ HEAP32[$377>>2] = $372;
+ HEAP32[$380>>2] = $375;
+ $$3372$i = $372;
break;
} else {
_abort();
@@ -24765,273 +31101,275 @@ function _malloc($0) {
}
}
} while(0);
- $379 = ($353|0)==(0|0);
- L164: do {
- if ($379) {
- $470 = $250;
+ $396 = ($370|0)==(0|0);
+ L175: do {
+ if ($396) {
+ $487 = $267;
} else {
- $380 = ((($$4$lcssa$i)) + 28|0);
- $381 = HEAP32[$380>>2]|0;
- $382 = (33320 + ($381<<2)|0);
- $383 = HEAP32[$382>>2]|0;
- $384 = ($$4$lcssa$i|0)==($383|0);
+ $397 = ((($$4$lcssa$i)) + 28|0);
+ $398 = HEAP32[$397>>2]|0;
+ $399 = (35756 + ($398<<2)|0);
+ $400 = HEAP32[$399>>2]|0;
+ $401 = ($$4$lcssa$i|0)==($400|0);
do {
- if ($384) {
- HEAP32[$382>>2] = $$3372$i;
- $cond$i208 = ($$3372$i|0)==(0|0);
- if ($cond$i208) {
- $385 = 1 << $381;
- $386 = $385 ^ -1;
- $387 = $250 & $386;
- HEAP32[(33020)>>2] = $387;
- $470 = $387;
- break L164;
+ if ($401) {
+ HEAP32[$399>>2] = $$3372$i;
+ $cond$i209 = ($$3372$i|0)==(0|0);
+ if ($cond$i209) {
+ $402 = 1 << $398;
+ $403 = $402 ^ -1;
+ $404 = $267 & $403;
+ HEAP32[(35456)>>2] = $404;
+ $487 = $404;
+ break L175;
}
} else {
- $388 = HEAP32[(33032)>>2]|0;
- $389 = ($353>>>0)<($388>>>0);
- if ($389) {
+ $405 = HEAP32[(35468)>>2]|0;
+ $406 = ($370>>>0)<($405>>>0);
+ if ($406) {
_abort();
// unreachable;
} else {
- $390 = ((($353)) + 16|0);
- $391 = HEAP32[$390>>2]|0;
- $not$$i209 = ($391|0)!=($$4$lcssa$i|0);
- $$sink3$i = $not$$i209&1;
- $392 = (((($353)) + 16|0) + ($$sink3$i<<2)|0);
- HEAP32[$392>>2] = $$3372$i;
- $393 = ($$3372$i|0)==(0|0);
- if ($393) {
- $470 = $250;
- break L164;
+ $407 = ((($370)) + 16|0);
+ $408 = HEAP32[$407>>2]|0;
+ $not$$i210 = ($408|0)!=($$4$lcssa$i|0);
+ $$sink3$i = $not$$i210&1;
+ $409 = (((($370)) + 16|0) + ($$sink3$i<<2)|0);
+ HEAP32[$409>>2] = $$3372$i;
+ $410 = ($$3372$i|0)==(0|0);
+ if ($410) {
+ $487 = $267;
+ break L175;
} else {
break;
}
}
}
} while(0);
- $394 = HEAP32[(33032)>>2]|0;
- $395 = ($$3372$i>>>0)<($394>>>0);
- if ($395) {
+ $411 = HEAP32[(35468)>>2]|0;
+ $412 = ($$3372$i>>>0)<($411>>>0);
+ if ($412) {
_abort();
// unreachable;
}
- $396 = ((($$3372$i)) + 24|0);
- HEAP32[$396>>2] = $353;
- $397 = ((($$4$lcssa$i)) + 16|0);
- $398 = HEAP32[$397>>2]|0;
- $399 = ($398|0)==(0|0);
+ $413 = ((($$3372$i)) + 24|0);
+ HEAP32[$413>>2] = $370;
+ $414 = ((($$4$lcssa$i)) + 16|0);
+ $415 = HEAP32[$414>>2]|0;
+ $416 = ($415|0)==(0|0);
do {
- if (!($399)) {
- $400 = ($398>>>0)<($394>>>0);
- if ($400) {
+ if (!($416)) {
+ $417 = ($415>>>0)<($411>>>0);
+ if ($417) {
_abort();
// unreachable;
} else {
- $401 = ((($$3372$i)) + 16|0);
- HEAP32[$401>>2] = $398;
- $402 = ((($398)) + 24|0);
- HEAP32[$402>>2] = $$3372$i;
+ $418 = ((($$3372$i)) + 16|0);
+ HEAP32[$418>>2] = $415;
+ $419 = ((($415)) + 24|0);
+ HEAP32[$419>>2] = $$3372$i;
break;
}
}
} while(0);
- $403 = ((($$4$lcssa$i)) + 20|0);
- $404 = HEAP32[$403>>2]|0;
- $405 = ($404|0)==(0|0);
- if ($405) {
- $470 = $250;
+ $420 = ((($$4$lcssa$i)) + 20|0);
+ $421 = HEAP32[$420>>2]|0;
+ $422 = ($421|0)==(0|0);
+ if ($422) {
+ $487 = $267;
} else {
- $406 = HEAP32[(33032)>>2]|0;
- $407 = ($404>>>0)<($406>>>0);
- if ($407) {
+ $423 = HEAP32[(35468)>>2]|0;
+ $424 = ($421>>>0)<($423>>>0);
+ if ($424) {
_abort();
// unreachable;
} else {
- $408 = ((($$3372$i)) + 20|0);
- HEAP32[$408>>2] = $404;
- $409 = ((($404)) + 24|0);
- HEAP32[$409>>2] = $$3372$i;
- $470 = $250;
+ $425 = ((($$3372$i)) + 20|0);
+ HEAP32[$425>>2] = $421;
+ $426 = ((($421)) + 24|0);
+ HEAP32[$426>>2] = $$3372$i;
+ $487 = $267;
break;
}
}
}
} while(0);
- $410 = ($$4351$lcssa$i>>>0)<(16);
+ $427 = ($$4351$lcssa$i>>>0)<(16);
do {
- if ($410) {
- $411 = (($$4351$lcssa$i) + ($249))|0;
- $412 = $411 | 3;
- $413 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$413>>2] = $412;
- $414 = (($$4$lcssa$i) + ($411)|0);
- $415 = ((($414)) + 4|0);
- $416 = HEAP32[$415>>2]|0;
- $417 = $416 | 1;
- HEAP32[$415>>2] = $417;
+ if ($427) {
+ $428 = (($$4351$lcssa$i) + ($266))|0;
+ $429 = $428 | 3;
+ $430 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$430>>2] = $429;
+ $431 = (($$4$lcssa$i) + ($428)|0);
+ $432 = ((($431)) + 4|0);
+ $433 = HEAP32[$432>>2]|0;
+ $434 = $433 | 1;
+ HEAP32[$432>>2] = $434;
} else {
- $418 = $249 | 3;
- $419 = ((($$4$lcssa$i)) + 4|0);
- HEAP32[$419>>2] = $418;
- $420 = $$4351$lcssa$i | 1;
- $421 = ((($350)) + 4|0);
- HEAP32[$421>>2] = $420;
- $422 = (($350) + ($$4351$lcssa$i)|0);
- HEAP32[$422>>2] = $$4351$lcssa$i;
- $423 = $$4351$lcssa$i >>> 3;
- $424 = ($$4351$lcssa$i>>>0)<(256);
- if ($424) {
- $425 = $423 << 1;
- $426 = (33056 + ($425<<2)|0);
- $427 = HEAP32[8254]|0;
- $428 = 1 << $423;
- $429 = $427 & $428;
- $430 = ($429|0)==(0);
- if ($430) {
- $431 = $427 | $428;
- HEAP32[8254] = $431;
- $$pre$i210 = ((($426)) + 8|0);
- $$0368$i = $426;$$pre$phi$i211Z2D = $$pre$i210;
- } else {
- $432 = ((($426)) + 8|0);
- $433 = HEAP32[$432>>2]|0;
- $434 = HEAP32[(33032)>>2]|0;
- $435 = ($433>>>0)<($434>>>0);
- if ($435) {
+ $435 = $266 | 3;
+ $436 = ((($$4$lcssa$i)) + 4|0);
+ HEAP32[$436>>2] = $435;
+ $437 = $$4351$lcssa$i | 1;
+ $438 = ((($367)) + 4|0);
+ HEAP32[$438>>2] = $437;
+ $439 = (($367) + ($$4351$lcssa$i)|0);
+ HEAP32[$439>>2] = $$4351$lcssa$i;
+ $440 = $$4351$lcssa$i >>> 3;
+ $441 = ($$4351$lcssa$i>>>0)<(256);
+ if ($441) {
+ $442 = $440 << 1;
+ $443 = (35492 + ($442<<2)|0);
+ $444 = HEAP32[8863]|0;
+ $445 = 1 << $440;
+ $446 = $444 & $445;
+ $447 = ($446|0)==(0);
+ do {
+ if ($447) {
+ $448 = $444 | $445;
+ HEAP32[8863] = $448;
+ $$pre$i211 = ((($443)) + 8|0);
+ $$0368$i = $443;$$pre$phi$i212Z2D = $$pre$i211;
+ } else {
+ $449 = ((($443)) + 8|0);
+ $450 = HEAP32[$449>>2]|0;
+ $451 = HEAP32[(35468)>>2]|0;
+ $452 = ($450>>>0)<($451>>>0);
+ if (!($452)) {
+ $$0368$i = $450;$$pre$phi$i212Z2D = $449;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $$0368$i = $433;$$pre$phi$i211Z2D = $432;
}
- }
- HEAP32[$$pre$phi$i211Z2D>>2] = $350;
- $436 = ((($$0368$i)) + 12|0);
- HEAP32[$436>>2] = $350;
- $437 = ((($350)) + 8|0);
- HEAP32[$437>>2] = $$0368$i;
- $438 = ((($350)) + 12|0);
- HEAP32[$438>>2] = $426;
+ } while(0);
+ HEAP32[$$pre$phi$i212Z2D>>2] = $367;
+ $453 = ((($$0368$i)) + 12|0);
+ HEAP32[$453>>2] = $367;
+ $454 = ((($367)) + 8|0);
+ HEAP32[$454>>2] = $$0368$i;
+ $455 = ((($367)) + 12|0);
+ HEAP32[$455>>2] = $443;
break;
}
- $439 = $$4351$lcssa$i >>> 8;
- $440 = ($439|0)==(0);
- if ($440) {
+ $456 = $$4351$lcssa$i >>> 8;
+ $457 = ($456|0)==(0);
+ if ($457) {
$$0361$i = 0;
} else {
- $441 = ($$4351$lcssa$i>>>0)>(16777215);
- if ($441) {
+ $458 = ($$4351$lcssa$i>>>0)>(16777215);
+ if ($458) {
$$0361$i = 31;
} else {
- $442 = (($439) + 1048320)|0;
- $443 = $442 >>> 16;
- $444 = $443 & 8;
- $445 = $439 << $444;
- $446 = (($445) + 520192)|0;
- $447 = $446 >>> 16;
- $448 = $447 & 4;
- $449 = $448 | $444;
- $450 = $445 << $448;
- $451 = (($450) + 245760)|0;
- $452 = $451 >>> 16;
- $453 = $452 & 2;
- $454 = $449 | $453;
- $455 = (14 - ($454))|0;
- $456 = $450 << $453;
- $457 = $456 >>> 15;
- $458 = (($455) + ($457))|0;
- $459 = $458 << 1;
- $460 = (($458) + 7)|0;
- $461 = $$4351$lcssa$i >>> $460;
- $462 = $461 & 1;
- $463 = $462 | $459;
- $$0361$i = $463;
+ $459 = (($456) + 1048320)|0;
+ $460 = $459 >>> 16;
+ $461 = $460 & 8;
+ $462 = $456 << $461;
+ $463 = (($462) + 520192)|0;
+ $464 = $463 >>> 16;
+ $465 = $464 & 4;
+ $466 = $465 | $461;
+ $467 = $462 << $465;
+ $468 = (($467) + 245760)|0;
+ $469 = $468 >>> 16;
+ $470 = $469 & 2;
+ $471 = $466 | $470;
+ $472 = (14 - ($471))|0;
+ $473 = $467 << $470;
+ $474 = $473 >>> 15;
+ $475 = (($472) + ($474))|0;
+ $476 = $475 << 1;
+ $477 = (($475) + 7)|0;
+ $478 = $$4351$lcssa$i >>> $477;
+ $479 = $478 & 1;
+ $480 = $479 | $476;
+ $$0361$i = $480;
}
}
- $464 = (33320 + ($$0361$i<<2)|0);
- $465 = ((($350)) + 28|0);
- HEAP32[$465>>2] = $$0361$i;
- $466 = ((($350)) + 16|0);
- $467 = ((($466)) + 4|0);
- HEAP32[$467>>2] = 0;
- HEAP32[$466>>2] = 0;
- $468 = 1 << $$0361$i;
- $469 = $470 & $468;
- $471 = ($469|0)==(0);
- if ($471) {
- $472 = $470 | $468;
- HEAP32[(33020)>>2] = $472;
- HEAP32[$464>>2] = $350;
- $473 = ((($350)) + 24|0);
- HEAP32[$473>>2] = $464;
- $474 = ((($350)) + 12|0);
- HEAP32[$474>>2] = $350;
- $475 = ((($350)) + 8|0);
- HEAP32[$475>>2] = $350;
+ $481 = (35756 + ($$0361$i<<2)|0);
+ $482 = ((($367)) + 28|0);
+ HEAP32[$482>>2] = $$0361$i;
+ $483 = ((($367)) + 16|0);
+ $484 = ((($483)) + 4|0);
+ HEAP32[$484>>2] = 0;
+ HEAP32[$483>>2] = 0;
+ $485 = 1 << $$0361$i;
+ $486 = $487 & $485;
+ $488 = ($486|0)==(0);
+ if ($488) {
+ $489 = $487 | $485;
+ HEAP32[(35456)>>2] = $489;
+ HEAP32[$481>>2] = $367;
+ $490 = ((($367)) + 24|0);
+ HEAP32[$490>>2] = $481;
+ $491 = ((($367)) + 12|0);
+ HEAP32[$491>>2] = $367;
+ $492 = ((($367)) + 8|0);
+ HEAP32[$492>>2] = $367;
break;
}
- $476 = HEAP32[$464>>2]|0;
- $477 = ($$0361$i|0)==(31);
- $478 = $$0361$i >>> 1;
- $479 = (25 - ($478))|0;
- $480 = $477 ? 0 : $479;
- $481 = $$4351$lcssa$i << $480;
- $$0344$i = $481;$$0345$i = $476;
+ $493 = HEAP32[$481>>2]|0;
+ $494 = ($$0361$i|0)==(31);
+ $495 = $$0361$i >>> 1;
+ $496 = (25 - ($495))|0;
+ $497 = $494 ? 0 : $496;
+ $498 = $$4351$lcssa$i << $497;
+ $$0344$i = $498;$$0345$i = $493;
while(1) {
- $482 = ((($$0345$i)) + 4|0);
- $483 = HEAP32[$482>>2]|0;
- $484 = $483 & -8;
- $485 = ($484|0)==($$4351$lcssa$i|0);
- if ($485) {
- label = 139;
+ $499 = ((($$0345$i)) + 4|0);
+ $500 = HEAP32[$499>>2]|0;
+ $501 = $500 & -8;
+ $502 = ($501|0)==($$4351$lcssa$i|0);
+ if ($502) {
+ label = 148;
break;
}
- $486 = $$0344$i >>> 31;
- $487 = (((($$0345$i)) + 16|0) + ($486<<2)|0);
- $488 = $$0344$i << 1;
- $489 = HEAP32[$487>>2]|0;
- $490 = ($489|0)==(0|0);
- if ($490) {
- label = 136;
+ $503 = $$0344$i >>> 31;
+ $504 = (((($$0345$i)) + 16|0) + ($503<<2)|0);
+ $505 = $$0344$i << 1;
+ $506 = HEAP32[$504>>2]|0;
+ $507 = ($506|0)==(0|0);
+ if ($507) {
+ label = 145;
break;
} else {
- $$0344$i = $488;$$0345$i = $489;
+ $$0344$i = $505;$$0345$i = $506;
}
}
- if ((label|0) == 136) {
- $491 = HEAP32[(33032)>>2]|0;
- $492 = ($487>>>0)<($491>>>0);
- if ($492) {
+ if ((label|0) == 145) {
+ $508 = HEAP32[(35468)>>2]|0;
+ $509 = ($504>>>0)<($508>>>0);
+ if ($509) {
_abort();
// unreachable;
} else {
- HEAP32[$487>>2] = $350;
- $493 = ((($350)) + 24|0);
- HEAP32[$493>>2] = $$0345$i;
- $494 = ((($350)) + 12|0);
- HEAP32[$494>>2] = $350;
- $495 = ((($350)) + 8|0);
- HEAP32[$495>>2] = $350;
+ HEAP32[$504>>2] = $367;
+ $510 = ((($367)) + 24|0);
+ HEAP32[$510>>2] = $$0345$i;
+ $511 = ((($367)) + 12|0);
+ HEAP32[$511>>2] = $367;
+ $512 = ((($367)) + 8|0);
+ HEAP32[$512>>2] = $367;
break;
}
}
- else if ((label|0) == 139) {
- $496 = ((($$0345$i)) + 8|0);
- $497 = HEAP32[$496>>2]|0;
- $498 = HEAP32[(33032)>>2]|0;
- $499 = ($497>>>0)>=($498>>>0);
- $not$9$i = ($$0345$i>>>0)>=($498>>>0);
- $500 = $499 & $not$9$i;
- if ($500) {
- $501 = ((($497)) + 12|0);
- HEAP32[$501>>2] = $350;
- HEAP32[$496>>2] = $350;
- $502 = ((($350)) + 8|0);
- HEAP32[$502>>2] = $497;
- $503 = ((($350)) + 12|0);
- HEAP32[$503>>2] = $$0345$i;
- $504 = ((($350)) + 24|0);
- HEAP32[$504>>2] = 0;
+ else if ((label|0) == 148) {
+ $513 = ((($$0345$i)) + 8|0);
+ $514 = HEAP32[$513>>2]|0;
+ $515 = HEAP32[(35468)>>2]|0;
+ $516 = ($514>>>0)>=($515>>>0);
+ $not$9$i = ($$0345$i>>>0)>=($515>>>0);
+ $517 = $516 & $not$9$i;
+ if ($517) {
+ $518 = ((($514)) + 12|0);
+ HEAP32[$518>>2] = $367;
+ HEAP32[$513>>2] = $367;
+ $519 = ((($367)) + 8|0);
+ HEAP32[$519>>2] = $514;
+ $520 = ((($367)) + 12|0);
+ HEAP32[$520>>2] = $$0345$i;
+ $521 = ((($367)) + 24|0);
+ HEAP32[$521>>2] = 0;
break;
} else {
_abort();
@@ -25040,1200 +31378,1238 @@ function _malloc($0) {
}
}
} while(0);
- $505 = ((($$4$lcssa$i)) + 8|0);
- $$0 = $505;
- STACKTOP = sp;return ($$0|0);
+ $522 = ((($$4$lcssa$i)) + 8|0);
+ $$2 = $522;
} else {
- $$0197 = $249;
+ $$0198 = $266;
+ label = 153;
}
}
}
}
}
} while(0);
- $506 = HEAP32[(33024)>>2]|0;
- $507 = ($506>>>0)<($$0197>>>0);
- if (!($507)) {
- $508 = (($506) - ($$0197))|0;
- $509 = HEAP32[(33036)>>2]|0;
- $510 = ($508>>>0)>(15);
- if ($510) {
- $511 = (($509) + ($$0197)|0);
- HEAP32[(33036)>>2] = $511;
- HEAP32[(33024)>>2] = $508;
- $512 = $508 | 1;
- $513 = ((($511)) + 4|0);
- HEAP32[$513>>2] = $512;
- $514 = (($511) + ($508)|0);
- HEAP32[$514>>2] = $508;
- $515 = $$0197 | 3;
- $516 = ((($509)) + 4|0);
- HEAP32[$516>>2] = $515;
- } else {
- HEAP32[(33024)>>2] = 0;
- HEAP32[(33036)>>2] = 0;
- $517 = $506 | 3;
- $518 = ((($509)) + 4|0);
- HEAP32[$518>>2] = $517;
- $519 = (($509) + ($506)|0);
- $520 = ((($519)) + 4|0);
- $521 = HEAP32[$520>>2]|0;
- $522 = $521 | 1;
- HEAP32[$520>>2] = $522;
- }
- $523 = ((($509)) + 8|0);
- $$0 = $523;
- STACKTOP = sp;return ($$0|0);
- }
- $524 = HEAP32[(33028)>>2]|0;
- $525 = ($524>>>0)>($$0197>>>0);
- if ($525) {
- $526 = (($524) - ($$0197))|0;
- HEAP32[(33028)>>2] = $526;
- $527 = HEAP32[(33040)>>2]|0;
- $528 = (($527) + ($$0197)|0);
- HEAP32[(33040)>>2] = $528;
- $529 = $526 | 1;
- $530 = ((($528)) + 4|0);
- HEAP32[$530>>2] = $529;
- $531 = $$0197 | 3;
- $532 = ((($527)) + 4|0);
- HEAP32[$532>>2] = $531;
- $533 = ((($527)) + 8|0);
- $$0 = $533;
- STACKTOP = sp;return ($$0|0);
- }
- $534 = HEAP32[8372]|0;
- $535 = ($534|0)==(0);
- if ($535) {
- HEAP32[(33496)>>2] = 4096;
- HEAP32[(33492)>>2] = 4096;
- HEAP32[(33500)>>2] = -1;
- HEAP32[(33504)>>2] = -1;
- HEAP32[(33508)>>2] = 0;
- HEAP32[(33460)>>2] = 0;
- $536 = $1;
- $537 = $536 & -16;
- $538 = $537 ^ 1431655768;
- HEAP32[$1>>2] = $538;
- HEAP32[8372] = $538;
- $542 = 4096;
- } else {
- $$pre$i212 = HEAP32[(33496)>>2]|0;
- $542 = $$pre$i212;
- }
- $539 = (($$0197) + 48)|0;
- $540 = (($$0197) + 47)|0;
- $541 = (($542) + ($540))|0;
- $543 = (0 - ($542))|0;
- $544 = $541 & $543;
- $545 = ($544>>>0)>($$0197>>>0);
- if (!($545)) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- $546 = HEAP32[(33456)>>2]|0;
- $547 = ($546|0)==(0);
- if (!($547)) {
- $548 = HEAP32[(33448)>>2]|0;
- $549 = (($548) + ($544))|0;
- $550 = ($549>>>0)<=($548>>>0);
- $551 = ($549>>>0)>($546>>>0);
- $or$cond1$i = $550 | $551;
- if ($or$cond1$i) {
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $552 = HEAP32[(33460)>>2]|0;
- $553 = $552 & 4;
- $554 = ($553|0)==(0);
- L244: do {
- if ($554) {
- $555 = HEAP32[(33040)>>2]|0;
- $556 = ($555|0)==(0|0);
- L246: do {
- if ($556) {
- label = 163;
+ L230: do {
+ if ((label|0) == 153) {
+ $523 = HEAP32[(35460)>>2]|0;
+ $524 = ($523>>>0)<($$0198>>>0);
+ if (!($524)) {
+ $525 = (($523) - ($$0198))|0;
+ $526 = HEAP32[(35472)>>2]|0;
+ $527 = ($525>>>0)>(15);
+ if ($527) {
+ $528 = (($526) + ($$0198)|0);
+ HEAP32[(35472)>>2] = $528;
+ HEAP32[(35460)>>2] = $525;
+ $529 = $525 | 1;
+ $530 = ((($528)) + 4|0);
+ HEAP32[$530>>2] = $529;
+ $531 = (($528) + ($525)|0);
+ HEAP32[$531>>2] = $525;
+ $532 = $$0198 | 3;
+ $533 = ((($526)) + 4|0);
+ HEAP32[$533>>2] = $532;
} else {
- $$0$i$i = (33464);
- while(1) {
- $557 = HEAP32[$$0$i$i>>2]|0;
- $558 = ($557>>>0)>($555>>>0);
- if (!($558)) {
- $559 = ((($$0$i$i)) + 4|0);
- $560 = HEAP32[$559>>2]|0;
- $561 = (($557) + ($560)|0);
- $562 = ($561>>>0)>($555>>>0);
- if ($562) {
- break;
- }
+ HEAP32[(35460)>>2] = 0;
+ HEAP32[(35472)>>2] = 0;
+ $534 = $523 | 3;
+ $535 = ((($526)) + 4|0);
+ HEAP32[$535>>2] = $534;
+ $536 = (($526) + ($523)|0);
+ $537 = ((($536)) + 4|0);
+ $538 = HEAP32[$537>>2]|0;
+ $539 = $538 | 1;
+ HEAP32[$537>>2] = $539;
+ }
+ $540 = ((($526)) + 8|0);
+ $$2 = $540;
+ break;
+ }
+ $541 = HEAP32[(35464)>>2]|0;
+ $542 = ($541>>>0)>($$0198>>>0);
+ if ($542) {
+ $543 = (($541) - ($$0198))|0;
+ HEAP32[(35464)>>2] = $543;
+ $544 = HEAP32[(35476)>>2]|0;
+ $545 = (($544) + ($$0198)|0);
+ HEAP32[(35476)>>2] = $545;
+ $546 = $543 | 1;
+ $547 = ((($545)) + 4|0);
+ HEAP32[$547>>2] = $546;
+ $548 = $$0198 | 3;
+ $549 = ((($544)) + 4|0);
+ HEAP32[$549>>2] = $548;
+ $550 = ((($544)) + 8|0);
+ $$2 = $550;
+ break;
+ }
+ $551 = HEAP32[8850]|0;
+ $552 = ($551|0)==(0);
+ if ($552) {
+ (___pthread_mutex_lock(35424)|0);
+ $553 = HEAP32[8850]|0;
+ $554 = ($553|0)==(0);
+ if ($554) {
+ HEAP32[(35408)>>2] = 4096;
+ HEAP32[(35404)>>2] = 4096;
+ HEAP32[(35412)>>2] = -1;
+ HEAP32[(35416)>>2] = -1;
+ HEAP32[(35420)>>2] = 2;
+ HEAP32[(35896)>>2] = 2;
+ $555 = (_pthread_mutexattr_init($1)|0);
+ $556 = ($555|0)==(0);
+ if ($556) {
+ $557 = (_pthread_mutex_init((35900),$1)|0);
+ $558 = ($557|0)==(0);
+ if ($558) {
}
- $563 = ((($$0$i$i)) + 8|0);
- $564 = HEAP32[$563>>2]|0;
- $565 = ($564|0)==(0|0);
- if ($565) {
- label = 163;
- break L246;
+ }
+ $559 = $2;
+ $560 = $559 & -16;
+ $561 = $560 ^ 1431655768;
+ HEAP32[$2>>2] = $561;
+ Atomics_store(HEAP32,8850,$561)|0;
+ }
+ (___pthread_mutex_unlock(35424)|0);
+ }
+ $562 = (($$0198) + 48)|0;
+ $563 = HEAP32[(35408)>>2]|0;
+ $564 = (($$0198) + 47)|0;
+ $565 = (($563) + ($564))|0;
+ $566 = (0 - ($563))|0;
+ $567 = $565 & $566;
+ $568 = ($567>>>0)>($$0198>>>0);
+ if ($568) {
+ $569 = HEAP32[(35892)>>2]|0;
+ $570 = ($569|0)==(0);
+ if (!($570)) {
+ $571 = HEAP32[(35884)>>2]|0;
+ $572 = (($571) + ($567))|0;
+ $573 = ($572>>>0)<=($571>>>0);
+ $574 = ($572>>>0)>($569>>>0);
+ $or$cond1$i = $573 | $574;
+ if ($or$cond1$i) {
+ $$2 = 0;
+ break;
+ }
+ }
+ $575 = HEAP32[(35896)>>2]|0;
+ $576 = $575 & 4;
+ $577 = ($576|0)==(0);
+ if ($577) {
+ $578 = HEAP32[(35476)>>2]|0;
+ $579 = ($578|0)==(0|0);
+ L258: do {
+ if ($579) {
+ label = 176;
} else {
- $$0$i$i = $564;
+ $$0$i$i = (35928);
+ while(1) {
+ $580 = HEAP32[$$0$i$i>>2]|0;
+ $581 = ($580>>>0)>($578>>>0);
+ if (!($581)) {
+ $582 = ((($$0$i$i)) + 4|0);
+ $583 = HEAP32[$582>>2]|0;
+ $584 = (($580) + ($583)|0);
+ $585 = ($584>>>0)>($578>>>0);
+ if ($585) {
+ break;
+ }
+ }
+ $586 = ((($$0$i$i)) + 8|0);
+ $587 = HEAP32[$586>>2]|0;
+ $588 = ($587|0)==(0|0);
+ if ($588) {
+ label = 176;
+ break L258;
+ } else {
+ $$0$i$i = $587;
+ }
+ }
+ (___pthread_mutex_lock(35424)|0);
+ $611 = HEAP32[(35464)>>2]|0;
+ $612 = HEAP32[(35408)>>2]|0;
+ $613 = (($564) - ($611))|0;
+ $614 = (($613) + ($612))|0;
+ $615 = (0 - ($612))|0;
+ $616 = $614 & $615;
+ $617 = ($616>>>0)<(2147483647);
+ if ($617) {
+ $618 = (_sbrk(($616|0))|0);
+ $619 = HEAP32[$$0$i$i>>2]|0;
+ $620 = HEAP32[$582>>2]|0;
+ $621 = (($619) + ($620)|0);
+ $622 = ($618|0)==($621|0);
+ if ($622) {
+ $623 = ($618|0)==((-1)|0);
+ if ($623) {
+ $$2234253237$i = $616;
+ label = 190;
+ } else {
+ $$3229$i = $618;$$3235$i = $616;
+ }
+ } else {
+ $$2247$ph$i = $618;$$2253$ph$i = $616;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- }
- $588 = (($541) - ($524))|0;
- $589 = $588 & $543;
- $590 = ($589>>>0)<(2147483647);
- if ($590) {
- $591 = (_sbrk(($589|0))|0);
- $592 = HEAP32[$$0$i$i>>2]|0;
- $593 = HEAP32[$559>>2]|0;
- $594 = (($592) + ($593)|0);
- $595 = ($591|0)==($594|0);
- if ($595) {
- $596 = ($591|0)==((-1)|0);
- if ($596) {
- $$2234253237$i = $589;
+ } while(0);
+ do {
+ if ((label|0) == 176) {
+ (___pthread_mutex_lock(35424)|0);
+ $589 = (_sbrk(0)|0);
+ $590 = ($589|0)==((-1)|0);
+ if ($590) {
+ $$2234253237$i = 0;
+ label = 190;
} else {
- $$723948$i = $589;$$749$i = $591;
- label = 180;
- break L244;
+ $591 = $589;
+ $592 = HEAP32[(35404)>>2]|0;
+ $593 = (($592) + -1)|0;
+ $594 = $593 & $591;
+ $595 = ($594|0)==(0);
+ $596 = (($593) + ($591))|0;
+ $597 = (0 - ($592))|0;
+ $598 = $596 & $597;
+ $599 = (($598) - ($591))|0;
+ $600 = $595 ? 0 : $599;
+ $$$i = (($600) + ($567))|0;
+ $601 = HEAP32[(35884)>>2]|0;
+ $602 = (($$$i) + ($601))|0;
+ $603 = ($$$i>>>0)>($$0198>>>0);
+ $604 = ($$$i>>>0)<(2147483647);
+ $or$cond$i213 = $603 & $604;
+ if ($or$cond$i213) {
+ $605 = HEAP32[(35892)>>2]|0;
+ $606 = ($605|0)==(0);
+ if (!($606)) {
+ $607 = ($602>>>0)<=($601>>>0);
+ $608 = ($602>>>0)>($605>>>0);
+ $or$cond2$i214 = $607 | $608;
+ if ($or$cond2$i214) {
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ }
+ }
+ $609 = (_sbrk(($$$i|0))|0);
+ $610 = ($609|0)==($589|0);
+ if ($610) {
+ $$3229$i = $589;$$3235$i = $$$i;
+ } else {
+ $$2247$ph$i = $609;$$2253$ph$i = $$$i;
+ label = 184;
+ }
+ } else {
+ $$2234253237$i = 0;
+ label = 190;
+ }
}
- } else {
- $$2247$ph$i = $591;$$2253$ph$i = $589;
- label = 171;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- } while(0);
- do {
- if ((label|0) == 163) {
- $566 = (_sbrk(0)|0);
- $567 = ($566|0)==((-1)|0);
- if ($567) {
- $$2234253237$i = 0;
- } else {
- $568 = $566;
- $569 = HEAP32[(33492)>>2]|0;
- $570 = (($569) + -1)|0;
- $571 = $570 & $568;
- $572 = ($571|0)==(0);
- $573 = (($570) + ($568))|0;
- $574 = (0 - ($569))|0;
- $575 = $573 & $574;
- $576 = (($575) - ($568))|0;
- $577 = $572 ? 0 : $576;
- $$$i = (($577) + ($544))|0;
- $578 = HEAP32[(33448)>>2]|0;
- $579 = (($$$i) + ($578))|0;
- $580 = ($$$i>>>0)>($$0197>>>0);
- $581 = ($$$i>>>0)<(2147483647);
- $or$cond$i214 = $580 & $581;
- if ($or$cond$i214) {
- $582 = HEAP32[(33456)>>2]|0;
- $583 = ($582|0)==(0);
- if (!($583)) {
- $584 = ($579>>>0)<=($578>>>0);
- $585 = ($579>>>0)>($582>>>0);
- $or$cond2$i215 = $584 | $585;
- if ($or$cond2$i215) {
+ } while(0);
+ do {
+ if ((label|0) == 184) {
+ $624 = (0 - ($$2253$ph$i))|0;
+ $625 = ($$2247$ph$i|0)!=((-1)|0);
+ $626 = ($$2253$ph$i>>>0)<(2147483647);
+ $or$cond7$i = $626 & $625;
+ $627 = ($562>>>0)>($$2253$ph$i>>>0);
+ $or$cond10$i = $627 & $or$cond7$i;
+ if (!($or$cond10$i)) {
+ $637 = ($$2247$ph$i|0)==((-1)|0);
+ if ($637) {
$$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
break;
}
}
- $586 = (_sbrk(($$$i|0))|0);
- $587 = ($586|0)==($566|0);
- if ($587) {
- $$723948$i = $$$i;$$749$i = $566;
- label = 180;
- break L244;
+ $628 = HEAP32[(35408)>>2]|0;
+ $629 = (($564) - ($$2253$ph$i))|0;
+ $630 = (($629) + ($628))|0;
+ $631 = (0 - ($628))|0;
+ $632 = $630 & $631;
+ $633 = ($632>>>0)<(2147483647);
+ if ($633) {
+ $634 = (_sbrk(($632|0))|0);
+ $635 = ($634|0)==((-1)|0);
+ if ($635) {
+ (_sbrk(($624|0))|0);
+ $$2234253237$i = 0;
+ label = 190;
+ break;
+ } else {
+ $636 = (($632) + ($$2253$ph$i))|0;
+ $$3229$i = $$2247$ph$i;$$3235$i = $636;
+ break;
+ }
} else {
- $$2247$ph$i = $586;$$2253$ph$i = $$$i;
- label = 171;
+ $$3229$i = $$2247$ph$i;$$3235$i = $$2253$ph$i;
}
- } else {
- $$2234253237$i = 0;
- }
- }
- }
- } while(0);
- do {
- if ((label|0) == 171) {
- $597 = (0 - ($$2253$ph$i))|0;
- $598 = ($$2247$ph$i|0)!=((-1)|0);
- $599 = ($$2253$ph$i>>>0)<(2147483647);
- $or$cond7$i = $599 & $598;
- $600 = ($539>>>0)>($$2253$ph$i>>>0);
- $or$cond10$i = $600 & $or$cond7$i;
- if (!($or$cond10$i)) {
- $610 = ($$2247$ph$i|0)==((-1)|0);
- if ($610) {
- $$2234253237$i = 0;
- break;
- } else {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- $601 = HEAP32[(33496)>>2]|0;
- $602 = (($540) - ($$2253$ph$i))|0;
- $603 = (($602) + ($601))|0;
- $604 = (0 - ($601))|0;
- $605 = $603 & $604;
- $606 = ($605>>>0)<(2147483647);
- if (!($606)) {
- $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- $607 = (_sbrk(($605|0))|0);
- $608 = ($607|0)==((-1)|0);
- if ($608) {
- (_sbrk(($597|0))|0);
- $$2234253237$i = 0;
- break;
- } else {
- $609 = (($605) + ($$2253$ph$i))|0;
- $$723948$i = $609;$$749$i = $$2247$ph$i;
- label = 180;
- break L244;
- }
- }
- } while(0);
- $611 = HEAP32[(33460)>>2]|0;
- $612 = $611 | 4;
- HEAP32[(33460)>>2] = $612;
- $$4236$i = $$2234253237$i;
- label = 178;
- } else {
- $$4236$i = 0;
- label = 178;
- }
- } while(0);
- if ((label|0) == 178) {
- $613 = ($544>>>0)<(2147483647);
- if ($613) {
- $614 = (_sbrk(($544|0))|0);
- $615 = (_sbrk(0)|0);
- $616 = ($614|0)!=((-1)|0);
- $617 = ($615|0)!=((-1)|0);
- $or$cond5$i = $616 & $617;
- $618 = ($614>>>0)<($615>>>0);
- $or$cond11$i = $618 & $or$cond5$i;
- $619 = $615;
- $620 = $614;
- $621 = (($619) - ($620))|0;
- $622 = (($$0197) + 40)|0;
- $623 = ($621>>>0)>($622>>>0);
- $$$4236$i = $623 ? $621 : $$4236$i;
- $or$cond11$not$i = $or$cond11$i ^ 1;
- $624 = ($614|0)==((-1)|0);
- $not$$i216 = $623 ^ 1;
- $625 = $624 | $not$$i216;
- $or$cond50$i = $625 | $or$cond11$not$i;
- if (!($or$cond50$i)) {
- $$723948$i = $$$4236$i;$$749$i = $614;
- label = 180;
- }
- }
- }
- if ((label|0) == 180) {
- $626 = HEAP32[(33448)>>2]|0;
- $627 = (($626) + ($$723948$i))|0;
- HEAP32[(33448)>>2] = $627;
- $628 = HEAP32[(33452)>>2]|0;
- $629 = ($627>>>0)>($628>>>0);
- if ($629) {
- HEAP32[(33452)>>2] = $627;
- }
- $630 = HEAP32[(33040)>>2]|0;
- $631 = ($630|0)==(0|0);
- do {
- if ($631) {
- $632 = HEAP32[(33032)>>2]|0;
- $633 = ($632|0)==(0|0);
- $634 = ($$749$i>>>0)<($632>>>0);
- $or$cond12$i = $633 | $634;
- if ($or$cond12$i) {
- HEAP32[(33032)>>2] = $$749$i;
- }
- HEAP32[(33464)>>2] = $$749$i;
- HEAP32[(33468)>>2] = $$723948$i;
- HEAP32[(33476)>>2] = 0;
- $635 = HEAP32[8372]|0;
- HEAP32[(33052)>>2] = $635;
- HEAP32[(33048)>>2] = -1;
- $$01$i$i = 0;
- while(1) {
- $636 = $$01$i$i << 1;
- $637 = (33056 + ($636<<2)|0);
- $638 = ((($637)) + 12|0);
- HEAP32[$638>>2] = $637;
- $639 = ((($637)) + 8|0);
- HEAP32[$639>>2] = $637;
- $640 = (($$01$i$i) + 1)|0;
- $exitcond$i$i = ($640|0)==(32);
- if ($exitcond$i$i) {
- break;
- } else {
- $$01$i$i = $640;
- }
- }
- $641 = (($$723948$i) + -40)|0;
- $642 = ((($$749$i)) + 8|0);
- $643 = $642;
- $644 = $643 & 7;
- $645 = ($644|0)==(0);
- $646 = (0 - ($643))|0;
- $647 = $646 & 7;
- $648 = $645 ? 0 : $647;
- $649 = (($$749$i) + ($648)|0);
- $650 = (($641) - ($648))|0;
- HEAP32[(33040)>>2] = $649;
- HEAP32[(33028)>>2] = $650;
- $651 = $650 | 1;
- $652 = ((($649)) + 4|0);
- HEAP32[$652>>2] = $651;
- $653 = (($649) + ($650)|0);
- $654 = ((($653)) + 4|0);
- HEAP32[$654>>2] = 40;
- $655 = HEAP32[(33504)>>2]|0;
- HEAP32[(33044)>>2] = $655;
- } else {
- $$024371$i = (33464);
- while(1) {
- $656 = HEAP32[$$024371$i>>2]|0;
- $657 = ((($$024371$i)) + 4|0);
- $658 = HEAP32[$657>>2]|0;
- $659 = (($656) + ($658)|0);
- $660 = ($$749$i|0)==($659|0);
- if ($660) {
- label = 190;
- break;
- }
- $661 = ((($$024371$i)) + 8|0);
- $662 = HEAP32[$661>>2]|0;
- $663 = ($662|0)==(0|0);
- if ($663) {
- break;
- } else {
- $$024371$i = $662;
- }
- }
- if ((label|0) == 190) {
- $664 = ((($$024371$i)) + 12|0);
- $665 = HEAP32[$664>>2]|0;
- $666 = $665 & 8;
- $667 = ($666|0)==(0);
- if ($667) {
- $668 = ($630>>>0)>=($656>>>0);
- $669 = ($630>>>0)<($$749$i>>>0);
- $or$cond51$i = $669 & $668;
- if ($or$cond51$i) {
- $670 = (($658) + ($$723948$i))|0;
- HEAP32[$657>>2] = $670;
- $671 = HEAP32[(33028)>>2]|0;
- $672 = ((($630)) + 8|0);
- $673 = $672;
- $674 = $673 & 7;
- $675 = ($674|0)==(0);
- $676 = (0 - ($673))|0;
- $677 = $676 & 7;
- $678 = $675 ? 0 : $677;
- $679 = (($630) + ($678)|0);
- $680 = (($$723948$i) - ($678))|0;
- $681 = (($671) + ($680))|0;
- HEAP32[(33040)>>2] = $679;
- HEAP32[(33028)>>2] = $681;
- $682 = $681 | 1;
- $683 = ((($679)) + 4|0);
- HEAP32[$683>>2] = $682;
- $684 = (($679) + ($681)|0);
- $685 = ((($684)) + 4|0);
- HEAP32[$685>>2] = 40;
- $686 = HEAP32[(33504)>>2]|0;
- HEAP32[(33044)>>2] = $686;
- break;
}
+ } while(0);
+ if ((label|0) == 190) {
+ $638 = HEAP32[(35896)>>2]|0;
+ $639 = $638 | 4;
+ HEAP32[(35896)>>2] = $639;
+ $$3229$i = (-1);$$3235$i = $$2234253237$i;
}
- }
- $687 = HEAP32[(33032)>>2]|0;
- $688 = ($$749$i>>>0)<($687>>>0);
- if ($688) {
- HEAP32[(33032)>>2] = $$749$i;
- $752 = $$749$i;
+ (___pthread_mutex_unlock(35424)|0);
+ $$4230$i = $$3229$i;$$4236$i = $$3235$i;
} else {
- $752 = $687;
- }
- $689 = (($$749$i) + ($$723948$i)|0);
- $$124470$i = (33464);
- while(1) {
- $690 = HEAP32[$$124470$i>>2]|0;
- $691 = ($690|0)==($689|0);
- if ($691) {
- label = 198;
- break;
- }
- $692 = ((($$124470$i)) + 8|0);
- $693 = HEAP32[$692>>2]|0;
- $694 = ($693|0)==(0|0);
- if ($694) {
- break;
- } else {
- $$124470$i = $693;
+ $$4230$i = (-1);$$4236$i = 0;
+ }
+ $640 = ($$4230$i|0)==((-1)|0);
+ $641 = ($567>>>0)<(2147483647);
+ $or$cond9$i = $641 & $640;
+ if ($or$cond9$i) {
+ (___pthread_mutex_lock(35424)|0);
+ $642 = (_sbrk(($567|0))|0);
+ $643 = (_sbrk(0)|0);
+ (___pthread_mutex_unlock(35424)|0);
+ $644 = ($642|0)!=((-1)|0);
+ $645 = ($643|0)!=((-1)|0);
+ $or$cond5$i = $644 & $645;
+ $646 = ($642>>>0)<($643>>>0);
+ $or$cond11$i = $646 & $or$cond5$i;
+ $647 = $643;
+ $648 = $642;
+ $649 = (($647) - ($648))|0;
+ $650 = (($$0198) + 40)|0;
+ $651 = ($649>>>0)>($650>>>0);
+ $$$4236$i = $651 ? $649 : $$4236$i;
+ $$$4230$i = $651 ? $642 : (-1);
+ if ($or$cond11$i) {
+ $$7$i = $$$4230$i;$$7239$i = $$$4236$i;
+ label = 194;
}
- }
- if ((label|0) == 198) {
- $695 = ((($$124470$i)) + 12|0);
- $696 = HEAP32[$695>>2]|0;
- $697 = $696 & 8;
- $698 = ($697|0)==(0);
- if ($698) {
- HEAP32[$$124470$i>>2] = $$749$i;
- $699 = ((($$124470$i)) + 4|0);
- $700 = HEAP32[$699>>2]|0;
- $701 = (($700) + ($$723948$i))|0;
- HEAP32[$699>>2] = $701;
- $702 = ((($$749$i)) + 8|0);
- $703 = $702;
- $704 = $703 & 7;
- $705 = ($704|0)==(0);
- $706 = (0 - ($703))|0;
- $707 = $706 & 7;
- $708 = $705 ? 0 : $707;
- $709 = (($$749$i) + ($708)|0);
- $710 = ((($689)) + 8|0);
- $711 = $710;
- $712 = $711 & 7;
- $713 = ($712|0)==(0);
- $714 = (0 - ($711))|0;
- $715 = $714 & 7;
- $716 = $713 ? 0 : $715;
- $717 = (($689) + ($716)|0);
- $718 = $717;
- $719 = $709;
- $720 = (($718) - ($719))|0;
- $721 = (($709) + ($$0197)|0);
- $722 = (($720) - ($$0197))|0;
- $723 = $$0197 | 3;
- $724 = ((($709)) + 4|0);
- HEAP32[$724>>2] = $723;
- $725 = ($717|0)==($630|0);
+ } else {
+ $$7$i = $$4230$i;$$7239$i = $$4236$i;
+ label = 194;
+ }
+ if ((label|0) == 194) {
+ $652 = ($$7$i|0)==((-1)|0);
+ if (!($652)) {
+ $653 = HEAP32[(35884)>>2]|0;
+ $654 = (($653) + ($$7239$i))|0;
+ HEAP32[(35884)>>2] = $654;
+ $655 = HEAP32[(35888)>>2]|0;
+ $656 = ($654>>>0)>($655>>>0);
+ if ($656) {
+ HEAP32[(35888)>>2] = $654;
+ }
+ $657 = HEAP32[(35476)>>2]|0;
+ $658 = ($657|0)==(0|0);
do {
- if ($725) {
- $726 = HEAP32[(33028)>>2]|0;
- $727 = (($726) + ($722))|0;
- HEAP32[(33028)>>2] = $727;
- HEAP32[(33040)>>2] = $721;
- $728 = $727 | 1;
- $729 = ((($721)) + 4|0);
- HEAP32[$729>>2] = $728;
+ if ($658) {
+ $659 = HEAP32[(35468)>>2]|0;
+ $660 = ($659|0)==(0|0);
+ $661 = ($$7$i>>>0)<($659>>>0);
+ $or$cond12$i = $660 | $661;
+ if ($or$cond12$i) {
+ HEAP32[(35468)>>2] = $$7$i;
+ }
+ HEAP32[(35928)>>2] = $$7$i;
+ HEAP32[(35932)>>2] = $$7239$i;
+ HEAP32[(35940)>>2] = 0;
+ $662 = HEAP32[8850]|0;
+ HEAP32[(35488)>>2] = $662;
+ HEAP32[(35484)>>2] = -1;
+ $$01$i$i = 0;
+ while(1) {
+ $663 = $$01$i$i << 1;
+ $664 = (35492 + ($663<<2)|0);
+ $665 = ((($664)) + 12|0);
+ HEAP32[$665>>2] = $664;
+ $666 = ((($664)) + 8|0);
+ HEAP32[$666>>2] = $664;
+ $667 = (($$01$i$i) + 1)|0;
+ $exitcond$i$i = ($667|0)==(32);
+ if ($exitcond$i$i) {
+ break;
+ } else {
+ $$01$i$i = $667;
+ }
+ }
+ $668 = (($$7239$i) + -40)|0;
+ $669 = ((($$7$i)) + 8|0);
+ $670 = $669;
+ $671 = $670 & 7;
+ $672 = ($671|0)==(0);
+ $673 = (0 - ($670))|0;
+ $674 = $673 & 7;
+ $675 = $672 ? 0 : $674;
+ $676 = (($$7$i) + ($675)|0);
+ $677 = (($668) - ($675))|0;
+ HEAP32[(35476)>>2] = $676;
+ HEAP32[(35464)>>2] = $677;
+ $678 = $677 | 1;
+ $679 = ((($676)) + 4|0);
+ HEAP32[$679>>2] = $678;
+ $680 = (($676) + ($677)|0);
+ $681 = ((($680)) + 4|0);
+ HEAP32[$681>>2] = 40;
+ $682 = HEAP32[(35416)>>2]|0;
+ HEAP32[(35480)>>2] = $682;
} else {
- $730 = HEAP32[(33036)>>2]|0;
- $731 = ($717|0)==($730|0);
- if ($731) {
- $732 = HEAP32[(33024)>>2]|0;
- $733 = (($732) + ($722))|0;
- HEAP32[(33024)>>2] = $733;
- HEAP32[(33036)>>2] = $721;
- $734 = $733 | 1;
- $735 = ((($721)) + 4|0);
- HEAP32[$735>>2] = $734;
- $736 = (($721) + ($733)|0);
- HEAP32[$736>>2] = $733;
- break;
+ $$024363$i = (35928);
+ while(1) {
+ $683 = HEAP32[$$024363$i>>2]|0;
+ $684 = ((($$024363$i)) + 4|0);
+ $685 = HEAP32[$684>>2]|0;
+ $686 = (($683) + ($685)|0);
+ $687 = ($$7$i|0)==($686|0);
+ if ($687) {
+ label = 205;
+ break;
+ }
+ $688 = ((($$024363$i)) + 8|0);
+ $689 = HEAP32[$688>>2]|0;
+ $690 = ($689|0)==(0|0);
+ if ($690) {
+ break;
+ } else {
+ $$024363$i = $689;
+ }
}
- $737 = ((($717)) + 4|0);
- $738 = HEAP32[$737>>2]|0;
- $739 = $738 & 3;
- $740 = ($739|0)==(1);
- if ($740) {
- $741 = $738 & -8;
- $742 = $738 >>> 3;
- $743 = ($738>>>0)<(256);
- L314: do {
- if ($743) {
- $744 = ((($717)) + 8|0);
- $745 = HEAP32[$744>>2]|0;
- $746 = ((($717)) + 12|0);
- $747 = HEAP32[$746>>2]|0;
- $748 = $742 << 1;
- $749 = (33056 + ($748<<2)|0);
- $750 = ($745|0)==($749|0);
- do {
- if (!($750)) {
- $751 = ($745>>>0)<($752>>>0);
- if ($751) {
- _abort();
- // unreachable;
- }
- $753 = ((($745)) + 12|0);
- $754 = HEAP32[$753>>2]|0;
- $755 = ($754|0)==($717|0);
- if ($755) {
- break;
- }
- _abort();
- // unreachable;
+ if ((label|0) == 205) {
+ $691 = ((($$024363$i)) + 12|0);
+ $692 = HEAP32[$691>>2]|0;
+ $693 = $692 & 8;
+ $694 = ($693|0)==(0);
+ if ($694) {
+ $695 = ($657>>>0)>=($683>>>0);
+ $696 = ($657>>>0)<($$7$i>>>0);
+ $or$cond43$i = $696 & $695;
+ if ($or$cond43$i) {
+ $697 = (($685) + ($$7239$i))|0;
+ HEAP32[$684>>2] = $697;
+ $698 = HEAP32[(35464)>>2]|0;
+ $699 = ((($657)) + 8|0);
+ $700 = $699;
+ $701 = $700 & 7;
+ $702 = ($701|0)==(0);
+ $703 = (0 - ($700))|0;
+ $704 = $703 & 7;
+ $705 = $702 ? 0 : $704;
+ $706 = (($657) + ($705)|0);
+ $707 = (($$7239$i) - ($705))|0;
+ $708 = (($698) + ($707))|0;
+ HEAP32[(35476)>>2] = $706;
+ HEAP32[(35464)>>2] = $708;
+ $709 = $708 | 1;
+ $710 = ((($706)) + 4|0);
+ HEAP32[$710>>2] = $709;
+ $711 = (($706) + ($708)|0);
+ $712 = ((($711)) + 4|0);
+ HEAP32[$712>>2] = 40;
+ $713 = HEAP32[(35416)>>2]|0;
+ HEAP32[(35480)>>2] = $713;
+ break;
+ }
+ }
+ }
+ $714 = HEAP32[(35468)>>2]|0;
+ $715 = ($$7$i>>>0)<($714>>>0);
+ if ($715) {
+ HEAP32[(35468)>>2] = $$7$i;
+ $779 = $$7$i;
+ } else {
+ $779 = $714;
+ }
+ $716 = (($$7$i) + ($$7239$i)|0);
+ $$124462$i = (35928);
+ while(1) {
+ $717 = HEAP32[$$124462$i>>2]|0;
+ $718 = ($717|0)==($716|0);
+ if ($718) {
+ label = 213;
+ break;
+ }
+ $719 = ((($$124462$i)) + 8|0);
+ $720 = HEAP32[$719>>2]|0;
+ $721 = ($720|0)==(0|0);
+ if ($721) {
+ break;
+ } else {
+ $$124462$i = $720;
+ }
+ }
+ if ((label|0) == 213) {
+ $722 = ((($$124462$i)) + 12|0);
+ $723 = HEAP32[$722>>2]|0;
+ $724 = $723 & 8;
+ $725 = ($724|0)==(0);
+ if ($725) {
+ HEAP32[$$124462$i>>2] = $$7$i;
+ $726 = ((($$124462$i)) + 4|0);
+ $727 = HEAP32[$726>>2]|0;
+ $728 = (($727) + ($$7239$i))|0;
+ HEAP32[$726>>2] = $728;
+ $729 = ((($$7$i)) + 8|0);
+ $730 = $729;
+ $731 = $730 & 7;
+ $732 = ($731|0)==(0);
+ $733 = (0 - ($730))|0;
+ $734 = $733 & 7;
+ $735 = $732 ? 0 : $734;
+ $736 = (($$7$i) + ($735)|0);
+ $737 = ((($716)) + 8|0);
+ $738 = $737;
+ $739 = $738 & 7;
+ $740 = ($739|0)==(0);
+ $741 = (0 - ($738))|0;
+ $742 = $741 & 7;
+ $743 = $740 ? 0 : $742;
+ $744 = (($716) + ($743)|0);
+ $745 = $744;
+ $746 = $736;
+ $747 = (($745) - ($746))|0;
+ $748 = (($736) + ($$0198)|0);
+ $749 = (($747) - ($$0198))|0;
+ $750 = $$0198 | 3;
+ $751 = ((($736)) + 4|0);
+ HEAP32[$751>>2] = $750;
+ $752 = ($744|0)==($657|0);
+ do {
+ if ($752) {
+ $753 = HEAP32[(35464)>>2]|0;
+ $754 = (($753) + ($749))|0;
+ HEAP32[(35464)>>2] = $754;
+ HEAP32[(35476)>>2] = $748;
+ $755 = $754 | 1;
+ $756 = ((($748)) + 4|0);
+ HEAP32[$756>>2] = $755;
+ } else {
+ $757 = HEAP32[(35472)>>2]|0;
+ $758 = ($744|0)==($757|0);
+ if ($758) {
+ $759 = HEAP32[(35460)>>2]|0;
+ $760 = (($759) + ($749))|0;
+ HEAP32[(35460)>>2] = $760;
+ HEAP32[(35472)>>2] = $748;
+ $761 = $760 | 1;
+ $762 = ((($748)) + 4|0);
+ HEAP32[$762>>2] = $761;
+ $763 = (($748) + ($760)|0);
+ HEAP32[$763>>2] = $760;
+ break;
}
- } while(0);
- $756 = ($747|0)==($745|0);
- if ($756) {
- $757 = 1 << $742;
- $758 = $757 ^ -1;
- $759 = HEAP32[8254]|0;
- $760 = $759 & $758;
- HEAP32[8254] = $760;
- break;
- }
- $761 = ($747|0)==($749|0);
- do {
- if ($761) {
- $$pre10$i$i = ((($747)) + 8|0);
- $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ $764 = ((($744)) + 4|0);
+ $765 = HEAP32[$764>>2]|0;
+ $766 = $765 & 3;
+ $767 = ($766|0)==(1);
+ if ($767) {
+ $768 = $765 & -8;
+ $769 = $765 >>> 3;
+ $770 = ($765>>>0)<(256);
+ L329: do {
+ if ($770) {
+ $771 = ((($744)) + 8|0);
+ $772 = HEAP32[$771>>2]|0;
+ $773 = ((($744)) + 12|0);
+ $774 = HEAP32[$773>>2]|0;
+ $775 = $769 << 1;
+ $776 = (35492 + ($775<<2)|0);
+ $777 = ($772|0)==($776|0);
+ do {
+ if (!($777)) {
+ $778 = ($772>>>0)<($779>>>0);
+ if ($778) {
+ _abort();
+ // unreachable;
+ }
+ $780 = ((($772)) + 12|0);
+ $781 = HEAP32[$780>>2]|0;
+ $782 = ($781|0)==($744|0);
+ if ($782) {
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $783 = ($774|0)==($772|0);
+ if ($783) {
+ $784 = 1 << $769;
+ $785 = $784 ^ -1;
+ $786 = HEAP32[8863]|0;
+ $787 = $786 & $785;
+ HEAP32[8863] = $787;
+ break;
+ }
+ $788 = ($774|0)==($776|0);
+ do {
+ if ($788) {
+ $$pre10$i$i = ((($774)) + 8|0);
+ $$pre$phi11$i$iZ2D = $$pre10$i$i;
+ } else {
+ $789 = ($774>>>0)<($779>>>0);
+ if ($789) {
+ _abort();
+ // unreachable;
+ }
+ $790 = ((($774)) + 8|0);
+ $791 = HEAP32[$790>>2]|0;
+ $792 = ($791|0)==($744|0);
+ if ($792) {
+ $$pre$phi11$i$iZ2D = $790;
+ break;
+ }
+ _abort();
+ // unreachable;
+ }
+ } while(0);
+ $793 = ((($772)) + 12|0);
+ HEAP32[$793>>2] = $774;
+ HEAP32[$$pre$phi11$i$iZ2D>>2] = $772;
+ } else {
+ $794 = ((($744)) + 24|0);
+ $795 = HEAP32[$794>>2]|0;
+ $796 = ((($744)) + 12|0);
+ $797 = HEAP32[$796>>2]|0;
+ $798 = ($797|0)==($744|0);
+ do {
+ if ($798) {
+ $808 = ((($744)) + 16|0);
+ $809 = ((($808)) + 4|0);
+ $810 = HEAP32[$809>>2]|0;
+ $811 = ($810|0)==(0|0);
+ if ($811) {
+ $812 = HEAP32[$808>>2]|0;
+ $813 = ($812|0)==(0|0);
+ if ($813) {
+ $$3$i$i = 0;
+ break;
+ } else {
+ $$1291$i$i = $812;$$1293$i$i = $808;
+ }
+ } else {
+ $$1291$i$i = $810;$$1293$i$i = $809;
+ }
+ while(1) {
+ $814 = ((($$1291$i$i)) + 20|0);
+ $815 = HEAP32[$814>>2]|0;
+ $816 = ($815|0)==(0|0);
+ if (!($816)) {
+ $$1291$i$i = $815;$$1293$i$i = $814;
+ continue;
+ }
+ $817 = ((($$1291$i$i)) + 16|0);
+ $818 = HEAP32[$817>>2]|0;
+ $819 = ($818|0)==(0|0);
+ if ($819) {
+ break;
+ } else {
+ $$1291$i$i = $818;$$1293$i$i = $817;
+ }
+ }
+ $820 = ($$1293$i$i>>>0)<($779>>>0);
+ if ($820) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1293$i$i>>2] = 0;
+ $$3$i$i = $$1291$i$i;
+ break;
+ }
+ } else {
+ $799 = ((($744)) + 8|0);
+ $800 = HEAP32[$799>>2]|0;
+ $801 = ($800>>>0)<($779>>>0);
+ if ($801) {
+ _abort();
+ // unreachable;
+ }
+ $802 = ((($800)) + 12|0);
+ $803 = HEAP32[$802>>2]|0;
+ $804 = ($803|0)==($744|0);
+ if (!($804)) {
+ _abort();
+ // unreachable;
+ }
+ $805 = ((($797)) + 8|0);
+ $806 = HEAP32[$805>>2]|0;
+ $807 = ($806|0)==($744|0);
+ if ($807) {
+ HEAP32[$802>>2] = $797;
+ HEAP32[$805>>2] = $800;
+ $$3$i$i = $797;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $821 = ($795|0)==(0|0);
+ if ($821) {
+ break;
+ }
+ $822 = ((($744)) + 28|0);
+ $823 = HEAP32[$822>>2]|0;
+ $824 = (35756 + ($823<<2)|0);
+ $825 = HEAP32[$824>>2]|0;
+ $826 = ($744|0)==($825|0);
+ do {
+ if ($826) {
+ HEAP32[$824>>2] = $$3$i$i;
+ $cond$i$i = ($$3$i$i|0)==(0|0);
+ if (!($cond$i$i)) {
+ break;
+ }
+ $827 = 1 << $823;
+ $828 = $827 ^ -1;
+ $829 = HEAP32[(35456)>>2]|0;
+ $830 = $829 & $828;
+ HEAP32[(35456)>>2] = $830;
+ break L329;
+ } else {
+ $831 = HEAP32[(35468)>>2]|0;
+ $832 = ($795>>>0)<($831>>>0);
+ if ($832) {
+ _abort();
+ // unreachable;
+ } else {
+ $833 = ((($795)) + 16|0);
+ $834 = HEAP32[$833>>2]|0;
+ $not$$i$i = ($834|0)!=($744|0);
+ $$sink1$i$i = $not$$i$i&1;
+ $835 = (((($795)) + 16|0) + ($$sink1$i$i<<2)|0);
+ HEAP32[$835>>2] = $$3$i$i;
+ $836 = ($$3$i$i|0)==(0|0);
+ if ($836) {
+ break L329;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $837 = HEAP32[(35468)>>2]|0;
+ $838 = ($$3$i$i>>>0)<($837>>>0);
+ if ($838) {
+ _abort();
+ // unreachable;
+ }
+ $839 = ((($$3$i$i)) + 24|0);
+ HEAP32[$839>>2] = $795;
+ $840 = ((($744)) + 16|0);
+ $841 = HEAP32[$840>>2]|0;
+ $842 = ($841|0)==(0|0);
+ do {
+ if (!($842)) {
+ $843 = ($841>>>0)<($837>>>0);
+ if ($843) {
+ _abort();
+ // unreachable;
+ } else {
+ $844 = ((($$3$i$i)) + 16|0);
+ HEAP32[$844>>2] = $841;
+ $845 = ((($841)) + 24|0);
+ HEAP32[$845>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $846 = ((($840)) + 4|0);
+ $847 = HEAP32[$846>>2]|0;
+ $848 = ($847|0)==(0|0);
+ if ($848) {
+ break;
+ }
+ $849 = HEAP32[(35468)>>2]|0;
+ $850 = ($847>>>0)<($849>>>0);
+ if ($850) {
+ _abort();
+ // unreachable;
+ } else {
+ $851 = ((($$3$i$i)) + 20|0);
+ HEAP32[$851>>2] = $847;
+ $852 = ((($847)) + 24|0);
+ HEAP32[$852>>2] = $$3$i$i;
+ break;
+ }
+ }
+ } while(0);
+ $853 = (($744) + ($768)|0);
+ $854 = (($768) + ($749))|0;
+ $$0$i17$i = $853;$$0287$i$i = $854;
} else {
- $762 = ($747>>>0)<($752>>>0);
- if ($762) {
- _abort();
- // unreachable;
- }
- $763 = ((($747)) + 8|0);
- $764 = HEAP32[$763>>2]|0;
- $765 = ($764|0)==($717|0);
- if ($765) {
- $$pre$phi11$i$iZ2D = $763;
- break;
- }
- _abort();
- // unreachable;
+ $$0$i17$i = $744;$$0287$i$i = $749;
}
- } while(0);
- $766 = ((($745)) + 12|0);
- HEAP32[$766>>2] = $747;
- HEAP32[$$pre$phi11$i$iZ2D>>2] = $745;
- } else {
- $767 = ((($717)) + 24|0);
- $768 = HEAP32[$767>>2]|0;
- $769 = ((($717)) + 12|0);
- $770 = HEAP32[$769>>2]|0;
- $771 = ($770|0)==($717|0);
- do {
- if ($771) {
- $781 = ((($717)) + 16|0);
- $782 = ((($781)) + 4|0);
- $783 = HEAP32[$782>>2]|0;
- $784 = ($783|0)==(0|0);
- if ($784) {
- $785 = HEAP32[$781>>2]|0;
- $786 = ($785|0)==(0|0);
- if ($786) {
- $$3$i$i = 0;
- break;
+ $855 = ((($$0$i17$i)) + 4|0);
+ $856 = HEAP32[$855>>2]|0;
+ $857 = $856 & -2;
+ HEAP32[$855>>2] = $857;
+ $858 = $$0287$i$i | 1;
+ $859 = ((($748)) + 4|0);
+ HEAP32[$859>>2] = $858;
+ $860 = (($748) + ($$0287$i$i)|0);
+ HEAP32[$860>>2] = $$0287$i$i;
+ $861 = $$0287$i$i >>> 3;
+ $862 = ($$0287$i$i>>>0)<(256);
+ if ($862) {
+ $863 = $861 << 1;
+ $864 = (35492 + ($863<<2)|0);
+ $865 = HEAP32[8863]|0;
+ $866 = 1 << $861;
+ $867 = $865 & $866;
+ $868 = ($867|0)==(0);
+ do {
+ if ($868) {
+ $869 = $865 | $866;
+ HEAP32[8863] = $869;
+ $$pre$i$i = ((($864)) + 8|0);
+ $$0295$i$i = $864;$$pre$phi$i$iZ2D = $$pre$i$i;
} else {
- $$1291$i$i = $785;$$1293$i$i = $781;
+ $870 = ((($864)) + 8|0);
+ $871 = HEAP32[$870>>2]|0;
+ $872 = HEAP32[(35468)>>2]|0;
+ $873 = ($871>>>0)<($872>>>0);
+ if (!($873)) {
+ $$0295$i$i = $871;$$pre$phi$i$iZ2D = $870;
+ break;
+ }
+ _abort();
+ // unreachable;
}
+ } while(0);
+ HEAP32[$$pre$phi$i$iZ2D>>2] = $748;
+ $874 = ((($$0295$i$i)) + 12|0);
+ HEAP32[$874>>2] = $748;
+ $875 = ((($748)) + 8|0);
+ HEAP32[$875>>2] = $$0295$i$i;
+ $876 = ((($748)) + 12|0);
+ HEAP32[$876>>2] = $864;
+ break;
+ }
+ $877 = $$0287$i$i >>> 8;
+ $878 = ($877|0)==(0);
+ do {
+ if ($878) {
+ $$0296$i$i = 0;
} else {
- $$1291$i$i = $783;$$1293$i$i = $782;
- }
- while(1) {
- $787 = ((($$1291$i$i)) + 20|0);
- $788 = HEAP32[$787>>2]|0;
- $789 = ($788|0)==(0|0);
- if (!($789)) {
- $$1291$i$i = $788;$$1293$i$i = $787;
- continue;
- }
- $790 = ((($$1291$i$i)) + 16|0);
- $791 = HEAP32[$790>>2]|0;
- $792 = ($791|0)==(0|0);
- if ($792) {
+ $879 = ($$0287$i$i>>>0)>(16777215);
+ if ($879) {
+ $$0296$i$i = 31;
break;
- } else {
- $$1291$i$i = $791;$$1293$i$i = $790;
}
+ $880 = (($877) + 1048320)|0;
+ $881 = $880 >>> 16;
+ $882 = $881 & 8;
+ $883 = $877 << $882;
+ $884 = (($883) + 520192)|0;
+ $885 = $884 >>> 16;
+ $886 = $885 & 4;
+ $887 = $886 | $882;
+ $888 = $883 << $886;
+ $889 = (($888) + 245760)|0;
+ $890 = $889 >>> 16;
+ $891 = $890 & 2;
+ $892 = $887 | $891;
+ $893 = (14 - ($892))|0;
+ $894 = $888 << $891;
+ $895 = $894 >>> 15;
+ $896 = (($893) + ($895))|0;
+ $897 = $896 << 1;
+ $898 = (($896) + 7)|0;
+ $899 = $$0287$i$i >>> $898;
+ $900 = $899 & 1;
+ $901 = $900 | $897;
+ $$0296$i$i = $901;
}
- $793 = ($$1293$i$i>>>0)<($752>>>0);
- if ($793) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1293$i$i>>2] = 0;
- $$3$i$i = $$1291$i$i;
+ } while(0);
+ $902 = (35756 + ($$0296$i$i<<2)|0);
+ $903 = ((($748)) + 28|0);
+ HEAP32[$903>>2] = $$0296$i$i;
+ $904 = ((($748)) + 16|0);
+ $905 = ((($904)) + 4|0);
+ HEAP32[$905>>2] = 0;
+ HEAP32[$904>>2] = 0;
+ $906 = HEAP32[(35456)>>2]|0;
+ $907 = 1 << $$0296$i$i;
+ $908 = $906 & $907;
+ $909 = ($908|0)==(0);
+ if ($909) {
+ $910 = $906 | $907;
+ HEAP32[(35456)>>2] = $910;
+ HEAP32[$902>>2] = $748;
+ $911 = ((($748)) + 24|0);
+ HEAP32[$911>>2] = $902;
+ $912 = ((($748)) + 12|0);
+ HEAP32[$912>>2] = $748;
+ $913 = ((($748)) + 8|0);
+ HEAP32[$913>>2] = $748;
+ break;
+ }
+ $914 = HEAP32[$902>>2]|0;
+ $915 = ($$0296$i$i|0)==(31);
+ $916 = $$0296$i$i >>> 1;
+ $917 = (25 - ($916))|0;
+ $918 = $915 ? 0 : $917;
+ $919 = $$0287$i$i << $918;
+ $$0288$i$i = $919;$$0289$i$i = $914;
+ while(1) {
+ $920 = ((($$0289$i$i)) + 4|0);
+ $921 = HEAP32[$920>>2]|0;
+ $922 = $921 & -8;
+ $923 = ($922|0)==($$0287$i$i|0);
+ if ($923) {
+ label = 280;
break;
}
- } else {
- $772 = ((($717)) + 8|0);
- $773 = HEAP32[$772>>2]|0;
- $774 = ($773>>>0)<($752>>>0);
- if ($774) {
- _abort();
- // unreachable;
- }
- $775 = ((($773)) + 12|0);
- $776 = HEAP32[$775>>2]|0;
- $777 = ($776|0)==($717|0);
- if (!($777)) {
- _abort();
- // unreachable;
- }
- $778 = ((($770)) + 8|0);
- $779 = HEAP32[$778>>2]|0;
- $780 = ($779|0)==($717|0);
- if ($780) {
- HEAP32[$775>>2] = $770;
- HEAP32[$778>>2] = $773;
- $$3$i$i = $770;
+ $924 = $$0288$i$i >>> 31;
+ $925 = (((($$0289$i$i)) + 16|0) + ($924<<2)|0);
+ $926 = $$0288$i$i << 1;
+ $927 = HEAP32[$925>>2]|0;
+ $928 = ($927|0)==(0|0);
+ if ($928) {
+ label = 277;
break;
} else {
- _abort();
- // unreachable;
+ $$0288$i$i = $926;$$0289$i$i = $927;
}
}
- } while(0);
- $794 = ($768|0)==(0|0);
- if ($794) {
- break;
- }
- $795 = ((($717)) + 28|0);
- $796 = HEAP32[$795>>2]|0;
- $797 = (33320 + ($796<<2)|0);
- $798 = HEAP32[$797>>2]|0;
- $799 = ($717|0)==($798|0);
- do {
- if ($799) {
- HEAP32[$797>>2] = $$3$i$i;
- $cond$i$i = ($$3$i$i|0)==(0|0);
- if (!($cond$i$i)) {
- break;
- }
- $800 = 1 << $796;
- $801 = $800 ^ -1;
- $802 = HEAP32[(33020)>>2]|0;
- $803 = $802 & $801;
- HEAP32[(33020)>>2] = $803;
- break L314;
- } else {
- $804 = HEAP32[(33032)>>2]|0;
- $805 = ($768>>>0)<($804>>>0);
- if ($805) {
+ if ((label|0) == 277) {
+ $929 = HEAP32[(35468)>>2]|0;
+ $930 = ($925>>>0)<($929>>>0);
+ if ($930) {
_abort();
// unreachable;
} else {
- $806 = ((($768)) + 16|0);
- $807 = HEAP32[$806>>2]|0;
- $not$$i17$i = ($807|0)!=($717|0);
- $$sink1$i$i = $not$$i17$i&1;
- $808 = (((($768)) + 16|0) + ($$sink1$i$i<<2)|0);
- HEAP32[$808>>2] = $$3$i$i;
- $809 = ($$3$i$i|0)==(0|0);
- if ($809) {
- break L314;
- } else {
- break;
- }
+ HEAP32[$925>>2] = $748;
+ $931 = ((($748)) + 24|0);
+ HEAP32[$931>>2] = $$0289$i$i;
+ $932 = ((($748)) + 12|0);
+ HEAP32[$932>>2] = $748;
+ $933 = ((($748)) + 8|0);
+ HEAP32[$933>>2] = $748;
+ break;
}
}
- } while(0);
- $810 = HEAP32[(33032)>>2]|0;
- $811 = ($$3$i$i>>>0)<($810>>>0);
- if ($811) {
- _abort();
- // unreachable;
- }
- $812 = ((($$3$i$i)) + 24|0);
- HEAP32[$812>>2] = $768;
- $813 = ((($717)) + 16|0);
- $814 = HEAP32[$813>>2]|0;
- $815 = ($814|0)==(0|0);
- do {
- if (!($815)) {
- $816 = ($814>>>0)<($810>>>0);
- if ($816) {
+ else if ((label|0) == 280) {
+ $934 = ((($$0289$i$i)) + 8|0);
+ $935 = HEAP32[$934>>2]|0;
+ $936 = HEAP32[(35468)>>2]|0;
+ $937 = ($935>>>0)>=($936>>>0);
+ $not$7$i$i = ($$0289$i$i>>>0)>=($936>>>0);
+ $938 = $937 & $not$7$i$i;
+ if ($938) {
+ $939 = ((($935)) + 12|0);
+ HEAP32[$939>>2] = $748;
+ HEAP32[$934>>2] = $748;
+ $940 = ((($748)) + 8|0);
+ HEAP32[$940>>2] = $935;
+ $941 = ((($748)) + 12|0);
+ HEAP32[$941>>2] = $$0289$i$i;
+ $942 = ((($748)) + 24|0);
+ HEAP32[$942>>2] = 0;
+ break;
+ } else {
_abort();
// unreachable;
- } else {
- $817 = ((($$3$i$i)) + 16|0);
- HEAP32[$817>>2] = $814;
- $818 = ((($814)) + 24|0);
- HEAP32[$818>>2] = $$3$i$i;
- break;
}
}
- } while(0);
- $819 = ((($813)) + 4|0);
- $820 = HEAP32[$819>>2]|0;
- $821 = ($820|0)==(0|0);
- if ($821) {
- break;
}
- $822 = HEAP32[(33032)>>2]|0;
- $823 = ($820>>>0)<($822>>>0);
- if ($823) {
+ } while(0);
+ $1074 = ((($736)) + 8|0);
+ $$2 = $1074;
+ break L230;
+ }
+ }
+ $$0$i$i$i = (35928);
+ while(1) {
+ $943 = HEAP32[$$0$i$i$i>>2]|0;
+ $944 = ($943>>>0)>($657>>>0);
+ if (!($944)) {
+ $945 = ((($$0$i$i$i)) + 4|0);
+ $946 = HEAP32[$945>>2]|0;
+ $947 = (($943) + ($946)|0);
+ $948 = ($947>>>0)>($657>>>0);
+ if ($948) {
+ break;
+ }
+ }
+ $949 = ((($$0$i$i$i)) + 8|0);
+ $950 = HEAP32[$949>>2]|0;
+ $$0$i$i$i = $950;
+ }
+ $951 = ((($947)) + -47|0);
+ $952 = ((($951)) + 8|0);
+ $953 = $952;
+ $954 = $953 & 7;
+ $955 = ($954|0)==(0);
+ $956 = (0 - ($953))|0;
+ $957 = $956 & 7;
+ $958 = $955 ? 0 : $957;
+ $959 = (($951) + ($958)|0);
+ $960 = ((($657)) + 16|0);
+ $961 = ($959>>>0)<($960>>>0);
+ $962 = $961 ? $657 : $959;
+ $963 = ((($962)) + 8|0);
+ $964 = ((($962)) + 24|0);
+ $965 = (($$7239$i) + -40)|0;
+ $966 = ((($$7$i)) + 8|0);
+ $967 = $966;
+ $968 = $967 & 7;
+ $969 = ($968|0)==(0);
+ $970 = (0 - ($967))|0;
+ $971 = $970 & 7;
+ $972 = $969 ? 0 : $971;
+ $973 = (($$7$i) + ($972)|0);
+ $974 = (($965) - ($972))|0;
+ HEAP32[(35476)>>2] = $973;
+ HEAP32[(35464)>>2] = $974;
+ $975 = $974 | 1;
+ $976 = ((($973)) + 4|0);
+ HEAP32[$976>>2] = $975;
+ $977 = (($973) + ($974)|0);
+ $978 = ((($977)) + 4|0);
+ HEAP32[$978>>2] = 40;
+ $979 = HEAP32[(35416)>>2]|0;
+ HEAP32[(35480)>>2] = $979;
+ $980 = ((($962)) + 4|0);
+ HEAP32[$980>>2] = 27;
+ ;HEAP32[$963>>2]=HEAP32[(35928)>>2]|0;HEAP32[$963+4>>2]=HEAP32[(35928)+4>>2]|0;HEAP32[$963+8>>2]=HEAP32[(35928)+8>>2]|0;HEAP32[$963+12>>2]=HEAP32[(35928)+12>>2]|0;
+ HEAP32[(35928)>>2] = $$7$i;
+ HEAP32[(35932)>>2] = $$7239$i;
+ HEAP32[(35940)>>2] = 0;
+ HEAP32[(35936)>>2] = $963;
+ $982 = $964;
+ while(1) {
+ $981 = ((($982)) + 4|0);
+ HEAP32[$981>>2] = 7;
+ $983 = ((($982)) + 8|0);
+ $984 = ($983>>>0)<($947>>>0);
+ if ($984) {
+ $982 = $981;
+ } else {
+ break;
+ }
+ }
+ $985 = ($962|0)==($657|0);
+ if (!($985)) {
+ $986 = $962;
+ $987 = $657;
+ $988 = (($986) - ($987))|0;
+ $989 = HEAP32[$980>>2]|0;
+ $990 = $989 & -2;
+ HEAP32[$980>>2] = $990;
+ $991 = $988 | 1;
+ $992 = ((($657)) + 4|0);
+ HEAP32[$992>>2] = $991;
+ HEAP32[$962>>2] = $988;
+ $993 = $988 >>> 3;
+ $994 = ($988>>>0)<(256);
+ if ($994) {
+ $995 = $993 << 1;
+ $996 = (35492 + ($995<<2)|0);
+ $997 = HEAP32[8863]|0;
+ $998 = 1 << $993;
+ $999 = $997 & $998;
+ $1000 = ($999|0)==(0);
+ do {
+ if ($1000) {
+ $1001 = $997 | $998;
+ HEAP32[8863] = $1001;
+ $$pre$i18$i = ((($996)) + 8|0);
+ $$0211$i$i = $996;$$pre$phi$i19$iZ2D = $$pre$i18$i;
+ } else {
+ $1002 = ((($996)) + 8|0);
+ $1003 = HEAP32[$1002>>2]|0;
+ $1004 = HEAP32[(35468)>>2]|0;
+ $1005 = ($1003>>>0)<($1004>>>0);
+ if (!($1005)) {
+ $$0211$i$i = $1003;$$pre$phi$i19$iZ2D = $1002;
+ break;
+ }
_abort();
// unreachable;
- } else {
- $824 = ((($$3$i$i)) + 20|0);
- HEAP32[$824>>2] = $820;
- $825 = ((($820)) + 24|0);
- HEAP32[$825>>2] = $$3$i$i;
- break;
}
- }
- } while(0);
- $826 = (($717) + ($741)|0);
- $827 = (($741) + ($722))|0;
- $$0$i18$i = $826;$$0287$i$i = $827;
- } else {
- $$0$i18$i = $717;$$0287$i$i = $722;
- }
- $828 = ((($$0$i18$i)) + 4|0);
- $829 = HEAP32[$828>>2]|0;
- $830 = $829 & -2;
- HEAP32[$828>>2] = $830;
- $831 = $$0287$i$i | 1;
- $832 = ((($721)) + 4|0);
- HEAP32[$832>>2] = $831;
- $833 = (($721) + ($$0287$i$i)|0);
- HEAP32[$833>>2] = $$0287$i$i;
- $834 = $$0287$i$i >>> 3;
- $835 = ($$0287$i$i>>>0)<(256);
- if ($835) {
- $836 = $834 << 1;
- $837 = (33056 + ($836<<2)|0);
- $838 = HEAP32[8254]|0;
- $839 = 1 << $834;
- $840 = $838 & $839;
- $841 = ($840|0)==(0);
+ } while(0);
+ HEAP32[$$pre$phi$i19$iZ2D>>2] = $657;
+ $1006 = ((($$0211$i$i)) + 12|0);
+ HEAP32[$1006>>2] = $657;
+ $1007 = ((($657)) + 8|0);
+ HEAP32[$1007>>2] = $$0211$i$i;
+ $1008 = ((($657)) + 12|0);
+ HEAP32[$1008>>2] = $996;
+ break;
+ }
+ $1009 = $988 >>> 8;
+ $1010 = ($1009|0)==(0);
do {
- if ($841) {
- $842 = $838 | $839;
- HEAP32[8254] = $842;
- $$pre$i19$i = ((($837)) + 8|0);
- $$0295$i$i = $837;$$pre$phi$i20$iZ2D = $$pre$i19$i;
+ if ($1010) {
+ $$0212$i$i = 0;
} else {
- $843 = ((($837)) + 8|0);
- $844 = HEAP32[$843>>2]|0;
- $845 = HEAP32[(33032)>>2]|0;
- $846 = ($844>>>0)<($845>>>0);
- if (!($846)) {
- $$0295$i$i = $844;$$pre$phi$i20$iZ2D = $843;
+ $1011 = ($988>>>0)>(16777215);
+ if ($1011) {
+ $$0212$i$i = 31;
break;
}
- _abort();
- // unreachable;
+ $1012 = (($1009) + 1048320)|0;
+ $1013 = $1012 >>> 16;
+ $1014 = $1013 & 8;
+ $1015 = $1009 << $1014;
+ $1016 = (($1015) + 520192)|0;
+ $1017 = $1016 >>> 16;
+ $1018 = $1017 & 4;
+ $1019 = $1018 | $1014;
+ $1020 = $1015 << $1018;
+ $1021 = (($1020) + 245760)|0;
+ $1022 = $1021 >>> 16;
+ $1023 = $1022 & 2;
+ $1024 = $1019 | $1023;
+ $1025 = (14 - ($1024))|0;
+ $1026 = $1020 << $1023;
+ $1027 = $1026 >>> 15;
+ $1028 = (($1025) + ($1027))|0;
+ $1029 = $1028 << 1;
+ $1030 = (($1028) + 7)|0;
+ $1031 = $988 >>> $1030;
+ $1032 = $1031 & 1;
+ $1033 = $1032 | $1029;
+ $$0212$i$i = $1033;
}
} while(0);
- HEAP32[$$pre$phi$i20$iZ2D>>2] = $721;
- $847 = ((($$0295$i$i)) + 12|0);
- HEAP32[$847>>2] = $721;
- $848 = ((($721)) + 8|0);
- HEAP32[$848>>2] = $$0295$i$i;
- $849 = ((($721)) + 12|0);
- HEAP32[$849>>2] = $837;
- break;
- }
- $850 = $$0287$i$i >>> 8;
- $851 = ($850|0)==(0);
- do {
- if ($851) {
- $$0296$i$i = 0;
- } else {
- $852 = ($$0287$i$i>>>0)>(16777215);
- if ($852) {
- $$0296$i$i = 31;
- break;
- }
- $853 = (($850) + 1048320)|0;
- $854 = $853 >>> 16;
- $855 = $854 & 8;
- $856 = $850 << $855;
- $857 = (($856) + 520192)|0;
- $858 = $857 >>> 16;
- $859 = $858 & 4;
- $860 = $859 | $855;
- $861 = $856 << $859;
- $862 = (($861) + 245760)|0;
- $863 = $862 >>> 16;
- $864 = $863 & 2;
- $865 = $860 | $864;
- $866 = (14 - ($865))|0;
- $867 = $861 << $864;
- $868 = $867 >>> 15;
- $869 = (($866) + ($868))|0;
- $870 = $869 << 1;
- $871 = (($869) + 7)|0;
- $872 = $$0287$i$i >>> $871;
- $873 = $872 & 1;
- $874 = $873 | $870;
- $$0296$i$i = $874;
- }
- } while(0);
- $875 = (33320 + ($$0296$i$i<<2)|0);
- $876 = ((($721)) + 28|0);
- HEAP32[$876>>2] = $$0296$i$i;
- $877 = ((($721)) + 16|0);
- $878 = ((($877)) + 4|0);
- HEAP32[$878>>2] = 0;
- HEAP32[$877>>2] = 0;
- $879 = HEAP32[(33020)>>2]|0;
- $880 = 1 << $$0296$i$i;
- $881 = $879 & $880;
- $882 = ($881|0)==(0);
- if ($882) {
- $883 = $879 | $880;
- HEAP32[(33020)>>2] = $883;
- HEAP32[$875>>2] = $721;
- $884 = ((($721)) + 24|0);
- HEAP32[$884>>2] = $875;
- $885 = ((($721)) + 12|0);
- HEAP32[$885>>2] = $721;
- $886 = ((($721)) + 8|0);
- HEAP32[$886>>2] = $721;
- break;
- }
- $887 = HEAP32[$875>>2]|0;
- $888 = ($$0296$i$i|0)==(31);
- $889 = $$0296$i$i >>> 1;
- $890 = (25 - ($889))|0;
- $891 = $888 ? 0 : $890;
- $892 = $$0287$i$i << $891;
- $$0288$i$i = $892;$$0289$i$i = $887;
- while(1) {
- $893 = ((($$0289$i$i)) + 4|0);
- $894 = HEAP32[$893>>2]|0;
- $895 = $894 & -8;
- $896 = ($895|0)==($$0287$i$i|0);
- if ($896) {
- label = 265;
+ $1034 = (35756 + ($$0212$i$i<<2)|0);
+ $1035 = ((($657)) + 28|0);
+ HEAP32[$1035>>2] = $$0212$i$i;
+ $1036 = ((($657)) + 20|0);
+ HEAP32[$1036>>2] = 0;
+ HEAP32[$960>>2] = 0;
+ $1037 = HEAP32[(35456)>>2]|0;
+ $1038 = 1 << $$0212$i$i;
+ $1039 = $1037 & $1038;
+ $1040 = ($1039|0)==(0);
+ if ($1040) {
+ $1041 = $1037 | $1038;
+ HEAP32[(35456)>>2] = $1041;
+ HEAP32[$1034>>2] = $657;
+ $1042 = ((($657)) + 24|0);
+ HEAP32[$1042>>2] = $1034;
+ $1043 = ((($657)) + 12|0);
+ HEAP32[$1043>>2] = $657;
+ $1044 = ((($657)) + 8|0);
+ HEAP32[$1044>>2] = $657;
break;
}
- $897 = $$0288$i$i >>> 31;
- $898 = (((($$0289$i$i)) + 16|0) + ($897<<2)|0);
- $899 = $$0288$i$i << 1;
- $900 = HEAP32[$898>>2]|0;
- $901 = ($900|0)==(0|0);
- if ($901) {
- label = 262;
- break;
- } else {
- $$0288$i$i = $899;$$0289$i$i = $900;
+ $1045 = HEAP32[$1034>>2]|0;
+ $1046 = ($$0212$i$i|0)==(31);
+ $1047 = $$0212$i$i >>> 1;
+ $1048 = (25 - ($1047))|0;
+ $1049 = $1046 ? 0 : $1048;
+ $1050 = $988 << $1049;
+ $$0206$i$i = $1050;$$0207$i$i = $1045;
+ while(1) {
+ $1051 = ((($$0207$i$i)) + 4|0);
+ $1052 = HEAP32[$1051>>2]|0;
+ $1053 = $1052 & -8;
+ $1054 = ($1053|0)==($988|0);
+ if ($1054) {
+ label = 307;
+ break;
+ }
+ $1055 = $$0206$i$i >>> 31;
+ $1056 = (((($$0207$i$i)) + 16|0) + ($1055<<2)|0);
+ $1057 = $$0206$i$i << 1;
+ $1058 = HEAP32[$1056>>2]|0;
+ $1059 = ($1058|0)==(0|0);
+ if ($1059) {
+ label = 304;
+ break;
+ } else {
+ $$0206$i$i = $1057;$$0207$i$i = $1058;
+ }
}
- }
- if ((label|0) == 262) {
- $902 = HEAP32[(33032)>>2]|0;
- $903 = ($898>>>0)<($902>>>0);
- if ($903) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$898>>2] = $721;
- $904 = ((($721)) + 24|0);
- HEAP32[$904>>2] = $$0289$i$i;
- $905 = ((($721)) + 12|0);
- HEAP32[$905>>2] = $721;
- $906 = ((($721)) + 8|0);
- HEAP32[$906>>2] = $721;
- break;
+ if ((label|0) == 304) {
+ $1060 = HEAP32[(35468)>>2]|0;
+ $1061 = ($1056>>>0)<($1060>>>0);
+ if ($1061) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$1056>>2] = $657;
+ $1062 = ((($657)) + 24|0);
+ HEAP32[$1062>>2] = $$0207$i$i;
+ $1063 = ((($657)) + 12|0);
+ HEAP32[$1063>>2] = $657;
+ $1064 = ((($657)) + 8|0);
+ HEAP32[$1064>>2] = $657;
+ break;
+ }
}
- }
- else if ((label|0) == 265) {
- $907 = ((($$0289$i$i)) + 8|0);
- $908 = HEAP32[$907>>2]|0;
- $909 = HEAP32[(33032)>>2]|0;
- $910 = ($908>>>0)>=($909>>>0);
- $not$7$i$i = ($$0289$i$i>>>0)>=($909>>>0);
- $911 = $910 & $not$7$i$i;
- if ($911) {
- $912 = ((($908)) + 12|0);
- HEAP32[$912>>2] = $721;
- HEAP32[$907>>2] = $721;
- $913 = ((($721)) + 8|0);
- HEAP32[$913>>2] = $908;
- $914 = ((($721)) + 12|0);
- HEAP32[$914>>2] = $$0289$i$i;
- $915 = ((($721)) + 24|0);
- HEAP32[$915>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
+ else if ((label|0) == 307) {
+ $1065 = ((($$0207$i$i)) + 8|0);
+ $1066 = HEAP32[$1065>>2]|0;
+ $1067 = HEAP32[(35468)>>2]|0;
+ $1068 = ($1066>>>0)>=($1067>>>0);
+ $not$$i21$i = ($$0207$i$i>>>0)>=($1067>>>0);
+ $1069 = $1068 & $not$$i21$i;
+ if ($1069) {
+ $1070 = ((($1066)) + 12|0);
+ HEAP32[$1070>>2] = $657;
+ HEAP32[$1065>>2] = $657;
+ $1071 = ((($657)) + 8|0);
+ HEAP32[$1071>>2] = $1066;
+ $1072 = ((($657)) + 12|0);
+ HEAP32[$1072>>2] = $$0207$i$i;
+ $1073 = ((($657)) + 24|0);
+ HEAP32[$1073>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
}
}
}
} while(0);
- $1047 = ((($709)) + 8|0);
- $$0 = $1047;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $$0$i$i$i = (33464);
- while(1) {
- $916 = HEAP32[$$0$i$i$i>>2]|0;
- $917 = ($916>>>0)>($630>>>0);
- if (!($917)) {
- $918 = ((($$0$i$i$i)) + 4|0);
- $919 = HEAP32[$918>>2]|0;
- $920 = (($916) + ($919)|0);
- $921 = ($920>>>0)>($630>>>0);
- if ($921) {
+ $1075 = HEAP32[(35464)>>2]|0;
+ $1076 = ($1075>>>0)>($$0198>>>0);
+ if ($1076) {
+ $1077 = (($1075) - ($$0198))|0;
+ HEAP32[(35464)>>2] = $1077;
+ $1078 = HEAP32[(35476)>>2]|0;
+ $1079 = (($1078) + ($$0198)|0);
+ HEAP32[(35476)>>2] = $1079;
+ $1080 = $1077 | 1;
+ $1081 = ((($1079)) + 4|0);
+ HEAP32[$1081>>2] = $1080;
+ $1082 = $$0198 | 3;
+ $1083 = ((($1078)) + 4|0);
+ HEAP32[$1083>>2] = $1082;
+ $1084 = ((($1078)) + 8|0);
+ $$2 = $1084;
break;
}
}
- $922 = ((($$0$i$i$i)) + 8|0);
- $923 = HEAP32[$922>>2]|0;
- $$0$i$i$i = $923;
- }
- $924 = ((($920)) + -47|0);
- $925 = ((($924)) + 8|0);
- $926 = $925;
- $927 = $926 & 7;
- $928 = ($927|0)==(0);
- $929 = (0 - ($926))|0;
- $930 = $929 & 7;
- $931 = $928 ? 0 : $930;
- $932 = (($924) + ($931)|0);
- $933 = ((($630)) + 16|0);
- $934 = ($932>>>0)<($933>>>0);
- $935 = $934 ? $630 : $932;
- $936 = ((($935)) + 8|0);
- $937 = ((($935)) + 24|0);
- $938 = (($$723948$i) + -40)|0;
- $939 = ((($$749$i)) + 8|0);
- $940 = $939;
- $941 = $940 & 7;
- $942 = ($941|0)==(0);
- $943 = (0 - ($940))|0;
- $944 = $943 & 7;
- $945 = $942 ? 0 : $944;
- $946 = (($$749$i) + ($945)|0);
- $947 = (($938) - ($945))|0;
- HEAP32[(33040)>>2] = $946;
- HEAP32[(33028)>>2] = $947;
- $948 = $947 | 1;
- $949 = ((($946)) + 4|0);
- HEAP32[$949>>2] = $948;
- $950 = (($946) + ($947)|0);
- $951 = ((($950)) + 4|0);
- HEAP32[$951>>2] = 40;
- $952 = HEAP32[(33504)>>2]|0;
- HEAP32[(33044)>>2] = $952;
- $953 = ((($935)) + 4|0);
- HEAP32[$953>>2] = 27;
- ;HEAP32[$936>>2]=HEAP32[(33464)>>2]|0;HEAP32[$936+4>>2]=HEAP32[(33464)+4>>2]|0;HEAP32[$936+8>>2]=HEAP32[(33464)+8>>2]|0;HEAP32[$936+12>>2]=HEAP32[(33464)+12>>2]|0;
- HEAP32[(33464)>>2] = $$749$i;
- HEAP32[(33468)>>2] = $$723948$i;
- HEAP32[(33476)>>2] = 0;
- HEAP32[(33472)>>2] = $936;
- $955 = $937;
- while(1) {
- $954 = ((($955)) + 4|0);
- HEAP32[$954>>2] = 7;
- $956 = ((($955)) + 8|0);
- $957 = ($956>>>0)<($920>>>0);
- if ($957) {
- $955 = $954;
- } else {
- break;
- }
- }
- $958 = ($935|0)==($630|0);
- if (!($958)) {
- $959 = $935;
- $960 = $630;
- $961 = (($959) - ($960))|0;
- $962 = HEAP32[$953>>2]|0;
- $963 = $962 & -2;
- HEAP32[$953>>2] = $963;
- $964 = $961 | 1;
- $965 = ((($630)) + 4|0);
- HEAP32[$965>>2] = $964;
- HEAP32[$935>>2] = $961;
- $966 = $961 >>> 3;
- $967 = ($961>>>0)<(256);
- if ($967) {
- $968 = $966 << 1;
- $969 = (33056 + ($968<<2)|0);
- $970 = HEAP32[8254]|0;
- $971 = 1 << $966;
- $972 = $970 & $971;
- $973 = ($972|0)==(0);
- if ($973) {
- $974 = $970 | $971;
- HEAP32[8254] = $974;
- $$pre$i$i = ((($969)) + 8|0);
- $$0211$i$i = $969;$$pre$phi$i$iZ2D = $$pre$i$i;
- } else {
- $975 = ((($969)) + 8|0);
- $976 = HEAP32[$975>>2]|0;
- $977 = HEAP32[(33032)>>2]|0;
- $978 = ($976>>>0)<($977>>>0);
- if ($978) {
- _abort();
- // unreachable;
- } else {
- $$0211$i$i = $976;$$pre$phi$i$iZ2D = $975;
- }
- }
- HEAP32[$$pre$phi$i$iZ2D>>2] = $630;
- $979 = ((($$0211$i$i)) + 12|0);
- HEAP32[$979>>2] = $630;
- $980 = ((($630)) + 8|0);
- HEAP32[$980>>2] = $$0211$i$i;
- $981 = ((($630)) + 12|0);
- HEAP32[$981>>2] = $969;
- break;
- }
- $982 = $961 >>> 8;
- $983 = ($982|0)==(0);
- if ($983) {
- $$0212$i$i = 0;
- } else {
- $984 = ($961>>>0)>(16777215);
- if ($984) {
- $$0212$i$i = 31;
- } else {
- $985 = (($982) + 1048320)|0;
- $986 = $985 >>> 16;
- $987 = $986 & 8;
- $988 = $982 << $987;
- $989 = (($988) + 520192)|0;
- $990 = $989 >>> 16;
- $991 = $990 & 4;
- $992 = $991 | $987;
- $993 = $988 << $991;
- $994 = (($993) + 245760)|0;
- $995 = $994 >>> 16;
- $996 = $995 & 2;
- $997 = $992 | $996;
- $998 = (14 - ($997))|0;
- $999 = $993 << $996;
- $1000 = $999 >>> 15;
- $1001 = (($998) + ($1000))|0;
- $1002 = $1001 << 1;
- $1003 = (($1001) + 7)|0;
- $1004 = $961 >>> $1003;
- $1005 = $1004 & 1;
- $1006 = $1005 | $1002;
- $$0212$i$i = $1006;
- }
- }
- $1007 = (33320 + ($$0212$i$i<<2)|0);
- $1008 = ((($630)) + 28|0);
- HEAP32[$1008>>2] = $$0212$i$i;
- $1009 = ((($630)) + 20|0);
- HEAP32[$1009>>2] = 0;
- HEAP32[$933>>2] = 0;
- $1010 = HEAP32[(33020)>>2]|0;
- $1011 = 1 << $$0212$i$i;
- $1012 = $1010 & $1011;
- $1013 = ($1012|0)==(0);
- if ($1013) {
- $1014 = $1010 | $1011;
- HEAP32[(33020)>>2] = $1014;
- HEAP32[$1007>>2] = $630;
- $1015 = ((($630)) + 24|0);
- HEAP32[$1015>>2] = $1007;
- $1016 = ((($630)) + 12|0);
- HEAP32[$1016>>2] = $630;
- $1017 = ((($630)) + 8|0);
- HEAP32[$1017>>2] = $630;
- break;
- }
- $1018 = HEAP32[$1007>>2]|0;
- $1019 = ($$0212$i$i|0)==(31);
- $1020 = $$0212$i$i >>> 1;
- $1021 = (25 - ($1020))|0;
- $1022 = $1019 ? 0 : $1021;
- $1023 = $961 << $1022;
- $$0206$i$i = $1023;$$0207$i$i = $1018;
- while(1) {
- $1024 = ((($$0207$i$i)) + 4|0);
- $1025 = HEAP32[$1024>>2]|0;
- $1026 = $1025 & -8;
- $1027 = ($1026|0)==($961|0);
- if ($1027) {
- label = 292;
- break;
- }
- $1028 = $$0206$i$i >>> 31;
- $1029 = (((($$0207$i$i)) + 16|0) + ($1028<<2)|0);
- $1030 = $$0206$i$i << 1;
- $1031 = HEAP32[$1029>>2]|0;
- $1032 = ($1031|0)==(0|0);
- if ($1032) {
- label = 289;
- break;
- } else {
- $$0206$i$i = $1030;$$0207$i$i = $1031;
- }
- }
- if ((label|0) == 289) {
- $1033 = HEAP32[(33032)>>2]|0;
- $1034 = ($1029>>>0)<($1033>>>0);
- if ($1034) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$1029>>2] = $630;
- $1035 = ((($630)) + 24|0);
- HEAP32[$1035>>2] = $$0207$i$i;
- $1036 = ((($630)) + 12|0);
- HEAP32[$1036>>2] = $630;
- $1037 = ((($630)) + 8|0);
- HEAP32[$1037>>2] = $630;
- break;
- }
- }
- else if ((label|0) == 292) {
- $1038 = ((($$0207$i$i)) + 8|0);
- $1039 = HEAP32[$1038>>2]|0;
- $1040 = HEAP32[(33032)>>2]|0;
- $1041 = ($1039>>>0)>=($1040>>>0);
- $not$$i$i = ($$0207$i$i>>>0)>=($1040>>>0);
- $1042 = $1041 & $not$$i$i;
- if ($1042) {
- $1043 = ((($1039)) + 12|0);
- HEAP32[$1043>>2] = $630;
- HEAP32[$1038>>2] = $630;
- $1044 = ((($630)) + 8|0);
- HEAP32[$1044>>2] = $1039;
- $1045 = ((($630)) + 12|0);
- HEAP32[$1045>>2] = $$0207$i$i;
- $1046 = ((($630)) + 24|0);
- HEAP32[$1046>>2] = 0;
- break;
- } else {
- _abort();
- // unreachable;
- }
- }
}
+ $1085 = (___errno_location()|0);
+ HEAP32[$1085>>2] = 12;
+ $$2 = 0;
+ } else {
+ $$2 = 0;
}
- } while(0);
- $1048 = HEAP32[(33028)>>2]|0;
- $1049 = ($1048>>>0)>($$0197>>>0);
- if ($1049) {
- $1050 = (($1048) - ($$0197))|0;
- HEAP32[(33028)>>2] = $1050;
- $1051 = HEAP32[(33040)>>2]|0;
- $1052 = (($1051) + ($$0197)|0);
- HEAP32[(33040)>>2] = $1052;
- $1053 = $1050 | 1;
- $1054 = ((($1052)) + 4|0);
- HEAP32[$1054>>2] = $1053;
- $1055 = $$0197 | 3;
- $1056 = ((($1051)) + 4|0);
- HEAP32[$1056>>2] = $1055;
- $1057 = ((($1051)) + 8|0);
- $$0 = $1057;
- STACKTOP = sp;return ($$0|0);
- }
- }
- $1058 = (___errno_location()|0);
- HEAP32[$1058>>2] = 12;
- $$0 = 0;
- STACKTOP = sp;return ($$0|0);
+ }
+ } while(0);
+ $1086 = HEAP32[(35896)>>2]|0;
+ $1087 = $1086 & 2;
+ $1088 = ($1087|0)==(0);
+ if ($1088) {
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
+ }
+ (___pthread_mutex_unlock((35900))|0);
+ $$1 = $$2;
+ STACKTOP = sp;return ($$1|0);
}
function _free($0) {
$0 = $0|0;
@@ -26250,488 +32626,213 @@ function _free($0) {
var $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0;
var $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0;
var $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0;
- var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0;
- var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0;
- var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0;
- var $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0;
- var $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
+ var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
+ var $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
+ var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
+ var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
+ var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
sp = STACKTOP;
$1 = ($0|0)==(0|0);
if ($1) {
return;
}
$2 = ((($0)) + -8|0);
- $3 = HEAP32[(33032)>>2]|0;
- $4 = ($2>>>0)<($3>>>0);
- if ($4) {
+ $3 = HEAP32[(35896)>>2]|0;
+ $4 = $3 & 2;
+ $5 = ($4|0)==(0);
+ if (!($5)) {
+ $6 = (___pthread_mutex_lock((35900))|0);
+ $7 = ($6|0)==(0);
+ if (!($7)) {
+ return;
+ }
+ }
+ $8 = HEAP32[(35468)>>2]|0;
+ $9 = ($2>>>0)<($8>>>0);
+ if ($9) {
_abort();
// unreachable;
}
- $5 = ((($0)) + -4|0);
- $6 = HEAP32[$5>>2]|0;
- $7 = $6 & 3;
- $8 = ($7|0)==(1);
- if ($8) {
+ $10 = ((($0)) + -4|0);
+ $11 = HEAP32[$10>>2]|0;
+ $12 = $11 & 3;
+ $13 = ($12|0)==(1);
+ if ($13) {
_abort();
// unreachable;
}
- $9 = $6 & -8;
- $10 = (($2) + ($9)|0);
- $11 = $6 & 1;
- $12 = ($11|0)==(0);
- L10: do {
- if ($12) {
- $13 = HEAP32[$2>>2]|0;
- $14 = ($7|0)==(0);
- if ($14) {
- return;
- }
- $15 = (0 - ($13))|0;
- $16 = (($2) + ($15)|0);
- $17 = (($13) + ($9))|0;
- $18 = ($16>>>0)<($3>>>0);
- if ($18) {
- _abort();
- // unreachable;
- }
- $19 = HEAP32[(33036)>>2]|0;
- $20 = ($16|0)==($19|0);
- if ($20) {
- $104 = ((($10)) + 4|0);
- $105 = HEAP32[$104>>2]|0;
- $106 = $105 & 3;
- $107 = ($106|0)==(3);
- if (!($107)) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
+ $14 = $11 & -8;
+ $15 = (($2) + ($14)|0);
+ $16 = $11 & 1;
+ $17 = ($16|0)==(0);
+ L14: do {
+ if ($17) {
+ $18 = HEAP32[$2>>2]|0;
+ $19 = ($12|0)==(0);
+ if (!($19)) {
+ $20 = (0 - ($18))|0;
+ $21 = (($2) + ($20)|0);
+ $22 = (($18) + ($14))|0;
+ $23 = ($21>>>0)<($8>>>0);
+ if ($23) {
+ _abort();
+ // unreachable;
}
- $108 = (($16) + ($17)|0);
- $109 = ((($16)) + 4|0);
- $110 = $17 | 1;
- $111 = $105 & -2;
- HEAP32[(33024)>>2] = $17;
- HEAP32[$104>>2] = $111;
- HEAP32[$109>>2] = $110;
- HEAP32[$108>>2] = $17;
- return;
- }
- $21 = $13 >>> 3;
- $22 = ($13>>>0)<(256);
- if ($22) {
- $23 = ((($16)) + 8|0);
- $24 = HEAP32[$23>>2]|0;
- $25 = ((($16)) + 12|0);
- $26 = HEAP32[$25>>2]|0;
- $27 = $21 << 1;
- $28 = (33056 + ($27<<2)|0);
- $29 = ($24|0)==($28|0);
- if (!($29)) {
- $30 = ($24>>>0)<($3>>>0);
- if ($30) {
- _abort();
- // unreachable;
- }
- $31 = ((($24)) + 12|0);
- $32 = HEAP32[$31>>2]|0;
- $33 = ($32|0)==($16|0);
- if (!($33)) {
- _abort();
- // unreachable;
+ $24 = HEAP32[(35472)>>2]|0;
+ $25 = ($21|0)==($24|0);
+ if ($25) {
+ $109 = ((($15)) + 4|0);
+ $110 = HEAP32[$109>>2]|0;
+ $111 = $110 & 3;
+ $112 = ($111|0)==(3);
+ if (!($112)) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break;
}
- }
- $34 = ($26|0)==($24|0);
- if ($34) {
- $35 = 1 << $21;
- $36 = $35 ^ -1;
- $37 = HEAP32[8254]|0;
- $38 = $37 & $36;
- HEAP32[8254] = $38;
- $$1 = $16;$$1382 = $17;$113 = $16;
+ $113 = (($21) + ($22)|0);
+ $114 = ((($21)) + 4|0);
+ $115 = $22 | 1;
+ $116 = $110 & -2;
+ HEAP32[(35460)>>2] = $22;
+ HEAP32[$109>>2] = $116;
+ HEAP32[$114>>2] = $115;
+ HEAP32[$113>>2] = $22;
break;
}
- $39 = ($26|0)==($28|0);
- if ($39) {
- $$pre444 = ((($26)) + 8|0);
- $$pre$phi445Z2D = $$pre444;
- } else {
- $40 = ($26>>>0)<($3>>>0);
- if ($40) {
- _abort();
- // unreachable;
- }
- $41 = ((($26)) + 8|0);
- $42 = HEAP32[$41>>2]|0;
- $43 = ($42|0)==($16|0);
- if ($43) {
- $$pre$phi445Z2D = $41;
- } else {
- _abort();
- // unreachable;
- }
- }
- $44 = ((($24)) + 12|0);
- HEAP32[$44>>2] = $26;
- HEAP32[$$pre$phi445Z2D>>2] = $24;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- $45 = ((($16)) + 24|0);
- $46 = HEAP32[$45>>2]|0;
- $47 = ((($16)) + 12|0);
- $48 = HEAP32[$47>>2]|0;
- $49 = ($48|0)==($16|0);
- do {
- if ($49) {
- $59 = ((($16)) + 16|0);
- $60 = ((($59)) + 4|0);
- $61 = HEAP32[$60>>2]|0;
- $62 = ($61|0)==(0|0);
- if ($62) {
- $63 = HEAP32[$59>>2]|0;
- $64 = ($63|0)==(0|0);
- if ($64) {
- $$3 = 0;
- break;
- } else {
- $$1387 = $63;$$1390 = $59;
- }
- } else {
- $$1387 = $61;$$1390 = $60;
- }
- while(1) {
- $65 = ((($$1387)) + 20|0);
- $66 = HEAP32[$65>>2]|0;
- $67 = ($66|0)==(0|0);
- if (!($67)) {
- $$1387 = $66;$$1390 = $65;
- continue;
+ $26 = $18 >>> 3;
+ $27 = ($18>>>0)<(256);
+ if ($27) {
+ $28 = ((($21)) + 8|0);
+ $29 = HEAP32[$28>>2]|0;
+ $30 = ((($21)) + 12|0);
+ $31 = HEAP32[$30>>2]|0;
+ $32 = $26 << 1;
+ $33 = (35492 + ($32<<2)|0);
+ $34 = ($29|0)==($33|0);
+ if (!($34)) {
+ $35 = ($29>>>0)<($8>>>0);
+ if ($35) {
+ _abort();
+ // unreachable;
}
- $68 = ((($$1387)) + 16|0);
- $69 = HEAP32[$68>>2]|0;
- $70 = ($69|0)==(0|0);
- if ($70) {
- break;
- } else {
- $$1387 = $69;$$1390 = $68;
+ $36 = ((($29)) + 12|0);
+ $37 = HEAP32[$36>>2]|0;
+ $38 = ($37|0)==($21|0);
+ if (!($38)) {
+ _abort();
+ // unreachable;
}
}
- $71 = ($$1390>>>0)<($3>>>0);
- if ($71) {
- _abort();
- // unreachable;
- } else {
- HEAP32[$$1390>>2] = 0;
- $$3 = $$1387;
- break;
- }
- } else {
- $50 = ((($16)) + 8|0);
- $51 = HEAP32[$50>>2]|0;
- $52 = ($51>>>0)<($3>>>0);
- if ($52) {
- _abort();
- // unreachable;
- }
- $53 = ((($51)) + 12|0);
- $54 = HEAP32[$53>>2]|0;
- $55 = ($54|0)==($16|0);
- if (!($55)) {
- _abort();
- // unreachable;
- }
- $56 = ((($48)) + 8|0);
- $57 = HEAP32[$56>>2]|0;
- $58 = ($57|0)==($16|0);
- if ($58) {
- HEAP32[$53>>2] = $48;
- HEAP32[$56>>2] = $51;
- $$3 = $48;
+ $39 = ($31|0)==($29|0);
+ if ($39) {
+ $40 = 1 << $26;
+ $41 = $40 ^ -1;
+ $42 = HEAP32[8863]|0;
+ $43 = $42 & $41;
+ HEAP32[8863] = $43;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
- } else {
- _abort();
- // unreachable;
}
- }
- } while(0);
- $72 = ($46|0)==(0|0);
- if ($72) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $73 = ((($16)) + 28|0);
- $74 = HEAP32[$73>>2]|0;
- $75 = (33320 + ($74<<2)|0);
- $76 = HEAP32[$75>>2]|0;
- $77 = ($16|0)==($76|0);
- do {
- if ($77) {
- HEAP32[$75>>2] = $$3;
- $cond421 = ($$3|0)==(0|0);
- if ($cond421) {
- $78 = 1 << $74;
- $79 = $78 ^ -1;
- $80 = HEAP32[(33020)>>2]|0;
- $81 = $80 & $79;
- HEAP32[(33020)>>2] = $81;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- }
+ $44 = ($31|0)==($33|0);
+ if ($44) {
+ $$pre444 = ((($31)) + 8|0);
+ $$pre$phi445Z2D = $$pre444;
} else {
- $82 = HEAP32[(33032)>>2]|0;
- $83 = ($46>>>0)<($82>>>0);
- if ($83) {
+ $45 = ($31>>>0)<($8>>>0);
+ if ($45) {
_abort();
// unreachable;
- } else {
- $84 = ((($46)) + 16|0);
- $85 = HEAP32[$84>>2]|0;
- $not$405 = ($85|0)!=($16|0);
- $$sink3 = $not$405&1;
- $86 = (((($46)) + 16|0) + ($$sink3<<2)|0);
- HEAP32[$86>>2] = $$3;
- $87 = ($$3|0)==(0|0);
- if ($87) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- break L10;
- } else {
- break;
- }
}
- }
- } while(0);
- $88 = HEAP32[(33032)>>2]|0;
- $89 = ($$3>>>0)<($88>>>0);
- if ($89) {
- _abort();
- // unreachable;
- }
- $90 = ((($$3)) + 24|0);
- HEAP32[$90>>2] = $46;
- $91 = ((($16)) + 16|0);
- $92 = HEAP32[$91>>2]|0;
- $93 = ($92|0)==(0|0);
- do {
- if (!($93)) {
- $94 = ($92>>>0)<($88>>>0);
- if ($94) {
+ $46 = ((($31)) + 8|0);
+ $47 = HEAP32[$46>>2]|0;
+ $48 = ($47|0)==($21|0);
+ if ($48) {
+ $$pre$phi445Z2D = $46;
+ } else {
_abort();
// unreachable;
- } else {
- $95 = ((($$3)) + 16|0);
- HEAP32[$95>>2] = $92;
- $96 = ((($92)) + 24|0);
- HEAP32[$96>>2] = $$3;
- break;
}
}
- } while(0);
- $97 = ((($91)) + 4|0);
- $98 = HEAP32[$97>>2]|0;
- $99 = ($98|0)==(0|0);
- if ($99) {
- $$1 = $16;$$1382 = $17;$113 = $16;
- } else {
- $100 = HEAP32[(33032)>>2]|0;
- $101 = ($98>>>0)<($100>>>0);
- if ($101) {
- _abort();
- // unreachable;
- } else {
- $102 = ((($$3)) + 20|0);
- HEAP32[$102>>2] = $98;
- $103 = ((($98)) + 24|0);
- HEAP32[$103>>2] = $$3;
- $$1 = $16;$$1382 = $17;$113 = $16;
- break;
- }
- }
- }
- } else {
- $$1 = $2;$$1382 = $9;$113 = $2;
- }
- } while(0);
- $112 = ($113>>>0)<($10>>>0);
- if (!($112)) {
- _abort();
- // unreachable;
- }
- $114 = ((($10)) + 4|0);
- $115 = HEAP32[$114>>2]|0;
- $116 = $115 & 1;
- $117 = ($116|0)==(0);
- if ($117) {
- _abort();
- // unreachable;
- }
- $118 = $115 & 2;
- $119 = ($118|0)==(0);
- if ($119) {
- $120 = HEAP32[(33040)>>2]|0;
- $121 = ($10|0)==($120|0);
- $122 = HEAP32[(33036)>>2]|0;
- if ($121) {
- $123 = HEAP32[(33028)>>2]|0;
- $124 = (($123) + ($$1382))|0;
- HEAP32[(33028)>>2] = $124;
- HEAP32[(33040)>>2] = $$1;
- $125 = $124 | 1;
- $126 = ((($$1)) + 4|0);
- HEAP32[$126>>2] = $125;
- $127 = ($$1|0)==($122|0);
- if (!($127)) {
- return;
- }
- HEAP32[(33036)>>2] = 0;
- HEAP32[(33024)>>2] = 0;
- return;
- }
- $128 = ($10|0)==($122|0);
- if ($128) {
- $129 = HEAP32[(33024)>>2]|0;
- $130 = (($129) + ($$1382))|0;
- HEAP32[(33024)>>2] = $130;
- HEAP32[(33036)>>2] = $113;
- $131 = $130 | 1;
- $132 = ((($$1)) + 4|0);
- HEAP32[$132>>2] = $131;
- $133 = (($113) + ($130)|0);
- HEAP32[$133>>2] = $130;
- return;
- }
- $134 = $115 & -8;
- $135 = (($134) + ($$1382))|0;
- $136 = $115 >>> 3;
- $137 = ($115>>>0)<(256);
- L108: do {
- if ($137) {
- $138 = ((($10)) + 8|0);
- $139 = HEAP32[$138>>2]|0;
- $140 = ((($10)) + 12|0);
- $141 = HEAP32[$140>>2]|0;
- $142 = $136 << 1;
- $143 = (33056 + ($142<<2)|0);
- $144 = ($139|0)==($143|0);
- if (!($144)) {
- $145 = HEAP32[(33032)>>2]|0;
- $146 = ($139>>>0)<($145>>>0);
- if ($146) {
- _abort();
- // unreachable;
- }
- $147 = ((($139)) + 12|0);
- $148 = HEAP32[$147>>2]|0;
- $149 = ($148|0)==($10|0);
- if (!($149)) {
- _abort();
- // unreachable;
- }
- }
- $150 = ($141|0)==($139|0);
- if ($150) {
- $151 = 1 << $136;
- $152 = $151 ^ -1;
- $153 = HEAP32[8254]|0;
- $154 = $153 & $152;
- HEAP32[8254] = $154;
+ $49 = ((($29)) + 12|0);
+ HEAP32[$49>>2] = $31;
+ HEAP32[$$pre$phi445Z2D>>2] = $29;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
- $155 = ($141|0)==($143|0);
- if ($155) {
- $$pre442 = ((($141)) + 8|0);
- $$pre$phi443Z2D = $$pre442;
- } else {
- $156 = HEAP32[(33032)>>2]|0;
- $157 = ($141>>>0)<($156>>>0);
- if ($157) {
- _abort();
- // unreachable;
- }
- $158 = ((($141)) + 8|0);
- $159 = HEAP32[$158>>2]|0;
- $160 = ($159|0)==($10|0);
- if ($160) {
- $$pre$phi443Z2D = $158;
- } else {
- _abort();
- // unreachable;
- }
- }
- $161 = ((($139)) + 12|0);
- HEAP32[$161>>2] = $141;
- HEAP32[$$pre$phi443Z2D>>2] = $139;
- } else {
- $162 = ((($10)) + 24|0);
- $163 = HEAP32[$162>>2]|0;
- $164 = ((($10)) + 12|0);
- $165 = HEAP32[$164>>2]|0;
- $166 = ($165|0)==($10|0);
+ $50 = ((($21)) + 24|0);
+ $51 = HEAP32[$50>>2]|0;
+ $52 = ((($21)) + 12|0);
+ $53 = HEAP32[$52>>2]|0;
+ $54 = ($53|0)==($21|0);
do {
- if ($166) {
- $177 = ((($10)) + 16|0);
- $178 = ((($177)) + 4|0);
- $179 = HEAP32[$178>>2]|0;
- $180 = ($179|0)==(0|0);
- if ($180) {
- $181 = HEAP32[$177>>2]|0;
- $182 = ($181|0)==(0|0);
- if ($182) {
- $$3400 = 0;
+ if ($54) {
+ $64 = ((($21)) + 16|0);
+ $65 = ((($64)) + 4|0);
+ $66 = HEAP32[$65>>2]|0;
+ $67 = ($66|0)==(0|0);
+ if ($67) {
+ $68 = HEAP32[$64>>2]|0;
+ $69 = ($68|0)==(0|0);
+ if ($69) {
+ $$3 = 0;
break;
} else {
- $$1398 = $181;$$1402 = $177;
+ $$1387 = $68;$$1390 = $64;
}
} else {
- $$1398 = $179;$$1402 = $178;
+ $$1387 = $66;$$1390 = $65;
}
while(1) {
- $183 = ((($$1398)) + 20|0);
- $184 = HEAP32[$183>>2]|0;
- $185 = ($184|0)==(0|0);
- if (!($185)) {
- $$1398 = $184;$$1402 = $183;
+ $70 = ((($$1387)) + 20|0);
+ $71 = HEAP32[$70>>2]|0;
+ $72 = ($71|0)==(0|0);
+ if (!($72)) {
+ $$1387 = $71;$$1390 = $70;
continue;
}
- $186 = ((($$1398)) + 16|0);
- $187 = HEAP32[$186>>2]|0;
- $188 = ($187|0)==(0|0);
- if ($188) {
+ $73 = ((($$1387)) + 16|0);
+ $74 = HEAP32[$73>>2]|0;
+ $75 = ($74|0)==(0|0);
+ if ($75) {
break;
} else {
- $$1398 = $187;$$1402 = $186;
+ $$1387 = $74;$$1390 = $73;
}
}
- $189 = HEAP32[(33032)>>2]|0;
- $190 = ($$1402>>>0)<($189>>>0);
- if ($190) {
+ $76 = ($$1390>>>0)<($8>>>0);
+ if ($76) {
_abort();
// unreachable;
} else {
- HEAP32[$$1402>>2] = 0;
- $$3400 = $$1398;
+ HEAP32[$$1390>>2] = 0;
+ $$3 = $$1387;
break;
}
} else {
- $167 = ((($10)) + 8|0);
- $168 = HEAP32[$167>>2]|0;
- $169 = HEAP32[(33032)>>2]|0;
- $170 = ($168>>>0)<($169>>>0);
- if ($170) {
+ $55 = ((($21)) + 8|0);
+ $56 = HEAP32[$55>>2]|0;
+ $57 = ($56>>>0)<($8>>>0);
+ if ($57) {
_abort();
// unreachable;
}
- $171 = ((($168)) + 12|0);
- $172 = HEAP32[$171>>2]|0;
- $173 = ($172|0)==($10|0);
- if (!($173)) {
+ $58 = ((($56)) + 12|0);
+ $59 = HEAP32[$58>>2]|0;
+ $60 = ($59|0)==($21|0);
+ if (!($60)) {
_abort();
// unreachable;
}
- $174 = ((($165)) + 8|0);
- $175 = HEAP32[$174>>2]|0;
- $176 = ($175|0)==($10|0);
- if ($176) {
- HEAP32[$171>>2] = $165;
- HEAP32[$174>>2] = $168;
- $$3400 = $165;
+ $61 = ((($53)) + 8|0);
+ $62 = HEAP32[$61>>2]|0;
+ $63 = ($62|0)==($21|0);
+ if ($63) {
+ HEAP32[$58>>2] = $53;
+ HEAP32[$61>>2] = $56;
+ $$3 = $53;
break;
} else {
_abort();
@@ -26739,298 +32840,600 @@ function _free($0) {
}
}
} while(0);
- $191 = ($163|0)==(0|0);
- if (!($191)) {
- $192 = ((($10)) + 28|0);
- $193 = HEAP32[$192>>2]|0;
- $194 = (33320 + ($193<<2)|0);
- $195 = HEAP32[$194>>2]|0;
- $196 = ($10|0)==($195|0);
+ $77 = ($51|0)==(0|0);
+ if ($77) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $78 = ((($21)) + 28|0);
+ $79 = HEAP32[$78>>2]|0;
+ $80 = (35756 + ($79<<2)|0);
+ $81 = HEAP32[$80>>2]|0;
+ $82 = ($21|0)==($81|0);
do {
- if ($196) {
- HEAP32[$194>>2] = $$3400;
- $cond422 = ($$3400|0)==(0|0);
- if ($cond422) {
- $197 = 1 << $193;
- $198 = $197 ^ -1;
- $199 = HEAP32[(33020)>>2]|0;
- $200 = $199 & $198;
- HEAP32[(33020)>>2] = $200;
- break L108;
+ if ($82) {
+ HEAP32[$80>>2] = $$3;
+ $cond421 = ($$3|0)==(0|0);
+ if ($cond421) {
+ $83 = 1 << $79;
+ $84 = $83 ^ -1;
+ $85 = HEAP32[(35456)>>2]|0;
+ $86 = $85 & $84;
+ HEAP32[(35456)>>2] = $86;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
}
} else {
- $201 = HEAP32[(33032)>>2]|0;
- $202 = ($163>>>0)<($201>>>0);
- if ($202) {
+ $87 = HEAP32[(35468)>>2]|0;
+ $88 = ($51>>>0)<($87>>>0);
+ if ($88) {
_abort();
// unreachable;
} else {
- $203 = ((($163)) + 16|0);
- $204 = HEAP32[$203>>2]|0;
- $not$ = ($204|0)!=($10|0);
- $$sink5 = $not$&1;
- $205 = (((($163)) + 16|0) + ($$sink5<<2)|0);
- HEAP32[$205>>2] = $$3400;
- $206 = ($$3400|0)==(0|0);
- if ($206) {
- break L108;
+ $89 = ((($51)) + 16|0);
+ $90 = HEAP32[$89>>2]|0;
+ $not$405 = ($90|0)!=($21|0);
+ $$sink3 = $not$405&1;
+ $91 = (((($51)) + 16|0) + ($$sink3<<2)|0);
+ HEAP32[$91>>2] = $$3;
+ $92 = ($$3|0)==(0|0);
+ if ($92) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ break L14;
} else {
break;
}
}
}
} while(0);
- $207 = HEAP32[(33032)>>2]|0;
- $208 = ($$3400>>>0)<($207>>>0);
- if ($208) {
+ $93 = HEAP32[(35468)>>2]|0;
+ $94 = ($$3>>>0)<($93>>>0);
+ if ($94) {
_abort();
// unreachable;
}
- $209 = ((($$3400)) + 24|0);
- HEAP32[$209>>2] = $163;
- $210 = ((($10)) + 16|0);
- $211 = HEAP32[$210>>2]|0;
- $212 = ($211|0)==(0|0);
+ $95 = ((($$3)) + 24|0);
+ HEAP32[$95>>2] = $51;
+ $96 = ((($21)) + 16|0);
+ $97 = HEAP32[$96>>2]|0;
+ $98 = ($97|0)==(0|0);
do {
- if (!($212)) {
- $213 = ($211>>>0)<($207>>>0);
- if ($213) {
+ if (!($98)) {
+ $99 = ($97>>>0)<($93>>>0);
+ if ($99) {
_abort();
// unreachable;
} else {
- $214 = ((($$3400)) + 16|0);
- HEAP32[$214>>2] = $211;
- $215 = ((($211)) + 24|0);
- HEAP32[$215>>2] = $$3400;
+ $100 = ((($$3)) + 16|0);
+ HEAP32[$100>>2] = $97;
+ $101 = ((($97)) + 24|0);
+ HEAP32[$101>>2] = $$3;
break;
}
}
} while(0);
- $216 = ((($210)) + 4|0);
- $217 = HEAP32[$216>>2]|0;
- $218 = ($217|0)==(0|0);
- if (!($218)) {
- $219 = HEAP32[(33032)>>2]|0;
- $220 = ($217>>>0)<($219>>>0);
- if ($220) {
+ $102 = ((($96)) + 4|0);
+ $103 = HEAP32[$102>>2]|0;
+ $104 = ($103|0)==(0|0);
+ if ($104) {
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
+ } else {
+ $105 = HEAP32[(35468)>>2]|0;
+ $106 = ($103>>>0)<($105>>>0);
+ if ($106) {
_abort();
// unreachable;
} else {
- $221 = ((($$3400)) + 20|0);
- HEAP32[$221>>2] = $217;
- $222 = ((($217)) + 24|0);
- HEAP32[$222>>2] = $$3400;
+ $107 = ((($$3)) + 20|0);
+ HEAP32[$107>>2] = $103;
+ $108 = ((($103)) + 24|0);
+ HEAP32[$108>>2] = $$3;
+ $$1 = $21;$$1382 = $22;$118 = $21;
+ label = 55;
break;
}
}
}
}
- } while(0);
- $223 = $135 | 1;
- $224 = ((($$1)) + 4|0);
- HEAP32[$224>>2] = $223;
- $225 = (($113) + ($135)|0);
- HEAP32[$225>>2] = $135;
- $226 = HEAP32[(33036)>>2]|0;
- $227 = ($$1|0)==($226|0);
- if ($227) {
- HEAP32[(33024)>>2] = $135;
- return;
} else {
- $$2 = $135;
+ $$1 = $2;$$1382 = $14;$118 = $2;
+ label = 55;
}
- } else {
- $228 = $115 & -2;
- HEAP32[$114>>2] = $228;
- $229 = $$1382 | 1;
- $230 = ((($$1)) + 4|0);
- HEAP32[$230>>2] = $229;
- $231 = (($113) + ($$1382)|0);
- HEAP32[$231>>2] = $$1382;
- $$2 = $$1382;
- }
- $232 = $$2 >>> 3;
- $233 = ($$2>>>0)<(256);
- if ($233) {
- $234 = $232 << 1;
- $235 = (33056 + ($234<<2)|0);
- $236 = HEAP32[8254]|0;
- $237 = 1 << $232;
- $238 = $236 & $237;
- $239 = ($238|0)==(0);
- if ($239) {
- $240 = $236 | $237;
- HEAP32[8254] = $240;
- $$pre = ((($235)) + 8|0);
- $$0403 = $235;$$pre$phiZ2D = $$pre;
- } else {
- $241 = ((($235)) + 8|0);
- $242 = HEAP32[$241>>2]|0;
- $243 = HEAP32[(33032)>>2]|0;
- $244 = ($242>>>0)<($243>>>0);
- if ($244) {
+ } while(0);
+ do {
+ if ((label|0) == 55) {
+ $117 = ($118>>>0)<($15>>>0);
+ if (!($117)) {
_abort();
// unreachable;
- } else {
- $$0403 = $242;$$pre$phiZ2D = $241;
}
- }
- HEAP32[$$pre$phiZ2D>>2] = $$1;
- $245 = ((($$0403)) + 12|0);
- HEAP32[$245>>2] = $$1;
- $246 = ((($$1)) + 8|0);
- HEAP32[$246>>2] = $$0403;
- $247 = ((($$1)) + 12|0);
- HEAP32[$247>>2] = $235;
- return;
- }
- $248 = $$2 >>> 8;
- $249 = ($248|0)==(0);
- if ($249) {
- $$0396 = 0;
- } else {
- $250 = ($$2>>>0)>(16777215);
- if ($250) {
- $$0396 = 31;
- } else {
- $251 = (($248) + 1048320)|0;
- $252 = $251 >>> 16;
- $253 = $252 & 8;
- $254 = $248 << $253;
- $255 = (($254) + 520192)|0;
- $256 = $255 >>> 16;
- $257 = $256 & 4;
- $258 = $257 | $253;
- $259 = $254 << $257;
- $260 = (($259) + 245760)|0;
- $261 = $260 >>> 16;
- $262 = $261 & 2;
- $263 = $258 | $262;
- $264 = (14 - ($263))|0;
- $265 = $259 << $262;
- $266 = $265 >>> 15;
- $267 = (($264) + ($266))|0;
- $268 = $267 << 1;
- $269 = (($267) + 7)|0;
- $270 = $$2 >>> $269;
- $271 = $270 & 1;
- $272 = $271 | $268;
- $$0396 = $272;
- }
- }
- $273 = (33320 + ($$0396<<2)|0);
- $274 = ((($$1)) + 28|0);
- HEAP32[$274>>2] = $$0396;
- $275 = ((($$1)) + 16|0);
- $276 = ((($$1)) + 20|0);
- HEAP32[$276>>2] = 0;
- HEAP32[$275>>2] = 0;
- $277 = HEAP32[(33020)>>2]|0;
- $278 = 1 << $$0396;
- $279 = $277 & $278;
- $280 = ($279|0)==(0);
- do {
- if ($280) {
- $281 = $277 | $278;
- HEAP32[(33020)>>2] = $281;
- HEAP32[$273>>2] = $$1;
- $282 = ((($$1)) + 24|0);
- HEAP32[$282>>2] = $273;
- $283 = ((($$1)) + 12|0);
- HEAP32[$283>>2] = $$1;
- $284 = ((($$1)) + 8|0);
- HEAP32[$284>>2] = $$1;
- } else {
- $285 = HEAP32[$273>>2]|0;
- $286 = ($$0396|0)==(31);
- $287 = $$0396 >>> 1;
- $288 = (25 - ($287))|0;
- $289 = $286 ? 0 : $288;
- $290 = $$2 << $289;
- $$0383 = $290;$$0384 = $285;
- while(1) {
- $291 = ((($$0384)) + 4|0);
- $292 = HEAP32[$291>>2]|0;
- $293 = $292 & -8;
- $294 = ($293|0)==($$2|0);
- if ($294) {
- label = 124;
+ $119 = ((($15)) + 4|0);
+ $120 = HEAP32[$119>>2]|0;
+ $121 = $120 & 1;
+ $122 = ($121|0)==(0);
+ if ($122) {
+ _abort();
+ // unreachable;
+ }
+ $123 = $120 & 2;
+ $124 = ($123|0)==(0);
+ if ($124) {
+ $125 = HEAP32[(35476)>>2]|0;
+ $126 = ($15|0)==($125|0);
+ $127 = HEAP32[(35472)>>2]|0;
+ if ($126) {
+ $128 = HEAP32[(35464)>>2]|0;
+ $129 = (($128) + ($$1382))|0;
+ HEAP32[(35464)>>2] = $129;
+ HEAP32[(35476)>>2] = $$1;
+ $130 = $129 | 1;
+ $131 = ((($$1)) + 4|0);
+ HEAP32[$131>>2] = $130;
+ $132 = ($$1|0)==($127|0);
+ if (!($132)) {
+ break;
+ }
+ HEAP32[(35472)>>2] = 0;
+ HEAP32[(35460)>>2] = 0;
+ break;
+ }
+ $133 = ($15|0)==($127|0);
+ if ($133) {
+ $134 = HEAP32[(35460)>>2]|0;
+ $135 = (($134) + ($$1382))|0;
+ HEAP32[(35460)>>2] = $135;
+ HEAP32[(35472)>>2] = $118;
+ $136 = $135 | 1;
+ $137 = ((($$1)) + 4|0);
+ HEAP32[$137>>2] = $136;
+ $138 = (($118) + ($135)|0);
+ HEAP32[$138>>2] = $135;
break;
}
- $295 = $$0383 >>> 31;
- $296 = (((($$0384)) + 16|0) + ($295<<2)|0);
- $297 = $$0383 << 1;
- $298 = HEAP32[$296>>2]|0;
- $299 = ($298|0)==(0|0);
- if ($299) {
- label = 121;
+ $139 = $120 & -8;
+ $140 = (($139) + ($$1382))|0;
+ $141 = $120 >>> 3;
+ $142 = ($120>>>0)<(256);
+ L106: do {
+ if ($142) {
+ $143 = ((($15)) + 8|0);
+ $144 = HEAP32[$143>>2]|0;
+ $145 = ((($15)) + 12|0);
+ $146 = HEAP32[$145>>2]|0;
+ $147 = $141 << 1;
+ $148 = (35492 + ($147<<2)|0);
+ $149 = ($144|0)==($148|0);
+ if (!($149)) {
+ $150 = HEAP32[(35468)>>2]|0;
+ $151 = ($144>>>0)<($150>>>0);
+ if ($151) {
+ _abort();
+ // unreachable;
+ }
+ $152 = ((($144)) + 12|0);
+ $153 = HEAP32[$152>>2]|0;
+ $154 = ($153|0)==($15|0);
+ if (!($154)) {
+ _abort();
+ // unreachable;
+ }
+ }
+ $155 = ($146|0)==($144|0);
+ if ($155) {
+ $156 = 1 << $141;
+ $157 = $156 ^ -1;
+ $158 = HEAP32[8863]|0;
+ $159 = $158 & $157;
+ HEAP32[8863] = $159;
+ break;
+ }
+ $160 = ($146|0)==($148|0);
+ if ($160) {
+ $$pre442 = ((($146)) + 8|0);
+ $$pre$phi443Z2D = $$pre442;
+ } else {
+ $161 = HEAP32[(35468)>>2]|0;
+ $162 = ($146>>>0)<($161>>>0);
+ if ($162) {
+ _abort();
+ // unreachable;
+ }
+ $163 = ((($146)) + 8|0);
+ $164 = HEAP32[$163>>2]|0;
+ $165 = ($164|0)==($15|0);
+ if ($165) {
+ $$pre$phi443Z2D = $163;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ $166 = ((($144)) + 12|0);
+ HEAP32[$166>>2] = $146;
+ HEAP32[$$pre$phi443Z2D>>2] = $144;
+ } else {
+ $167 = ((($15)) + 24|0);
+ $168 = HEAP32[$167>>2]|0;
+ $169 = ((($15)) + 12|0);
+ $170 = HEAP32[$169>>2]|0;
+ $171 = ($170|0)==($15|0);
+ do {
+ if ($171) {
+ $182 = ((($15)) + 16|0);
+ $183 = ((($182)) + 4|0);
+ $184 = HEAP32[$183>>2]|0;
+ $185 = ($184|0)==(0|0);
+ if ($185) {
+ $186 = HEAP32[$182>>2]|0;
+ $187 = ($186|0)==(0|0);
+ if ($187) {
+ $$3400 = 0;
+ break;
+ } else {
+ $$1398 = $186;$$1402 = $182;
+ }
+ } else {
+ $$1398 = $184;$$1402 = $183;
+ }
+ while(1) {
+ $188 = ((($$1398)) + 20|0);
+ $189 = HEAP32[$188>>2]|0;
+ $190 = ($189|0)==(0|0);
+ if (!($190)) {
+ $$1398 = $189;$$1402 = $188;
+ continue;
+ }
+ $191 = ((($$1398)) + 16|0);
+ $192 = HEAP32[$191>>2]|0;
+ $193 = ($192|0)==(0|0);
+ if ($193) {
+ break;
+ } else {
+ $$1398 = $192;$$1402 = $191;
+ }
+ }
+ $194 = HEAP32[(35468)>>2]|0;
+ $195 = ($$1402>>>0)<($194>>>0);
+ if ($195) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$$1402>>2] = 0;
+ $$3400 = $$1398;
+ break;
+ }
+ } else {
+ $172 = ((($15)) + 8|0);
+ $173 = HEAP32[$172>>2]|0;
+ $174 = HEAP32[(35468)>>2]|0;
+ $175 = ($173>>>0)<($174>>>0);
+ if ($175) {
+ _abort();
+ // unreachable;
+ }
+ $176 = ((($173)) + 12|0);
+ $177 = HEAP32[$176>>2]|0;
+ $178 = ($177|0)==($15|0);
+ if (!($178)) {
+ _abort();
+ // unreachable;
+ }
+ $179 = ((($170)) + 8|0);
+ $180 = HEAP32[$179>>2]|0;
+ $181 = ($180|0)==($15|0);
+ if ($181) {
+ HEAP32[$176>>2] = $170;
+ HEAP32[$179>>2] = $173;
+ $$3400 = $170;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ } while(0);
+ $196 = ($168|0)==(0|0);
+ if (!($196)) {
+ $197 = ((($15)) + 28|0);
+ $198 = HEAP32[$197>>2]|0;
+ $199 = (35756 + ($198<<2)|0);
+ $200 = HEAP32[$199>>2]|0;
+ $201 = ($15|0)==($200|0);
+ do {
+ if ($201) {
+ HEAP32[$199>>2] = $$3400;
+ $cond422 = ($$3400|0)==(0|0);
+ if ($cond422) {
+ $202 = 1 << $198;
+ $203 = $202 ^ -1;
+ $204 = HEAP32[(35456)>>2]|0;
+ $205 = $204 & $203;
+ HEAP32[(35456)>>2] = $205;
+ break L106;
+ }
+ } else {
+ $206 = HEAP32[(35468)>>2]|0;
+ $207 = ($168>>>0)<($206>>>0);
+ if ($207) {
+ _abort();
+ // unreachable;
+ } else {
+ $208 = ((($168)) + 16|0);
+ $209 = HEAP32[$208>>2]|0;
+ $not$ = ($209|0)!=($15|0);
+ $$sink5 = $not$&1;
+ $210 = (((($168)) + 16|0) + ($$sink5<<2)|0);
+ HEAP32[$210>>2] = $$3400;
+ $211 = ($$3400|0)==(0|0);
+ if ($211) {
+ break L106;
+ } else {
+ break;
+ }
+ }
+ }
+ } while(0);
+ $212 = HEAP32[(35468)>>2]|0;
+ $213 = ($$3400>>>0)<($212>>>0);
+ if ($213) {
+ _abort();
+ // unreachable;
+ }
+ $214 = ((($$3400)) + 24|0);
+ HEAP32[$214>>2] = $168;
+ $215 = ((($15)) + 16|0);
+ $216 = HEAP32[$215>>2]|0;
+ $217 = ($216|0)==(0|0);
+ do {
+ if (!($217)) {
+ $218 = ($216>>>0)<($212>>>0);
+ if ($218) {
+ _abort();
+ // unreachable;
+ } else {
+ $219 = ((($$3400)) + 16|0);
+ HEAP32[$219>>2] = $216;
+ $220 = ((($216)) + 24|0);
+ HEAP32[$220>>2] = $$3400;
+ break;
+ }
+ }
+ } while(0);
+ $221 = ((($215)) + 4|0);
+ $222 = HEAP32[$221>>2]|0;
+ $223 = ($222|0)==(0|0);
+ if (!($223)) {
+ $224 = HEAP32[(35468)>>2]|0;
+ $225 = ($222>>>0)<($224>>>0);
+ if ($225) {
+ _abort();
+ // unreachable;
+ } else {
+ $226 = ((($$3400)) + 20|0);
+ HEAP32[$226>>2] = $222;
+ $227 = ((($222)) + 24|0);
+ HEAP32[$227>>2] = $$3400;
+ break;
+ }
+ }
+ }
+ }
+ } while(0);
+ $228 = $140 | 1;
+ $229 = ((($$1)) + 4|0);
+ HEAP32[$229>>2] = $228;
+ $230 = (($118) + ($140)|0);
+ HEAP32[$230>>2] = $140;
+ $231 = HEAP32[(35472)>>2]|0;
+ $232 = ($$1|0)==($231|0);
+ if ($232) {
+ HEAP32[(35460)>>2] = $140;
break;
} else {
- $$0383 = $297;$$0384 = $298;
+ $$2 = $140;
}
- }
- if ((label|0) == 121) {
- $300 = HEAP32[(33032)>>2]|0;
- $301 = ($296>>>0)<($300>>>0);
- if ($301) {
- _abort();
- // unreachable;
+ } else {
+ $233 = $120 & -2;
+ HEAP32[$119>>2] = $233;
+ $234 = $$1382 | 1;
+ $235 = ((($$1)) + 4|0);
+ HEAP32[$235>>2] = $234;
+ $236 = (($118) + ($$1382)|0);
+ HEAP32[$236>>2] = $$1382;
+ $$2 = $$1382;
+ }
+ $237 = $$2 >>> 3;
+ $238 = ($$2>>>0)<(256);
+ if ($238) {
+ $239 = $237 << 1;
+ $240 = (35492 + ($239<<2)|0);
+ $241 = HEAP32[8863]|0;
+ $242 = 1 << $237;
+ $243 = $241 & $242;
+ $244 = ($243|0)==(0);
+ if ($244) {
+ $245 = $241 | $242;
+ HEAP32[8863] = $245;
+ $$pre = ((($240)) + 8|0);
+ $$0403 = $240;$$pre$phiZ2D = $$pre;
} else {
- HEAP32[$296>>2] = $$1;
- $302 = ((($$1)) + 24|0);
- HEAP32[$302>>2] = $$0384;
- $303 = ((($$1)) + 12|0);
- HEAP32[$303>>2] = $$1;
- $304 = ((($$1)) + 8|0);
- HEAP32[$304>>2] = $$1;
- break;
+ $246 = ((($240)) + 8|0);
+ $247 = HEAP32[$246>>2]|0;
+ $248 = HEAP32[(35468)>>2]|0;
+ $249 = ($247>>>0)<($248>>>0);
+ if ($249) {
+ _abort();
+ // unreachable;
+ } else {
+ $$0403 = $247;$$pre$phiZ2D = $246;
+ }
}
+ HEAP32[$$pre$phiZ2D>>2] = $$1;
+ $250 = ((($$0403)) + 12|0);
+ HEAP32[$250>>2] = $$1;
+ $251 = ((($$1)) + 8|0);
+ HEAP32[$251>>2] = $$0403;
+ $252 = ((($$1)) + 12|0);
+ HEAP32[$252>>2] = $240;
+ break;
}
- else if ((label|0) == 124) {
- $305 = ((($$0384)) + 8|0);
- $306 = HEAP32[$305>>2]|0;
- $307 = HEAP32[(33032)>>2]|0;
- $308 = ($306>>>0)>=($307>>>0);
- $not$437 = ($$0384>>>0)>=($307>>>0);
- $309 = $308 & $not$437;
- if ($309) {
- $310 = ((($306)) + 12|0);
- HEAP32[$310>>2] = $$1;
- HEAP32[$305>>2] = $$1;
- $311 = ((($$1)) + 8|0);
- HEAP32[$311>>2] = $306;
- $312 = ((($$1)) + 12|0);
- HEAP32[$312>>2] = $$0384;
- $313 = ((($$1)) + 24|0);
- HEAP32[$313>>2] = 0;
- break;
+ $253 = $$2 >>> 8;
+ $254 = ($253|0)==(0);
+ if ($254) {
+ $$0396 = 0;
+ } else {
+ $255 = ($$2>>>0)>(16777215);
+ if ($255) {
+ $$0396 = 31;
} else {
- _abort();
- // unreachable;
+ $256 = (($253) + 1048320)|0;
+ $257 = $256 >>> 16;
+ $258 = $257 & 8;
+ $259 = $253 << $258;
+ $260 = (($259) + 520192)|0;
+ $261 = $260 >>> 16;
+ $262 = $261 & 4;
+ $263 = $262 | $258;
+ $264 = $259 << $262;
+ $265 = (($264) + 245760)|0;
+ $266 = $265 >>> 16;
+ $267 = $266 & 2;
+ $268 = $263 | $267;
+ $269 = (14 - ($268))|0;
+ $270 = $264 << $267;
+ $271 = $270 >>> 15;
+ $272 = (($269) + ($271))|0;
+ $273 = $272 << 1;
+ $274 = (($272) + 7)|0;
+ $275 = $$2 >>> $274;
+ $276 = $275 & 1;
+ $277 = $276 | $273;
+ $$0396 = $277;
+ }
+ }
+ $278 = (35756 + ($$0396<<2)|0);
+ $279 = ((($$1)) + 28|0);
+ HEAP32[$279>>2] = $$0396;
+ $280 = ((($$1)) + 16|0);
+ $281 = ((($$1)) + 20|0);
+ HEAP32[$281>>2] = 0;
+ HEAP32[$280>>2] = 0;
+ $282 = HEAP32[(35456)>>2]|0;
+ $283 = 1 << $$0396;
+ $284 = $282 & $283;
+ $285 = ($284|0)==(0);
+ do {
+ if ($285) {
+ $286 = $282 | $283;
+ HEAP32[(35456)>>2] = $286;
+ HEAP32[$278>>2] = $$1;
+ $287 = ((($$1)) + 24|0);
+ HEAP32[$287>>2] = $278;
+ $288 = ((($$1)) + 12|0);
+ HEAP32[$288>>2] = $$1;
+ $289 = ((($$1)) + 8|0);
+ HEAP32[$289>>2] = $$1;
+ } else {
+ $290 = HEAP32[$278>>2]|0;
+ $291 = ($$0396|0)==(31);
+ $292 = $$0396 >>> 1;
+ $293 = (25 - ($292))|0;
+ $294 = $291 ? 0 : $293;
+ $295 = $$2 << $294;
+ $$0383 = $295;$$0384 = $290;
+ while(1) {
+ $296 = ((($$0384)) + 4|0);
+ $297 = HEAP32[$296>>2]|0;
+ $298 = $297 & -8;
+ $299 = ($298|0)==($$2|0);
+ if ($299) {
+ label = 126;
+ break;
+ }
+ $300 = $$0383 >>> 31;
+ $301 = (((($$0384)) + 16|0) + ($300<<2)|0);
+ $302 = $$0383 << 1;
+ $303 = HEAP32[$301>>2]|0;
+ $304 = ($303|0)==(0|0);
+ if ($304) {
+ label = 123;
+ break;
+ } else {
+ $$0383 = $302;$$0384 = $303;
+ }
+ }
+ if ((label|0) == 123) {
+ $305 = HEAP32[(35468)>>2]|0;
+ $306 = ($301>>>0)<($305>>>0);
+ if ($306) {
+ _abort();
+ // unreachable;
+ } else {
+ HEAP32[$301>>2] = $$1;
+ $307 = ((($$1)) + 24|0);
+ HEAP32[$307>>2] = $$0384;
+ $308 = ((($$1)) + 12|0);
+ HEAP32[$308>>2] = $$1;
+ $309 = ((($$1)) + 8|0);
+ HEAP32[$309>>2] = $$1;
+ break;
+ }
+ }
+ else if ((label|0) == 126) {
+ $310 = ((($$0384)) + 8|0);
+ $311 = HEAP32[$310>>2]|0;
+ $312 = HEAP32[(35468)>>2]|0;
+ $313 = ($311>>>0)>=($312>>>0);
+ $not$437 = ($$0384>>>0)>=($312>>>0);
+ $314 = $313 & $not$437;
+ if ($314) {
+ $315 = ((($311)) + 12|0);
+ HEAP32[$315>>2] = $$1;
+ HEAP32[$310>>2] = $$1;
+ $316 = ((($$1)) + 8|0);
+ HEAP32[$316>>2] = $311;
+ $317 = ((($$1)) + 12|0);
+ HEAP32[$317>>2] = $$0384;
+ $318 = ((($$1)) + 24|0);
+ HEAP32[$318>>2] = 0;
+ break;
+ } else {
+ _abort();
+ // unreachable;
+ }
+ }
+ }
+ } while(0);
+ $319 = HEAP32[(35484)>>2]|0;
+ $320 = (($319) + -1)|0;
+ HEAP32[(35484)>>2] = $320;
+ $321 = ($320|0)==(0);
+ if ($321) {
+ $$0212$in$i = (35936);
+ while(1) {
+ $$0212$i = HEAP32[$$0212$in$i>>2]|0;
+ $322 = ($$0212$i|0)==(0|0);
+ $323 = ((($$0212$i)) + 8|0);
+ if ($322) {
+ break;
+ } else {
+ $$0212$in$i = $323;
+ }
}
+ HEAP32[(35484)>>2] = -1;
}
}
} while(0);
- $314 = HEAP32[(33048)>>2]|0;
- $315 = (($314) + -1)|0;
- HEAP32[(33048)>>2] = $315;
- $316 = ($315|0)==(0);
- if ($316) {
- $$0212$in$i = (33472);
- } else {
+ $324 = HEAP32[(35896)>>2]|0;
+ $325 = $324 & 2;
+ $326 = ($325|0)==(0);
+ if ($326) {
return;
}
- while(1) {
- $$0212$i = HEAP32[$$0212$in$i>>2]|0;
- $317 = ($$0212$i|0)==(0|0);
- $318 = ((($$0212$i)) + 8|0);
- if ($317) {
- break;
- } else {
- $$0212$in$i = $318;
- }
- }
- HEAP32[(33048)>>2] = -1;
+ (___pthread_mutex_unlock((35900))|0);
return;
}
function runPostSets() {
@@ -27464,6 +33867,9 @@ function _roundf(f) {
f = +f;
return f >= +0 ? +Math_floor(f + +0.5) : +Math_ceil(f - +0.5); // TODO: use fround?
}
+function _emscripten_set_current_thread_status(newStatus) {
+ newStatus = newStatus|0;
+}
function _bitshift64Lshr(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
@@ -27475,6 +33881,10 @@ function _bitshift64Lshr(low, high, bits) {
tempRet0 = 0;
return (high >>> (bits - 32))|0;
}
+function _emscripten_conditional_set_current_thread_status(expectedStatus, newStatus) {
+ expectedStatus = expectedStatus|0;
+ newStatus = newStatus|0;
+}
function _sbrk(increment) {
increment = increment|0;
var oldDynamicTop = 0;
@@ -27482,25 +33892,24 @@ function _sbrk(increment) {
var newDynamicTop = 0;
var totalMemory = 0;
increment = ((increment + 15) & -16)|0;
- oldDynamicTop = HEAP32[DYNAMICTOP_PTR>>2]|0;
- newDynamicTop = oldDynamicTop + increment | 0;
-
- if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
- | (newDynamicTop|0) < 0) { // Also underflow, sbrk() should be able to be used to subtract.
- abortOnCannotGrowMemory()|0;
- ___setErrNo(12);
- return -1;
- }
-
- HEAP32[DYNAMICTOP_PTR>>2] = newDynamicTop;
totalMemory = getTotalMemory()|0;
- if ((newDynamicTop|0) > (totalMemory|0)) {
- if ((enlargeMemory()|0) == 0) {
- ___setErrNo(12);
- HEAP32[DYNAMICTOP_PTR>>2] = oldDynamicTop;
- return -1;
+
+ // Perform a compare-and-swap loop to update the new dynamic top value. This is because
+ // this function can becalled simultaneously in multiple threads.
+ do {
+ oldDynamicTop = Atomics_load(HEAP32, DYNAMICTOP_PTR>>2)|0;
+ newDynamicTop = oldDynamicTop + increment | 0;
+ // Asking to increase dynamic top to a too high value? In pthreads builds we cannot
+ // enlarge memory, so this needs to fail.
+ if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
+ | (newDynamicTop|0) < 0 // Also underflow, sbrk() should be able to be used to subtract.
+ | (newDynamicTop|0) > (totalMemory|0)) {
+ abortOnCannotGrowMemory()|0;
}
- }
+ // Attempt to update the dynamic top to new value. Another thread may have beat this thread to the update,
+ // in which case we will need to start over by iterating the loop body again.
+ oldDynamicTopOnChange = Atomics_compareExchange(HEAP32, DYNAMICTOP_PTR>>2, oldDynamicTop|0, newDynamicTop|0)|0;
+ } while((oldDynamicTopOnChange|0) != (oldDynamicTop|0));
return oldDynamicTop|0;
}
function _bitshift64Shl(low, high, bits) {
@@ -28275,7 +34684,7 @@ var FUNCTION_TABLE_vii = [b4,_ErrorCallback,_CursorEnterCallback,_CharCallback,_
var FUNCTION_TABLE_ii = [b5,___stdio_close,_PhysicsLoop,_emscripten_glGetString__wrapper,_emscripten_glIsTexture__wrapper,_emscripten_glIsBuffer__wrapper,_emscripten_glIsRenderbuffer__wrapper,_emscripten_glCreateShader__wrapper,_emscripten_glIsShader__wrapper,_emscripten_glIsProgram__wrapper,_emscripten_glIsFramebuffer__wrapper,_emscripten_glCheckFramebufferStatus__wrapper,_emscripten_glIsEnabled__wrapper,b5,b5,b5];
var FUNCTION_TABLE_viddd = [b6,_emscripten_glUniform3f__wrapper,_emscripten_glVertexAttrib3f__wrapper,b6];
var FUNCTION_TABLE_vidd = [b7,_MouseCursorPosCallback,_ScrollCallback,_emscripten_glUniform2f__wrapper,_emscripten_glVertexAttrib2f__wrapper,b7,b7,b7];
-var FUNCTION_TABLE_iiii = [b8,___stdout_write,___stdio_seek,_EmscriptenFullscreenChangeCallback,_EmscriptenKeyboardCallback,_EmscriptenMouseCallback,_EmscriptenTouchCallback,_EmscriptenGamepadCallback,___stdio_write,b8,b8,b8,b8,b8,b8,b8];
+var FUNCTION_TABLE_iiii = [b8,___stdout_write,___stdio_seek,_sn_write,_EmscriptenFullscreenChangeCallback,_EmscriptenKeyboardCallback,_EmscriptenMouseCallback,_EmscriptenTouchCallback,_EmscriptenGamepadCallback,___stdio_write,b8,b8,b8,b8,b8,b8];
var FUNCTION_TABLE_viiiiiiii = [b9,_emscripten_glCompressedTexImage2D__wrapper,_emscripten_glCopyTexImage2D__wrapper,_emscripten_glCopyTexSubImage2D__wrapper];
var FUNCTION_TABLE_viiiiii = [b10,_emscripten_glDrawRangeElements__wrapper,_emscripten_glVertexAttribPointer__wrapper,b10];
var FUNCTION_TABLE_viii = [b11,_WindowSizeCallback,_emscripten_glGetTexParameterfv__wrapper,_emscripten_glGetTexParameteriv__wrapper,_emscripten_glTexParameterfv__wrapper,_emscripten_glTexParameteriv__wrapper,_emscripten_glGetBufferParameteriv__wrapper,_emscripten_glGetRenderbufferParameteriv__wrapper,_emscripten_glGetUniformfv__wrapper,_emscripten_glGetUniformiv__wrapper,_emscripten_glGetVertexAttribfv__wrapper,_emscripten_glGetVertexAttribiv__wrapper,_emscripten_glGetVertexAttribPointerv__wrapper,_emscripten_glUniform2i__wrapper,_emscripten_glUniform1iv__wrapper,_emscripten_glUniform2iv__wrapper,_emscripten_glUniform3iv__wrapper,_emscripten_glUniform4iv__wrapper,_emscripten_glUniform1fv__wrapper,_emscripten_glUniform2fv__wrapper,_emscripten_glUniform3fv__wrapper,_emscripten_glUniform4fv__wrapper,_emscripten_glGetShaderiv__wrapper,_emscripten_glGetProgramiv__wrapper,_emscripten_glBindAttribLocation__wrapper,_emscripten_glGetObjectParameterivARB__wrapper,_emscripten_glNormalPointer__wrapper,_emscripten_glDrawArrays__wrapper,_emscripten_glTexParameteri__wrapper,_emscripten_glStencilFunc__wrapper,_emscripten_glStencilOp__wrapper,b11];
@@ -28288,25 +34697,43 @@ var FUNCTION_TABLE_i = [b17,_emscripten_glCreateProgram__wrapper,_emscripten_glG
var FUNCTION_TABLE_vdddddd = [b18,_emscripten_glFrustum__wrapper];
var FUNCTION_TABLE_vdddd = [b19,_emscripten_glRotatef__wrapper,_emscripten_glClearColor__wrapper,_emscripten_glBlendColor__wrapper];
var FUNCTION_TABLE_vdd = [b20,_emscripten_glDepthRange__wrapper,_emscripten_glDepthRangef__wrapper,_emscripten_glPolygonOffset__wrapper];
-var FUNCTION_TABLE_v = [b21,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21,b21];
+var FUNCTION_TABLE_v = [b21,_UpdateDrawFrame,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21];
var FUNCTION_TABLE_viid = [b22,_emscripten_glTexParameterf__wrapper];
var FUNCTION_TABLE_viiii = [b23,_MouseButtonCallback,_emscripten_glBufferData__wrapper,_emscripten_glBufferSubData__wrapper,_emscripten_glUniform3i__wrapper,_emscripten_glUniformMatrix2fv__wrapper,_emscripten_glUniformMatrix3fv__wrapper,_emscripten_glUniformMatrix4fv__wrapper,_emscripten_glGetAttachedShaders__wrapper,_emscripten_glShaderSource__wrapper,_emscripten_glGetShaderSource__wrapper,_emscripten_glGetShaderInfoLog__wrapper,_emscripten_glGetShaderPrecisionFormat__wrapper,_emscripten_glGetProgramInfoLog__wrapper,_emscripten_glFramebufferRenderbuffer__wrapper,_emscripten_glGetFramebufferAttachmentParameteriv__wrapper,_emscripten_glGetInfoLogARB__wrapper,_emscripten_glVertexPointer__wrapper,_emscripten_glTexCoordPointer__wrapper,_emscripten_glColorPointer__wrapper,_emscripten_glDrawElements__wrapper,_emscripten_glDrawArraysInstanced__wrapper,_emscripten_glViewport__wrapper,_emscripten_glScissor__wrapper,_emscripten_glColorMask__wrapper,_emscripten_glRenderbufferStorage__wrapper,_emscripten_glBlendFuncSeparate__wrapper,_emscripten_glStencilFuncSeparate__wrapper,_emscripten_glStencilOpSeparate__wrapper,b23,b23,b23];
- return { _roundf: _roundf, _main: _main, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _fflush: _fflush, _memset: _memset, _sbrk: _sbrk, _memcpy: _memcpy, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, ___uremdi3: ___uremdi3, _i64Subtract: _i64Subtract, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_get_global_libc: _emscripten_get_global_libc, _emscripten_GetProcAddress: _emscripten_GetProcAddress, ___udivdi3: ___udivdi3, ___errno_location: ___errno_location, ___muldsi3: ___muldsi3, _free: _free, _memmove: _memmove, _strstr: _strstr, _malloc: _malloc, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
+ return { _emscripten_sync_run_in_main_thread_3: _emscripten_sync_run_in_main_thread_3, _roundf: _roundf, _bitshift64Shl: _bitshift64Shl, _emscripten_atomic_load_f32: _emscripten_atomic_load_f32, ___uremdi3: ___uremdi3, ___udivdi3: ___udivdi3, _emscripten_atomic_xor_u64: _emscripten_atomic_xor_u64, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _emscripten_atomic_and_u64: _emscripten_atomic_and_u64, _emscripten_sync_run_in_main_thread: _emscripten_sync_run_in_main_thread, _emscripten_sync_run_in_main_thread_4: _emscripten_sync_run_in_main_thread_4, _emscripten_sync_run_in_main_thread_5: _emscripten_sync_run_in_main_thread_5, _emscripten_sync_run_in_main_thread_6: _emscripten_sync_run_in_main_thread_6, _emscripten_sync_run_in_main_thread_7: _emscripten_sync_run_in_main_thread_7, _emscripten_sync_run_in_main_thread_0: _emscripten_sync_run_in_main_thread_0, _emscripten_sync_run_in_main_thread_1: _emscripten_sync_run_in_main_thread_1, _emscripten_sync_run_in_main_thread_2: _emscripten_sync_run_in_main_thread_2, __emscripten_atomic_fetch_and_sub_u64: __emscripten_atomic_fetch_and_sub_u64, _emscripten_atomic_exchange_u32: _emscripten_atomic_exchange_u32, _fflush: _fflush, _emscripten_set_current_thread_status: _emscripten_set_current_thread_status, _emscripten_atomic_cas_u64: _emscripten_atomic_cas_u64, _memset: _memset, _emscripten_atomic_sub_u64: _emscripten_atomic_sub_u64, _emscripten_sync_run_in_main_thread_xprintf_varargs: _emscripten_sync_run_in_main_thread_xprintf_varargs, _i64Subtract: _i64Subtract, _llvm_bswap_i32: _llvm_bswap_i32, ___muldi3: ___muldi3, __emscripten_atomic_fetch_and_and_u64: __emscripten_atomic_fetch_and_and_u64, _emscripten_atomic_add_u64: _emscripten_atomic_add_u64, _emscripten_atomic_store_f64: _emscripten_atomic_store_f64, ___muldsi3: ___muldsi3, __emscripten_atomic_fetch_and_xor_u64: __emscripten_atomic_fetch_and_xor_u64, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_atomic_store_u64: _emscripten_atomic_store_u64, _emscripten_atomic_load_f64: _emscripten_atomic_load_f64, _emscripten_get_global_libc: _emscripten_get_global_libc, __emscripten_atomic_fetch_and_add_u64: __emscripten_atomic_fetch_and_add_u64, __emscripten_atomic_fetch_and_or_u64: __emscripten_atomic_fetch_and_or_u64, _emscripten_GetProcAddress: _emscripten_GetProcAddress, _emscripten_async_run_in_main_thread: _emscripten_async_run_in_main_thread, ___errno_location: ___errno_location, _main: _main, _emscripten_main_thread_process_queued_calls: _emscripten_main_thread_process_queued_calls, _emscripten_atomic_load_u64: _emscripten_atomic_load_u64, _free: _free, _emscripten_atomic_store_f32: _emscripten_atomic_store_f32, _emscripten_atomic_exchange_u64: _emscripten_atomic_exchange_u64, _memmove: _memmove, ___pthread_tsd_run_dtors: ___pthread_tsd_run_dtors, _malloc: _malloc, _memcpy: _memcpy, _emscripten_conditional_set_current_thread_status: _emscripten_conditional_set_current_thread_status, _sbrk: _sbrk, _emscripten_atomic_or_u64: _emscripten_atomic_or_u64, _strstr: _strstr, ___emscripten_pthread_data_constructor: ___emscripten_pthread_data_constructor, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
+var real___emscripten_atomic_fetch_and_xor_u64 = asm["__emscripten_atomic_fetch_and_xor_u64"]; asm["__emscripten_atomic_fetch_and_xor_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_xor_u64.apply(null, arguments);
+};
+
var real__roundf = asm["_roundf"]; asm["_roundf"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__roundf.apply(null, arguments);
};
-var real__main = asm["_main"]; asm["_main"] = function() {
+var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__main.apply(null, arguments);
+return real__bitshift64Shl.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f32 = asm["_emscripten_atomic_load_f32"]; asm["_emscripten_atomic_load_f32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f32.apply(null, arguments);
+};
+
+var real____emscripten_pthread_data_constructor = asm["___emscripten_pthread_data_constructor"]; asm["___emscripten_pthread_data_constructor"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____emscripten_pthread_data_constructor.apply(null, arguments);
};
var real_stackSave = asm["stackSave"]; asm["stackSave"] = function() {
@@ -28315,16 +34742,22 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackSave.apply(null, arguments);
};
-var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
+var real__emscripten_atomic_xor_u64 = asm["_emscripten_atomic_xor_u64"]; asm["_emscripten_atomic_xor_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_getTempRet0.apply(null, arguments);
+return real__emscripten_atomic_xor_u64.apply(null, arguments);
};
-var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
+var real__emscripten_atomic_load_u64 = asm["_emscripten_atomic_load_u64"]; asm["_emscripten_atomic_load_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_setThrew.apply(null, arguments);
+return real__emscripten_atomic_load_u64.apply(null, arguments);
+};
+
+var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivdi3.apply(null, arguments);
};
var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() {
@@ -28333,10 +34766,76 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__bitshift64Lshr.apply(null, arguments);
};
-var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
+var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__bitshift64Shl.apply(null, arguments);
+return real_getTempRet0.apply(null, arguments);
+};
+
+var real__emscripten_atomic_and_u64 = asm["_emscripten_atomic_and_u64"]; asm["_emscripten_atomic_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread = asm["_emscripten_sync_run_in_main_thread"]; asm["_emscripten_sync_run_in_main_thread"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_4 = asm["_emscripten_sync_run_in_main_thread_4"]; asm["_emscripten_sync_run_in_main_thread_4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_4.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_5 = asm["_emscripten_sync_run_in_main_thread_5"]; asm["_emscripten_sync_run_in_main_thread_5"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_5.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_6 = asm["_emscripten_sync_run_in_main_thread_6"]; asm["_emscripten_sync_run_in_main_thread_6"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_6.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_7 = asm["_emscripten_sync_run_in_main_thread_7"]; asm["_emscripten_sync_run_in_main_thread_7"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_7.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_0 = asm["_emscripten_sync_run_in_main_thread_0"]; asm["_emscripten_sync_run_in_main_thread_0"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_0.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_1 = asm["_emscripten_sync_run_in_main_thread_1"]; asm["_emscripten_sync_run_in_main_thread_1"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_1.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_2 = asm["_emscripten_sync_run_in_main_thread_2"]; asm["_emscripten_sync_run_in_main_thread_2"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_2.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_sub_u64 = asm["__emscripten_atomic_fetch_and_sub_u64"]; asm["__emscripten_atomic_fetch_and_sub_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_sub_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_exchange_u32 = asm["_emscripten_atomic_exchange_u32"]; asm["_emscripten_atomic_exchange_u32"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_exchange_u32.apply(null, arguments);
};
var real__fflush = asm["_fflush"]; asm["_fflush"] = function() {
@@ -28345,22 +34844,46 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__fflush.apply(null, arguments);
};
+var real__emscripten_set_current_thread_status = asm["_emscripten_set_current_thread_status"]; asm["_emscripten_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_set_current_thread_status.apply(null, arguments);
+};
+
+var real__emscripten_atomic_cas_u64 = asm["_emscripten_atomic_cas_u64"]; asm["_emscripten_atomic_cas_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_cas_u64.apply(null, arguments);
+};
+
var real__llvm_cttz_i32 = asm["_llvm_cttz_i32"]; asm["_llvm_cttz_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__llvm_cttz_i32.apply(null, arguments);
};
-var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+var real__emscripten_atomic_sub_u64 = asm["_emscripten_atomic_sub_u64"]; asm["_emscripten_atomic_sub_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__sbrk.apply(null, arguments);
+return real__emscripten_atomic_sub_u64.apply(null, arguments);
};
-var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
+var real__main = asm["_main"]; asm["_main"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__llvm_bswap_i32.apply(null, arguments);
+return real__main.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_xprintf_varargs = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"]; asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_xprintf_varargs.apply(null, arguments);
+};
+
+var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____errno_location.apply(null, arguments);
};
var real____muldi3 = asm["___muldi3"]; asm["___muldi3"] = function() {
@@ -28369,6 +34892,18 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldi3.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_and_u64 = asm["__emscripten_atomic_fetch_and_and_u64"]; asm["__emscripten_atomic_fetch_and_and_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_and_u64.apply(null, arguments);
+};
+
+var real__emscripten_sync_run_in_main_thread_3 = asm["_emscripten_sync_run_in_main_thread_3"]; asm["_emscripten_sync_run_in_main_thread_3"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_sync_run_in_main_thread_3.apply(null, arguments);
+};
+
var real____uremdi3 = asm["___uremdi3"]; asm["___uremdi3"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28387,12 +34922,6 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Subtract.apply(null, arguments);
};
-var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
-assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
-assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivmoddi4.apply(null, arguments);
-};
-
var real_setTempRet0 = asm["setTempRet0"]; asm["setTempRet0"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
@@ -28405,28 +34934,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real__i64Add.apply(null, arguments);
};
+var real__emscripten_atomic_store_u64 = asm["_emscripten_atomic_store_u64"]; asm["_emscripten_atomic_store_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_load_f64 = asm["_emscripten_atomic_load_f64"]; asm["_emscripten_atomic_load_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_load_f64.apply(null, arguments);
+};
+
var real__emscripten_get_global_libc = asm["_emscripten_get_global_libc"]; asm["_emscripten_get_global_libc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_get_global_libc.apply(null, arguments);
};
+var real___emscripten_atomic_fetch_and_add_u64 = asm["__emscripten_atomic_fetch_and_add_u64"]; asm["__emscripten_atomic_fetch_and_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_add_u64.apply(null, arguments);
+};
+
+var real___emscripten_atomic_fetch_and_or_u64 = asm["__emscripten_atomic_fetch_and_or_u64"]; asm["__emscripten_atomic_fetch_and_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real___emscripten_atomic_fetch_and_or_u64.apply(null, arguments);
+};
+
var real__emscripten_GetProcAddress = asm["_emscripten_GetProcAddress"]; asm["_emscripten_GetProcAddress"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__emscripten_GetProcAddress.apply(null, arguments);
};
-var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
+var real__emscripten_async_run_in_main_thread = asm["_emscripten_async_run_in_main_thread"]; asm["_emscripten_async_run_in_main_thread"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____udivdi3.apply(null, arguments);
+return real__emscripten_async_run_in_main_thread.apply(null, arguments);
};
-var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
+var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real____errno_location.apply(null, arguments);
+return real__llvm_bswap_i32.apply(null, arguments);
};
var real____muldsi3 = asm["___muldsi3"]; asm["___muldsi3"] = function() {
@@ -28435,28 +34988,52 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real____muldsi3.apply(null, arguments);
};
+var real__emscripten_main_thread_process_queued_calls = asm["_emscripten_main_thread_process_queued_calls"]; asm["_emscripten_main_thread_process_queued_calls"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_main_thread_process_queued_calls.apply(null, arguments);
+};
+
+var real__emscripten_atomic_add_u64 = asm["_emscripten_atomic_add_u64"]; asm["_emscripten_atomic_add_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_add_u64.apply(null, arguments);
+};
+
var real__free = asm["_free"]; asm["_free"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__free.apply(null, arguments);
};
-var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+var real__emscripten_atomic_store_f32 = asm["_emscripten_atomic_store_f32"]; asm["_emscripten_atomic_store_f32"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real_establishStackSpace.apply(null, arguments);
+return real__emscripten_atomic_store_f32.apply(null, arguments);
};
-var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__memmove.apply(null, arguments);
+return real_setThrew.apply(null, arguments);
};
-var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+var real__emscripten_atomic_exchange_u64 = asm["_emscripten_atomic_exchange_u64"]; asm["_emscripten_atomic_exchange_u64"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
-return real__strstr.apply(null, arguments);
+return real__emscripten_atomic_exchange_u64.apply(null, arguments);
+};
+
+var real__emscripten_atomic_store_f64 = asm["_emscripten_atomic_store_f64"]; asm["_emscripten_atomic_store_f64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_store_f64.apply(null, arguments);
+};
+
+var real____pthread_tsd_run_dtors = asm["___pthread_tsd_run_dtors"]; asm["___pthread_tsd_run_dtors"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____pthread_tsd_run_dtors.apply(null, arguments);
};
var real_stackRestore = asm["stackRestore"]; asm["stackRestore"] = function() {
@@ -28465,43 +35042,120 @@ assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it a
return real_stackRestore.apply(null, arguments);
};
+var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real____udivmoddi4.apply(null, arguments);
+};
+
var real__malloc = asm["_malloc"]; asm["_malloc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__malloc.apply(null, arguments);
};
+
+var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real_establishStackSpace.apply(null, arguments);
+};
+
+var real__emscripten_conditional_set_current_thread_status = asm["_emscripten_conditional_set_current_thread_status"]; asm["_emscripten_conditional_set_current_thread_status"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_conditional_set_current_thread_status.apply(null, arguments);
+};
+
+var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__sbrk.apply(null, arguments);
+};
+
+var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__memmove.apply(null, arguments);
+};
+
+var real__emscripten_atomic_or_u64 = asm["_emscripten_atomic_or_u64"]; asm["_emscripten_atomic_or_u64"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__emscripten_atomic_or_u64.apply(null, arguments);
+};
+
+var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
+assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
+assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
+return real__strstr.apply(null, arguments);
+};
+var __emscripten_atomic_fetch_and_xor_u64 = Module["__emscripten_atomic_fetch_and_xor_u64"] = asm["__emscripten_atomic_fetch_and_xor_u64"];
var _roundf = Module["_roundf"] = asm["_roundf"];
-var _main = Module["_main"] = asm["_main"];
+var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var _emscripten_atomic_load_f32 = Module["_emscripten_atomic_load_f32"] = asm["_emscripten_atomic_load_f32"];
+var ___emscripten_pthread_data_constructor = Module["___emscripten_pthread_data_constructor"] = asm["___emscripten_pthread_data_constructor"];
var stackSave = Module["stackSave"] = asm["stackSave"];
-var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
-var _memset = Module["_memset"] = asm["_memset"];
-var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_xor_u64 = Module["_emscripten_atomic_xor_u64"] = asm["_emscripten_atomic_xor_u64"];
+var _emscripten_atomic_load_u64 = Module["_emscripten_atomic_load_u64"] = asm["_emscripten_atomic_load_u64"];
+var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
-var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
+var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
+var _emscripten_atomic_and_u64 = Module["_emscripten_atomic_and_u64"] = asm["_emscripten_atomic_and_u64"];
+var _emscripten_sync_run_in_main_thread = Module["_emscripten_sync_run_in_main_thread"] = asm["_emscripten_sync_run_in_main_thread"];
+var _emscripten_sync_run_in_main_thread_4 = Module["_emscripten_sync_run_in_main_thread_4"] = asm["_emscripten_sync_run_in_main_thread_4"];
+var _emscripten_sync_run_in_main_thread_5 = Module["_emscripten_sync_run_in_main_thread_5"] = asm["_emscripten_sync_run_in_main_thread_5"];
+var _emscripten_sync_run_in_main_thread_6 = Module["_emscripten_sync_run_in_main_thread_6"] = asm["_emscripten_sync_run_in_main_thread_6"];
+var _emscripten_sync_run_in_main_thread_7 = Module["_emscripten_sync_run_in_main_thread_7"] = asm["_emscripten_sync_run_in_main_thread_7"];
+var _emscripten_sync_run_in_main_thread_0 = Module["_emscripten_sync_run_in_main_thread_0"] = asm["_emscripten_sync_run_in_main_thread_0"];
+var _emscripten_sync_run_in_main_thread_1 = Module["_emscripten_sync_run_in_main_thread_1"] = asm["_emscripten_sync_run_in_main_thread_1"];
+var _emscripten_sync_run_in_main_thread_2 = Module["_emscripten_sync_run_in_main_thread_2"] = asm["_emscripten_sync_run_in_main_thread_2"];
+var __emscripten_atomic_fetch_and_sub_u64 = Module["__emscripten_atomic_fetch_and_sub_u64"] = asm["__emscripten_atomic_fetch_and_sub_u64"];
+var _emscripten_atomic_exchange_u32 = Module["_emscripten_atomic_exchange_u32"] = asm["_emscripten_atomic_exchange_u32"];
var _fflush = Module["_fflush"] = asm["_fflush"];
+var _emscripten_set_current_thread_status = Module["_emscripten_set_current_thread_status"] = asm["_emscripten_set_current_thread_status"];
+var _emscripten_atomic_cas_u64 = Module["_emscripten_atomic_cas_u64"] = asm["_emscripten_atomic_cas_u64"];
var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"];
-var _sbrk = Module["_sbrk"] = asm["_sbrk"];
+var _emscripten_atomic_sub_u64 = Module["_emscripten_atomic_sub_u64"] = asm["_emscripten_atomic_sub_u64"];
+var _main = Module["_main"] = asm["_main"];
+var _emscripten_sync_run_in_main_thread_xprintf_varargs = Module["_emscripten_sync_run_in_main_thread_xprintf_varargs"] = asm["_emscripten_sync_run_in_main_thread_xprintf_varargs"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
-var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
var ___muldi3 = Module["___muldi3"] = asm["___muldi3"];
+var __emscripten_atomic_fetch_and_and_u64 = Module["__emscripten_atomic_fetch_and_and_u64"] = asm["__emscripten_atomic_fetch_and_and_u64"];
+var _emscripten_sync_run_in_main_thread_3 = Module["_emscripten_sync_run_in_main_thread_3"] = asm["_emscripten_sync_run_in_main_thread_3"];
var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"];
var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
-var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _memset = Module["_memset"] = asm["_memset"];
var setTempRet0 = Module["setTempRet0"] = asm["setTempRet0"];
var _i64Add = Module["_i64Add"] = asm["_i64Add"];
+var _emscripten_atomic_store_u64 = Module["_emscripten_atomic_store_u64"] = asm["_emscripten_atomic_store_u64"];
+var _emscripten_atomic_load_f64 = Module["_emscripten_atomic_load_f64"] = asm["_emscripten_atomic_load_f64"];
var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = asm["_emscripten_get_global_libc"];
+var __emscripten_atomic_fetch_and_add_u64 = Module["__emscripten_atomic_fetch_and_add_u64"] = asm["__emscripten_atomic_fetch_and_add_u64"];
+var __emscripten_atomic_fetch_and_or_u64 = Module["__emscripten_atomic_fetch_and_or_u64"] = asm["__emscripten_atomic_fetch_and_or_u64"];
var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = asm["_emscripten_GetProcAddress"];
-var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
-var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
+var _emscripten_async_run_in_main_thread = Module["_emscripten_async_run_in_main_thread"] = asm["_emscripten_async_run_in_main_thread"];
+var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
+var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var ___muldsi3 = Module["___muldsi3"] = asm["___muldsi3"];
+var _emscripten_main_thread_process_queued_calls = Module["_emscripten_main_thread_process_queued_calls"] = asm["_emscripten_main_thread_process_queued_calls"];
+var _emscripten_atomic_add_u64 = Module["_emscripten_atomic_add_u64"] = asm["_emscripten_atomic_add_u64"];
var _free = Module["_free"] = asm["_free"];
-var runPostSets = Module["runPostSets"] = asm["runPostSets"];
+var _emscripten_atomic_store_f32 = Module["_emscripten_atomic_store_f32"] = asm["_emscripten_atomic_store_f32"];
+var setThrew = Module["setThrew"] = asm["setThrew"];
+var _emscripten_atomic_exchange_u64 = Module["_emscripten_atomic_exchange_u64"] = asm["_emscripten_atomic_exchange_u64"];
+var _emscripten_atomic_store_f64 = Module["_emscripten_atomic_store_f64"] = asm["_emscripten_atomic_store_f64"];
+var ___pthread_tsd_run_dtors = Module["___pthread_tsd_run_dtors"] = asm["___pthread_tsd_run_dtors"];
+var stackRestore = Module["stackRestore"] = asm["stackRestore"];
+var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
+var _malloc = Module["_malloc"] = asm["_malloc"];
var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"];
+var _emscripten_conditional_set_current_thread_status = Module["_emscripten_conditional_set_current_thread_status"] = asm["_emscripten_conditional_set_current_thread_status"];
+var _sbrk = Module["_sbrk"] = asm["_sbrk"];
var _memmove = Module["_memmove"] = asm["_memmove"];
+var _emscripten_atomic_or_u64 = Module["_emscripten_atomic_or_u64"] = asm["_emscripten_atomic_or_u64"];
var _strstr = Module["_strstr"] = asm["_strstr"];
-var stackRestore = Module["stackRestore"] = asm["stackRestore"];
-var _malloc = Module["_malloc"] = asm["_malloc"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_vd = Module["dynCall_vd"] = asm["dynCall_vd"];
var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"];
@@ -28683,6 +35337,7 @@ function exit(status, implicit) {
if (Module['noExitRuntime']) {
Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');
} else {
+ PThread.terminateAllThreads();
ABORT = true;
EXITSTATUS = status;
@@ -28703,6 +35358,7 @@ Module['exit'] = Module.exit = exit;
var abortDecorators = [];
function abort(what) {
+ if (ENVIRONMENT_IS_PTHREAD) console.error('Pthread aborting at ' + new Error().stack);
if (what !== undefined) {
Module.print(what);
Module.printErr(what);
@@ -28742,7 +35398,7 @@ if (Module['noInitialRun']) {
}
-run();
+if (!ENVIRONMENT_IS_PTHREAD) run();
// {{POST_RUN_ADDITIONS}}
diff --git a/docs/examples/web/physac/pthread-main.js b/docs/examples/web/physac/pthread-main.js
new file mode 100644
index 00000000..3f094310
--- /dev/null
+++ b/docs/examples/web/physac/pthread-main.js
@@ -0,0 +1,115 @@
+// Pthread Web Worker startup routine:
+// This is the entry point file that is loaded first by each Web Worker
+// that executes pthreads on the Emscripten application.
+
+// Thread-local:
+var threadInfoStruct = 0; // Info area for this thread in Emscripten HEAP (shared). If zero, this worker is not currently hosting an executing pthread.
+var selfThreadId = 0; // The ID of this thread. 0 if not hosting a pthread.
+var parentThreadId = 0; // The ID of the parent pthread that launched this thread.
+var tempDoublePtr = 0; // A temporary memory area for global float and double marshalling operations.
+
+// Thread-local: Each thread has its own allocated stack space.
+var STACK_BASE = 0;
+var STACKTOP = 0;
+var STACK_MAX = 0;
+
+// These are system-wide memory area parameters that are set at main runtime startup in main thread, and stay constant throughout the application.
+var buffer; // All pthreads share the same Emscripten HEAP as SharedArrayBuffer with the main execution thread.
+var DYNAMICTOP_PTR = 0;
+var TOTAL_MEMORY = 0;
+var STATICTOP = 0;
+var staticSealed = true; // When threads are being initialized, the static memory area has been already sealed a long time ago.
+var DYNAMIC_BASE = 0;
+
+var ENVIRONMENT_IS_PTHREAD = true;
+
+// Cannot use console.log or console.error in a web worker, since that would risk a browser deadlock! https://bugzilla.mozilla.org/show_bug.cgi?id=1049091
+// Therefore implement custom logging facility for threads running in a worker, which queue the messages to main thread to print.
+var Module = {};
+
+function threadPrint() {
+ var text = Array.prototype.slice.call(arguments).join(' ');
+ console.log(text);
+}
+function threadPrintErr() {
+ var text = Array.prototype.slice.call(arguments).join(' ');
+ console.error(text);
+}
+function threadAlert() {
+ var text = Array.prototype.slice.call(arguments).join(' ');
+ postMessage({cmd: 'alert', text: text, threadId: selfThreadId});
+}
+Module['print'] = threadPrint;
+Module['printErr'] = threadPrintErr;
+this.alert = threadAlert;
+
+this.onmessage = function(e) {
+ if (e.data.cmd === 'load') { // Preload command that is called once per worker to parse and load the Emscripten code.
+ // Initialize the thread-local field(s):
+ tempDoublePtr = e.data.tempDoublePtr;
+
+ // Initialize the global "process"-wide fields:
+ buffer = e.data.buffer;
+ Module['TOTAL_MEMORY'] = TOTAL_MEMORY = e.data.TOTAL_MEMORY;
+ STATICTOP = e.data.STATICTOP;
+ DYNAMIC_BASE = e.data.DYNAMIC_BASE;
+ DYNAMICTOP_PTR = e.data.DYNAMICTOP_PTR;
+
+ PthreadWorkerInit = e.data.PthreadWorkerInit;
+ importScripts(e.data.url);
+ if (typeof FS !== 'undefined') FS.createStandardStreams();
+ postMessage({ cmd: 'loaded' });
+ } else if (e.data.cmd === 'objectTransfer') {
+ PThread.receiveObjectTransfer(e.data);
+ } else if (e.data.cmd === 'run') { // This worker was idle, and now should start executing its pthread entry point.
+ threadInfoStruct = e.data.threadInfoStruct;
+ __register_pthread_ptr(threadInfoStruct, /*isMainBrowserThread=*/0, /*isMainRuntimeThread=*/0); // Pass the thread address inside the asm.js scope to store it for fast access that avoids the need for a FFI out.
+ assert(threadInfoStruct);
+ selfThreadId = e.data.selfThreadId;
+ parentThreadId = e.data.parentThreadId;
+ assert(selfThreadId);
+ assert(parentThreadId);
+ // TODO: Emscripten runtime has these variables twice(!), once outside the asm.js module, and a second time inside the asm.js module.
+ // Review why that is? Can those get out of sync?
+ STACK_BASE = STACKTOP = e.data.stackBase;
+ STACK_MAX = STACK_BASE + e.data.stackSize;
+ assert(STACK_BASE != 0);
+ assert(STACK_MAX > STACK_BASE);
+ Runtime.establishStackSpace(e.data.stackBase, e.data.stackBase + e.data.stackSize);
+ var result = 0;
+
+ PThread.receiveObjectTransfer(e.data);
+
+ PThread.setThreadStatus(_pthread_self(), 1/*EM_THREAD_STATUS_RUNNING*/);
+
+ try {
+ // HACK: Some code in the wild has instead signatures of form 'void *ThreadMain()', which seems to be ok in native code.
+ // To emulate supporting both in test suites, use the following form. This is brittle!
+ if (typeof asm['dynCall_ii'] !== 'undefined') {
+ result = asm.dynCall_ii(e.data.start_routine, e.data.arg); // pthread entry points are always of signature 'void *ThreadMain(void *arg)'
+ } else {
+ result = asm.dynCall_i(e.data.start_routine); // as a hack, try signature 'i' as fallback.
+ }
+ } catch(e) {
+ if (e === 'Canceled!') {
+ PThread.threadCancel();
+ return;
+ } else {
+ Atomics.store(HEAPU32, (threadInfoStruct + 4 /*{{{ C_STRUCTS.pthread.threadExitCode }}}*/ ) >> 2, -2 /*A custom entry specific to Emscripten denoting that the thread crashed.*/);
+ Atomics.store(HEAPU32, (threadInfoStruct + 0 /*{{{ C_STRUCTS.pthread.threadStatus }}}*/ ) >> 2, 1); // Mark the thread as no longer running.
+ _emscripten_futex_wake(threadInfoStruct + 0 /*{{{ C_STRUCTS.pthread.threadStatus }}}*/, 0x7FFFFFFF/*INT_MAX*/); // wake all threads
+ throw e;
+ }
+ }
+ // The thread might have finished without calling pthread_exit(). If so, then perform the exit operation ourselves.
+ // (This is a no-op if explicit pthread_exit() had been called prior.)
+ if (!Module['noExitRuntime']) PThread.threadExit(result);
+ else console.log('pthread noExitRuntime: not quitting.');
+ } else if (e.data.cmd === 'cancel') { // Main thread is asking for a pthread_cancel() on this thread.
+ if (threadInfoStruct && PThread.thisThreadCancelState == 0/*PTHREAD_CANCEL_ENABLE*/) {
+ PThread.threadCancel();
+ }
+ } else {
+ Module['printErr']('pthread-main.js received unknown command ' + e.data.cmd);
+ }
+}