Merge pull request #1154 from WebAssembly/fuzz
Fuzz fixes
diff --git a/src/passes/Inlining.cpp b/src/passes/Inlining.cpp
index 710fc00..192480d 100644
--- a/src/passes/Inlining.cpp
+++ b/src/passes/Inlining.cpp
@@ -155,7 +155,6 @@
auto* call = (*action.callSite)->cast<Call>();
Builder builder(*module);
auto* block = Builder(*module).makeBlock();
- block->type = call->type;
block->name = Name(std::string("__inlined_func$") + from->name.str);
*action.callSite = block;
// set up a locals mapping
@@ -191,6 +190,16 @@
auto* contents = ExpressionManipulator::copy(from->body, *module);
updater.walk(contents);
block->list.push_back(contents);
+ block->type = call->type;
+ // if the function returned a value, we just set the block containing the
+ // inlined code to have that type. or, if the function was void and
+ // contained void, that is fine too. a bad case is a void function in which
+ // we have unreachable code, so we would be replacing a void call with an
+ // unreachable; we need to handle
+ if (contents->type == unreachable && block->type == none) {
+ // make the block reachable by adding a break to it
+ block->list.push_back(builder.makeBreak(block->name));
+ }
return block;
}
diff --git a/src/passes/RemoveUnusedBrs.cpp b/src/passes/RemoveUnusedBrs.cpp
index e627ce1..e307ec4 100644
--- a/src/passes/RemoveUnusedBrs.cpp
+++ b/src/passes/RemoveUnusedBrs.cpp
@@ -482,9 +482,11 @@
// a "selectified" condition that executes both.
for (Index i = 0; i < list.size() - 1; i++) {
auto* br1 = list[i]->dynCast<Break>();
- if (!br1 || !br1->condition) continue;
+ // avoid unreachable brs, as they are dead code anyhow, and after merging
+ // them the outer scope could need type changes
+ if (!br1 || !br1->condition || br1->type == unreachable) continue;
auto* br2 = list[i + 1]->dynCast<Break>();
- if (!br2 || !br2->condition) continue;
+ if (!br2 || !br2->condition || br2->type == unreachable) continue;
if (br1->name == br2->name) {
assert(!br1->value && !br2->value);
if (!EffectAnalyzer(passOptions, br2->condition).hasSideEffects()) {
diff --git a/src/tools/translate-to-fuzz.h b/src/tools/translate-to-fuzz.h
index 307604a..74a4570 100644
--- a/src/tools/translate-to-fuzz.h
+++ b/src/tools/translate-to-fuzz.h
@@ -259,16 +259,16 @@
labelIndex = 0;
assert(breakableStack.empty());
assert(hangStack.empty());
+ // with small chance, make the body unreachable
+ auto bodyType = func->result;
+ if (oneIn(10)) {
+ bodyType = unreachable;
+ }
// with reasonable chance make the body a block
if (oneIn(2)) {
- func->body = makeBlock(func->result);
+ func->body = makeBlock(bodyType);
} else {
- // with very small chance, make the body unreachable
- if (oneIn(20)) {
- func->body = make(unreachable);
- } else {
- func->body = make(func->result);
- }
+ func->body = make(bodyType);
}
if (HANG_LIMIT > 0) {
func->body = builder.makeSequence(
diff --git a/test/passes/inlining-optimizing.txt b/test/passes/inlining-optimizing.txt
index e1f81e5..19c5800 100644
--- a/test/passes/inlining-optimizing.txt
+++ b/test/passes/inlining-optimizing.txt
@@ -33,3 +33,11 @@
(nop)
)
)
+(module
+ (type $0 (func (result i32)))
+ (type $1 (func))
+ (memory $0 0)
+ (func $main (type $0) (result i32)
+ (unreachable)
+ )
+)
diff --git a/test/passes/inlining-optimizing.wast b/test/passes/inlining-optimizing.wast
index 082c4e9..4f4f348 100644
--- a/test/passes/inlining-optimizing.wast
+++ b/test/passes/inlining-optimizing.wast
@@ -76,4 +76,13 @@
(drop (get_local $z))
)
)
+(module
+ (func $main (result i32)
+ (call $func_51)
+ (i32.const 0)
+ )
+ (func $func_51
+ (unreachable) ;; void function but having unreachable body, when inlined, type must be fixed
+ )
+)
diff --git a/test/passes/remove-unused-brs_shrink-level=1.txt b/test/passes/remove-unused-brs_shrink-level=1.txt
index a26f4eb..fb73935 100644
--- a/test/passes/remove-unused-brs_shrink-level=1.txt
+++ b/test/passes/remove-unused-brs_shrink-level=1.txt
@@ -139,4 +139,24 @@
)
)
)
+ (func $br-if-unreachable-pair (type $1)
+ (block $label$14
+ (br_if $label$14
+ (unreachable)
+ )
+ (br_if $label$14
+ (i32.const 0)
+ )
+ )
+ )
+ (func $br-if-unreachable-pair2 (type $1)
+ (block $label$14
+ (br_if $label$14
+ (i32.const 0)
+ )
+ (br_if $label$14
+ (unreachable)
+ )
+ )
+ )
)
diff --git a/test/passes/remove-unused-brs_shrink-level=1.wast b/test/passes/remove-unused-brs_shrink-level=1.wast
index 88977be..11510de 100644
--- a/test/passes/remove-unused-brs_shrink-level=1.wast
+++ b/test/passes/remove-unused-brs_shrink-level=1.wast
@@ -93,5 +93,25 @@
)
)
)
+ (func $br-if-unreachable-pair
+ (block $label$14
+ (br_if $label$14
+ (unreachable)
+ )
+ (br_if $label$14
+ (i32.const 0)
+ )
+ )
+ )
+ (func $br-if-unreachable-pair2
+ (block $label$14
+ (br_if $label$14
+ (i32.const 0)
+ )
+ (br_if $label$14
+ (unreachable)
+ )
+ )
+ )
)
diff --git a/test/passes/translate-to-fuzz.txt b/test/passes/translate-to-fuzz.txt
index b426766..b966a41 100644
--- a/test/passes/translate-to-fuzz.txt
+++ b/test/passes/translate-to-fuzz.txt
@@ -2,11 +2,7 @@
(global $hangLimit (mut i32) (i32.const 100))
(memory $0 1 1)
(export "func_0" (func $func_0))
- (export "func_2" (func $func_2))
- (export "func_4" (func $func_4))
- (export "func_5" (func $func_5))
- (export "func_7" (func $func_7))
- (export "func_8" (func $func_8))
+ (export "func_6" (func $func_6))
(export "hangLimitInitializer" (func $hangLimitInitializer))
(func $func_0 (result i32)
(local $0 f32)
@@ -18,7 +14,7 @@
(get_global $hangLimit)
)
(return
- (i32.const -5)
+ (i32.const -11)
)
)
(set_global $hangLimit
@@ -28,840 +24,143 @@
)
)
)
- (block $label$0 (result i32)
- (if
- (loop $label$1 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
+ (loop $label$0
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (i32.const 26963)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (i64.trunc_u/f64
+ (drop
+ (loop $label$3
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (i32.const 32767)
+ )
)
- (return
- (i32.const -37)
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
)
)
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
+ (return
+ (i32.const -73)
)
)
+ )
+ )
+ )
+ )
+ (func $func_1 (result f64)
+ (local $0 i32)
+ (local $1 f64)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const 9223372036854775808)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$0 (result f64)
+ (drop
+ (if (result i64)
(select
- (loop $label$10 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 32767)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$11 (result i32)
- (i32.const 24342)
- )
- )
- (i32.load8_s offset=2
- (i32.and
- (br_if $label$0
- (i32.trunc_s/f64
- (loop $label$14 (result f64)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 0)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$15 (result f64)
- (br $label$1)
- )
- )
- )
- (i32.eqz
- (i32.trunc_u/f64
- (loop $label$12 (result f64)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const -128)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$13 (result f64)
- (return
- (i32.const -10)
- )
- )
- )
- )
- )
- )
- (i32.const 31)
- )
- )
- (br_if $label$0
- (loop $label$2 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 1)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$3 (result i32)
- (i32.popcnt
- (select
- (if (result i32)
- (i32.eqz
- (if (result i32)
- (i32.eqz
- (i32.const -1)
- )
- (i32.const 0)
- (i32.const 0)
- )
- )
- (block $label$5 (result i32)
- (loop $label$6 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const -41)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (i64.lt_s
- (i64.const 1100)
- (if (result i64)
- (i32.eqz
- (i32.const -88)
- )
- (get_local $1)
- (get_local $1)
- )
- )
- )
- )
- (block $label$7 (result i32)
- (br $label$1)
- )
- )
- (select
- (br_if $label$3
- (i32.const 65535)
- (loop $label$8 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 10)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$9 (result i32)
- (i32.const 127)
- )
- )
- )
- (i32.const 67372036)
- (i32.const -72)
- )
- (br_if $label$3
- (block $label$4 (result i32)
- (br $label$2)
- )
- (i32.const -2147483648)
- )
- )
- )
- )
- )
- (i32.eqz
- (i32.const -1)
- )
- )
- )
- )
- (block $label$16
- (br_if $label$16
- (i32.eqz
- (block $label$17 (result i32)
- (br $label$16)
- )
- )
- )
- (f32.store offset=3
- (i32.const 5661)
- (call $deNan32
- (select
- (if (result f32)
- (i32.eqz
- (i32.const 23)
- )
- (block $label$23 (result f32)
- (if (result f32)
- (i32.eqz
- (i32.const 3330)
- )
- (block $label$24 (result f32)
- (br $label$16)
- )
- (f32.load offset=22
- (block $label$25 (result i32)
- (i32.const -1)
- )
- )
- )
- )
- (f32.load offset=1 align=1
- (i32.and
- (if (result i32)
- (i32.trunc_u/f32
- (call $deNan32
- (select
- (loop $label$27 (result f32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const -31)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (get_local $0)
- )
- (block $label$28 (result f32)
- (br $label$16)
- )
- (loop $label$26 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 65518)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (if (result i32)
- (i32.const 1)
- (i32.const -32768)
- (i32.const 1392974931)
- )
- )
- )
- )
- )
- (call $func_0)
- (i32.trunc_s/f32
- (tee_local $2
- (f32.const 9223372036854775808)
- )
- )
- )
- (i32.const 31)
- )
- )
- )
- (f32.load offset=4
- (i32.and
- (br_if $label$0
- (i32.load8_u offset=3
- (i32.and
- (loop $label$36 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const -128)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$37 (result i32)
- (br $label$16)
- )
- )
- (i32.const 31)
- )
- )
- (i32.eqz
- (block $label$29 (result i32)
- (if (result i32)
- (i32.const 0)
- (block $label$30 (result i32)
- (if (result i32)
- (i32.eqz
- (select
- (f32.lt
- (get_local $2)
- (get_local $2)
- )
- (select
- (select
- (i32.const -101)
- (i32.const 52)
- (i32.const 2147483647)
- )
- (i32.const 6733)
- (i32.const -12)
- )
- (i32.load8_s offset=22
- (i32.and
- (i32.const 976638003)
- (i32.const 31)
- )
- )
- )
- )
- (block $label$31 (result i32)
- (br $label$16)
- )
- (block $label$32 (result i32)
- (br $label$16)
- )
- )
- )
- (block $label$33 (result i32)
- (f64.store offset=2
- (i32.and
- (loop $label$34 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const -2147483648)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$35 (result i32)
- (i32.trunc_u/f32
- (get_local $2)
- )
- )
- )
- (i32.const 31)
- )
- (f64.const 6409)
- )
- (br $label$16)
- )
- )
- )
- )
- )
- (i32.const 31)
- )
- )
- (if (result i32)
- (i32.const 2147483647)
- (block $label$18 (result i32)
- (f32.store offset=1
- (i32.and
- (br_if $label$18
- (i32.load8_s offset=22
- (i32.and
- (br_if $label$0
- (block $label$19 (result i32)
- (return
- (i32.const 201)
- )
- )
- (i32.const 1465323825)
- )
- (i32.const 31)
- )
- )
- (i32.load8_u offset=4
- (i32.and
- (br_if $label$0
- (i32.load16_s offset=3
- (i32.and
- (f32.gt
- (get_local $0)
- (f32.load offset=2 align=1
- (i32.and
- (i32.const 65453)
- (i32.const 31)
- )
- )
- )
- (i32.const 31)
- )
- )
- (i32.const 2147483647)
- )
- (i32.const 31)
- )
- )
- )
- (i32.const 31)
- )
- (block $label$20 (result f32)
- (call $deNan32
- (f32.convert_u/i64
- (i64.trunc_u/f32
- (call $deNan32
- (f32.min
- (tee_local $0
- (f32.const 2.8411366687849113e-29)
- )
- (block $label$21 (result f32)
- (br $label$16)
- )
- )
- )
- )
- )
- )
- )
- )
- (br $label$16)
- )
- (block $label$22 (result i32)
- (i32.const -44)
- )
- )
- )
- )
- )
- )
- (block $label$38
- (if
- (i32.eqz
- (i32.const 73)
- )
- (block $label$39
- (loop $label$40
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 2147483647)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (nop)
- )
- )
- (block $label$41
- (loop $label$42
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 167857947)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$43
- (if
- (block $label$44 (result i32)
- (if
- (select
- (i32.const 68027396)
- (call $func_0)
- (i32.const 127)
- )
- (loop $label$45
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 2147483647)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (set_local $2
- (if (result f32)
- (i32.eqz
- (i32.const 0)
- )
- (block $label$46 (result f32)
- (br $label$43)
- )
- (f32.const 70)
- )
- )
- )
- (block $label$47
- (nop)
- )
- )
- (loop $label$48 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 218628885)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (i32.const 134561796)
- )
- )
- (block $label$49
- (loop $label$50
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const -73)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (f32.store offset=1
- (i32.and
- (if (result i32)
- (i32.eqz
- (i32.const -1)
- )
- (f64.gt
- (f64.const 2.314826290848667e-289)
- (f64.const 2.5152972121526945e-172)
- )
- (i32.const -71)
- )
- (i32.const 31)
- )
- (call $deNan32
- (f32.convert_u/i32
- (i32.const -32)
- )
- )
- )
- )
- )
- (block $label$51
- (nop)
- )
- )
- )
- )
- )
- )
- )
- )
- (block $label$52
- (f64.store offset=4 align=4
- (i32.and
- (block $label$53 (result i32)
- (return
- (i32.const -11)
- )
- )
- (i32.const 31)
- )
- (f64.const 3402823466385288598117041e14)
- )
- )
- (return
- (i32.const 22064)
- )
- )
- )
- (func $func_1 (result f32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (f32.const -nan:0x7fffd7)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$0 (result f32)
- (nop)
- (return
- (f32.const -nan:0x7fffcc)
- )
- )
- )
- (func $func_2 (result i64)
- (local $0 f64)
- (local $1 f32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i64.const 65535)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (i64.const -75)
- )
- (func $func_3 (result f32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (f32.const 0)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$0 (result f32)
- (if (result f32)
- (i32.eqz
- (call $func_0)
- )
- (block $label$1 (result f32)
- (nop)
- (call $deNan32
+ (get_local $0)
+ (i32.const 84414006)
(select
- (f32.load offset=22 align=1
- (i32.and
- (i32.wrap/i64
- (loop $label$2 (result i64)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (f32.const -88)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$3 (result i64)
- (select
- (block $label$5 (result i64)
- (return
- (f32.const 65479)
- )
- )
- (if (result i64)
- (i32.const 0)
- (block $label$6 (result i64)
- (br $label$2)
- )
- (block $label$7 (result i64)
- (return
- (f32.const -109)
- )
- )
- )
- (block $label$4 (result i32)
- (return
- (f32.const 1.9142481055608796e-22)
- )
- )
- )
- )
+ (i32.const 32767)
+ (i32.const -1)
+ (loop $label$1 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (get_local $1)
)
)
- (i32.const 31)
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$2 (result i32)
+ (return
+ (get_local $1)
+ )
)
)
- (call $deNan32
- (f32.demote/f64
- (call $deNan64
- (f64.add
- (f64.const -nan:0xfffffffffffe6)
- (call $deNan64
- (select
- (f64.const 6.146610220788184e-183)
- (loop $label$18 (result f64)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (f32.const -93)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$19 (result f64)
- (call $deNan64
- (f64.nearest
- (call $deNan64
- (f64.convert_u/i32
- (i32.const -45)
- )
- )
- )
- )
- )
- )
- (block $label$10 (result i32)
- (br_if $label$10
- (if (result i32)
+ )
+ )
+ (if (result i64)
+ (i32.eqz
+ (loop $label$9 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const 19)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$10 (result i32)
+ (i32.load8_s offset=3
+ (i32.and
+ (tee_local $0
+ (tee_local $0
+ (select
+ (i32.load16_u offset=4 align=1
+ (i32.and
(select
- (call $func_0)
- (i32.trunc_s/f64
- (f64.const -nan:0xfffffffffffdd)
- )
- (if (result i32)
- (i32.eqz
- (i32.const 2113936401)
- )
- (select
- (loop $label$15 (result i32)
+ (get_local $0)
+ (get_local $0)
+ (select
+ (i64.lt_s
+ (loop $label$12 (result i64)
(block
(if
(i32.eqz
(get_global $hangLimit)
)
(return
- (f32.const -nan:0x7fffea)
+ (get_local $1)
)
)
(set_global $hangLimit
@@ -871,34 +170,337 @@
)
)
)
- (i32.const -90)
+ (i64.const 32767)
)
- (i32.const 2097561141)
- (i32.const 127)
+ (i64.const 251)
)
- (i32.const 5918)
+ (i32.trunc_u/f64
+ (get_local $1)
+ )
+ (br_if $label$10
+ (i32.load16_u offset=3
+ (i32.and
+ (i32.const 20)
+ (i32.const 31)
+ )
+ )
+ (get_local $0)
+ )
)
)
- (block $label$16 (result i32)
+ (i32.const 31)
+ )
+ )
+ (loop $label$13 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
(return
- (f32.const 18446744073709551615)
+ (get_local $1)
)
)
- (block $label$17 (result i32)
- (return
- (f32.const 253)
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
)
)
)
- (f64.le
- (loop $label$11 (result f64)
+ (block $label$14 (result i32)
+ (return
+ (get_local $1)
+ )
+ )
+ )
+ (if (result i32)
+ (i32.eqz
+ (get_local $0)
+ )
+ (block $label$11 (result i32)
+ (get_local $0)
+ )
+ (i32.popcnt
+ (get_local $0)
+ )
+ )
+ )
+ )
+ )
+ (i32.const 31)
+ )
+ )
+ )
+ )
+ )
+ (block $label$15 (result i64)
+ (block $label$16 (result i64)
+ (select
+ (br_if $label$16
+ (i64.const 1)
+ (i32.eqz
+ (tee_local $0
+ (select
+ (get_local $0)
+ (get_local $0)
+ (get_local $0)
+ )
+ )
+ )
+ )
+ (loop $label$21 (result i64)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$22 (result i64)
+ (return
+ (get_local $1)
+ )
+ )
+ )
+ (loop $label$17 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const -9223372036854775808)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$18 (result i32)
+ (if
+ (i32.eqz
+ (select
+ (i32.const -128)
+ (i32.const -12)
+ (i32.const 1561467741)
+ )
+ )
+ (block $label$19
+ (nop)
+ )
+ (loop $label$20
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const -nan:0xfffffffffff83)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (set_local $0
+ (get_local $0)
+ )
+ )
+ )
+ (tee_local $0
+ (f32.lt
+ (call $deNan32
+ (f32.min
+ (f32.const 18446744073709551615)
+ (f32.const 11)
+ )
+ )
+ (call $deNan32
+ (select
+ (f32.const 2147483648)
+ (f32.const 18446744073709551615)
+ (get_local $0)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (select
+ (i64.load32_u offset=3 align=2
+ (i32.and
+ (i32.load16_u offset=4
+ (i32.and
+ (tee_local $0
+ (if (result i32)
+ (i32.trunc_u/f64
+ (get_local $1)
+ )
+ (block $label$27 (result i32)
+ (get_local $0)
+ )
+ (block $label$28 (result i32)
+ (get_local $0)
+ )
+ )
+ )
+ (i32.const 31)
+ )
+ )
+ (i32.const 31)
+ )
+ )
+ (i64.const 80)
+ (i32.trunc_s/f32
+ (call $deNan32
+ (f32.copysign
+ (f32.const 1.8061622339155704e-31)
+ (if (result f32)
+ (i32.eqz
+ (loop $label$23 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const 2.1384722118162242e-260)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (i32.wrap/i64
+ (if (result i64)
+ (i32.eqz
+ (get_local $0)
+ )
+ (i64.const 18752)
+ (select
+ (i64.const 650785547958815753)
+ (i64.const 8463519829359949880)
+ (block $label$24 (result i32)
+ (select
+ (get_local $0)
+ (i32.const 65535)
+ (get_local $0)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (block $label$25 (result f32)
+ (f32.const 14385)
+ )
+ (f32.const 4.2612939233197215e-37)
+ )
+ )
+ )
+ )
+ )
+ )
+ (block $label$29 (result i64)
+ (block $label$30 (result i64)
+ (return
+ (get_local $1)
+ )
+ )
+ )
+ )
+ )
+ (if
+ (block $label$31 (result i32)
+ (block $label$32
+ (if
+ (block $label$33 (result i32)
+ (loop $label$34 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const -nan:0xffffffffffff8)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (if (result i32)
+ (i32.eqz
+ (if (result i32)
+ (block $label$35 (result i32)
+ (return
+ (get_local $1)
+ )
+ )
+ (i32.trunc_s/f64
+ (call $deNan64
+ (f64.convert_u/i32
+ (select
+ (get_local $0)
+ (if (result i32)
+ (i32.eqz
+ (block $label$36 (result i32)
+ (get_local $0)
+ )
+ )
+ (i64.gt_u
+ (i64.const 155730402379)
+ (i64.const 15)
+ )
+ (i32.const -2147483648)
+ )
+ (get_local $0)
+ )
+ )
+ )
+ )
+ (block $label$37 (result i32)
+ (drop
+ (f64.const 65483)
+ )
+ (select
+ (get_local $0)
+ (i32.trunc_s/f64
+ (block $label$38 (result f64)
+ (loop $label$39 (result f64)
(block
(if
(i32.eqz
(get_global $hangLimit)
)
(return
- (f32.const 1.1754943508222875e-38)
+ (get_local $1)
)
)
(set_global $hangLimit
@@ -908,66 +510,197 @@
)
)
)
- (block $label$12 (result f64)
- (block $label$13 (result f64)
- (return
- (f32.const 3402823466385288598117041e14)
- )
+ (call $deNan64
+ (f64.add
+ (get_local $1)
+ (get_local $1)
)
)
)
- (f64.const -88)
+ )
+ )
+ (i32.const 1751457892)
+ )
+ )
+ )
+ )
+ (i32.reinterpret/f32
+ (f32.const 9223372036854775808)
+ )
+ (get_local $0)
+ )
+ )
+ )
+ (nop)
+ (block $label$40
+ (set_local $1
+ (call $deNan64
+ (select
+ (f64.load offset=22 align=4
+ (i32.and
+ (if (result i32)
+ (i32.const -124)
+ (block $label$43 (result i32)
+ (br $label$32)
+ )
+ (block $label$44 (result i32)
+ (get_local $0)
+ )
+ )
+ (i32.const 31)
+ )
+ )
+ (call $deNan64
+ (f64.copysign
+ (call $deNan64
+ (f64.reinterpret/i64
+ (i64.ctz
+ (i64.trunc_u/f32
+ (f32.const 65525)
+ )
)
)
)
+ (get_local $1)
+ )
+ )
+ (loop $label$41 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const 9)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$42 (result i32)
+ (br $label$40)
)
)
)
)
)
)
- (i32.const 74)
+ )
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (block $label$45
+ (block $label$46
+ (br_if $label$45
+ (tee_local $0
+ (i32.trunc_s/f64
+ (loop $label$47 (result f64)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$48 (result f64)
+ (br $label$45)
+ )
+ )
+ )
+ )
)
)
)
- (block $label$20 (result f32)
+ (block $label$49
(nop)
- (nop)
+ (br_if $label$49
+ (get_local $0)
+ )
+ )
+ )
+ (if (result f64)
+ (i32.eqz
+ (i32.trunc_u/f32
+ (f32.const 2.0658355161339533e-21)
+ )
+ )
+ (call $deNan64
+ (select
+ (get_local $1)
+ (if (result f64)
+ (i32.eqz
+ (get_local $0)
+ )
+ (block $label$50 (result f64)
+ (return
+ (get_local $1)
+ )
+ )
+ (block $label$51 (result f64)
+ (return
+ (get_local $1)
+ )
+ )
+ )
+ (get_local $0)
+ )
+ )
+ (block $label$52 (result f64)
+ (if
+ (i32.reinterpret/f32
+ (f32.const -nan:0x7fffb9)
+ )
+ (nop)
+ (drop
+ (f64.const 8.308760937752171e-246)
+ )
+ )
+ (drop
+ (loop $label$53 (result i64)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$54 (result i64)
+ (i64.const -48)
+ )
+ )
+ )
(return
- (f32.const -3)
+ (f64.const 65520)
)
)
)
)
)
- (func $func_4 (result i64)
- (local $0 i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i64.const 9223372036854775807)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$0 (result i64)
- (return
- (i64.const 9223372036854775807)
- )
- )
- )
- (func $func_5
- (local $0 f64)
- (local $1 i32)
- (local $2 i32)
+ (func $func_2 (param $0 f32)
(block
(if
(i32.eqz
@@ -982,188 +715,20 @@
)
)
)
- (drop
- (call $func_3)
- )
- )
- (func $func_6 (result f32)
- (local $0 i64)
- (local $1 f32)
- (local $2 f64)
- (local $3 i64)
- (local $4 i64)
- (local $5 f32)
- (block
+ (block $label$0
(if
(i32.eqz
- (get_global $hangLimit)
- )
- (return
- (f32.const -1)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (call $func_1)
- )
- (func $func_7 (result f32)
- (local $0 f32)
- (local $1 i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (get_local $0)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (if (result f32)
- (tee_local $1
- (tee_local $1
- (i32.const 65535)
- )
- )
- (loop $label$0 (result f32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (get_local $0)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$1 (result f32)
- (tee_local $0
- (tee_local $0
- (if (result f32)
- (i32.load16_s offset=22 align=1
- (i32.and
- (if (result i32)
- (tee_local $1
- (get_local $1)
- )
- (block $label$2 (result i32)
- (return
- (get_local $0)
- )
- )
- (block $label$3 (result i32)
- (return
- (get_local $0)
- )
- )
- )
- (i32.const 31)
- )
- )
- (tee_local $0
- (f32.load offset=22
- (i32.and
- (i32.const 32767)
- (i32.const 31)
- )
- )
- )
- (block $label$4 (result f32)
- (br $label$0)
- )
- )
- )
- )
- )
- )
- (block $label$5 (result f32)
- (br_if $label$5
- (tee_local $0
- (call $deNan32
- (f32.max
- (f32.load offset=22
- (i32.and
- (select
- (tee_local $1
- (call $func_0)
- )
- (tee_local $1
- (i32.load8_s offset=4
- (i32.and
- (block $label$10 (result i32)
- (return
- (f32.const -27)
- )
- )
- (i32.const 31)
- )
- )
- )
- (i32.rem_u
- (loop $label$8 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (get_local $0)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$9 (result i32)
- (i32.shr_u
- (select
- (i32.const 1497849685)
- (tee_local $1
- (tee_local $1
- (get_local $1)
- )
- )
- (get_local $1)
- )
- (get_local $1)
- )
- )
- )
- (call $func_0)
- )
- )
- (i32.const 31)
- )
- )
- (loop $label$11 (result f32)
+ (if (result i32)
+ (call $func_0)
+ (block $label$1 (result i32)
+ (block $label$2
+ (loop $label$3
(block
(if
(i32.eqz
(get_global $hangLimit)
)
- (return
- (get_local $0)
- )
+ (return)
)
(set_global $hangLimit
(i32.sub
@@ -1172,66 +737,326 @@
)
)
)
- (block $label$12 (result f32)
- (tee_local $0
- (block $label$13 (result f32)
- (return
- (f32.const -nan:0x7fffec)
+ (block $label$4
+ (nop)
+ )
+ )
+ )
+ (if (result i32)
+ (i32.eqz
+ (if (result i32)
+ (i32.load8_s offset=4
+ (i32.and
+ (if (result i32)
+ (i32.eqz
+ (call $func_0)
+ )
+ (block $label$5 (result i32)
+ (br $label$0)
+ )
+ (block $label$6 (result i32)
+ (br $label$0)
+ )
+ )
+ (i32.const 31)
+ )
+ )
+ (i32.const 359492883)
+ (call $func_0)
+ )
+ )
+ (block $label$7 (result i32)
+ (br $label$0)
+ )
+ (block $label$8 (result i32)
+ (i32.const 22536)
+ )
+ )
+ )
+ (block $label$9 (result i32)
+ (nop)
+ (br_if $label$0
+ (i32.eqz
+ (block $label$10 (result i32)
+ (br $label$0)
+ )
+ )
+ )
+ (br $label$0)
+ )
+ )
+ )
+ (if
+ (i32.const 65441)
+ (nop)
+ (block $label$11
+ (loop $label$12
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$13
+ (nop)
+ )
+ )
+ )
+ )
+ (block $label$14
+ (if
+ (i32.eqz
+ (call $func_0)
+ )
+ (block $label$15
+ (loop $label$16
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$17
+ (block $label$18
+ (loop $label$19
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (nop)
+ )
+ )
+ )
+ )
+ )
+ (block $label$20
+ (loop $label$21
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (if
+ (i32.trunc_u/f64
+ (call $deNan64
+ (f64.convert_u/i32
+ (i32.clz
+ (call $func_0)
+ )
+ )
+ )
+ )
+ (nop)
+ (drop
+ (if (result i64)
+ (i32.eqz
+ (loop $label$22 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$23 (result i32)
+ (select
+ (i32.const 2113936401)
+ (i32.const 0)
+ (select
+ (i32.const 2147483647)
+ (i32.const 1297751887)
+ (i32.const 5191)
+ )
+ )
+ )
+ )
+ )
+ (block $label$24 (result i64)
+ (br $label$0)
+ )
+ (block $label$25 (result i64)
+ (loop $label$26 (result i64)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$27 (result i64)
+ (i64.reinterpret/f64
+ (f64.const -nan:0xfffffffffffb7)
+ )
+ )
)
)
)
)
)
)
- )
- )
- (i32.eqz
- (block $label$6 (result i32)
- (i32.load16_s offset=4 align=1
- (i32.and
- (loop $label$7 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (f32.const 65486)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
+ (drop
+ (call $func_1)
+ )
+ (block $label$28
+ (if
+ (i32.const 18500)
+ (nop)
+ (if
+ (i32.eqz
+ (i32.const -122)
+ )
+ (block $label$29
+ (set_local $0
+ (loop $label$30 (result f32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (f32.load offset=22 align=2
+ (i32.and
+ (block $label$31 (result i32)
+ (i64.eqz
+ (i64.const -2147483648)
+ )
+ )
+ (i32.const 31)
+ )
+ )
)
)
)
- (tee_local $1
- (i32.load offset=22
+ (f32.store offset=4 align=1
+ (i32.and
+ (loop $label$32 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (i32.wrap/i64
+ (i64.const -125)
+ )
+ )
+ (i32.const 31)
+ )
+ (f32.load offset=4 align=1
(i32.and
- (get_local $1)
+ (i32.const 23)
(i32.const 31)
)
)
)
)
- (i32.const 31)
+ )
+ (br_if $label$0
+ (i32.eqz
+ (i32.const -128)
+ )
)
)
)
)
)
)
+ (br_if $label$0
+ (loop $label$33 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$34 (result i32)
+ (br $label$0)
+ )
+ )
+ )
)
)
- (func $func_8 (result i32)
+ (func $func_3 (param $0 f64) (param $1 f64) (param $2 f64) (result f32)
(block
(if
(i32.eqz
(get_global $hangLimit)
)
(return
- (i32.const 65535)
+ (f32.const -nan:0x7fff97)
)
)
(set_global $hangLimit
@@ -1241,132 +1066,256 @@
)
)
)
- (block $label$0 (result i32)
- (f32.eq
- (f32.const -nan:0x7ffff1)
- (call $deNan32
- (select
- (block $label$3 (result f32)
+ (call $deNan32
+ (f32.sqrt
+ (if (result f32)
+ (loop $label$0 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f32.const 9223372036854775808)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$1 (result i32)
(return
+ (f32.const 9223372036854775808)
+ )
+ )
+ )
+ (block $label$2 (result f32)
+ (block $label$3 (result f32)
+ (f32.const 2147483648)
+ )
+ )
+ (f32.const 8764)
+ )
+ )
+ )
+ )
+ (func $func_4
+ (local $0 i64)
+ (local $1 i64)
+ (local $2 f32)
+ (local $3 f64)
+ (local $4 f64)
+ (local $5 f64)
+ (local $6 f32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return)
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (nop)
+ )
+ (func $func_5 (param $0 i64) (param $1 i64) (result f64)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (f64.const -100)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (f64.const 1)
+ )
+ (func $func_6 (result i32)
+ (local $0 f64)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (i32.const 2147483647)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (select
+ (select
+ (loop $label$1 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (i32.const 0)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
(i32.const 1)
)
)
- (if (result f32)
- (i32.eqz
- (i32.const 709173281)
- )
- (block $label$4 (result f32)
- (f32.const 8.104309321630391e-21)
- )
- (block $label$5 (result f32)
- (drop
- (i32.shr_u
- (br_if $label$0
- (block $label$7 (result i32)
- (return
- (i32.const 65432)
- )
- )
- (i32.eqz
- (i32.wrap/i64
- (loop $label$6 (result i64)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const 65425)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (i64.xor
- (i64.extend_u/i32
- (br_if $label$0
- (i32.const 12)
- (i32.div_u
- (i32.const -96)
- (i32.const 0)
- )
- )
- )
- (i64.const 8606517916339761162)
- )
- )
- )
- )
- )
- (f32.le
- (call $func_6)
- (call $deNan32
- (f32.sub
- (f32.const 9223372036854775808)
- (f32.const 22107)
- )
- )
- )
- )
- )
- (if
- (i32.eqz
- (i32.const 1543)
- )
- (block $label$8
- (br_if $label$8
- (i32.load8_u offset=4
+ )
+ (block $label$2 (result i32)
+ (i32.load offset=4
+ (br_if $label$2
+ (i32.const -76)
+ (i32.eqz
+ (i32.load8_s offset=4
+ (i32.and
+ (i32.load offset=22 align=1
(i32.and
- (i32.const 126)
+ (i32.const 92)
(i32.const 31)
)
)
+ (i32.const 31)
)
)
- (nop)
- )
- (f32.const 1.1754943508222875e-38)
- )
- )
- (select
- (loop $label$1 (result i32)
- (block
- (if
- (i32.eqz
- (get_global $hangLimit)
- )
- (return
- (i32.const -80)
- )
- )
- (set_global $hangLimit
- (i32.sub
- (get_global $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$2 (result i32)
- (return
- (i32.const 65509)
- )
- )
- )
- (i32.const 509639793)
- (i32.trunc_s/f64
- (call $deNan64
- (f64.convert_u/i32
- (i32.const 65487)
- )
)
)
)
)
)
+ (block $label$3 (result i32)
+ (return
+ (i32.const 26)
+ )
+ )
+ (call $func_0)
+ )
+ (select
+ (block $label$9 (result i32)
+ (loop $label$10
+ (block
+ (if
+ (i32.eqz
+ (get_global $hangLimit)
+ )
+ (return
+ (i32.const 1)
+ )
+ )
+ (set_global $hangLimit
+ (i32.sub
+ (get_global $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$11
+ (i32.store16 offset=2 align=1
+ (i32.const -91)
+ (i32.load16_s offset=4 align=1
+ (i32.ctz
+ (block $label$12 (result i32)
+ (select
+ (i32.load offset=4 align=2
+ (i32.and
+ (i32.const -113)
+ (i32.const 31)
+ )
+ )
+ (call $func_0)
+ (block $label$13 (result i32)
+ (return
+ (i32.const -32768)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (i32.const 255)
+ )
+ (i32.const 127)
+ (select
+ (if (result i32)
+ (block $label$4 (result i32)
+ (i32.load offset=22
+ (i32.and
+ (br_if $label$4
+ (i32.load16_u offset=2
+ (i32.and
+ (i32.const 226)
+ (i32.const 31)
+ )
+ )
+ (i32.eqz
+ (select
+ (block $label$5 (result i32)
+ (i32.const -32768)
+ )
+ (i32.const 354161438)
+ (i64.gt_s
+ (i64.const -18)
+ (i64.const 2835340575676513842)
+ )
+ )
+ )
+ )
+ (i32.const 31)
+ )
+ )
+ )
+ (i32.const -128)
+ (block $label$6 (result i32)
+ (return
+ (i32.const 65442)
+ )
+ )
+ )
+ (block $label$7 (result i32)
+ (i32.load offset=22 align=1
+ (i32.and
+ (block $label$8 (result i32)
+ (return
+ (i32.const 255)
+ )
+ )
+ (i32.const 31)
+ )
+ )
+ )
+ (i32.lt_s
+ (i32.const -20)
+ (i32.const -2147483648)
+ )
+ )
+ )
+ (block $label$0 (result i32)
+ (return
+ (i32.const -86)
+ )
)
)
)