Skip to content

Instantly share code, notes, and snippets.

@carlopi
Last active April 14, 2021 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save carlopi/0f753ea9e43dfd054b31cc86cf9d4b99 to your computer and use it in GitHub Desktop.
Save carlopi/0f753ea9e43dfd054b31cc86cf9d4b99 to your computer and use it in GitHub Desktop.
binaryheap.cpp compiled with Cheerp
wat2wasm cheerp_wasm.wat > cheerp_wasm.wasm
/path/to/d8 --module --harmony-top-level-await bench_cheerp.js
import { benchmark } from "./bench.js";
//import { init, push, pop, size } from "./cheerp_js.js";
//import { init, push, pop, size } from "./cheerp_asmjs.js";
import { init, push, pop, size } from "./cheerp_wasm.js";
async function promiseResolve()
{
const results = await benchmark({
async before() {
init();
},
async run() {
for (let i = 0; i<100000; i++) {
push(Math.random());
}
let last = Number.NEGATIVE_INFINITY;
while (size() > 0) {
const current = pop();
if (current < last) {
console.log(`current=${current}, last=${last}`);
throw Error(
`Invalid ordering! Left: ${size()}`
);
}
last = current;
}
},
numWarmup: 0,
});
console.log(results);
}
function promiseReject()
{
console.log("Reject");
}
init.promise.then(promiseResolve, promiseReject);
#include <optional>
#include <cstdint>
#include <utility>
#include <vector>
#include <cmath>
class BinaryHeap {
public:
BinaryHeap() : data() {}
void push(float v) {
this->data.push_back(v);
this->bubble_up(this->data.size() - 1);
}
float peek() { return this->data[0]; }
float pop() {
float result = this->data[0];
float end = this->data.back();
this->data.pop_back();
if (this->data.size() > 1) {
this->data[0] = end;
this->sink_down(0);
}
return result;
}
uint32_t size() { return this->data.size(); }
private:
std::vector<float> data;
void bubble_up(uint32_t n) {
float element = this->data[n];
while (n > 0) {
uint32_t parent_n =
static_cast<uint32_t>(floor((static_cast<float>(n) + 1) / 2 - 1));
float parent = this->data[parent_n];
if (element < parent) {
std::swap(this->data[parent_n], this->data[n]);
n = parent_n;
} else {
break;
}
}
}
void sink_down(uint32_t n) {
auto length = this->data.size();
float element = this->data[n];
while (true) {
uint32_t child2_n = (n + 1) * 2;
uint32_t child1_n = child2_n - 1;
std::optional<uint32_t> swap = {};
float child1, child2;
if (child1_n < length) {
child1 = this->data[child1_n];
if (child1 < element) {
swap = std::optional<uint32_t>(child1_n);
}
}
if (child2_n < length) {
child2 = this->data[child2_n];
if (child2 < (swap.has_value() ? child1 : element)) {
swap = std::optional<uint32_t>(child2_n);
}
}
if (swap.has_value()) {
auto swap_n = swap.value();
std::swap(this->data[n], this->data[swap_n]);
n = swap_n;
} else {
break;
}
}
}
};
thread_local BinaryHeap instance;
[[cheerp::jsexport]]
void init() { instance = BinaryHeap(); }
[[cheerp::jsexport]]
void push(float v) { instance.push(v); }
[[cheerp::jsexport]]
float pop() { return instance.pop(); }
[[cheerp::jsexport]]
int size() { return instance.size(); }
[[cheerp::jsexport]]
float peek() { return instance.peek(); }
"use strict";/*Compiled using Cheerp (R) by Leaning Technologies Ltd*/var aP=Math.imul;var aQ=Math.fround;var oSlot=0;var nullArray=[null];var nullObj={d:nullArray,o:0};function v(){if((y[z]&255)===0){y[z]=1;ab();}}function ac(){throw new Error("Abort called");}var y=[0];var z=0;function a$(bytes){var pages=(bytes+65535)>>16;try{__asm.bc.grow(pages);ba(__asm.bc.buffer);return pages<<16;}catch(e){return -1;}}function asmJS(stdlib, ffi, __heap){"use asm";var a=new stdlib.Uint8Array(__heap);var b=new stdlib.Uint16Array(__heap);var c=new stdlib.Int32Array(__heap);var e=new stdlib.Float32Array(__heap);var f=new stdlib.Float64Array(__heap);var a_=ffi.stackStart|0;var Infinity=stdlib.Infinity;var NaN=stdlib.NaN;var aZ=stdlib.Math.floor;var aP=stdlib.Math.imul;var aQ=stdlib.Math.fround;var bb=ffi.bb;var v=ffi.v;var ac=ffi.ac;var B=ffi.B;var A=ffi.A;var af=ffi.af;var a$=ffi.a$;function aE(){v();return aQ(e[(c[1050080>>2]|0)>>2]);}function ab(){c[1050080>>2]=0;c[1050084>>2]=0;c[1050088>>2]=0;}function aG(){v();return (c[1050084>>2]|0)-(c[1050080>>2]|0)>>2|0;}function aH(){var h=0,p=aQ(0.),n=aQ(0.),o=aQ(0.),j=0,l=0,g=0,k=0,m=aQ(0.);v();h=c[1050080>>2]|0;p=aQ(e[h>>2]);j=-4+(c[1050084>>2]|0)|0;n=aQ(e[j>>2]);c[1050084>>2]=j;j=j-h>>2;a:{if(j>>>0>1){e[h>>2]=n;l=0;while(1){g=l<<1;k=g+1|0;g=g+2|0;b:{if(k>>>0<j>>>0){m=aQ(e[(k<<2)+h>>2]);if(m<n){if(g>>>0>=j>>>0)break b;o=aQ(e[(g<<2)+h>>2]);k=o<m?g|0:k|0;break b;}}if(g>>>0>=j>>>0)break a;if(!(aQ(e[(g<<2)+h>>2])<n))break a;k=g;}g=(l<<2)+h|0;l=(k<<2)+h|0;m=aQ(e[g>>2]);e[g>>2]=e[l>>2];e[l>>2]=m;l=k;continue;}}}return aQ(p);}function aF(o){o=aQ(o);var m=0,n=aQ(0.),g=0,j=0,h=0,k=0,l=aQ(0.);v();g=c[1050084>>2]|0;if((g|0)==((c[1050088>>2]|0)|0)){g=g-(c[1050080>>2]|0)|0;j=g>>2;h=j+1|0;if(h>>>0>1073741823)N();a:{if(j>>>0<536870911){g=g>>1;g=g>>>0<h>>>0?h|0:g|0;if((g|0)==0){h=0|0;g=0;break a;}if(g>>>0>1073741823)ac();}else{g=1073741823;}h=G(g<<2)|0;}j=(j<<2)+h|0;g=(g<<2)+h|0;e[j>>2]=o;h=c[1050080>>2]|0;m=(c[1050084>>2]|0)-h|0;k=(0-(m>>2)<<2)+j|0;if((m|0)>0)aD(k|0,h|0,m|0)|0;h=c[1050080>>2]|0;c[1050080>>2]=k;c[1050084>>2]=(4+j|0);c[1050088>>2]=g;if((h|0)!=(0|0))D(h|0);}else{e[g>>2]=o;c[1050084>>2]=(4+g|0);}g=c[1050080>>2]|0;j=((c[1050084>>2]|0)-g>>2)-1|0;n=aQ(e[(j<<2)+g>>2]);if((j|0)!=0)while(1){l=aQ(aZ(aQ(aQ(aQ(aQ((j>>>0))+aQ(1.))*aQ(.5))+aQ(-1.))));h=~~l;k=(h<<2)+g|0;l=aQ(e[k>>2]);if(n<l){j=(j<<2)+g|0;e[k>>2]=e[j>>2];e[j>>2]=l;if((h|0)!=0){j=h;continue;}}break;}}function aD(m,l,k){m=m|0;l=l|0;k=k|0;var j=0,h=0,g=0;a:{b:{if(k>>>0<16){g=k;h=m|0;j=l|0;}else{if(((l|m)&3|0)!=0){j=l|0;h=m|0;g=k;break b;}j=l|0;h=m|0;g=k;while(1){c[h>>2]=c[j>>2];c[4+h>>2]=c[4+j>>2];c[8+h>>2]=c[8+j>>2];c[12+h>>2]=c[12+j>>2];g=g-16|0;h=16+h|0;j=16+j|0;if(g>>>0>15)continue;break;}if(g>>>0>3)while(1){c[h>>2]=c[j>>2];g=g-4|0;h=4+h|0;j=4+j|0;if(g>>>0>3)continue;break;}}if((g|0)==0)break a;}while(1){a[h>>0]=a[j>>0];g=g-1|0;if((g|0)!=0){j=1+j|0;h=1+h|0;continue;}break;}}return m|0;}function G(g){g=g|0;return (ae(g)|0)|0;}function ae(aB){aB=aB|0;var j=0,g=0,m=0,k=0,h=0,n=0,l=0,o=0,p=0;j=aB+11|0;j=j>>>0<23?16|0:j& -8|0;if((j|0)>=0)if(j>>>0>=aB>>>0){if(j>>>0<504){g=(j>>>2<<2)+1048848|0;m=c[12+g>>2]|0;if((m|0)==(g|0)){m=c[20+g>>2]|0;g=8+g|0;}if((m|0)!=(g|0)){g=c[4+m>>2]|0;j=c[12+m>>2]|0;h=c[8+m>>2]|0;c[12+h>>2]=j;c[8+j>>2]=h;c[(g& -4)+4+m>>2]=c[(g& -4)+4+m>>2]|1;return 8+m|0;}k=(j>>>3)+2|0;}else{if(j>>>0<512){p=63;}else if(j>>>0<2560){p=(j>>>6)+56|0;}else if(j>>>0<10752){p=(j>>>9)+91|0;}else if(j>>>0<43520){p=(j>>>12)+110|0;}else if(j>>>0<174592){p=(j>>>15)+119|0;}else if(j>>>0<698880){p=(j>>>18)+124|0;}else{p=126;}o=(p<<3)+1048848|0;g=c[12+o>>2]|0;if((g|0)!=(o|0))while(1){m=c[4+g>>2]& -4;k=m-j|0;if((k|0)>15){p=p-1|0;}else{h=c[12+g>>2]|0;if((k|0)>-1){k=c[8+g>>2]|0;c[12+k>>2]=h;c[8+h>>2]=k;c[m+4+g>>2]=c[m+4+g>>2]|1;return 8+g|0;}if((h|0)!=(o|0)){g=h;continue;}}break;}k=p+1|0;}h=c[1048864>>2]|0;if((h|0)!=(1048856|0)){g=c[4+h>>2]|0;n=g& -4;l=n-j|0;if((l|0)>15){k=j+h|0;c[4+h>>2]=j|1;c[1048868>>2]=k;c[1048864>>2]=k;c[12+k>>2]=(1048856|0);c[8+k>>2]=(1048856|0);c[4+k>>2]=l|1;c[n+h>>2]=l;return 8+h|0;}c[1048868>>2]=(1048856|0);c[1048864>>2]=(1048856|0);if((l|0)>-1){c[n+4+h>>2]=c[n+4+h>>2]|1;return 8+h|0;}if(n>>>0<512){c[1048852>>2]=c[1048852>>2]|1<<(g>>>5);n=(g>>>3<<3)+1048848|0;l=c[8+n>>2]|0;c[12+h>>2]=n;c[8+h>>2]=l;c[8+n>>2]=h;c[12+l>>2]=h;}else{if(g>>>0<2560){o=(g>>>6)+56|0;}else if(g>>>0<10752){o=(g>>>9)+91|0;}else if(g>>>0<43520){o=(g>>>12)+110|0;}else if(g>>>0<174592){o=(g>>>15)+119|0;}else if(g>>>0<698880){o=(g>>>18)+124|0;}else{o=126;}l=(o<<3)+1048848|0;g=c[8+l>>2]|0;if((g|0)==(l|0)){c[1048852>>2]=c[1048852>>2]|1<<(o>>>2);g=l;}else{while(1){if(n>>>0<(c[4+g>>2]& -4)>>>0){g=c[8+g>>2]|0;if((g|0)!=(l|0))continue;}else{l=g;}break;}g=c[12+l>>2]|0;}c[12+h>>2]=g;c[8+h>>2]=l;c[8+g>>2]=h;c[12+l>>2]=h;}}n=c[1048852>>2]|0;h=1<<((k|0)/4|0);if(h>>>0<=n>>>0){if((n&h|0)==0){k=k+4& -4;while(1){h=h<<1;if((h&n|0)==0){k=k+4|0;continue;}break;}}while(1){n=(k<<3)+1048848|0;l=n;o=k;while(1){g=c[12+l>>2]|0;if((g|0)!=(l|0))while(1){m=c[4+g>>2]& -4;p=m-j|0;if((p|0)>15){h=j+g|0;c[4+g>>2]=j|1;j=c[12+g>>2]|0;o=c[8+g>>2]|0;c[12+o>>2]=j;c[8+j>>2]=o;c[1048868>>2]=h;c[1048864>>2]=h;c[12+h>>2]=(1048856|0);c[8+h>>2]=(1048856|0);c[4+h>>2]=p|1;c[m+g>>2]=p;return 8+g|0;}if((p|0)>-1){c[m+4+g>>2]=c[m+4+g>>2]|1;m=c[12+g>>2]|0;p=c[8+g>>2]|0;c[12+p>>2]=m;c[8+m>>2]=p;return 8+g|0;}g=c[12+g>>2]|0;if((g|0)!=(l|0))continue;break;}o=o+1|0;if((o&3|0)!=0){l=8+l|0;continue;}break;}while(1){if((k&3|0)!=0){n=-8+n|0;if(((c[8+n>>2]|0)|0)==(n|0)){k=k-1|0;continue;}}else c[1048852>>2]=c[1048852>>2]&(h^ -1);break;}k=c[1048852>>2]|0;h=h<<1;if(h-1>>>0<k>>>0){if((h&k|0)!=0){k=o;}else{while(1){h=h<<1;o=o+4|0;if((h&k|0)==0)continue;break;}k=o;}continue;}break;}}m=c[4+(c[1048856>>2]|0)>>2]& -4;g=m-j|0;a:{if(m>>>0>=j>>>0)if((g|0)>=16)break a;ad(j);m=c[4+(c[1048856>>2]|0)>>2]& -4;g=m-j|0;if(m>>>0<j>>>0){return 0|0;}if((g|0)<16){return 0|0;}}m=c[1048856>>2]|0;c[4+m>>2]=j|1;j=j+m|0;c[1048856>>2]=j;c[4+j>>2]=g|1;return 8+m|0;}F();return 0|0;}function ad(o){o=o|0;var n=0,k=0,j=0,g=0,l=0,h=0,m=0;k=c[1048856>>2]|0;j=c[4+k>>2]& -4;g=j+k|0;if(((c[262470]|0)|0)==( -1|0)){l=o+16|0;}else{l=o+4111& -4096;}h=t(l)|0;a:{if((h|0)!=( -1|0)){m=(h|0)>=(g|0);n=(k|0)==(1048848|0);if(!(n))if(!(m))break a;m=(c[262526]|0)+l|0;c[262526]=m;b:{if((h|0)==(g|0))if((g&4095|0)==0){c[4+(c[1048856>>2]|0)>>2]=l+j|1;break b;}if(((c[262470]|0)|0)==( -1|0))c[262470]=h;else c[262526]=(h-g|0)+m;g=8+h&7;if((g|0)!=0){g=8-g|0;h=g+h|0;}else{g=0;}g=(4096-(l+h&4095)|0)+g|0;l=t(g)|0;m=(l|0)==( -1|0);g=m?0|0:g|0;c[262526]=g+(c[262526]|0);c[1048856>>2]=(h|0);c[4+h>>2]=(((m?h:l)|0)-h|0)+g|1;if(!(n)){if(j>>>0<16){c[4+(c[1048856>>2]|0)>>2]=1;break a;}j=j-12& -8;c[4+k>>2]=c[4+k>>2]&1|j;c[j+4+k>>2]=5;c[j+8+k>>2]=5;if(j>>>0>15)C(8+k|0);}}k=c[262526]|0;if(k>>>0>c[262525]>>>0)c[262525]=k;if(k>>>0>c[262524]>>>0)c[262524]=k;}}}function C(m){m=m|0;var n=0,h=0,j=0,g=0,l=0,k=0;if((m|0)!=(0|0))if(((c[262471]|0)|0)<=((m|0)|0)){h=-8+m|0;j=c[4+h>>2]|0;g=j& -2;l=g+h|0;k=c[4+l>>2]& -4;if(((c[1048856>>2]|0)|0)==(l|0)){g=k+g|0;if((j&1|0)==0){j=c[h>>2]|0;h=(0-j|0)+h|0;l=c[12+h>>2]|0;k=c[8+h>>2]|0;c[12+k>>2]=l;c[8+l>>2]=k;g=j+g|0;}c[4+h>>2]=g|1;c[1048856>>2]=h;if(g>>>0>131071)Z(0);}else{c[4+l>>2]=k;if((j&1|0)!=0){j=0;}else{j=c[h>>2]|0;h=(0-j|0)+h|0;g=j+g|0;j=c[8+h>>2]|0;if((j|0)==(1048856|0)){j=1;}else{n=c[12+h>>2]|0;c[12+j>>2]=n;c[8+n>>2]=j;j=0;}}a:{if((c[k+4+l>>2]&1|0)==0){g=g+k|0;if((j|0)==0)if(((c[8+l>>2]|0)|0)==(1048856|0)){c[1048868>>2]=h;c[1048864>>2]=h;c[12+h>>2]=(1048856|0);c[8+h>>2]=(1048856|0);j=1;break a;}k=c[12+l>>2]|0;l=c[8+l>>2]|0;c[12+l>>2]=k;c[8+k>>2]=l;}}c[4+h>>2]=g|1;c[g+h>>2]=g;if((j|0)==0)if(g>>>0<512){c[1048852>>2]=c[1048852>>2]|1<<(g>>>5);g=(g>>>3<<3)+1048848|0;j=c[8+g>>2]|0;c[12+h>>2]=g;c[8+h>>2]=j;c[8+g>>2]=h;c[12+j>>2]=h;}else{if(g>>>0<2560){j=(g>>>6)+56|0;}else if(g>>>0<10752){j=(g>>>9)+91|0;}else if(g>>>0<43520){j=(g>>>12)+110|0;}else if(g>>>0<174592){j=(g>>>15)+119|0;}else if(g>>>0<698880){j=(g>>>18)+124|0;}else{j=126;}l=(j<<3)+1048848|0;k=c[8+l>>2]|0;if((k|0)==(l|0)){c[1048852>>2]=c[1048852>>2]|1<<(j>>>2);k=l;}else{while(1){if(g>>>0<(c[4+k>>2]& -4)>>>0){k=c[8+k>>2]|0;if((k|0)!=(l|0))continue;}else{l=k;}break;}k=c[12+l>>2]|0;}c[12+h>>2]=k;c[8+h>>2]=l;c[8+k>>2]=h;c[12+l>>2]=h;}}}}function Z(k){k=k|0;var h=0,g=0,j=0;h=c[4+(c[1048856>>2]|0)>>2]& -4;g=( -17-k|0)+h& -4096;if((g|0)>=4096){j=t(0)|0;if((j|0)==(h+(c[1048856>>2]|0)|0))if(((t(0-g|0)|0)|0)==( -1|0)){h=t(0)|0;j=c[1048856>>2]|0;h=h;g=h-j|0;if((g|0)>15){c[262526]=h-(c[262470]|0);c[4+j>>2]=g|1;}}else{c[4+(c[1048856>>2]|0)>>2]=h-g|1;c[262526]=(c[262526]|0)-g;}}}function t(g){g=g|0;var j=0,h=0;if(((c[262523]|0)|0)==(0|0))c[262523]=(c[262471]|0);if((g|0)!=0){j=c[262523]|0;if(((g+j|0)|0)>=((c[262472]|0)|0)){h=a$(g|0)|0;if((h|0)==-1){F();return -1|0;}c[262472]=(h+(c[262472]|0)|0);}c[262523]=(g+(c[262523]|0)|0);return j|0;}return (c[262472]|0)|0;}function D(g){g=g|0;C(g|0);}function F(){}function N(){Q();}function Q(){var g=0;g=B()|0;P(g|0);A();}function R(){var g=0,h=0;if(0){g=1049905|0;}else{g=1049905|0;while(1){if((g|0)==(1049911|0))return (1049911|0)-1049905|0;g=1+g|0;if((g&3|0)!=0)continue;break;}}h=c[g>>2]|0;if(((h& -2139062144^ -2139062144)&h-16843009|0)==0)while(1){g=4+g|0;h=c[g>>2]|0;if(((h& -2139062144^ -2139062144)&h-16843009|0)==0)continue;break;}if((a[g>>0]|0)==0)return (g|0)-1049905|0;while(1){g=1+g|0;if((a[g>>0]|0)!=0)continue;break;}return g-1049905|0;}function S(l,k,j,h){l=l|0;k=k|0;j=j|0;h=h|0;var g=0;if((l|0)==((c[8+k>>2]|0)|0)){g=c[24+k>>2]|0;if((g|0)!=0){if((g|0)==(j|0)){if((c[32+k>>2]|0)==2)c[32+k>>2]=h;}else{c[44+k>>2]=(c[44+k>>2]|0)+1;c[32+k>>2]=2;a[62+k>>0]=1;}}else{c[24+k>>2]=j;c[32+k>>2]=h;c[44+k>>2]=1;}}else{g=c[8+l>>2]|0;aK[(c[36+(c[g>>2]|0)>>2]|0)&1](g|0,k|0,j,h);}}function T(n,m,l,k,j){n=n|0;m=m|0;l=l|0;k=k|0;j=j|0;var h=0,g=0;g=c[8+m>>2]|0;a:{b:{c:{if(j){h=c[4+n>>2]|0;if((s(h|0,(c[4+g>>2]|0)|0)|0|0)==0)break b;if((s(h|0,(c[4+(c[m>>2]|0)>>2]|0)|0)|0|0)!=0)break c;}else{if((n|0)==(g|0))break b;if((n|0)!=((c[m>>2]|0)|0))break c;}if((c[24+m>>2]|0)!=(l|0))if((c[28+m>>2]|0)!=(l|0)){c[40+m>>2]=k;if((c[52+m>>2]|0)!=4){b[60+m>>1]=0;g=c[8+n>>2]|0;aM[(c[28+(c[g>>2]|0)>>2]|0)&1](g|0,m|0,l,l,1,j);if((a[61+m>>0]|0)!=0){g=a[60+m>>0]|0;c[52+m>>2]=3;if((g|0)!=0)break a;}else c[52+m>>2]=4;}c[28+m>>2]=l;c[48+m>>2]=(c[48+m>>2]|0)+1;if((c[44+m>>2]|0)!=1)break a;if((c[32+m>>2]|0)!=2)break a;a[62+m>>0]=1;break a;}if((k|0)!=1)break a;c[40+m>>2]=1;break a;}g=c[8+n>>2]|0;aL[(c[32+(c[g>>2]|0)>>2]|0)&1](g|0,m|0,l,k,j);break a;}if((c[4+m>>2]|0)==(l|0))if((c[36+m>>2]|0)!=1)c[36+m>>2]=k;}}function s(l,k){l=l|0;k=k|0;var h=0,j=0,g=0;if(((k|l)&3|0)!=0){j=l|0;h=k|0;}else{g=c[l>>2]|0;if((g|0)==(c[k>>2]|0)){h=k|0;j=l|0;while(1){if(((g& -2139062144^ -2139062144)&g-16843009|0)!=0)return 0|0;j=4+j|0;g=c[j>>2]|0;h=4+h|0;if((g|0)==(c[h>>2]|0))continue;break;}}else{h=k|0;j=l|0;}}g=a[j>>0]|0;if((g|0)!=0)while(1){if((g|0)==(a[h>>0]|0)){g=a[1+j>>0]|0;h=1+h|0;if((g|0)!=0){j=1+j|0;continue;}g=0;}break;}else{g=0;}return (g&255)-(a[h>>0]&255)|0;}function U(n,m,l,k,j,h){n=n|0;m=m|0;l=l|0;k=k|0;j=j|0;h=h|0;var g=0;g=c[8+m>>2]|0;a:{b:{if(h){if((s((c[4+n>>2]|0)|0,(c[4+g>>2]|0)|0)|0|0)!=0)break b;}else if((n|0)!=(g|0))break b;a[61+m>>0]=1;if((c[4+m>>2]|0)!=(k|0))break a;a[60+m>>0]=1;g=c[24+m>>2]|0;if((g|0)!=0){if((g|0)==(l|0)){if((c[32+m>>2]|0)==2)c[32+m>>2]=j;if((c[56+m>>2]|0)!=1)break a;if((c[32+m>>2]|0)!=1)break a;a[62+m>>0]=1;break a;}c[44+m>>2]=(c[44+m>>2]|0)+1;a[62+m>>0]=1;break a;}c[24+m>>2]=l;c[32+m>>2]=j;c[44+m>>2]=1;if((j^1|(c[56+m>>2]|0)^1|0)!=0)break a;a[62+m>>0]=1;break a;}g=c[8+n>>2]|0;aM[(c[28+(c[g>>2]|0)>>2]|0)&1](g|0,m|0,l,k,j,h);}}function q(g){g=g|0;return 0;}function aC(){}function V(l,k,j,h){l=l|0;k=k|0;j=j|0;h=h|0;var g=0;if((l|0)==((c[8+k>>2]|0)|0)){g=c[24+k>>2]|0;if((g|0)!=0){if((g|0)==(j|0)){if((c[32+k>>2]|0)==2)c[32+k>>2]=h;}else{c[44+k>>2]=(c[44+k>>2]|0)+1;c[32+k>>2]=2;a[62+k>>0]=1;}}else{c[24+k>>2]=j;c[32+k>>2]=h;c[44+k>>2]=1;}}}function W(m,l,k,j,h){m=m|0;l=l|0;k=k|0;j=j|0;h=h|0;var n=0,g=0;n=c[8+l>>2]|0;a:{b:{if(h){g=c[4+m>>2]|0;if((s(g|0,(c[4+n>>2]|0)|0)|0|0)==0)break b;if((s(g|0,(c[4+(c[l>>2]|0)>>2]|0)|0)|0|0)!=0)break a;}else{if((m|0)==(n|0))break b;if((m|0)!=((c[l>>2]|0)|0))break a;}if((c[24+l>>2]|0)!=(k|0))if((c[28+l>>2]|0)!=(k|0)){c[40+l>>2]=j;c[28+l>>2]=k;c[48+l>>2]=(c[48+l>>2]|0)+1;if((c[44+l>>2]|0)==1)if((c[32+l>>2]|0)==2)a[62+l>>0]=1;c[52+l>>2]=4;break a;}if((j|0)!=1)break a;c[40+l>>2]=1;break a;}if((c[4+l>>2]|0)==(k|0))if((c[36+l>>2]|0)!=1)c[36+l>>2]=j;}}function X(n,m,l,k,j,h){n=n|0;m=m|0;l=l|0;k=k|0;j=j|0;h=h|0;var g=0;g=c[8+m>>2]|0;a:{if(h){if((s((c[4+n>>2]|0)|0,(c[4+g>>2]|0)|0)|0|0)!=0)break a;}else if((n|0)!=(g|0))break a;a[61+m>>0]=1;if((c[4+m>>2]|0)==(k|0)){a[60+m>>0]=1;g=c[24+m>>2]|0;if((g|0)!=0){if((g|0)==(l|0)){if((c[32+m>>2]|0)==2)c[32+m>>2]=j;if((c[56+m>>2]|0)==1)if((c[32+m>>2]|0)==1)a[62+m>>0]=1;}else{c[44+m>>2]=(c[44+m>>2]|0)+1;a[62+m>>0]=1;}}else{c[24+m>>2]=l;c[32+m>>2]=j;c[44+m>>2]=1;if((j^1|(c[56+m>>2]|0)^1|0)==0)a[62+m>>0]=1;}}}}function $(j,h,g){j=j|0;h=h|0;g=g|0;return 0;}function P(j){j=j|0;var h=0,g=0;c[j>>2]=(1048664|0);h=R()|0;g=h+13|0;g=G((g|0)!=0?g|0:1|0)|0;if((g|0)!=(0|0)){c[g>>2]=h;c[4+g>>2]=h;c[8+g>>2]=0;g=12+g|0;aD(g|0,1049905|0,h+1|0|0)|0;c[4+j>>2]=g;c[j>>2]=(1048600|0);return;}h=af()|0;h=B()|0;c[h>>2]=(1048624|0);A();}function aI(){var g=0;v();g=c[1050080>>2]|0;if((g|0)!=(0|0)){c[1050084>>2]=g;D(g|0);c[1050088>>2]=0;c[1050084>>2]=0;c[1050080>>2]=0;}c[1050080>>2]=0;c[1050084>>2]=0;c[1050088>>2]=0;}var aJ=[aC];var aK=[V,S];var aL=[W,T];var aM=[X,U];var aN=[$];var aO=[q];return {aI:aI,aF:aF,aH:aH,aG:aG,aE:aE,ab:ab,D:D,};};function bb(){throw new Error('this should be unreachable');};var __heap = new ArrayBuffer(268435456);var a=null,b=null,c=null,e=null;ba(__heap);var ffi = {heapSize:__heap.byteLength,stackStart:1048576,bb:bb,v:v,ac:ac,B:bb,A:bb,af:bb,a$:a$,};var stdlib = {Math:Math,Infinity:Infinity,NaN:NaN,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Float32Array:Float32Array,Float64Array:Float64Array,};a.set([152,0,16,0,173,5,16,0,224,0,16,0],1048584);a.set([0,0,0,0,112,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0],1048600);a.set([0,0,0,0,72,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0],1048624);a.set([152,0,16,0,56,5,16,0,144,0,16,0],1048648);a.set([0,0,0,0,128,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0],1048664);a.set([152,0,16,0,85,5,16,0,128,0,16,0],1048688);a.set([152,0,16,0,69,5,16,0,144,0,16,0],1048704);a.set([232,0,16,0,36,5,16,0],1048720);a.set([0,0,0,0,192,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,1,0,3,0,1,0,4,0,1,0,5,0],1048728);a.set([152,0,16,0,102,5,16,0,208,0,16,0],1048768);a.set([152,0,16,0,139,5,16,0,8,0,16,0],1048784);a.set([232,0,16,0,206,5,16,0],1048800);a.set([0,0,0,0,208,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0],1048808);a.set([0,0,0,0,0,0,0,0,16,1,16,0,16,1,16,0,24,1,16,0,24,1,16,0,32,1,16,0,32,1,16,0,40,1,16,0,40,1,16,0,48,1,16,0,48,1,16,0,56,1,16,0,56,1,16,0,64,1,16,0,64,1,16,0,72,1,16,0,72,1,16,0,80,1,16,0,80,1,16,0,88,1,16,0,88,1,16,0,96,1,16,0,96,1,16,0,104,1,16,0,104,1,16,0,112,1,16,0,112,1,16,0,120,1,16,0,120,1,16,0,128,1,16,0,128,1,16,0,136,1,16,0,136,1,16,0,144,1,16,0,144,1,16,0,152,1,16,0,152,1,16,0,160,1,16,0,160,1,16,0,168,1,16,0,168,1,16,0,176,1,16,0,176,1,16,0,184,1,16,0,184,1,16,0,192,1,16,0,192,1,16,0,200,1,16,0,200,1,16,0,208,1,16,0,208,1,16,0,216,1,16,0,216,1,16,0,224,1,16,0,224,1,16,0,232,1,16,0,232,1,16,0,240,1,16,0,240,1,16,0,248,1,16,0,248,1,16,0,0,2,16,0,0,2,16,0,8,2,16,0,8,2,16,0,16,2,16,0,16,2,16,0,24,2,16,0,24,2,16,0,32,2,16,0,32,2,16,0,40,2,16,0,40,2,16,0,48,2,16,0,48,2,16,0,56,2,16,0,56,2,16,0,64,2,16,0,64,2,16,0,72,2,16,0,72,2,16,0,80,2,16,0,80,2,16,0,88,2,16,0,88,2,16,0,96,2,16,0,96,2,16,0,104,2,16,0,104,2,16,0,112,2,16,0,112,2,16,0,120,2,16,0,120,2,16,0,128,2,16,0,128,2,16,0,136,2,16,0,136,2,16,0,144,2,16,0,144,2,16,0,152,2,16,0,152,2,16,0,160,2,16,0,160,2,16,0,168,2,16,0,168,2,16,0,176,2,16,0,176,2,16,0,184,2,16,0,184,2,16,0,192,2,16,0,192,2,16,0,200,2,16,0,200,2,16,0,208,2,16,0,208,2,16,0,216,2,16,0,216,2,16,0,224,2,16,0,224,2,16,0,232,2,16,0,232,2,16,0,240,2,16,0,240,2,16,0,248,2,16,0,248,2,16,0,0,3,16,0,0,3,16,0,8,3,16,0,8,3,16,0,16,3,16,0,16,3,16,0,24,3,16,0,24,3,16,0,32,3,16,0,32,3,16,0,40,3,16,0,40,3,16,0,48,3,16,0,48,3,16,0,56,3,16,0,56,3,16,0,64,3,16,0,64,3,16,0,72,3,16,0,72,3,16,0,80,3,16,0,80,3,16,0,88,3,16,0,88,3,16,0,96,3,16,0,96,3,16,0,104,3,16,0,104,3,16,0,112,3,16,0,112,3,16,0,120,3,16,0,120,3,16,0,128,3,16,0,128,3,16,0,136,3,16,0,136,3,16,0,144,3,16,0,144,3,16,0,152,3,16,0,152,3,16,0,160,3,16,0,160,3,16,0,168,3,16,0,168,3,16,0,176,3,16,0,176,3,16,0,184,3,16,0,184,3,16,0,192,3,16,0,192,3,16,0,200,3,16,0,200,3,16,0,208,3,16,0,208,3,16,0,216,3,16,0,216,3,16,0,224,3,16,0,224,3,16,0,232,3,16,0,232,3,16,0,240,3,16,0,240,3,16,0,248,3,16,0,248,3,16,0,0,4,16,0,0,4,16,0,8,4,16,0,8,4,16,0,16,4,16,0,16,4,16,0,24,4,16,0,24,4,16,0,32,4,16,0,32,4,16,0,40,4,16,0,40,4,16,0,48,4,16,0,48,4,16,0,56,4,16,0,56,4,16,0,64,4,16,0,64,4,16,0,72,4,16,0,72,4,16,0,80,4,16,0,80,4,16,0,88,4,16,0,88,4,16,0,96,4,16,0,96,4,16,0,104,4,16,0,104,4,16,0,112,4,16,0,112,4,16,0,120,4,16,0,120,4,16,0,128,4,16,0,128,4,16,0,136,4,16,0,136,4,16,0,144,4,16,0,144,4,16,0,152,4,16,0,152,4,16,0,160,4,16,0,160,4,16,0,168,4,16,0,168,4,16,0,176,4,16,0,176,4,16,0,184,4,16,0,184,4,16,0,192,4,16,0,192,4,16,0,200,4,16,0,200,4,16,0,208,4,16,0,208,4,16,0,216,4,16,0,216,4,16,0,224,4,16,0,224,4,16,0,232,4,16,0,232,4,16,0,240,4,16,0,240,4,16,0,248,4,16,0,248,4,16,0,0,5,16,0,0,5,16,0,8,5,16,0,8,5,16,0],1048848);a.set([255,255,255,255],1049880);a.set([0,6,16,0],1049884);a.set([0,0,0,16],1049888);a.set([83,116,57,101,120,99,101,112,116,105,111,110,0],1049892);a.set([118,101,99,116,111,114,0],1049905);a.set([83,116,57,98,97,100,95,97,108,108,111,99,0],1049912);a.set([83,116,49,49,108,111,103,105,99,95,101,114,114,111,114,0],1049925);a.set([83,116,49,50,108,101,110,103,116,104,95,101,114,114,111,114,0],1049941);a.set([78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0],1049958);a.set([78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0],1049995);a.set([78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0],1050029);a.set([83,116,57,116,121,112,101,95,105,110,102,111,0],1050062);var __asm=asmJS(stdlib, ffi, __heap);var aI=__asm.aI;var aF=__asm.aF;var aH=__asm.aH;var aG=__asm.aG;var aE=__asm.aE;var ab=__asm.ab;var D=__asm.D;var init=aI;var peek=aE;var pop=aH;var push=aF;var size=aG;init.promise=peek.promise=pop.promise=push.promise=size.promise=Promise.resolve();function ba(g){a=new Uint8Array(g);b=new Uint16Array(g);c=new Int32Array(g);e=new Float32Array(g);}
export {init, push, pop, size};
"use strict";/*Compiled using Cheerp (R) by Leaning Technologies Ltd*/var aS=Math.imul;var aT=Math.fround;var oSlot=0;var nullArray=[null];var nullObj={d:nullArray,o:0};function aN(){var a=null,b=0;if((l[m]&255)===0){l[m]=1;e.a0=nullArray;e.a0o=0;e.a1=nullArray;e.a1o=0;e.a2.a0=nullArray;e.a2.a0o=0;}b=e.a0o;a=e.a0;return +a[b];}function aO(){var c=null,d=0,a=null,b=0;if((l[m]&255)===0){l[m]=1;e.a0=nullArray;e.a0o=0;e.a1=nullArray;e.a1o=0;e.a2.a0=nullArray;e.a2.a0o=0;}d=e.a1o;c=e.a1;b=e.a0o;a=e.a0;return (aS(d,4))-(aS(b,4))>>2|0;}function aP(){var c=null,d=0,aA=-0.,A=null,B=0,n=-0.,h=0,o=0,s=-0.,a=0,f=0,j=-0.;if((l[m]&255)===0){l[m]=1;e.a0=nullArray;e.a0o=0;e.a1=nullArray;e.a1o=0;e.a2.a0=nullArray;e.a2.a0o=0;}d=e.a0o;c=e.a0;aA=+c[d];B=e.a1o;A=e.a1;n=+A[B+ -1|0];e.a1=A;e.a1o=B+ -1|0;h=(aS(B+ -1|0,4))-(aS(d,4))>>2;a:if(h>>>0>1){c[d]=n;o=0;while(1){a=o<<1;f=a+1|0;a=a+2|0;b:{if(f>>>0<h>>>0){j=+c[d+f|0];if(j<n){if(a>>>0>=h>>>0)break b;s=+c[d+a|0];f=s<j?a|0:f|0;break b;}}if(a>>>0>=h>>>0)break a;if(!( +c[d+a|0]<n))break a;f=a;}j=+c[d+o|0];c[d+o|0]=+c[d+f|0];c[d+f|0]=j;o=f;continue;}}return aA;}function aQ(a){if((l[m]&255)===0){l[m]=1;e.a0=nullArray;e.a0o=0;e.a1=nullArray;e.a1o=0;e.a2.a0=nullArray;e.a2.a0o=0;}ai(a);}function ai(n){var s=null,t=0,o=-0.,h=0,j=null,k=0,a=null,b=0,c=0,f=-0.;j=[aT(0.)];j[0]=n;b=e.a1o;a=e.a1;t=e.a2.a0o;s=e.a2.a0;if(a===s&&b===t)ah(j,0);else{a[b]=n;e.a1=a;e.a1o=b+1|0;}k=e.a1o;j=e.a1;b=e.a0o;a=e.a0;c=((aS(k,4))-(aS(b,4))>>2)-1|0;o=+a[b+c|0];if((c|0)!==0)while(1){f=+Math.floor(aT(aT(aT(aT((c>>>0))+aT(1))*aT(.5))+aT(-1)));h=~~f;f=+a[b+h|0];if(o<f){a[b+h|0]=+a[b+c|0];a[b+c|0]=f;if((h|0)!==0){c=h;continue;}}break;}}function ah(o,p){var f=null,n=0,j=0,h=null,i=0,c=null,d=0,a=0;f={a0:null,a1:nullArray,a1o:0,a2:nullArray,a2o:0,a3:{a0:nullArray,a0o:0,a1:f={a0:null}}};i=e.a1o;h=e.a1;d=e.a0o;c=e.a0;a=(aS(d,4));n=(aS(i,4))-a>>2;j=n+1|0;if(j>>>0>1073741823)F();i=e.a2.a0o;h=e.a2.a0;a=(aS(i,4))-a|0;if(a>>2>>>0<536870911){a>>=1;a=a>>>0<j>>>0?j|0:a|0;}else{a=1073741823;}h=f.a3;h.a0=nullArray;h.a0o=0;h.a1.a0=e.a2;if((a|0)!==0){if(a>>>0>1073741823)G();c=new Float32Array((a<<2)/4|0);}else{c=nullArray;}f.a0=c[0];f.a1=c;f.a1o=0+n|0;h.a0=c;h.a0o=0+a|0;c[n]=+o[p];f.a2=c;f.a2o=(0+n|0)+1|0;ad(f);i=f.a1o;h=f.a1;d=f.a2o;c=f.a2;if(c!==h||d!==i){f.a2=c;f.a2o=d+(((aS(d,4))-(aS(i,4))|0)-4>>>2^ -1)|0;}}function ad(s){var o=0,n=0,h=null,i=0,a=null,b=0,c=0,f=0,j=null,k=0;i=e.a0o;h=e.a0;b=e.a1o;a=e.a1;c=(aS(b,4))-(aS(i,4))|0;b=s.a1o;a=s.a1;o=-(c>>2)|0;s.a1=a;s.a1o=b+o|0;if((c|0)>0){c>>>=2;if((c|0)!==0){f=o;n=0;while(1){a[b+f|0]=+h[i+n|0];f=f+1|0;if(a!==a||((b+o|0)+c|0)!==(b+f|0)){n=n+1|0;continue;}break;}}}i=e.a0o;h=e.a0;b=s.a1o;a=s.a1;e.a0=a;e.a0o=b;s.a1=h;s.a1o=i;b=e.a1o;a=e.a1;k=s.a2o;j=s.a2;e.a1=j;e.a1o=k;s.a2=a;s.a2o=b;b=e.a2.a0o;a=e.a2.a0;k=s.a3.a0o;j=s.a3.a0;e.a2.a0=j;e.a2.a0o=k;s.a3.a0=a;s.a3.a0o=b;s.a0=h[i];}function G(){throw new Error("Abort called");}function F(){P();}function P(){var a=null;a=O();N(a);M();}function x(a){var c=null,d=0;a.a0=r;d=a.a1.a0o;c=a.a1.a0;c[d+ -12|0].i2=(c[d+ -12|0].i2|0)-1|0;}function J(a){var c=null,d=0;d=a.a1.a0o;c=a.a1.a0;return c[d];}function K(a){var c=null,d=0;a.a0=r;d=a.a1.a0o;c=a.a1.a0;c[d+ -12|0].i2=(c[d+ -12|0].i2|0)-1|0;}function L(a){var c=null,d=0;a.a0=r;d=a.a1.a0o;c=a.a1.a0;c[d+ -12|0].i2=(c[d+ -12|0].i2|0)-1|0;}function R(n,j,h,f){var c=0,a=null;if(n===j.a2){c=j.i6|0;if((c|0)!==0){if((c|0)===(h|0)){if((j.i8|0)===2)j.i8=f;}else{j.i11=(j.i11|0)+1|0;j.i8=2;j.i15=j.i15&65535|65536;}}else{j.i6=h;j.i8=f;j.i11=1;}}else{a=n.a2;a.a0.a8(a,j,h,f);}}function S(s,o,n,j,h){var f=null,c=0,a=null;a=o.a2;a:{b:{c:{if(h){f=s.a1;a=a.a1;if((q(f,0,a,0)|0|0)===0)break b;a=o.a0;a=a.a1;if((q(f,0,a,0)|0|0)!==0)break c;}else{if(s===a)break b;if(s!==o.a0)break c;}if((o.i6|0)!==(n|0))if((o.i7|0)!==(n|0)){o.i10=j;if((o.i13|0)!==4){o.i15=o.i15&16711680;a=s.a2;a.a0.a6(a,o,n,n,1,h);c=o.i15|0;if((c&65280&16777215)!==0){o.i13=3;if((c&255)!==0)break a;}else o.i13=4;}o.i7=n;o.i12=(o.i12|0)+1|0;if((o.i11|0)!==1)break a;if((o.i8|0)!==2)break a;o.i15=o.i15&65535|65536;break a;}if((j|0)!==1)break a;o.i10=1;break a;}a=s.a2;a.a0.a7(a,o,n,j,h);break a;}if((o.i1|0)===(n|0))if((o.i9|0)!==1)o.i9=j;}}function q(f,g,c,d){var a=0,j=0,h=0;a=f[g]|0;if((a&255)!==0){h=0;j=0;while(1){if((a&255)===(c[d+h|0]&255)){j=j+1|0;a=f[g+j|0]|0;h=h+1|0;if((a&255)!==0)continue;a=0;}break;}}else{a=0;h=0;}return (a&255)-(c[d+h|0]&255)|0;}function T(s,o,n,j,h,f){var A=null,c=null,a=0;c=o.a2;a:{b:{if(f){A=s.a1;c=c.a1;if((q(A,0,c,0)|0|0)!==0)break b;}else if(s!==c)break b;a=o.i15&16711935|256;o.i15=a;if((o.i1|0)!==(j|0))break a;o.i15=a&16711936|1;a=o.i6|0;if((a|0)!==0){if((a|0)===(n|0)){if((o.i8|0)===2)o.i8=h;if((o.i14|0)!==1)break a;if((o.i8|0)!==1)break a;o.i15=65793;break a;}o.i11=(o.i11|0)+1|0;o.i15=65793;break a;}o.i6=n;o.i8=h;o.i11=1;if((h^1|(o.i14|0)^1|0)!==0)break a;o.i15=65793;break a;}c=s.a2;c.a0.a6(c,o,n,j,h,f);}}function U(a){}function V(a){}function al(j,h,f,c){var a=0;if(j===h.a2){a=h.i6|0;if((a|0)!==0){if((a|0)===(f|0)){if((h.i8|0)===2)h.i8=c;}else{h.i11=(h.i11|0)+1|0;h.i8=2;h.i15=h.i15&65535|65536;}}else{h.i6=f;h.i8=c;h.i11=1;}}}function am(o,n,j,h,f){var c=null,a=null;a=n.a2;a:{b:{if(f){c=o.a1;a=a.a1;if((q(c,0,a,0)|0|0)===0)break b;a=n.a0;a=a.a1;if((q(c,0,a,0)|0|0)!==0)break a;}else{if(o===a)break b;if(o!==n.a0)break a;}if((n.i6|0)!==(j|0))if((n.i7|0)!==(j|0)){n.i10=h;n.i7=j;n.i12=(n.i12|0)+1|0;if((n.i11|0)===1)if((n.i8|0)===2)n.i15=n.i15&65535|65536;n.i13=4;break a;}if((h|0)!==1)break a;n.i10=1;break a;}if((n.i1|0)===(j|0))if((n.i9|0)!==1)n.i9=h;}}function W(s,o,n,j,h,f){var A=null,c=null,a=0;c=o.a2;a:{if(f){A=s.a1;c=c.a1;if((q(A,0,c,0)|0|0)!==0)break a;}else if(s!==c)break a;a=o.i15&16711935|256;o.i15=a;if((o.i1|0)===(j|0)){o.i15=a&16711936|1;a=o.i6|0;if((a|0)!==0){if((a|0)===(n|0)){if((o.i8|0)===2)o.i8=h;if((o.i14|0)===1)if((o.i8|0)===1)o.i15=65793;}else{o.i11=(o.i11|0)+1|0;o.i15=65793;}}else{o.i6=n;o.i8=h;o.i11=1;if((h^1|(o.i14|0)^1|0)===0)o.i15=65793;}}}}function X(n,j,h,i){var a=null,c=null,f=0;if(n===j)return 1|0;if(j!==null){c=j.a0;f=j.o|0;f=ak(f,c.a0)|0;if((f|0)===-2147483648)return 0|0;if((f|0)!==0)c=j.a[j.o-f];else{c=j;}if(c!==null){a=new aC();a.a0=c;a.i1=0;a.a2=n;a.i3=0;a.a4=n;a.i5=-1;a.i6=0;a.i7=0;a.i8=0;a.i9=0;a.i10=0;a.i11=0;a.i12=0;a.i13=0;a.i15=0;a.i14=1;c.a0.a8(c,a,h[i]|0,1);f=a.i8|0;if((f|0)===1)h[i]=a.i6|0;return ((f|0)===1?1:0)|0;}return 0|0;}return 0|0;}function ak(j,h){var a=null,f=0,c=0;a=new aC();a.a0=w;f=j+1|0;a.i1=f;a.a2=z;a.i3=1;a.a4=h;a.i5=0;a.i6=0;a.i7=0;a.i8=0;a.i9=0;a.i10=0;a.i11=0;a.i12=0;a.i13=0;a.i14=0;a.i15=0;a:if(h===w){a.i14=1;h.a0.a6(h,a,1,1,1,0);if((a.i8|0)===1)return j|0;}else{h.a0.a7(h,a,1,1,0);c=a.i11|0;if((c|0)!==0){if((c|0)!==1)break a;if((a.i8|0)!==1)if((a.i12|(a.i9|0)^1|(a.i10|0)^1|0)!==0)break a;c=a.i6|0;}else{if(((a.i12|0)^1|(a.i9|0)^1|(a.i10|0)^1|0)!==0)break a;c=a.i7|0;}f=f-c|0;if((c|0)!==-2147483648)return f|0;}return -2147483648|0;}function Y(a){}function Z(a){}function $(a){}function aa(a){}function N(j){var f=null,h=0,a=0,c=0;j.a0=r;a=Q()|0;f=aM((a+13|0)/12|0);f[0].i0=a;f[0].i1=a;f[0].i2=0;a=a+1|0;if((a|0)!==0){c=12;h=0;while(1){f[c]=E[h]|0;c=c+1|0;if(f!==f||((0+12|0)+a|0)!==(0+c|0)){h=h+1|0;continue;}break;}}j.a1.a0=f;j.a1.a0o=0+12|0;j.a0=D;}function H(a){var c=null,d=0;a.a0=r;d=a.a1.a0o;c=a.a1.a0;c[d+ -12|0].i2=(c[d+ -12|0].i2|0)-1|0;}function Q(){return 6|0;}function aR(){var a=null,b=0;if((l[m]&255)===0){l[m]=1;e.a0=nullArray;e.a0o=0;e.a1=nullArray;e.a1o=0;e.a2.a0=nullArray;e.a2.a0o=0;}b=e.a0o;a=e.a0;if(a!==nullArray||b!==0){e.a2.a0=nullArray;e.a2.a0o=0;e.a1=nullArray;e.a1o=0;e.a0=nullArray;e.a0o=0;}e.a0=nullArray;e.a0o=0;e.a1=nullArray;e.a1o=0;e.a2.a0=nullArray;e.a2.a0o=0;}var l=[0];var m=0;var e={a0:nullArray,a0o:0,a1:nullArray,a1o:0,a2:{a0:nullArray,a0o:0}};var az=new Uint8Array([78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0]);var ay=new Uint8Array([78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0]);var ax=new Uint8Array([78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0]);var aw={a0:undefined,a1:aa,a2:$,a3:Z,a4:Y,a5:X,a6:W,a7:am,a8:al};var av=new Uint8Array([83,116,57,116,121,112,101,95,105,110,102,111,0]);var au={a0:aw,a1:av};var z={a0:undefined,a1:ax,a2:au};var w={a0:undefined,a1:ay,a2:z};aw.a0=w;var at={a0:undefined,a1:az,a2:w};var as={a0:at,a1:V,a2:U,a3:Z,a4:Y,a5:X,a6:T,a7:S,a8:R};z.a0=as;w.a0=as;at.a0=as;var ar=new Uint8Array([83,116,49,50,108,101,110,103,116,104,95,101,114,114,111,114,0]);var aq=new Uint8Array([83,116,49,49,108,111,103,105,99,95,101,114,114,111,114,0]);var ap=new Uint8Array([83,116,57,101,120,99,101,112,116,105,111,110,0]);var ao={a0:aw,a1:ap};var an={a0:as,a1:aq,a2:ao};var y={a0:as,a1:ar,a2:an};var r={a0:an,a1:L,a2:K,a3:J};var D={a0:y,a1:x,a2:H,a3:J};var E=new Uint8Array([118,101,99,116,111,114,0]);function aJ(){this.a0=null;this.a1=null;this.a2=null;this.a3=null;this.a4=null;this.a5=null;this.a6=null;this.a7=null;this.a8=null;}function aC(){this.a0=null;this.i1=0;this.a2=null;this.i3=0;this.a4=null;this.i5=0;this.i6=0;this.i7=0;this.i8=0;this.i9=0;this.i10=0;this.i11=0;this.i12=0;this.i13=0;this.i14=0;this.i15=0;}function aM(e){var r=[];for(var i=0;i<e;i++)r[i]={i0:0,i1:0,i2:0};return r;}var init=aR;var peek=aN;var pop=aP;var push=aQ;var size=aO;init.promise=peek.promise=pop.promise=push.promise=size.promise=Promise.resolve();
export {init, push, pop, size};
"use strict";/*Compiled using Cheerp (R) by Leaning Technologies Ltd*/var aP=Math.imul;var aQ=Math.fround;var oSlot=0;var nullArray=[null];var nullObj={d:nullArray,o:0};function be(p){var b=null,f='function';if(typeof fetch===f)b=fetch(p).then(r=>r.arrayBuffer());else if(typeof require===f){p=require('path').join(__dirname, p);b=new Promise((y,n)=>{require('fs').readFile(p,(e,d)=>{if(e)n(e);else y(d);});});}else b=new Promise((y,n)=>{y(read(p,'binary'));});return b;}function v(){if((y[z]&255)===0){y[z]=1;ab();}}function ac(){throw new Error("Abort called");}var y=[0];var z=0;function a$(bytes){var pages=(bytes+65535)>>16;try{__asm.bc.grow(pages);ba(__asm.bc.buffer);return pages<<16;}catch(e){return -1;}}var __asm=null,__heap=null;function bb(){throw new Error('this should be unreachable');};var aI=null;var aF=null;var aH=null;var aG=null;var aE=null;var ab=null;var D=null;var init=bb;var peek=bb;var pop=bb;var push=bb;var size=bb;bb.promise=be('cheerp_wasm.wasm').then(g=>WebAssembly.instantiate(g,{i:{v:v,ac:ac,B:bb,A:bb,af:bb,a$:a$,}})).then(g=>{__asm=g.instance.exports;__heap=__asm.bc.buffer;ba(__heap);aI=__asm.aI;aF=__asm.aF;aH=__asm.aH;aG=__asm.aG;aE=__asm.aE;ab=__asm.ab;D=__asm.D;init=aI;peek=aE;pop=aH;push=aF;size=aG;init.promise=peek.promise=pop.promise=push.promise=size.promise=Promise.resolve();});function ba(g){}
export {init, pop, push, size};
(module
(type (;0;) (func))
(type (;1;) (func (param i32) (result i32)))
(type (;2;) (func (param i32 i32 i32)))
(type (;3;) (func (result i32)))
(type (;4;) (func (param i32 i32) (result i32)))
(type (;5;) (func (param i32)))
(type (;6;) (func (param i32 i32 i32) (result i32)))
(type (;7;) (func (param i32 i32 i32 i32 i32 i32)))
(type (;8;) (func (param i32 i32 i32 i32 i32)))
(type (;9;) (func (param i32 i32 i32 i32)))
(type (;10;) (func (param f32)))
(type (;11;) (func (result f32)))
(import "i" "v" (func (;0;) (type 0)))
(import "i" "ac" (func (;1;) (type 0)))
(import "i" "B" (func (;2;) (type 1)))
(import "i" "A" (func (;3;) (type 2)))
(import "i" "af" (func (;4;) (type 3)))
(import "i" "a$" (func (;5;) (type 1)))
(func (;6;) (type 0)
unreachable)
(func (;7;) (type 1) (param i32) (result i32)
unreachable)
(func (;8;) (type 4) (param i32 i32) (result i32)
(local i32 i32 i32)
local.get 1
local.get 0
i32.or
i32.const 3
i32.and
if ;; label = @1
local.get 1
local.get 0
local.set 3
local.set 2
else
local.get 0
i32.load
local.tee 4
local.get 1
i32.load
i32.eq
if ;; label = @2
local.get 1
local.set 2
local.get 0
local.set 3
loop ;; label = @3
local.get 4
i32.const -2139062144
i32.and
i32.const -2139062144
i32.xor
local.get 4
i32.const -16843009
i32.add
i32.and
if ;; label = @4
i32.const 0
return
end
i32.const 4
local.get 3
i32.add
local.tee 3
i32.load
local.tee 4
i32.const 4
local.get 2
i32.add
local.tee 2
i32.load
i32.eq
br_if 0 (;@3;)
end
else
local.get 1
local.set 2
local.get 0
local.set 3
end
end
local.get 3
i32.load8_u
local.tee 4
if ;; label = @1
loop ;; label = @2
local.get 4
local.get 2
i32.load8_u
i32.eq
if ;; label = @3
i32.const 1
local.get 2
i32.add
local.set 2
local.get 3
i32.load8_u offset=1
local.tee 4
if ;; label = @4
i32.const 1
local.get 3
i32.add
local.set 3
br 2 (;@2;)
end
i32.const 0
local.set 4
end
end
else
i32.const 0
local.set 4
end
local.get 4
local.get 2
i32.load8_u
i32.sub)
(func (;9;) (type 1) (param i32) (result i32)
(local i32 i32)
global.get 2
i32.eqz
if ;; label = @1
global.get 6
global.set 2
end
local.get 0
if ;; label = @1
global.get 2
local.tee 1
local.get 0
i32.add
global.get 4
i32.ge_u
if ;; label = @2
local.get 0
call 5
local.tee 2
i32.const -1
i32.eq
if ;; label = @3
call 13
i32.const -1
return
end
local.get 2
global.get 4
i32.add
global.set 4
end
local.get 0
global.get 2
i32.add
global.set 2
local.get 1
return
end
global.get 4)
(func (;10;) (type 1) (param i32) (result i32)
local.get 0
call 28)
(func (;11;) (type 5) (param i32)
(local i32 i32 i32 i32 i32 i32)
local.get 0
if ;; label = @1
global.get 6
local.get 0
i32.gt_u
br_if 0 (;@1;)
i32.const -8
local.get 0
i32.add
local.tee 2
i32.load offset=4
local.tee 3
i32.const -2
i32.and
local.tee 4
local.get 2
i32.add
local.tee 5
i32.load offset=4
i32.const -4
i32.and
local.set 6
i32.const 63
i32.load offset=1048793
local.get 5
i32.eq
if ;; label = @2
local.get 6
local.get 4
i32.add
local.set 4
local.get 3
i32.const 1
i32.and
i32.eqz
if ;; label = @3
local.get 2
i32.load
local.tee 3
local.get 2
local.get 3
i32.sub
local.tee 2
i32.load offset=12
local.tee 5
local.get 2
i32.load offset=8
local.tee 6
local.get 5
i32.store offset=12
local.get 6
i32.store offset=8
local.get 4
i32.add
local.set 4
end
local.get 2
local.get 4
i32.const 1
i32.or
i32.store offset=4
i32.const 63
local.get 2
i32.store offset=1048793
local.get 4
i32.const 131071
i32.gt_u
if ;; label = @3
i32.const 0
call 26
end
else
local.get 5
local.get 6
i32.store offset=4
local.get 3
i32.const 1
i32.and
if ;; label = @3
i32.const 0
local.set 3
else
local.get 2
i32.load
local.tee 3
local.get 4
i32.add
local.set 4
local.get 2
local.get 3
i32.sub
local.tee 2
i32.load offset=8
local.tee 3
i32.const 1048856
i32.eq
if ;; label = @4
i32.const 1
local.set 3
else
local.get 2
i32.load offset=12
local.tee 1
local.get 3
local.get 1
i32.store offset=12
local.get 3
i32.store offset=8
i32.const 0
local.set 3
end
end
local.get 6
local.get 5
i32.add
i32.load offset=4
i32.const 1
i32.and
i32.eqz
if ;; label = @3
local.get 4
local.get 6
i32.add
local.set 4
local.get 3
i32.eqz
if ;; label = @4
local.get 5
i32.load offset=8
i32.const 1048856
i32.ne
br_if 0 (;@4;)
i32.const 63
local.get 2
i32.store offset=1048805
i32.const 63
local.get 2
i32.store offset=1048801
local.get 2
global.get 5
i64.store offset=8 align=4
i32.const 1
local.set 3
br 1 (;@3;)
end
local.get 5
i32.load offset=12
local.tee 6
local.get 5
i32.load offset=8
local.tee 5
local.get 6
i32.store offset=12
local.get 5
i32.store offset=8
end
local.get 2
local.get 4
i32.const 1
i32.or
i32.store offset=4
local.get 4
local.get 2
i32.add
local.get 4
i32.store
local.get 3
br_if 0 (;@2;)
local.get 4
i32.const 512
i32.lt_u
if ;; label = @3
i32.const 63
i32.const 63
i32.load offset=1048789
i32.const 1
local.get 4
i32.const 5
i32.shr_u
i32.shl
i32.or
i32.store offset=1048789
i32.const 1048848
local.get 4
i32.const 3
i32.shr_u
i32.const 3
i32.shl
i32.add
local.tee 4
i32.load offset=8
local.tee 3
local.get 2
local.get 4
i32.store offset=12
local.get 2
local.get 3
i32.store offset=8
local.get 4
local.get 2
i32.store offset=8
local.get 2
i32.store offset=12
else
local.get 4
i32.const 2560
i32.lt_u
if (result i32) ;; label = @4
local.get 4
i32.const 6
i32.shr_u
i32.const 56
i32.add
else
local.get 4
i32.const 10752
i32.lt_u
if (result i32) ;; label = @5
local.get 4
i32.const 9
i32.shr_u
i32.const 91
i32.add
else
local.get 4
i32.const 43520
i32.lt_u
if (result i32) ;; label = @6
local.get 4
i32.const 12
i32.shr_u
i32.const 110
i32.add
else
local.get 4
i32.const 174592
i32.lt_u
if (result i32) ;; label = @7
local.get 4
i32.const 15
i32.shr_u
i32.const 119
i32.add
else
local.get 4
i32.const 698880
i32.lt_u
if (result i32) ;; label = @8
local.get 4
i32.const 18
i32.shr_u
i32.const 124
i32.add
else
i32.const 126
end
end
end
end
end
local.set 3
i32.const 1048848
local.get 3
i32.const 3
i32.shl
i32.add
local.tee 5
i32.load offset=8
local.tee 6
local.get 5
i32.eq
if (result i32) ;; label = @4
i32.const 63
i32.const 63
i32.load offset=1048789
i32.const 1
local.get 3
i32.const 2
i32.shr_u
i32.shl
i32.or
i32.store offset=1048789
local.get 5
else
loop ;; label = @5
local.get 4
local.get 6
i32.load offset=4
i32.const -4
i32.and
i32.lt_u
if ;; label = @6
local.get 6
i32.load offset=8
local.tee 6
local.get 5
i32.ne
br_if 1 (;@5;)
else
local.get 6
local.set 5
end
end
local.get 5
i32.load offset=12
end
local.tee 6
local.get 2
local.get 6
i32.store offset=12
local.get 2
local.get 5
i32.store offset=8
local.get 2
i32.store offset=8
local.get 5
local.get 2
i32.store offset=12
end
end
end)
(func (;12;) (type 5) (param i32)
local.get 0
call 11)
(func (;13;) (type 0))
(func (;14;) (type 0)
i32.const 63
i32.const 0
i32.store offset=1050001
i32.const 63
i32.const 0
i32.store offset=1050005
i32.const 63
i32.const 0
i32.store offset=1050009)
(func (;15;) (type 5) (param i32)
(local i32 i32)
local.get 0
i32.const 1048664
i32.store
call 23
local.tee 1
i32.const 13
i32.add
local.tee 2
i32.const 1
local.get 2
select
call 10
local.tee 2
if ;; label = @1
local.get 2
local.get 1
i32.store
local.get 2
local.get 1
i64.extend_i32_u
i64.store offset=4 align=4
i32.const 12
local.get 2
i32.add
local.tee 2
i32.const 1049893
local.get 1
i32.const 1
i32.add
call 29
drop
local.get 0
local.get 2
i32.store offset=4
local.get 0
i32.const 1048600
i32.store
return
end
call 4
drop
i32.const 4
call 2
local.tee 1
i32.const 1048624
i32.store
local.get 1
i32.const 1048648
i32.const 1
call 3
unreachable)
(func (;16;) (type 6) (param i32 i32 i32) (result i32)
unreachable)
(func (;17;) (type 7) (param i32 i32 i32 i32 i32 i32)
(local i32)
local.get 1
i32.load offset=8
local.set 6
block ;; label = @1
local.get 5
if ;; label = @2
local.get 0
i32.load offset=4
local.get 6
i32.load offset=4
call 8
br_if 1 (;@1;)
else
local.get 0
local.get 6
i32.ne
br_if 1 (;@1;)
end
local.get 1
i32.const 1
i32.store8 offset=61
local.get 1
i32.load offset=4
local.get 3
i32.ne
br_if 0 (;@1;)
local.get 1
i32.const 1
i32.store8 offset=60
local.get 1
i32.load offset=24
local.tee 6
if ;; label = @2
local.get 6
local.get 2
i32.eq
if ;; label = @3
local.get 1
i32.load offset=32
i32.const 2
i32.eq
if ;; label = @4
local.get 1
local.get 4
i32.store offset=32
end
local.get 1
i32.load offset=56
i32.const 1
i32.eq
if ;; label = @4
local.get 1
i32.load offset=32
i32.const 1
i32.ne
br_if 0 (;@4;)
local.get 1
i32.const 1
i32.store8 offset=62
end
else
local.get 1
local.get 1
i32.load offset=44
i32.const 1
i32.add
i32.store offset=44
local.get 1
i32.const 1
i32.store8 offset=62
end
else
local.get 1
local.get 2
i32.store offset=24
local.get 1
local.get 4
i32.store offset=32
local.get 1
i32.const 1
i32.store offset=44
local.get 4
i32.const 1
i32.xor
local.get 1
i32.load offset=56
i32.const 1
i32.xor
i32.or
br_if 0 (;@2;)
local.get 1
i32.const 1
i32.store8 offset=62
end
end)
(func (;18;) (type 8) (param i32 i32 i32 i32 i32)
(local i32 i32)
local.get 1
i32.load offset=8
local.set 5
block ;; label = @1
block ;; label = @2
local.get 4
if ;; label = @3
local.get 0
i32.load offset=4
local.tee 6
local.get 5
i32.load offset=4
call 8
i32.eqz
br_if 1 (;@2;)
local.get 6
local.get 1
i32.load
i32.load offset=4
call 8
br_if 2 (;@1;)
else
local.get 0
local.get 5
i32.eq
br_if 1 (;@2;)
local.get 0
local.get 1
i32.load
i32.ne
br_if 2 (;@1;)
end
local.get 1
i32.load offset=24
local.get 2
i32.ne
if ;; label = @3
local.get 1
i32.load offset=28
local.get 2
i32.eq
br_if 0 (;@3;)
local.get 1
local.get 3
i32.store offset=40
local.get 1
local.get 2
i32.store offset=28
local.get 1
local.get 1
i32.load offset=48
i32.const 1
i32.add
i32.store offset=48
local.get 1
i32.load offset=44
i32.const 1
i32.eq
if ;; label = @4
local.get 1
i32.load offset=32
i32.const 2
i32.ne
br_if 0 (;@4;)
local.get 1
i32.const 1
i32.store8 offset=62
end
local.get 1
i32.const 4
i32.store offset=52
br 2 (;@1;)
end
local.get 3
i32.const 1
i32.ne
br_if 1 (;@1;)
local.get 1
i32.const 1
i32.store offset=40
br 1 (;@1;)
end
local.get 1
i32.load offset=4
local.get 2
i32.ne
br_if 0 (;@1;)
local.get 1
i32.load offset=36
i32.const 1
i32.eq
br_if 0 (;@1;)
local.get 1
local.get 3
i32.store offset=36
end)
(func (;19;) (type 9) (param i32 i32 i32 i32)
(local i32)
local.get 0
local.get 1
i32.load offset=8
i32.eq
if ;; label = @1
local.get 1
i32.load offset=24
local.tee 4
if ;; label = @2
local.get 4
local.get 2
i32.eq
if ;; label = @3
local.get 1
i32.load offset=32
i32.const 2
i32.eq
if ;; label = @4
local.get 1
local.get 3
i32.store offset=32
end
else
local.get 1
local.get 1
i32.load offset=44
i32.const 1
i32.add
i32.store offset=44
local.get 1
i32.const 2
i32.store offset=32
local.get 1
i32.const 1
i32.store8 offset=62
end
else
local.get 1
local.get 2
i32.store offset=24
local.get 1
local.get 3
i32.store offset=32
local.get 1
i32.const 1
i32.store offset=44
end
end)
(func (;20;) (type 7) (param i32 i32 i32 i32 i32 i32)
(local i32)
local.get 1
i32.load offset=8
local.set 6
block ;; label = @1
block ;; label = @2
local.get 5
if ;; label = @3
local.get 0
i32.load offset=4
local.get 6
i32.load offset=4
call 8
br_if 1 (;@2;)
else
local.get 0
local.get 6
i32.ne
br_if 1 (;@2;)
end
local.get 1
i32.const 1
i32.store8 offset=61
local.get 1
i32.load offset=4
local.get 3
i32.ne
br_if 1 (;@1;)
local.get 1
i32.const 1
i32.store8 offset=60
local.get 1
i32.load offset=24
local.tee 6
if ;; label = @3
local.get 6
local.get 2
i32.eq
if ;; label = @4
local.get 1
i32.load offset=32
i32.const 2
i32.eq
if ;; label = @5
local.get 1
local.get 4
i32.store offset=32
end
local.get 1
i32.load offset=56
i32.const 1
i32.ne
br_if 3 (;@1;)
local.get 1
i32.load offset=32
i32.const 1
i32.ne
br_if 3 (;@1;)
local.get 1
i32.const 1
i32.store8 offset=62
br 3 (;@1;)
end
local.get 1
local.get 1
i32.load offset=44
i32.const 1
i32.add
i32.store offset=44
local.get 1
i32.const 1
i32.store8 offset=62
br 2 (;@1;)
end
local.get 1
local.get 2
i32.store offset=24
local.get 1
local.get 4
i32.store offset=32
local.get 1
i32.const 1
i32.store offset=44
local.get 4
i32.const 1
i32.xor
local.get 1
i32.load offset=56
i32.const 1
i32.xor
i32.or
br_if 1 (;@1;)
local.get 1
i32.const 1
i32.store8 offset=62
br 1 (;@1;)
end
local.get 0
i32.load offset=8
local.tee 6
local.get 1
local.get 2
local.get 3
local.get 4
local.get 5
local.get 6
i32.load
i32.load offset=28
call_indirect (type 7)
end)
(func (;21;) (type 8) (param i32 i32 i32 i32 i32)
(local i32 i32)
local.get 1
i32.load offset=8
local.set 6
block ;; label = @1
block ;; label = @2
block ;; label = @3
local.get 4
if ;; label = @4
local.get 0
i32.load offset=4
local.tee 5
local.get 6
i32.load offset=4
call 8
i32.eqz
br_if 2 (;@2;)
local.get 5
local.get 1
i32.load
i32.load offset=4
call 8
br_if 1 (;@3;)
else
local.get 0
local.get 6
i32.eq
br_if 2 (;@2;)
local.get 0
local.get 1
i32.load
i32.ne
br_if 1 (;@3;)
end
local.get 1
i32.load offset=24
local.get 2
i32.ne
if ;; label = @4
local.get 1
i32.load offset=28
local.get 2
i32.eq
br_if 0 (;@4;)
local.get 1
local.get 3
i32.store offset=40
local.get 1
i32.load offset=52
i32.const 4
i32.ne
if ;; label = @5
local.get 1
i32.const 0
i32.store16 offset=60
local.get 0
i32.load offset=8
local.tee 6
local.get 1
local.get 2
local.get 2
i32.const 1
local.get 4
local.get 6
i32.load
i32.load offset=28
call_indirect (type 7)
local.get 1
i32.load8_u offset=61
if ;; label = @6
local.get 1
i32.load8_u offset=60
local.get 1
i32.const 3
i32.store offset=52
br_if 5 (;@1;)
else
local.get 1
i32.const 4
i32.store offset=52
end
end
local.get 1
local.get 2
i32.store offset=28
local.get 1
local.get 1
i32.load offset=48
i32.const 1
i32.add
i32.store offset=48
local.get 1
i32.load offset=44
i32.const 1
i32.ne
br_if 3 (;@1;)
local.get 1
i32.load offset=32
i32.const 2
i32.ne
br_if 3 (;@1;)
local.get 1
i32.const 1
i32.store8 offset=62
br 3 (;@1;)
end
local.get 3
i32.const 1
i32.ne
br_if 2 (;@1;)
local.get 1
i32.const 1
i32.store offset=40
br 2 (;@1;)
end
local.get 0
i32.load offset=8
local.tee 6
local.get 1
local.get 2
local.get 3
local.get 4
local.get 6
i32.load
i32.load offset=32
call_indirect (type 8)
br 1 (;@1;)
end
local.get 1
i32.load offset=4
local.get 2
i32.ne
br_if 0 (;@1;)
local.get 1
i32.load offset=36
i32.const 1
i32.eq
br_if 0 (;@1;)
local.get 1
local.get 3
i32.store offset=36
end)
(func (;22;) (type 9) (param i32 i32 i32 i32)
(local i32)
local.get 0
local.get 1
i32.load offset=8
i32.eq
if ;; label = @1
local.get 1
i32.load offset=24
local.tee 4
if ;; label = @2
local.get 4
local.get 2
i32.eq
if ;; label = @3
local.get 1
i32.load offset=32
i32.const 2
i32.eq
if ;; label = @4
local.get 1
local.get 3
i32.store offset=32
end
else
local.get 1
local.get 1
i32.load offset=44
i32.const 1
i32.add
i32.store offset=44
local.get 1
i32.const 2
i32.store offset=32
local.get 1
i32.const 1
i32.store8 offset=62
end
else
local.get 1
local.get 2
i32.store offset=24
local.get 1
local.get 3
i32.store offset=32
local.get 1
i32.const 1
i32.store offset=44
end
else
local.get 0
i32.load offset=8
local.tee 4
local.get 1
local.get 2
local.get 3
local.get 4
i32.load
i32.load offset=36
call_indirect (type 9)
end)
(func (;23;) (type 3) (result i32)
(local i32 i32)
i32.const 0
if ;; label = @1
i32.const 1049893
local.set 0
else
i32.const 1049893
local.set 0
loop ;; label = @2
local.get 0
i32.const 1049899
i32.eq
if ;; label = @3
i32.const 1049899
i32.const 1049893
i32.sub
return
end
i32.const 1
local.get 0
i32.add
local.tee 0
i32.const 3
i32.and
br_if 0 (;@2;)
end
end
local.get 0
i32.load
local.tee 1
i32.const -2139062144
i32.and
i32.const -2139062144
i32.xor
local.get 1
i32.const -16843009
i32.add
i32.and
i32.eqz
if ;; label = @1
loop ;; label = @2
i32.const 4
local.get 0
i32.add
local.tee 0
i32.load
local.tee 1
i32.const -2139062144
i32.and
i32.const -2139062144
i32.xor
local.get 1
i32.const -16843009
i32.add
i32.and
i32.eqz
br_if 0 (;@2;)
end
end
local.get 0
i32.load8_u
i32.eqz
if ;; label = @1
local.get 0
i32.const 1049893
i32.sub
return
end
loop ;; label = @1
i32.const 1
local.get 0
i32.add
local.tee 0
i32.load8_u
br_if 0 (;@1;)
end
local.get 0
i32.const 1049893
i32.sub)
(func (;24;) (type 0)
(local i32)
i32.const 8
call 2
local.tee 0
call 15
local.get 0
i32.const 1048688
i32.const 1
call 3
unreachable)
(func (;25;) (type 0)
call 24
unreachable)
(func (;26;) (type 5) (param i32)
(local i32 i32 i32)
i32.const -17
local.get 0
i32.sub
i32.const 63
i32.load offset=1048793
i32.load offset=4
i32.const -4
i32.and
local.tee 1
i32.add
i32.const -4096
i32.and
local.tee 2
i32.const 4096
i32.ge_s
if ;; label = @1
i32.const 0
call 9
local.get 1
i32.const 63
i32.load offset=1048793
i32.add
i32.ne
br_if 0 (;@1;)
i32.const 0
local.get 2
i32.sub
call 9
i32.const -1
i32.eq
if ;; label = @2
i32.const 0
call 9
local.tee 1
i32.const 63
i32.load offset=1048793
local.tee 3
i32.sub
local.tee 2
i32.const 15
i32.gt_s
if ;; label = @3
local.get 1
global.get 3
i32.sub
global.set 1
local.get 3
local.get 2
i32.const 1
i32.or
i32.store offset=4
end
else
i32.const 63
i32.load offset=1048793
local.get 1
local.get 2
i32.sub
i32.const 1
i32.or
i32.store offset=4
global.get 1
local.get 2
i32.sub
global.set 1
end
end)
(func (;27;) (type 5) (param i32)
(local i32 i32 i32 i32 i32 i32 i32)
i32.const 63
i32.load offset=1048793
local.tee 2
i32.load offset=4
i32.const -4
i32.and
local.tee 3
local.get 2
i32.add
local.set 4
global.get 3
i32.const -1
i32.eq
if (result i32) ;; label = @1
local.get 0
i32.const 16
i32.add
else
local.get 0
i32.const 4111
i32.add
i32.const -4096
i32.and
end
local.tee 5
call 9
local.tee 6
i32.const -1
i32.ne
if ;; label = @1
local.get 6
local.get 4
i32.ge_u
local.set 7
local.get 2
i32.const 1048848
i32.eq
local.tee 1
i32.eqz
if ;; label = @2
local.get 7
i32.eqz
br_if 1 (;@1;)
end
global.get 1
local.get 5
i32.add
local.tee 7
global.set 1
block ;; label = @2
local.get 6
local.get 4
i32.eq
if ;; label = @3
local.get 4
i32.const 4095
i32.and
br_if 0 (;@3;)
i32.const 63
i32.load offset=1048793
local.get 5
local.get 3
i32.add
i32.const 1
i32.or
i32.store offset=4
br 1 (;@2;)
end
global.get 3
i32.const -1
i32.eq
if ;; label = @3
local.get 6
global.set 3
else
local.get 6
local.get 4
i32.sub
local.get 7
i32.add
global.set 1
end
i32.const 8
local.get 6
i32.add
i32.const 7
i32.and
local.tee 4
if ;; label = @3
i32.const 8
local.get 4
i32.sub
local.tee 4
local.get 6
i32.add
local.set 6
else
i32.const 0
local.set 4
end
i32.const 4096
local.get 5
local.get 6
i32.add
i32.const 4095
i32.and
i32.sub
local.get 4
i32.add
local.tee 4
call 9
local.set 5
i32.const 0
local.get 4
local.get 5
i32.const -1
i32.eq
local.tee 7
select
local.tee 4
global.get 1
i32.add
global.set 1
i32.const 63
local.get 6
i32.store offset=1048793
local.get 6
local.get 6
local.get 5
local.get 7
select
local.get 6
i32.sub
local.get 4
i32.add
i32.const 1
i32.or
i32.store offset=4
local.get 1
br_if 0 (;@2;)
local.get 3
i32.const 16
i32.lt_u
if ;; label = @3
i32.const 63
i32.load offset=1048793
i32.const 1
i32.store offset=4
br 2 (;@1;)
end
local.get 2
local.get 2
i32.load offset=4
i32.const 1
i32.and
local.get 3
i32.const -12
i32.add
i32.const -8
i32.and
local.tee 3
i32.or
i32.store offset=4
local.get 3
local.get 2
i32.add
i32.const 5
i32.store offset=4
local.get 3
local.get 2
i32.add
i32.const 5
i32.store offset=8
local.get 3
i32.const 15
i32.le_u
br_if 0 (;@2;)
i32.const 8
local.get 2
i32.add
call 11
end
global.get 1
local.tee 2
global.get 8
i32.gt_u
if ;; label = @2
local.get 2
global.set 8
end
local.get 2
global.get 7
i32.le_u
br_if 0 (;@1;)
local.get 2
global.set 7
end)
(func (;28;) (type 1) (param i32) (result i32)
(local i32 i32 i32 i32 i32 i32 i32 i32 i32)
i32.const 16
local.get 0
i32.const 11
i32.add
local.tee 1
i32.const -8
i32.and
local.get 1
i32.const 23
i32.lt_u
select
local.tee 1
i32.const 0
i32.ge_s
if ;; label = @1
local.get 1
local.get 0
i32.lt_u
br_if 0 (;@1;)
local.get 1
i32.const 504
i32.lt_u
if (result i32) ;; label = @2
i32.const 1048848
local.get 1
i32.const 2
i32.shr_u
i32.const 2
i32.shl
i32.add
local.tee 2
i32.load offset=12
local.tee 3
local.get 2
i32.eq
if ;; label = @3
local.get 2
i32.load offset=20
local.set 3
i32.const 8
local.get 2
i32.add
local.set 2
end
local.get 3
local.get 2
i32.ne
if ;; label = @3
local.get 3
i32.load offset=4
local.tee 2
local.get 3
i32.load offset=12
local.tee 1
local.get 3
i32.load offset=8
local.tee 5
local.get 1
i32.store offset=12
local.get 5
i32.store offset=8
i32.const -4
i32.and
local.get 3
i32.add
local.get 2
i32.const -4
i32.and
local.get 3
i32.add
i32.load offset=4
i32.const 1
i32.or
i32.store offset=4
i32.const 8
local.get 3
i32.add
return
end
local.get 1
i32.const 3
i32.shr_u
i32.const 2
i32.add
else
local.get 1
i32.const 512
i32.lt_u
if (result i32) ;; label = @3
i32.const 63
else
local.get 1
i32.const 2560
i32.lt_u
if (result i32) ;; label = @4
local.get 1
i32.const 6
i32.shr_u
i32.const 56
i32.add
else
local.get 1
i32.const 10752
i32.lt_u
if (result i32) ;; label = @5
local.get 1
i32.const 9
i32.shr_u
i32.const 91
i32.add
else
local.get 1
i32.const 43520
i32.lt_u
if (result i32) ;; label = @6
local.get 1
i32.const 12
i32.shr_u
i32.const 110
i32.add
else
local.get 1
i32.const 174592
i32.lt_u
if (result i32) ;; label = @7
local.get 1
i32.const 15
i32.shr_u
i32.const 119
i32.add
else
local.get 1
i32.const 698880
i32.lt_u
if (result i32) ;; label = @8
local.get 1
i32.const 18
i32.shr_u
i32.const 124
i32.add
else
i32.const 126
end
end
end
end
end
end
local.set 9
i32.const 1048848
local.get 9
i32.const 3
i32.shl
i32.add
local.tee 8
i32.load offset=12
local.tee 2
local.get 8
i32.ne
if ;; label = @3
loop ;; label = @4
local.get 2
i32.load offset=4
i32.const -4
i32.and
local.tee 3
local.get 1
i32.sub
local.tee 4
i32.const 15
i32.gt_s
if ;; label = @5
local.get 9
i32.const -1
i32.add
local.set 9
else
local.get 2
i32.load offset=12
local.tee 5
local.get 4
i32.const -1
i32.gt_s
if ;; label = @6
local.get 2
i32.load offset=8
local.tee 4
local.get 5
i32.store offset=12
local.get 5
local.get 4
i32.store offset=8
local.get 3
local.get 2
i32.add
local.get 3
local.get 2
i32.add
i32.load offset=4
i32.const 1
i32.or
i32.store offset=4
i32.const 8
local.get 2
i32.add
return
end
local.get 8
i32.eq
br_if 0 (;@5;)
local.get 5
local.set 2
br 1 (;@4;)
end
end
end
local.get 9
i32.const 1
i32.add
end
local.set 4
i32.const 63
i32.load offset=1048801
local.tee 5
i32.const 1048856
i32.ne
if ;; label = @2
local.get 5
i32.load offset=4
local.tee 2
i32.const -4
i32.and
local.tee 6
local.get 1
i32.sub
local.tee 7
i32.const 15
i32.gt_s
if ;; label = @3
local.get 5
local.get 1
i32.const 1
i32.or
i32.store offset=4
i32.const 63
local.get 1
local.get 5
i32.add
local.tee 4
i32.store offset=1048805
i32.const 63
local.get 4
i32.store offset=1048801
local.get 4
global.get 5
i64.store offset=8 align=4
local.get 4
local.get 7
i32.const 1
i32.or
i32.store offset=4
local.get 6
local.get 5
i32.add
local.get 7
i32.store
i32.const 8
local.get 5
i32.add
return
end
i32.const 63
i32.const 1048856
i32.store offset=1048805
i32.const 63
i32.const 1048856
i32.store offset=1048801
local.get 7
i32.const -1
i32.gt_s
if ;; label = @3
local.get 6
local.get 5
i32.add
local.get 6
local.get 5
i32.add
i32.load offset=4
i32.const 1
i32.or
i32.store offset=4
i32.const 8
local.get 5
i32.add
return
end
local.get 6
i32.const 512
i32.lt_u
if ;; label = @3
i32.const 63
i32.const 63
i32.load offset=1048789
i32.const 1
local.get 2
i32.const 5
i32.shr_u
i32.shl
i32.or
i32.store offset=1048789
i32.const 1048848
local.get 2
i32.const 3
i32.shr_u
i32.const 3
i32.shl
i32.add
local.tee 6
i32.load offset=8
local.tee 7
local.get 5
local.get 6
i32.store offset=12
local.get 5
local.get 7
i32.store offset=8
local.get 6
local.get 5
i32.store offset=8
local.get 5
i32.store offset=12
else
local.get 2
i32.const 2560
i32.lt_u
if (result i32) ;; label = @4
local.get 2
i32.const 6
i32.shr_u
i32.const 56
i32.add
else
local.get 2
i32.const 10752
i32.lt_u
if (result i32) ;; label = @5
local.get 2
i32.const 9
i32.shr_u
i32.const 91
i32.add
else
local.get 2
i32.const 43520
i32.lt_u
if (result i32) ;; label = @6
local.get 2
i32.const 12
i32.shr_u
i32.const 110
i32.add
else
local.get 2
i32.const 174592
i32.lt_u
if (result i32) ;; label = @7
local.get 2
i32.const 15
i32.shr_u
i32.const 119
i32.add
else
local.get 2
i32.const 698880
i32.lt_u
if (result i32) ;; label = @8
local.get 2
i32.const 18
i32.shr_u
i32.const 124
i32.add
else
i32.const 126
end
end
end
end
end
local.set 8
i32.const 1048848
local.get 8
i32.const 3
i32.shl
i32.add
local.tee 7
i32.load offset=8
local.tee 2
local.get 7
i32.eq
if (result i32) ;; label = @4
i32.const 63
i32.const 63
i32.load offset=1048789
i32.const 1
local.get 8
i32.const 2
i32.shr_u
i32.shl
i32.or
i32.store offset=1048789
local.get 7
else
loop ;; label = @5
local.get 6
local.get 2
i32.load offset=4
i32.const -4
i32.and
i32.lt_u
if ;; label = @6
local.get 2
i32.load offset=8
local.tee 2
local.get 7
i32.ne
br_if 1 (;@5;)
else
local.get 2
local.set 7
end
end
local.get 7
i32.load offset=12
end
local.tee 2
local.get 5
local.get 2
i32.store offset=12
local.get 5
local.get 7
i32.store offset=8
local.get 5
i32.store offset=8
local.get 7
local.get 5
i32.store offset=12
end
end
i32.const 1
local.get 4
i32.const 4
i32.div_s
i32.shl
local.tee 5
i32.const 63
i32.load offset=1048789
local.tee 6
i32.le_u
if ;; label = @2
local.get 6
local.get 5
i32.and
i32.eqz
if ;; label = @3
local.get 4
i32.const 4
i32.add
i32.const -4
i32.and
local.set 4
loop ;; label = @4
local.get 5
i32.const 1
i32.shl
local.tee 5
local.get 6
i32.and
br_if 1 (;@3;)
local.get 4
i32.const 4
i32.add
local.set 4
br 0 (;@4;)
end
end
loop ;; label = @3
i32.const 1048848
local.get 4
i32.const 3
i32.shl
i32.add
local.tee 6
local.set 7
local.get 4
local.set 8
loop ;; label = @4
local.get 7
i32.load offset=12
local.tee 2
local.get 7
i32.ne
if ;; label = @5
loop ;; label = @6
local.get 2
i32.load offset=4
i32.const -4
i32.and
local.tee 3
local.get 1
i32.sub
local.tee 9
i32.const 15
i32.gt_s
if ;; label = @7
local.get 2
local.get 1
i32.const 1
i32.or
i32.store offset=4
local.get 2
i32.load offset=12
local.get 1
local.get 2
i32.add
local.set 5
local.tee 1
local.get 2
i32.load offset=8
local.tee 8
local.get 1
i32.store offset=12
local.get 8
i32.store offset=8
i32.const 63
local.get 5
i32.store offset=1048805
i32.const 63
local.get 5
i32.store offset=1048801
local.get 5
global.get 5
i64.store offset=8 align=4
local.get 5
local.get 9
i32.const 1
i32.or
i32.store offset=4
local.get 3
local.get 2
i32.add
local.get 9
i32.store
i32.const 8
local.get 2
i32.add
return
end
local.get 9
i32.const -1
i32.gt_s
if ;; label = @7
local.get 3
local.get 2
i32.add
local.get 3
local.get 2
i32.add
i32.load offset=4
i32.const 1
i32.or
i32.store offset=4
local.get 2
i32.load offset=12
local.tee 3
local.get 2
i32.load offset=8
local.tee 9
local.get 3
i32.store offset=12
local.get 9
i32.store offset=8
i32.const 8
local.get 2
i32.add
return
end
local.get 2
i32.load offset=12
local.tee 2
local.get 7
i32.ne
br_if 0 (;@6;)
end
end
local.get 8
i32.const 1
i32.add
local.tee 8
i32.const 3
i32.and
if ;; label = @5
i32.const 8
local.get 7
i32.add
local.set 7
br 1 (;@4;)
end
end
loop ;; label = @4
local.get 4
i32.const 3
i32.and
if ;; label = @5
i32.const -8
local.get 6
i32.add
local.tee 6
i32.load offset=8
local.get 6
i32.eq
if ;; label = @6
local.get 4
i32.const -1
i32.add
local.set 4
br 2 (;@4;)
end
else
i32.const 63
i32.const 63
i32.load offset=1048789
local.get 5
i32.const -1
i32.xor
i32.and
i32.store offset=1048789
end
end
i32.const 63
i32.load offset=1048789
local.set 4
local.get 5
i32.const 1
i32.shl
local.tee 5
i32.const -1
i32.add
local.get 4
i32.ge_u
br_if 1 (;@2;)
local.get 5
local.get 4
i32.and
if ;; label = @4
local.get 8
local.set 4
else
loop ;; label = @5
local.get 5
i32.const 1
i32.shl
local.tee 5
local.get 8
i32.const 4
i32.add
local.set 8
local.get 4
i32.and
i32.eqz
br_if 0 (;@5;)
end
local.get 8
local.set 4
end
br 0 (;@3;)
end
end
i32.const 63
i32.load offset=1048793
i32.load offset=4
i32.const -4
i32.and
local.tee 3
local.get 1
i32.sub
local.set 2
block ;; label = @2
local.get 3
local.get 1
i32.ge_u
if ;; label = @3
local.get 2
i32.const 16
i32.ge_s
br_if 1 (;@2;)
end
local.get 1
call 27
i32.const 63
i32.load offset=1048793
i32.load offset=4
i32.const -4
i32.and
local.tee 3
local.get 1
i32.sub
local.tee 2
local.get 3
local.get 1
i32.lt_u
if ;; label = @3
i32.const 0
return
end
i32.const 16
i32.ge_s
br_if 0 (;@2;)
i32.const 0
return
end
i32.const 63
i32.load offset=1048793
local.tee 3
local.get 1
i32.const 1
i32.or
i32.store offset=4
i32.const 63
local.get 1
local.get 3
i32.add
local.tee 1
i32.store offset=1048793
local.get 1
local.get 2
i32.const 1
i32.or
i32.store offset=4
i32.const 8
local.get 3
i32.add
return
end
call 13
i32.const 0)
(func (;29;) (type 6) (param i32 i32 i32) (result i32)
(local i32 i32 i32 i32 i32)
local.get 2
local.get 1
i32.add
local.set 3
block ;; label = @1
local.get 0
i32.const 3
i32.and
if ;; label = @2
local.get 0
local.get 1
local.set 5
local.set 4
loop ;; label = @3
local.get 5
local.get 3
i32.eq
br_if 2 (;@1;)
local.get 4
local.get 5
i32.load8_u
i32.store8
i32.const 1
local.get 5
i32.add
local.set 5
i32.const 1
local.get 4
i32.add
local.tee 4
i32.const 3
i32.and
br_if 0 (;@3;)
end
else
local.get 1
local.get 0
local.set 4
local.set 5
end
local.get 5
local.tee 6
i32.const -64
local.get 3
i32.add
local.tee 7
i32.le_s
if ;; label = @2
loop ;; label = @3
local.get 4
local.get 5
i64.load align=4
i64.store align=4
local.get 4
local.get 5
i64.load offset=8 align=4
i64.store offset=8 align=4
local.get 4
local.get 5
i64.load offset=16 align=4
i64.store offset=16 align=4
local.get 4
local.get 5
i64.load offset=24 align=4
i64.store offset=24 align=4
local.get 4
local.get 5
i64.load offset=32 align=4
i64.store offset=32 align=4
local.get 4
local.get 5
i64.load offset=40 align=4
i64.store offset=40 align=4
local.get 4
local.get 5
i64.load offset=48 align=4
i64.store offset=48 align=4
local.get 4
local.get 5
i64.load offset=56 align=4
i64.store offset=56 align=4
i32.const 64
local.get 5
i32.add
local.tee 5
i32.const 64
local.get 4
i32.add
local.set 4
local.get 7
i32.le_s
br_if 0 (;@3;)
end
local.get 5
local.set 6
end
i32.const -8
local.get 3
i32.add
local.set 7
local.get 6
local.get 7
i32.le_s
if ;; label = @2
loop ;; label = @3
local.get 4
local.get 5
i64.load align=4
i64.store align=4
i32.const 8
local.get 5
i32.add
local.tee 5
i32.const 8
local.get 4
i32.add
local.set 4
local.get 7
i32.le_s
br_if 0 (;@3;)
end
end
local.get 5
local.get 3
i32.eq
br_if 0 (;@1;)
loop ;; label = @2
local.get 4
local.get 5
i32.load8_u
i32.store8
i32.const 1
local.get 5
i32.add
local.tee 5
local.get 3
i32.eq
br_if 1 (;@1;)
i32.const 1
local.get 4
i32.add
local.set 4
br 0 (;@2;)
end
end
local.get 0)
(func (;30;) (type 10) (param f32)
(local i32 i32 i32 i32 i32 f32 f32)
call 0
i32.const 63
i32.load offset=1050005
local.tee 2
i32.const 63
i32.load offset=1050009
i32.eq
if ;; label = @1
local.get 2
i32.const 63
i32.load offset=1050001
i32.sub
local.tee 2
i32.const 2
i32.shr_s
local.tee 3
i32.const 1
i32.add
local.tee 4
i32.const 1073741823
i32.gt_u
if ;; label = @2
call 25
unreachable
end
block ;; label = @2
local.get 3
i32.const 536870911
i32.lt_u
if ;; label = @3
local.get 4
local.get 2
i32.const 1
i32.shr_s
local.tee 2
local.get 2
local.get 4
i32.lt_u
select
local.tee 2
i32.eqz
if ;; label = @4
i32.const 0
i32.const 0
local.set 4
local.set 2
br 2 (;@2;)
end
local.get 2
i32.const 1073741823
i32.gt_u
if ;; label = @4
call 1
unreachable
end
else
i32.const 1073741823
local.set 2
end
local.get 2
i32.const 2
i32.shl
call 10
local.set 4
end
local.get 2
i32.const 2
i32.shl
local.get 4
i32.add
local.set 2
local.get 3
i32.const 2
i32.shl
local.get 4
i32.add
local.tee 3
local.get 0
f32.store
i32.const 0
i32.const 63
i32.load offset=1050005
i32.const 63
i32.load offset=1050001
local.tee 4
i32.sub
local.tee 1
i32.const 2
i32.shr_s
i32.const 2
i32.shl
i32.sub
local.get 3
i32.add
local.set 5
local.get 1
i32.const 0
i32.gt_s
if ;; label = @2
local.get 5
local.get 4
local.get 1
call 29
drop
end
i32.const 63
i32.load offset=1050001
local.tee 4
i32.const 63
local.get 5
i32.store offset=1050001
i32.const 63
i32.const 4
local.get 3
i32.add
i32.store offset=1050005
i32.const 63
local.get 2
i32.store offset=1050009
if ;; label = @2
local.get 4
call 12
end
else
local.get 2
local.get 0
f32.store
i32.const 63
i32.const 4
local.get 2
i32.add
i32.store offset=1050005
end
i32.const 63
i32.load offset=1050005
i32.const 63
i32.load offset=1050001
local.tee 2
i32.sub
i32.const 2
i32.shr_s
i32.const -1
i32.add
local.tee 3
i32.const 2
i32.shl
local.get 2
i32.add
f32.load
local.set 6
local.get 3
if ;; label = @1
loop ;; label = @2
local.get 3
f32.convert_i32_u
f32.const 0x1p+0 (;=1;)
f32.add
f32.const 0x1p-1 (;=0.5;)
f32.mul
f32.const -0x1p+0 (;=-1;)
f32.add
f32.floor
i32.trunc_f32_u
local.tee 4
i32.const 2
i32.shl
local.get 2
i32.add
local.tee 5
f32.load
local.set 7
local.get 6
local.get 7
f32.lt
i32.eqz
br_if 1 (;@1;)
local.get 5
local.get 3
i32.const 2
i32.shl
local.get 2
i32.add
local.tee 3
f32.load
f32.store
local.get 3
local.get 7
f32.store
local.get 4
i32.eqz
br_if 1 (;@1;)
local.get 4
local.set 3
br 0 (;@2;)
end
end)
(func (;31;) (type 11) (result f32)
(local i32 i32 i32 i32 i32 f32 f32 f32 f32)
call 0
i32.const 63
i32.load offset=1050001
local.tee 0
f32.load
i32.const -4
i32.const 63
i32.load offset=1050005
i32.add
local.tee 1
f32.load
local.set 6
i32.const 63
local.get 1
i32.store offset=1050005
local.get 1
local.get 0
i32.sub
i32.const 2
i32.shr_s
local.tee 1
i32.const 1
i32.gt_u
if ;; label = @1
local.get 0
local.get 6
f32.store
i32.const 0
local.set 2
loop ;; label = @2
local.get 2
i32.const 1
i32.shl
local.tee 3
i32.const 2
i32.add
local.get 3
i32.const 1
i32.add
local.set 4
local.set 3
block ;; label = @3
local.get 4
local.get 1
i32.lt_u
if ;; label = @4
local.get 4
i32.const 2
i32.shl
local.get 0
i32.add
f32.load
local.tee 8
local.get 6
f32.lt
i32.eqz
br_if 0 (;@4;)
local.get 3
local.get 1
i32.ge_u
br_if 1 (;@3;)
local.get 3
i32.const 2
i32.shl
local.get 0
i32.add
f32.load
local.set 7
local.get 3
local.get 4
local.get 7
local.get 8
f32.lt
select
local.set 4
br 1 (;@3;)
end
local.get 3
local.get 1
i32.ge_u
br_if 2 (;@1;)
local.get 3
i32.const 2
i32.shl
local.get 0
i32.add
f32.load
local.get 6
f32.lt
i32.eqz
br_if 2 (;@1;)
local.get 3
local.set 4
end
local.get 2
i32.const 2
i32.shl
local.get 0
i32.add
local.tee 3
f32.load
local.set 8
local.get 3
local.get 4
i32.const 2
i32.shl
local.get 0
i32.add
local.tee 2
f32.load
f32.store
local.get 2
local.get 8
f32.store
local.get 4
local.set 2
br 0 (;@2;)
end
end)
(func (;32;) (type 3) (result i32)
call 0
i32.const 63
i32.load offset=1050005
i32.const 63
i32.load offset=1050001
i32.sub
i32.const 2
i32.shr_s)
(func (;33;) (type 11) (result f32)
call 0
i32.const 63
i32.load offset=1050001
f32.load)
(func (;34;) (type 0)
(local i32)
call 0
i32.const 63
i32.load offset=1050001
local.tee 0
if ;; label = @1
i32.const 63
local.get 0
i32.store offset=1050005
local.get 0
call 12
i32.const 63
i32.const 0
i32.store offset=1050009
i32.const 63
i32.const 0
i32.store offset=1050005
i32.const 63
i32.const 0
i32.store offset=1050001
end
i32.const 63
i32.const 0
i32.store offset=1050001
i32.const 63
i32.const 0
i32.store offset=1050005
i32.const 63
i32.const 0
i32.store offset=1050009)
(table (;0;) 9 anyfunc)
(memory (;0;) 17 4096)
(global (;0;) (mut i32) (i32.const 1048576))
(global (;1;) (mut i32) (i32.const 0))
(global (;2;) (mut i32) (i32.const 0))
(global (;3;) (mut i32) (i32.const -1))
(global (;4;) (mut i32) (i32.const 1050080))
(global (;5;) i64 (i64.const 4504802219262232))
(global (;6;) (mut i32) (i32.const 1050080))
(global (;7;) (mut i32) (i32.const 0))
(global (;8;) (mut i32) (i32.const 0))
(export "bc" (memory 0))
(export "aI" (func 34))
(export "aF" (func 30))
(export "aH" (func 31))
(export "aG" (func 32))
(export "aE" (func 33))
(export "ab" (func 14))
(export "D" (func 12))
(elem (;0;) (i32.const 0) 6 7 16 17 20 18 21 19 22)
(data (;0;) (i32.const 1048584) "\98\00\10\00\a1\05\10\00\e0\00\10")
(data (;1;) (i32.const 1048604) "p\00\10\00\01\00\00\00\01\00\00\00\01")
(data (;2;) (i32.const 1048628) "H\00\10\00\01\00\00\00\01\00\00\00\01")
(data (;3;) (i32.const 1048648) "\98\00\10\00,\05\10\00\90\00\10")
(data (;4;) (i32.const 1048668) "\80\00\10\00\01\00\00\00\01\00\00\00\01")
(data (;5;) (i32.const 1048688) "\98\00\10\00I\05\10\00\80\00\10\00\00\00\00\00\98\00\10\009\05\10\00\90\00\10\00\00\00\00\00\e8\00\10\00\18\05\10\00\00\00\00\00\c0\00\10\00\01\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\04\00\00\00\06\00\00\00\08\00\00\00\98\00\10\00Z\05\10\00\d0\00\10\00\00\00\00\00\98\00\10\00\7f\05\10\00\08\00\10\00\00\00\00\00\e8\00\10\00\c2\05\10\00\00\00\00\00\d0\00\10\00\01\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05\00\00\00\07")
(data (;6;) (i32.const 1048856) "\10\01\10\00\10\01\10\00\18\01\10\00\18\01\10\00 \01\10\00 \01\10\00(\01\10\00(\01\10\000\01\10\000\01\10\008\01\10\008\01\10\00@\01\10\00@\01\10\00H\01\10\00H\01\10\00P\01\10\00P\01\10\00X\01\10\00X\01\10\00`\01\10\00`\01\10\00h\01\10\00h\01\10\00p\01\10\00p\01\10\00x\01\10\00x\01\10\00\80\01\10\00\80\01\10\00\88\01\10\00\88\01\10\00\90\01\10\00\90\01\10\00\98\01\10\00\98\01\10\00\a0\01\10\00\a0\01\10\00\a8\01\10\00\a8\01\10\00\b0\01\10\00\b0\01\10\00\b8\01\10\00\b8\01\10\00\c0\01\10\00\c0\01\10\00\c8\01\10\00\c8\01\10\00\d0\01\10\00\d0\01\10\00\d8\01\10\00\d8\01\10\00\e0\01\10\00\e0\01\10\00\e8\01\10\00\e8\01\10\00\f0\01\10\00\f0\01\10\00\f8\01\10\00\f8\01\10\00\00\02\10\00\00\02\10\00\08\02\10\00\08\02\10\00\10\02\10\00\10\02\10\00\18\02\10\00\18\02\10\00 \02\10\00 \02\10\00(\02\10\00(\02\10\000\02\10\000\02\10\008\02\10\008\02\10\00@\02\10\00@\02\10\00H\02\10\00H\02\10\00P\02\10\00P\02\10\00X\02\10\00X\02\10\00`\02\10\00`\02\10\00h\02\10\00h\02\10\00p\02\10\00p\02\10\00x\02\10\00x\02\10\00\80\02\10\00\80\02\10\00\88\02\10\00\88\02\10\00\90\02\10\00\90\02\10\00\98\02\10\00\98\02\10\00\a0\02\10\00\a0\02\10\00\a8\02\10\00\a8\02\10\00\b0\02\10\00\b0\02\10\00\b8\02\10\00\b8\02\10\00\c0\02\10\00\c0\02\10\00\c8\02\10\00\c8\02\10\00\d0\02\10\00\d0\02\10\00\d8\02\10\00\d8\02\10\00\e0\02\10\00\e0\02\10\00\e8\02\10\00\e8\02\10\00\f0\02\10\00\f0\02\10\00\f8\02\10\00\f8\02\10\00\00\03\10\00\00\03\10\00\08\03\10\00\08\03\10\00\10\03\10\00\10\03\10\00\18\03\10\00\18\03\10\00 \03\10\00 \03\10\00(\03\10\00(\03\10\000\03\10\000\03\10\008\03\10\008\03\10\00@\03\10\00@\03\10\00H\03\10\00H\03\10\00P\03\10\00P\03\10\00X\03\10\00X\03\10\00`\03\10\00`\03\10\00h\03\10\00h\03\10\00p\03\10\00p\03\10\00x\03\10\00x\03\10\00\80\03\10\00\80\03\10\00\88\03\10\00\88\03\10\00\90\03\10\00\90\03\10\00\98\03\10\00\98\03\10\00\a0\03\10\00\a0\03\10\00\a8\03\10\00\a8\03\10\00\b0\03\10\00\b0\03\10\00\b8\03\10\00\b8\03\10\00\c0\03\10\00\c0\03\10\00\c8\03\10\00\c8\03\10\00\d0\03\10\00\d0\03\10\00\d8\03\10\00\d8\03\10\00\e0\03\10\00\e0\03\10\00\e8\03\10\00\e8\03\10\00\f0\03\10\00\f0\03\10\00\f8\03\10\00\f8\03\10\00\00\04\10\00\00\04\10\00\08\04\10\00\08\04\10\00\10\04\10\00\10\04\10\00\18\04\10\00\18\04\10\00 \04\10\00 \04\10\00(\04\10\00(\04\10\000\04\10\000\04\10\008\04\10\008\04\10\00@\04\10\00@\04\10\00H\04\10\00H\04\10\00P\04\10\00P\04\10\00X\04\10\00X\04\10\00`\04\10\00`\04\10\00h\04\10\00h\04\10\00p\04\10\00p\04\10\00x\04\10\00x\04\10\00\80\04\10\00\80\04\10\00\88\04\10\00\88\04\10\00\90\04\10\00\90\04\10\00\98\04\10\00\98\04\10\00\a0\04\10\00\a0\04\10\00\a8\04\10\00\a8\04\10\00\b0\04\10\00\b0\04\10\00\b8\04\10\00\b8\04\10\00\c0\04\10\00\c0\04\10\00\c8\04\10\00\c8\04\10\00\d0\04\10\00\d0\04\10\00\d8\04\10\00\d8\04\10\00\e0\04\10\00\e0\04\10\00\e8\04\10\00\e8\04\10\00\f0\04\10\00\f0\04\10\00\f8\04\10\00\f8\04\10\00\00\05\10\00\00\05\10\00\08\05\10\00\08\05\10\00St9exception\00vector\00St9bad_alloc\00St11logic_error\00St12length_error\00N10__cxxabiv120__si_class_type_infoE\00N10__cxxabiv117__class_type_infoE\00N10__cxxabiv116__shim_type_infoE\00St9type_info"))
/opt/cheerp/bin/clang++ -O3 binaryheap.cpp -o cheerp_js.js -target cheerp -std=c++17
/opt/cheerp/bin/clang++ -O3 binaryheap.cpp -o cheerp_wasm.js -cheerp-linear-output=wasm -cheerp-linear-heap-size=256 -std=c++17
/opt/cheerp/bin/clang++ -O3 binaryheap.cpp -o cheerp_asmjs.js -cheerp-linear-output=asmjs -cheerp-linear-heap-size=256 -std=c++17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment