diff options
author | Alon Zakai <alonzakai@gmail.com> | 2018-11-26 14:15:54 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-26 14:15:54 -0800 |
commit | 4d65912ee77fd665a1bfff50d81e0aa896dab8a5 (patch) | |
tree | efcaab01538e3dbd8769b74b1d82fe0709af6b6e | |
parent | da3bb2ffcc8a6efd6a95a07f7de793d1362f4a07 (diff) | |
download | binaryen-4d65912ee77fd665a1bfff50d81e0aa896dab8a5.tar.gz binaryen-4d65912ee77fd665a1bfff50d81e0aa896dab8a5.tar.bz2 binaryen-4d65912ee77fd665a1bfff50d81e0aa896dab8a5.zip |
Merge-Blocks improvements (#1760)
Previously we didn't try to merge a block into the parent if the block had a name. This lets us merge part of it, that is:
(block
(..a..)
(block $child
(..b..)
(.. some br to $child ..)
(..c..)
)
)
=>
(block
(..a..)
(..b..) ;; moved out
(block $child
(.. some br to $child ..)
(..c..)
)
)
This is beneficial for 2 reasons: the child may now be a singleton, so we can remove the block; or, now that we canonicalized the br-containing code to the head of the child, we may be able to turn it into an if.
-rw-r--r-- | src/passes/MergeBlocks.cpp | 75 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm | 3738 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm.clamp | 3738 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm.imprecise | 3738 | ||||
-rw-r--r-- | test/example/relooper-fuzz1.txt | 6 | ||||
-rw-r--r-- | test/memorygrowth.fromasm | 3808 | ||||
-rw-r--r-- | test/memorygrowth.fromasm.clamp | 3808 | ||||
-rw-r--r-- | test/memorygrowth.fromasm.imprecise | 3808 | ||||
-rw-r--r-- | test/passes/1.txt | 12 | ||||
-rw-r--r-- | test/passes/O2_precompute-propagate_print-stack-ir.txt | 16 | ||||
-rw-r--r-- | test/passes/merge-blocks.txt | 28 | ||||
-rw-r--r-- | test/passes/merge-blocks.wast | 16 | ||||
-rw-r--r-- | test/passes/remove-unused-names_merge-blocks.txt | 418 | ||||
-rw-r--r-- | test/passes/remove-unused-names_merge-blocks.wast | 177 |
14 files changed, 11974 insertions, 11412 deletions
diff --git a/src/passes/MergeBlocks.cpp b/src/passes/MergeBlocks.cpp index 543c7f89c..57f8b7e41 100644 --- a/src/passes/MergeBlocks.cpp +++ b/src/passes/MergeBlocks.cpp @@ -252,55 +252,94 @@ static void optimizeBlock(Block* curr, Module* module, PassOptions& passOptions) // TODO: handle (loop (loop - the bodies of loops may not be blocks } } - // If no block, or a block that might be broken out of, we can't do anything. - if (!childBlock || childBlock->name.is()) continue; + // If no block, we can't do anything. + if (!childBlock) continue; auto& childList = childBlock->list; auto childSize = childList.size(); if (childSize == 0) continue; // If the child has items after an unreachable, ignore it - dce should have // been run, and we prefer to not handle the complexity here. if (hasDeadCode(childBlock)) continue; - // If this is a loop, we may be removing only the tail. - Index start = 0; - Index end = childSize; + // In some cases we can remove only the head or the tail of the block, + // and must keep some things in the child block. + Index keepStart = childSize; + Index keepEnd = 0; + // For a block with a name, we may only be able to remove a head, up + // to the first item that branches to the block. + if (childBlock->name.is()) { + // If it has a concrete value, then breaks may be sending it a value, + // and we'd need to handle that. TODO + if (isConcreteType(childBlock->type)) { + continue; + } + auto childName = childBlock->name; + for (size_t j = 0; j < childSize; j++) { + auto* item = childList[j]; + if (BranchUtils::BranchSeeker::hasNamed(item, childName)) { + // We can't remove this from the child. + keepStart = j; + keepEnd = childSize; + break; + } + } + } + // For a loop, we may only be able to remove a tail if (loop) { auto childName = loop->name; for (auto j = int(childSize - 1); j >= 0; j--) { auto* item = childList[j]; if (BranchUtils::BranchSeeker::hasNamed(item, childName)) { // We can't remove this from the child. - start = j + 1; + keepStart = 0; + keepEnd = std::max(Index(j + 1), keepEnd); break; } } - // Maybe there's nothing to do. - if (start == end) continue; // If we can only do part of the block, and if the block has a flowing value, we // would need special handling for that - not worth it, probably TODO - if (start > 0 && isConcreteType(childList.back()->type)) { + // FIXME is this not handled by the drop later down? + if (keepEnd < childSize && isConcreteType(childList.back()->type)) { continue; } } + // Maybe there's nothing to do, if we must keep it all in the + // child anyhow. + if (keepStart == 0 && keepEnd == childSize) continue; + // There is something to do! + bool keepingPart = keepStart < keepEnd; + // Create a new merged list, and fill in the code before the + // child block we are merging in. TODO better efficiency ExpressionList merged(module->allocator); for (size_t j = 0; j < i; j++) { merged.push_back(list[j]); } - // If we can't merge it all, keep the child. - if (start > 0) { - merged.push_back(child); - } - for (Index j = start; j < end; j++) { + // Add the head of the block - the things at the start we do + // not need to keep. + for (Index j = 0; j < keepStart; j++) { merged.push_back(childList[j]); } - // If we didn't merge it all, update the child. - if (start > 0) { - childList.resize(start); + // If we can't merge it all, keep and filter the child. + if (keepingPart) { + merged.push_back(child); + // Filter the child. + ExpressionList filtered(module->allocator); + for (Index j = keepStart; j < keepEnd; j++) { + filtered.push_back(childList[j]); + } + // Add the tail of the block - the things at the end we do + // not need to keep. + for (Index j = keepEnd; j < childSize; j++) { + merged.push_back(childList[j]); + } + // Update the child. + childList.swap(filtered); // We may have removed unreachable items. childBlock->finalize(); - if (auto* loop = child->dynCast<Loop>()) { + if (loop) { loop->finalize(); } } + // Add the rest of the parent block after the child. for (size_t j = i + 1; j < list.size(); j++) { merged.push_back(list[j]); } diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm index e70998db0..4c533a8c0 100644 --- a/test/emcc_hello_world.fromasm +++ b/test/emcc_hello_world.fromasm @@ -7589,274 +7589,258 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (block $folding-inner0 - (set_local $0 - (if (result i32) - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (tee_local $10 - (i32.shr_u - (tee_local $6 - (i32.load - (i32.const 176) - ) + (set_local $0 + (if (result i32) + (i32.lt_u + (get_local $0) + (i32.const 245) + ) + (block (result i32) + (if + (i32.and + (tee_local $10 + (i32.shr_u + (tee_local $6 + (i32.load + (i32.const 176) ) - (tee_local $13 - (i32.shr_u - (tee_local $2 - (select - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u + ) + (tee_local $13 + (i32.shr_u + (tee_local $2 + (select + (i32.const 16) + (i32.and + (i32.add (get_local $0) (i32.const 11) ) + (i32.const -8) + ) + (i32.lt_u + (get_local $0) + (i32.const 11) ) ) - (i32.const 3) ) + (i32.const 3) ) ) ) - (i32.const 3) ) - (block - (set_local $11 - (i32.load - (tee_local $1 - (i32.add - (tee_local $7 - (i32.load - (tee_local $3 - (i32.add - (tee_local $2 - (i32.add - (i32.shl - (tee_local $4 - (i32.add - (i32.xor - (i32.and - (get_local $10) - (i32.const 1) - ) + (i32.const 3) + ) + (block + (set_local $11 + (i32.load + (tee_local $1 + (i32.add + (tee_local $7 + (i32.load + (tee_local $3 + (i32.add + (tee_local $2 + (i32.add + (i32.shl + (tee_local $4 + (i32.add + (i32.xor + (i32.and + (get_local $10) (i32.const 1) ) - (get_local $13) + (i32.const 1) ) + (get_local $13) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $2) - (get_local $11) - ) - (i32.store - (i32.const 176) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $2) + (get_local $11) + ) + (i32.store + (i32.const 176) + (i32.and + (get_local $6) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $4) ) + (i32.const -1) ) ) - (block - (if - (i32.lt_u - (get_local $11) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $11) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $7) ) - (block - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (get_local $3) - (get_local $11) - ) - ) - (call $_abort) + (get_local $7) ) - ) - ) - (i32.store offset=4 - (get_local $7) - (i32.or - (tee_local $0 - (i32.shl - (get_local $4) - (i32.const 3) + (block + (i32.store + (get_local $0) + (get_local $2) + ) + (i32.store + (get_local $3) + (get_local $11) ) ) - (i32.const 3) + (call $_abort) ) ) - (i32.store + ) + (i32.store offset=4 + (get_local $7) + (i32.or (tee_local $0 - (i32.add - (i32.add - (get_local $7) - (get_local $0) - ) - (i32.const 4) + (i32.shl + (get_local $4) + (i32.const 3) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $7) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - (return - (get_local $1) + (i32.or + (i32.load + (get_local $0) + ) + (i32.const 1) ) ) + (return + (get_local $1) + ) ) - (if (result i32) - (i32.gt_u - (get_local $2) - (tee_local $0 - (i32.load - (i32.const 184) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $2) + (tee_local $0 + (i32.load + (i32.const 184) ) ) - (block (result i32) - (if - (get_local $10) - (block - (set_local $7 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.add - (i32.and - (tee_local $3 - (i32.and - (i32.shl - (get_local $10) - (get_local $13) - ) - (i32.or - (tee_local $3 - (i32.shl - (i32.const 2) - (get_local $13) - ) - ) - (i32.sub - (i32.const 0) - (get_local $3) + ) + (block (result i32) + (if + (get_local $10) + (block + (set_local $7 + (i32.and + (i32.shr_u + (tee_local $3 + (i32.add + (i32.and + (tee_local $3 + (i32.and + (i32.shl + (get_local $10) + (get_local $13) + ) + (i32.or + (tee_local $3 + (i32.shl + (i32.const 2) + (get_local $13) ) ) + (i32.sub + (i32.const 0) + (get_local $3) + ) ) ) - (i32.sub - (i32.const 0) - (get_local $3) - ) ) - (i32.const -1) + (i32.sub + (i32.const 0) + (get_local $3) + ) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $10 - (i32.load - (tee_local $4 - (i32.add - (tee_local $8 - (i32.load - (tee_local $3 - (i32.add - (tee_local $7 - (i32.add - (i32.shl - (tee_local $11 - (i32.add + ) + (set_local $10 + (i32.load + (tee_local $4 + (i32.add + (tee_local $8 + (i32.load + (tee_local $3 + (i32.add + (tee_local $7 + (i32.add + (i32.shl + (tee_local $11 + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $3 - (i32.and - (i32.shr_u - (tee_local $4 - (i32.shr_u - (get_local $3) - (get_local $7) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $7) - ) (tee_local $3 (i32.and (i32.shr_u (tee_local $4 (i32.shr_u - (get_local $4) (get_local $3) + (get_local $7) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $7) ) (tee_local $3 (i32.and @@ -7867,9 +7851,9 @@ (get_local $3) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -7884,310 +7868,310 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $4) - (get_local $3) + (tee_local $3 + (i32.and + (i32.shr_u + (tee_local $4 + (i32.shr_u + (get_local $4) + (get_local $3) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) + (i32.shr_u + (get_local $4) + (get_local $3) + ) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $7) - (get_local $10) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $11) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $7) + (get_local $10) + ) + (block + (i32.store + (i32.const 176) + (i32.and + (get_local $6) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $11) ) + (i32.const -1) ) ) - (set_local $9 - (get_local $0) - ) ) - (block - (if - (i32.lt_u - (get_local $10) - (i32.load - (i32.const 192) - ) + (set_local $9 + (get_local $0) + ) + ) + (block + (if + (i32.lt_u + (get_local $10) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $10) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $10) + (i32.const 12) ) ) - (get_local $8) ) - (block - (i32.store - (get_local $0) - (get_local $7) - ) - (i32.store - (get_local $3) - (get_local $10) - ) - (set_local $9 - (i32.load - (i32.const 184) - ) + (get_local $8) + ) + (block + (i32.store + (get_local $0) + (get_local $7) + ) + (i32.store + (get_local $3) + (get_local $10) + ) + (set_local $9 + (i32.load + (i32.const 184) ) ) - (call $_abort) ) + (call $_abort) ) ) - (i32.store offset=4 - (get_local $8) - (i32.or + ) + (i32.store offset=4 + (get_local $8) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (tee_local $7 + (i32.add + (get_local $8) (get_local $2) - (i32.const 3) ) ) - (i32.store offset=4 - (tee_local $7 - (i32.add - (get_local $8) - (get_local $2) - ) - ) - (i32.or - (tee_local $11 - (i32.sub - (i32.shl - (get_local $11) - (i32.const 3) - ) - (get_local $2) + (i32.or + (tee_local $11 + (i32.sub + (i32.shl + (get_local $11) + (i32.const 3) ) + (get_local $2) ) - (i32.const 1) ) + (i32.const 1) ) - (i32.store - (i32.add - (get_local $7) - (get_local $11) - ) + ) + (i32.store + (i32.add + (get_local $7) (get_local $11) ) - (if - (get_local $9) - (block - (set_local $6 - (i32.load - (i32.const 196) - ) + (get_local $11) + ) + (if + (get_local $9) + (block + (set_local $6 + (i32.load + (i32.const 196) ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $9) - (i32.const 3) - ) + ) + (set_local $2 + (i32.add + (i32.shl + (tee_local $0 + (i32.shr_u + (get_local $9) + (i32.const 3) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (if - (i32.and - (tee_local $3 - (i32.load - (i32.const 176) - ) + ) + (if + (i32.and + (tee_local $3 + (i32.load + (i32.const 176) ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) + ) + (tee_local $0 + (i32.shl + (i32.const 1) + (get_local $0) ) ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $3 - (i32.add - (get_local $2) - (i32.const 8) - ) + ) + (if + (i32.lt_u + (tee_local $0 + (i32.load + (tee_local $3 + (i32.add + (get_local $2) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $5 - (get_local $3) - ) - (set_local $1 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $3) - (get_local $0) - ) - ) (set_local $5 - (i32.add - (get_local $2) - (i32.const 8) - ) + (get_local $3) ) (set_local $1 - (get_local $2) + (get_local $0) ) ) ) - (i32.store - (get_local $5) - (get_local $6) - ) - (i32.store offset=12 - (get_local $1) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $1) - ) - (i32.store offset=12 - (get_local $6) - (get_local $2) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $3) + (get_local $0) + ) + ) + (set_local $5 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + (set_local $1 + (get_local $2) + ) ) ) - ) - (i32.store - (i32.const 184) - (get_local $11) - ) - (i32.store - (i32.const 196) - (get_local $7) - ) - (return - (get_local $4) + (i32.store + (get_local $5) + (get_local $6) + ) + (i32.store offset=12 + (get_local $1) + (get_local $6) + ) + (i32.store offset=8 + (get_local $6) + (get_local $1) + ) + (i32.store offset=12 + (get_local $6) + (get_local $2) + ) ) ) + (i32.store + (i32.const 184) + (get_local $11) + ) + (i32.store + (i32.const 196) + (get_local $7) + ) + (return + (get_local $4) + ) ) - (if (result i32) - (tee_local $0 - (i32.load - (i32.const 180) - ) + ) + (if (result i32) + (tee_local $0 + (i32.load + (i32.const 180) ) - (block - (set_local $7 - (i32.and - (i32.shr_u - (tee_local $0 - (i32.add - (i32.and + ) + (block + (set_local $7 + (i32.and + (i32.shr_u + (tee_local $0 + (i32.add + (i32.and + (get_local $0) + (i32.sub + (i32.const 0) (get_local $0) - (i32.sub - (i32.const 0) - (get_local $0) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $11 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $0 - (i32.load offset=480 - (i32.shl - (i32.add + ) + (set_local $11 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $0 + (i32.load offset=480 + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $0) - (get_local $7) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $7) - ) (tee_local $0 (i32.and (i32.shr_u (tee_local $1 (i32.shr_u - (get_local $1) (get_local $0) + (get_local $7) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $7) ) (tee_local $0 (i32.and @@ -8198,9 +8182,9 @@ (get_local $0) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -8215,845 +8199,859 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $1) - (get_local $0) + (tee_local $0 + (i32.and + (i32.shr_u + (tee_local $1 + (i32.shr_u + (get_local $1) + (get_local $0) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $1) + (get_local $0) + ) ) + (i32.const 2) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (set_local $7 - (get_local $0) - ) - (loop $while-in - (block $while-out + ) + (set_local $7 + (get_local $0) + ) + (loop $while-in + (block $while-out + (if + (tee_local $1 + (i32.load offset=16 + (get_local $0) + ) + ) + (set_local $0 + (get_local $1) + ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $0) + (i32.eqz + (tee_local $0 + (i32.load offset=20 + (get_local $0) + ) ) ) - (set_local $0 - (get_local $1) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load offset=20 - (get_local $0) - ) - ) + (block + (set_local $6 + (get_local $11) ) - (block - (set_local $6 - (get_local $11) - ) - (set_local $8 - (get_local $7) - ) - (br $while-out) + (set_local $8 + (get_local $7) ) + (br $while-out) ) ) - (set_local $6 - (i32.lt_u - (tee_local $1 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (set_local $6 + (i32.lt_u + (tee_local $1 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $0) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $11) ) + (get_local $11) ) - (set_local $11 - (select - (get_local $1) - (get_local $11) - (get_local $6) - ) + ) + (set_local $11 + (select + (get_local $1) + (get_local $11) + (get_local $6) ) - (set_local $7 - (select - (get_local $0) - (get_local $7) - (get_local $6) - ) + ) + (set_local $7 + (select + (get_local $0) + (get_local $7) + (get_local $6) ) - (br $while-in) ) + (br $while-in) ) - (if - (i32.lt_u - (get_local $8) - (tee_local $10 - (i32.load - (i32.const 192) - ) + ) + (if + (i32.lt_u + (get_local $8) + (tee_local $10 + (i32.load + (i32.const 192) ) ) - (call $_abort) ) - (if - (i32.ge_u - (get_local $8) - (tee_local $5 - (i32.add - (get_local $8) - (get_local $2) - ) + (call $_abort) + ) + (if + (i32.ge_u + (get_local $8) + (tee_local $5 + (i32.add + (get_local $8) + (get_local $2) ) ) - (call $_abort) ) - (set_local $9 - (i32.load offset=24 - (get_local $8) + (call $_abort) + ) + (set_local $9 + (i32.load offset=24 + (get_local $8) + ) + ) + (if + (i32.eq + (tee_local $0 + (i32.load offset=12 + (get_local $8) + ) ) + (get_local $8) ) - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $8) + (block $do-once4 + (if + (i32.eqz + (tee_local $1 + (i32.load + (tee_local $0 + (i32.add + (get_local $8) + (i32.const 20) + ) + ) + ) ) ) - (get_local $8) - ) - (block $do-once4 - (if + (br_if $do-once4 (i32.eqz (tee_local $1 (i32.load (tee_local $0 (i32.add (get_local $8) - (i32.const 20) + (i32.const 16) ) ) ) ) ) - (br_if $do-once4 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) + ) + ) + (loop $while-in7 + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 20) ) ) ) ) - ) - (loop $while-in7 - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) + (block + (set_local $1 + (get_local $7) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in7) + (set_local $0 + (get_local $11) ) + (br $while-in7) ) - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 16) - ) + ) + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 16) ) ) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in7) + ) + (block + (set_local $1 + (get_local $7) + ) + (set_local $0 + (get_local $11) ) + (br $while-in7) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $0) + (get_local $10) + ) + (call $_abort) + (block + (i32.store (get_local $0) - (get_local $10) + (i32.const 0) ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $4 - (get_local $1) - ) + (set_local $4 + (get_local $1) ) ) ) - (block - (if - (i32.lt_u - (tee_local $11 - (i32.load offset=8 - (get_local $8) - ) + ) + (block + (if + (i32.lt_u + (tee_local $11 + (i32.load offset=8 + (get_local $8) ) - (get_local $10) ) - (call $_abort) + (get_local $10) ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.ne + (i32.load + (tee_local $7 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $8) ) - (call $_abort) + (get_local $8) ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 8) ) ) - (get_local $8) ) - (block - (i32.store - (get_local $7) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $11) - ) - (set_local $4 - (get_local $0) - ) + (get_local $8) + ) + (block + (i32.store + (get_local $7) + (get_local $0) + ) + (i32.store + (get_local $1) + (get_local $11) + ) + (set_local $4 + (get_local $0) ) - (call $_abort) ) + (call $_abort) ) ) - (if - (get_local $9) - (block $do-once8 - (if - (i32.eq - (get_local $8) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $8) - ) + ) + (if + (get_local $9) + (block $do-once8 + (if + (i32.eq + (get_local $8) + (i32.load + (tee_local $0 + (i32.add + (i32.shl + (tee_local $1 + (i32.load offset=28 + (get_local $8) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) ) ) - (block - (i32.store - (get_local $0) + ) + (block + (i32.store + (get_local $0) + (get_local $4) + ) + (if + (i32.eqz (get_local $4) ) - (if - (i32.eqz - (get_local $4) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) + (block + (i32.store + (i32.const 180) + (i32.and + (i32.load + (i32.const 180) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) ) + (i32.const -1) ) ) - (br $do-once8) ) + (br $do-once8) ) ) - (block - (if - (i32.lt_u - (get_local $9) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $9) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $9) - (i32.const 16) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $9) + (i32.const 16) ) ) - (get_local $8) - ) - (i32.store - (get_local $0) - (get_local $4) - ) - (i32.store offset=20 - (get_local $9) - (get_local $4) ) + (get_local $8) ) - (br_if $do-once8 - (i32.eqz - (get_local $4) - ) + (i32.store + (get_local $0) + (get_local $4) + ) + (i32.store offset=20 + (get_local $9) + (get_local $4) ) ) - ) - (if - (i32.lt_u - (get_local $4) - (tee_local $0 - (i32.load - (i32.const 192) - ) + (br_if $do-once8 + (i32.eqz + (get_local $4) ) ) - (call $_abort) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $4) - (get_local $9) + (tee_local $0 + (i32.load + (i32.const 192) + ) + ) + ) + (call $_abort) + ) + (i32.store offset=24 + (get_local $4) + (get_local $9) + ) + (if + (tee_local $1 + (i32.load offset=16 + (get_local $8) + ) ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $8) - ) + (i32.lt_u + (get_local $1) + (get_local $0) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=16 + (get_local $4) (get_local $1) - (get_local $0) ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $4) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $4) - ) + (i32.store offset=24 + (get_local $1) + (get_local $4) ) ) ) + ) + (if + (tee_local $0 + (i32.load offset=20 + (get_local $8) + ) + ) (if - (tee_local $0 - (i32.load offset=20 - (get_local $8) + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 192) ) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=20 + (get_local $4) (get_local $0) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $4) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $4) - ) + (i32.store offset=24 + (get_local $0) + (get_local $4) ) ) ) ) ) - (if - (i32.lt_u - (get_local $6) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $8) - (i32.or - (tee_local $0 - (i32.add - (get_local $6) - (get_local $2) - ) - ) - (i32.const 3) - ) - ) - (i32.store + ) + (if + (i32.lt_u + (get_local $6) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $8) + (i32.or (tee_local $0 (i32.add - (i32.add - (get_local $8) - (get_local $0) - ) - (i32.const 4) + (get_local $6) + (get_local $2) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $8) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - ) - (block - (i32.store offset=4 - (get_local $8) - (i32.or - (get_local $2) - (i32.const 3) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) - (i32.store offset=4 + ) + ) + (block + (i32.store offset=4 + (get_local $8) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $5) + (i32.or + (get_local $6) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $5) - (i32.or - (get_local $6) - (i32.const 1) - ) + (get_local $6) ) - (i32.store - (i32.add - (get_local $5) - (get_local $6) + (get_local $6) + ) + (if + (tee_local $0 + (i32.load + (i32.const 184) ) - (get_local $6) ) - (if - (tee_local $0 + (block + (set_local $4 (i32.load - (i32.const 184) + (i32.const 196) ) ) - (block - (set_local $4 - (i32.load - (i32.const 196) + (set_local $2 + (i32.add + (i32.shl + (tee_local $0 + (i32.shr_u + (get_local $0) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 216) ) - (set_local $2 - (i32.add + ) + (if + (i32.and + (tee_local $1 + (i32.load + (i32.const 176) + ) + ) + (tee_local $0 (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $0) ) - (i32.const 216) ) ) (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 176) - ) - ) + (i32.lt_u (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 8) - ) + (i32.load + (tee_local $1 + (i32.add + (get_local $2) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $12 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $1) - (get_local $0) - ) - ) (set_local $12 - (i32.add - (get_local $2) - (i32.const 8) - ) + (get_local $1) ) (set_local $3 - (get_local $2) + (get_local $0) ) ) ) - (i32.store - (get_local $12) - (get_local $4) - ) - (i32.store offset=12 - (get_local $3) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $3) - ) - (i32.store offset=12 - (get_local $4) - (get_local $2) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $1) + (get_local $0) + ) + ) + (set_local $12 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + (set_local $3 + (get_local $2) + ) ) ) - ) - (i32.store - (i32.const 184) - (get_local $6) - ) - (i32.store - (i32.const 196) - (get_local $5) + (i32.store + (get_local $12) + (get_local $4) + ) + (i32.store offset=12 + (get_local $3) + (get_local $4) + ) + (i32.store offset=8 + (get_local $4) + (get_local $3) + ) + (i32.store offset=12 + (get_local $4) + (get_local $2) + ) ) ) - ) - (return - (i32.add - (get_local $8) - (i32.const 8) + (i32.store + (i32.const 184) + (get_local $6) + ) + (i32.store + (i32.const 196) + (get_local $5) ) ) ) - (get_local $2) + (return + (i32.add + (get_local $8) + (i32.const 8) + ) + ) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (set_local $2 - (i32.and - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 11) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $0) + (i32.const -65) + ) + (i32.const -1) + (block $do-once (result i32) + (set_local $2 + (i32.and + (tee_local $0 + (i32.add + (get_local $0) + (i32.const 11) ) - (i32.const -8) ) + (i32.const -8) ) - (if (result i32) - (tee_local $18 - (i32.load - (i32.const 180) - ) + ) + (if (result i32) + (tee_local $18 + (i32.load + (i32.const 180) ) - (block (result i32) - (set_local $14 + ) + (block (result i32) + (set_local $14 + (if (result i32) + (tee_local $0 + (i32.shr_u + (get_local $0) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 8) - ) + (i32.gt_u + (get_local $2) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $2) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $2) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $2) + (i32.add + (tee_local $0 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $0) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $0) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) + (get_local $3) + ) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $1) + (get_local $0) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $1) + (get_local $0) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $0) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (set_local $3 - (i32.sub - (i32.const 0) - (get_local $2) - ) + ) + (set_local $3 + (i32.sub + (i32.const 0) + (get_local $2) ) - (block $__rjto$3 - (block $__rjti$3 - (if - (tee_local $0 - (i32.load offset=480 - (i32.shl - (get_local $14) - (i32.const 2) - ) + ) + (block $__rjto$3 + (block $__rjti$3 + (if + (tee_local $0 + (i32.load offset=480 + (i32.shl + (get_local $14) + (i32.const 2) ) ) - (block - (set_local $9 - (i32.shl - (get_local $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $14) - (i32.const 1) - ) - ) - (i32.eq + ) + (block + (set_local $9 + (i32.shl + (get_local $2) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $14) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $14) + (i32.const 31) + ) ) ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $4 - (i32.sub - (tee_local $12 - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (set_local $1 + (i32.const 0) + ) + (loop $while-in14 + (if + (i32.lt_u + (tee_local $4 + (i32.sub + (tee_local $12 + (i32.and + (i32.load offset=4 + (get_local $0) ) + (i32.const -8) ) - (get_local $2) ) + (get_local $2) ) - (get_local $3) ) - (set_local $1 - (if (result i32) - (i32.eq - (get_local $12) - (get_local $2) - ) - (block - (set_local $1 - (get_local $4) - ) - (set_local $3 - (get_local $0) - ) - (br $__rjti$3) + (get_local $3) + ) + (set_local $1 + (if (result i32) + (i32.eq + (get_local $12) + (get_local $2) + ) + (block + (set_local $1 + (get_local $4) ) - (block (result i32) - (set_local $3 - (get_local $4) - ) + (set_local $3 (get_local $0) ) + (br $__rjti$3) + ) + (block (result i32) + (set_local $3 + (get_local $4) + ) + (get_local $0) ) ) ) - (set_local $0 - (select - (get_local $5) - (tee_local $4 - (i32.load offset=20 - (get_local $0) - ) + ) + (set_local $0 + (select + (get_local $5) + (tee_local $4 + (i32.load offset=20 + (get_local $0) ) - (i32.or - (i32.eqz - (get_local $4) - ) - (i32.eq - (get_local $4) - (tee_local $12 - (i32.load + ) + (i32.or + (i32.eqz + (get_local $4) + ) + (i32.eq + (get_local $4) + (tee_local $12 + (i32.load + (i32.add (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $9) - (i32.const 31) - ) - (i32.const 2) + (get_local $0) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $9) + (i32.const 31) ) + (i32.const 2) ) ) ) @@ -9061,138 +9059,124 @@ ) ) ) - (set_local $4 - (i32.shl - (get_local $9) - (i32.xor - (tee_local $5 - (i32.eqz - (get_local $12) - ) + ) + (set_local $4 + (i32.shl + (get_local $9) + (i32.xor + (tee_local $5 + (i32.eqz + (get_local $12) ) - (i32.const 1) ) + (i32.const 1) ) ) - (set_local $0 - (if (result i32) - (get_local $5) - (block (result i32) - (set_local $4 - (get_local $0) - ) - (get_local $1) + ) + (set_local $0 + (if (result i32) + (get_local $5) + (block (result i32) + (set_local $4 + (get_local $0) ) - (block - (set_local $5 - (get_local $0) - ) - (set_local $9 - (get_local $4) - ) - (set_local $0 - (get_local $12) - ) - (br $while-in14) + (get_local $1) + ) + (block + (set_local $5 + (get_local $0) + ) + (set_local $9 + (get_local $4) + ) + (set_local $0 + (get_local $12) ) + (br $while-in14) ) ) ) ) - (set_local $0 - (i32.const 0) - ) ) - (if - (i32.eqz - (i32.or - (get_local $4) - (get_local $0) - ) + (set_local $0 + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.or + (get_local $4) + (get_local $0) ) - (block - (drop - (br_if $do-once - (get_local $2) - (i32.eqz - (tee_local $1 - (i32.and - (get_local $18) - (i32.or - (tee_local $1 - (i32.shl - (i32.const 2) - (get_local $14) - ) - ) - (i32.sub - (i32.const 0) - (get_local $1) + ) + (block + (drop + (br_if $do-once + (get_local $2) + (i32.eqz + (tee_local $1 + (i32.and + (get_local $18) + (i32.or + (tee_local $1 + (i32.shl + (i32.const 2) + (get_local $14) ) ) + (i32.sub + (i32.const 0) + (get_local $1) + ) ) ) ) ) ) - (set_local $12 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.add - (i32.and + ) + (set_local $12 + (i32.and + (i32.shr_u + (tee_local $1 + (i32.add + (i32.and + (get_local $1) + (i32.sub + (i32.const 0) (get_local $1) - (i32.sub - (i32.const 0) - (get_local $1) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $4 - (i32.load offset=480 - (i32.shl - (i32.add + ) + (set_local $4 + (i32.load offset=480 + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $1 - (i32.and - (i32.shr_u - (tee_local $4 - (i32.shr_u - (get_local $1) - (get_local $12) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $12) - ) (tee_local $1 (i32.and (i32.shr_u (tee_local $4 (i32.shr_u - (get_local $4) (get_local $1) + (get_local $12) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $12) ) (tee_local $1 (i32.and @@ -9203,9 +9187,9 @@ (get_local $1) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -9220,1048 +9204,1064 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $4) - (get_local $1) + (tee_local $1 + (i32.and + (i32.shr_u + (tee_local $4 + (i32.shr_u + (get_local $4) + (get_local $1) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $4) + (get_local $1) + ) ) + (i32.const 2) ) ) ) ) - (set_local $4 - (if (result i32) - (get_local $4) - (block - (set_local $1 - (get_local $3) - ) - (set_local $3 - (get_local $4) - ) - (br $__rjti$3) + ) + (set_local $4 + (if (result i32) + (get_local $4) + (block + (set_local $1 + (get_local $3) ) - (get_local $0) + (set_local $3 + (get_local $4) + ) + (br $__rjti$3) ) + (get_local $0) ) - (br $__rjto$3) ) - (loop $while-in16 - (set_local $12 - (i32.lt_u - (tee_local $4 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const -8) + (br $__rjto$3) + ) + (loop $while-in16 + (set_local $12 + (i32.lt_u + (tee_local $4 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $3) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $1) ) + (get_local $1) ) - (set_local $1 - (select - (get_local $4) - (get_local $1) - (get_local $12) - ) + ) + (set_local $1 + (select + (get_local $4) + (get_local $1) + (get_local $12) ) - (set_local $0 - (select + ) + (set_local $0 + (select + (get_local $3) + (get_local $0) + (get_local $12) + ) + ) + (if + (tee_local $4 + (i32.load offset=16 (get_local $3) - (get_local $0) - (get_local $12) ) ) - (if - (tee_local $4 - (i32.load offset=16 - (get_local $3) - ) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $while-in16) + (block + (set_local $3 + (get_local $4) ) + (br $while-in16) ) - (br_if $while-in16 - (tee_local $3 - (i32.load offset=20 - (get_local $3) - ) + ) + (br_if $while-in16 + (tee_local $3 + (i32.load offset=20 + (get_local $3) ) ) ) - (set_local $4 - (get_local $0) - ) - (set_local $3 - (get_local $1) - ) ) + (set_local $4 + (get_local $0) + ) + (set_local $3 + (get_local $1) + ) + ) + (if (result i32) + (get_local $4) (if (result i32) - (get_local $4) - (if (result i32) - (i32.lt_u - (get_local $3) - (i32.sub - (i32.load - (i32.const 184) - ) - (get_local $2) + (i32.lt_u + (get_local $3) + (i32.sub + (i32.load + (i32.const 184) ) + (get_local $2) ) - (block - (if - (i32.lt_u - (get_local $4) - (tee_local $8 - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $4) + (tee_local $8 + (i32.load + (i32.const 192) ) ) - (call $_abort) ) - (if - (i32.ge_u - (get_local $4) - (tee_local $5 - (i32.add - (get_local $4) - (get_local $2) - ) + (call $_abort) + ) + (if + (i32.ge_u + (get_local $4) + (tee_local $5 + (i32.add + (get_local $4) + (get_local $2) ) ) - (call $_abort) ) - (set_local $12 - (i32.load offset=24 - (get_local $4) + (call $_abort) + ) + (set_local $12 + (i32.load offset=24 + (get_local $4) + ) + ) + (if + (i32.eq + (tee_local $0 + (i32.load offset=12 + (get_local $4) + ) ) + (get_local $4) ) - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $4) + (block $do-once17 + (if + (i32.eqz + (tee_local $1 + (i32.load + (tee_local $0 + (i32.add + (get_local $4) + (i32.const 20) + ) + ) + ) ) ) - (get_local $4) - ) - (block $do-once17 - (if + (br_if $do-once17 (i32.eqz (tee_local $1 (i32.load (tee_local $0 (i32.add (get_local $4) - (i32.const 20) + (i32.const 16) ) ) ) ) ) - (br_if $do-once17 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 16) - ) - ) + ) + ) + (loop $while-in20 + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 20) ) ) ) ) - ) - (loop $while-in20 - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) + (block + (set_local $1 + (get_local $7) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in20) + (set_local $0 + (get_local $11) ) + (br $while-in20) ) - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 16) - ) + ) + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 16) ) ) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in20) + ) + (block + (set_local $1 + (get_local $7) + ) + (set_local $0 + (get_local $11) ) + (br $while-in20) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $0) + (get_local $8) + ) + (call $_abort) + (block + (i32.store (get_local $0) - (get_local $8) + (i32.const 0) ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $10 - (get_local $1) - ) + (set_local $10 + (get_local $1) ) ) ) - (block - (if - (i32.lt_u - (tee_local $11 - (i32.load offset=8 - (get_local $4) - ) + ) + (block + (if + (i32.lt_u + (tee_local $11 + (i32.load offset=8 + (get_local $4) ) - (get_local $8) ) - (call $_abort) + (get_local $8) ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.ne + (i32.load + (tee_local $7 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $4) ) - (call $_abort) + (get_local $4) ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 8) ) ) - (get_local $4) ) - (block - (i32.store - (get_local $7) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $11) - ) - (set_local $10 - (get_local $0) - ) + (get_local $4) + ) + (block + (i32.store + (get_local $7) + (get_local $0) + ) + (i32.store + (get_local $1) + (get_local $11) + ) + (set_local $10 + (get_local $0) ) - (call $_abort) ) + (call $_abort) ) ) - (if - (get_local $12) - (block $do-once21 - (if - (i32.eq - (get_local $4) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $4) - ) + ) + (if + (get_local $12) + (block $do-once21 + (if + (i32.eq + (get_local $4) + (i32.load + (tee_local $0 + (i32.add + (i32.shl + (tee_local $1 + (i32.load offset=28 + (get_local $4) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) ) ) - (block - (i32.store - (get_local $0) + ) + (block + (i32.store + (get_local $0) + (get_local $10) + ) + (if + (i32.eqz (get_local $10) ) - (if - (i32.eqz - (get_local $10) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) + (block + (i32.store + (i32.const 180) + (i32.and + (i32.load + (i32.const 180) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) ) + (i32.const -1) ) ) - (br $do-once21) ) + (br $do-once21) ) ) - (block - (if - (i32.lt_u - (get_local $12) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $12) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $12) - (i32.const 16) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $12) + (i32.const 16) ) ) - (get_local $4) - ) - (i32.store - (get_local $0) - (get_local $10) - ) - (i32.store offset=20 - (get_local $12) - (get_local $10) ) + (get_local $4) ) - (br_if $do-once21 - (i32.eqz - (get_local $10) - ) + (i32.store + (get_local $0) + (get_local $10) + ) + (i32.store offset=20 + (get_local $12) + (get_local $10) ) ) - ) - (if - (i32.lt_u - (get_local $10) - (tee_local $0 - (i32.load - (i32.const 192) - ) + (br_if $do-once21 + (i32.eqz + (get_local $10) ) ) - (call $_abort) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $10) - (get_local $12) + (tee_local $0 + (i32.load + (i32.const 192) + ) + ) + ) + (call $_abort) + ) + (i32.store offset=24 + (get_local $10) + (get_local $12) + ) + (if + (tee_local $1 + (i32.load offset=16 + (get_local $4) + ) ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $4) - ) + (i32.lt_u + (get_local $1) + (get_local $0) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=16 + (get_local $10) (get_local $1) - (get_local $0) ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $10) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $10) - ) + (i32.store offset=24 + (get_local $1) + (get_local $10) ) ) ) + ) + (if + (tee_local $0 + (i32.load offset=20 + (get_local $4) + ) + ) (if - (tee_local $0 - (i32.load offset=20 - (get_local $4) + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 192) ) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=20 + (get_local $10) (get_local $0) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $10) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $10) - ) + (i32.store offset=24 + (get_local $0) + (get_local $10) ) ) ) ) ) - (if - (i32.lt_u - (get_local $3) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $4) - (i32.or - (tee_local $0 - (i32.add - (get_local $3) - (get_local $2) - ) - ) - (i32.const 3) - ) - ) - (i32.store + ) + (if + (i32.lt_u + (get_local $3) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $4) + (i32.or (tee_local $0 (i32.add - (i32.add - (get_local $4) - (get_local $0) - ) - (i32.const 4) + (get_local $3) + (get_local $2) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $4) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - ) - (block $do-once25 - (i32.store offset=4 - (get_local $4) - (i32.or - (get_local $2) - (i32.const 3) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) - (i32.store offset=4 + ) + ) + (block $do-once25 + (i32.store offset=4 + (get_local $4) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $5) + (i32.or + (get_local $3) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $5) - (i32.or - (get_local $3) - (i32.const 1) - ) + (get_local $3) ) - (i32.store - (i32.add - (get_local $5) - (get_local $3) - ) + (get_local $3) + ) + (set_local $0 + (i32.shr_u (get_local $3) + (i32.const 3) ) - (set_local $0 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) + ) + (if + (i32.lt_u + (get_local $3) + (i32.const 256) ) - (if - (i32.lt_u - (get_local $3) - (i32.const 256) + (block + (set_local $3 + (i32.add + (i32.shl + (get_local $0) + (i32.const 3) + ) + (i32.const 216) + ) ) - (block - (set_local $3 - (i32.add + (if + (i32.and + (tee_local $1 + (i32.load + (i32.const 176) + ) + ) + (tee_local $0 (i32.shl + (i32.const 1) (get_local $0) - (i32.const 3) ) - (i32.const 216) ) ) (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 176) - ) - ) + (i32.lt_u (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $3) - (i32.const 8) - ) + (i32.load + (tee_local $1 + (i32.add + (get_local $3) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $13 - (get_local $1) - ) - (set_local $6 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $1) - (get_local $0) - ) - ) (set_local $13 - (i32.add - (get_local $3) - (i32.const 8) - ) + (get_local $1) ) (set_local $6 - (get_local $3) + (get_local $0) ) ) ) - (i32.store - (get_local $13) - (get_local $5) - ) - (i32.store offset=12 - (get_local $6) - (get_local $5) - ) - (i32.store offset=8 - (get_local $5) - (get_local $6) - ) - (i32.store offset=12 - (get_local $5) - (get_local $3) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $1) + (get_local $0) + ) + ) + (set_local $13 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + (set_local $6 + (get_local $3) + ) ) - (br $do-once25) ) + (i32.store + (get_local $13) + (get_local $5) + ) + (i32.store offset=12 + (get_local $6) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $6) + ) + (i32.store offset=12 + (get_local $5) + (get_local $3) + ) + (br $do-once25) ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $7 + ) + (set_local $2 + (i32.add + (i32.shl + (tee_local $7 + (if (result i32) + (tee_local $0 + (i32.shr_u + (get_local $3) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $0 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) + (i32.gt_u + (get_local $3) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $3) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $3) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $3) + (i32.add + (tee_local $0 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $0) + (tee_local $2 + (i32.and + (i32.shr_u + (i32.add + (get_local $0) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $2) ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) + (get_local $2) + ) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $1) + (get_local $0) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $1) + (get_local $0) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $0) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) - (i32.store offset=28 - (get_local $5) - (get_local $7) - ) - (i32.store offset=4 - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 16) - ) + ) + (i32.store offset=28 + (get_local $5) + (get_local $7) + ) + (i32.store offset=4 + (tee_local $0 + (i32.add + (get_local $5) + (i32.const 16) ) - (i32.const 0) ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 180) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $7) - ) + (i32.const 0) + ) + (i32.store + (get_local $0) + (i32.const 0) + ) + (if + (i32.eqz + (i32.and + (tee_local $1 + (i32.load + (i32.const 180) ) ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (get_local $1) - (get_local $0) + (tee_local $0 + (i32.shl + (i32.const 1) + (get_local $7) ) ) - (i32.store - (get_local $2) - (get_local $5) - ) - (i32.store offset=24 - (get_local $5) - (get_local $2) - ) - (i32.store offset=12 - (get_local $5) - (get_local $5) - ) - (i32.store offset=8 - (get_local $5) - (get_local $5) + ) + ) + (block + (i32.store + (i32.const 180) + (i32.or + (get_local $1) + (get_local $0) ) - (br $do-once25) ) + (i32.store + (get_local $2) + (get_local $5) + ) + (i32.store offset=24 + (get_local $5) + (get_local $2) + ) + (i32.store offset=12 + (get_local $5) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $5) + ) + (br $do-once25) ) - (set_local $7 - (i32.shl - (get_local $3) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $7) - (i32.const 1) - ) - ) - (i32.eq + ) + (set_local $7 + (i32.shl + (get_local $3) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $7) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $7) + (i32.const 31) + ) ) ) - (set_local $0 - (i32.load - (get_local $2) - ) + ) + (set_local $0 + (i32.load + (get_local $2) ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (block $__rjto$1 + (block $__rjti$1 + (loop $while-in28 + (br_if $__rjti$1 + (i32.eq + (i32.and + (i32.load offset=4 + (get_local $0) ) - (get_local $3) + (i32.const -8) ) + (get_local $3) ) - (set_local $2 - (i32.shl - (get_local $7) - (i32.const 1) - ) + ) + (set_local $2 + (i32.shl + (get_local $7) + (i32.const 1) ) - (if - (tee_local $1 - (i32.load - (tee_local $7 + ) + (if + (tee_local $1 + (i32.load + (tee_local $7 + (i32.add (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $7) - (i32.const 31) - ) - (i32.const 2) + (get_local $0) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $7) + (i32.const 31) ) + (i32.const 2) ) ) ) ) - (block - (set_local $7 - (get_local $2) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in28) - ) ) - ) - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) (block - (i32.store - (get_local $7) - (get_local $5) - ) - (i32.store offset=24 - (get_local $5) - (get_local $0) - ) - (i32.store offset=12 - (get_local $5) - (get_local $5) + (set_local $7 + (get_local $2) ) - (i32.store offset=8 - (get_local $5) - (get_local $5) + (set_local $0 + (get_local $1) ) - (br $do-once25) + (br $while-in28) ) ) - (br $__rjto$1) ) (if - (i32.and - (i32.ge_u - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) + (i32.lt_u + (get_local $7) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store offset=12 - (get_local $2) - (get_local $5) - ) (i32.store - (get_local $3) + (get_local $7) (get_local $5) ) - (i32.store offset=8 + (i32.store offset=24 (get_local $5) - (get_local $2) + (get_local $0) ) (i32.store offset=12 (get_local $5) - (get_local $0) + (get_local $5) ) - (i32.store offset=24 + (i32.store offset=8 + (get_local $5) (get_local $5) - (i32.const 0) ) + (br $do-once25) ) - (call $_abort) ) + (br $__rjto$1) + ) + (if + (i32.and + (i32.ge_u + (tee_local $2 + (i32.load + (tee_local $3 + (i32.add + (get_local $0) + (i32.const 8) + ) + ) + ) + ) + (tee_local $1 + (i32.load + (i32.const 192) + ) + ) + ) + (i32.ge_u + (get_local $0) + (get_local $1) + ) + ) + (block + (i32.store offset=12 + (get_local $2) + (get_local $5) + ) + (i32.store + (get_local $3) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $2) + ) + (i32.store offset=12 + (get_local $5) + (get_local $0) + ) + (i32.store offset=24 + (get_local $5) + (i32.const 0) + ) + ) + (call $_abort) ) ) ) - (return - (i32.add - (get_local $4) - (i32.const 8) - ) + ) + (return + (i32.add + (get_local $4) + (i32.const 8) ) ) - (get_local $2) ) (get_local $2) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) ) ) ) - (if - (i32.ge_u - (tee_local $1 - (i32.load - (i32.const 184) - ) + ) + (if + (i32.ge_u + (tee_local $1 + (i32.load + (i32.const 184) ) - (get_local $0) ) - (block - (set_local $2 - (i32.load - (i32.const 196) + (get_local $0) + ) + (block + (set_local $2 + (i32.load + (i32.const 196) + ) + ) + (if + (i32.gt_u + (tee_local $3 + (i32.sub + (get_local $1) + (get_local $0) + ) ) + (i32.const 15) ) - (if - (i32.gt_u - (tee_local $3 - (i32.sub - (get_local $1) + (block + (i32.store + (i32.const 196) + (tee_local $1 + (i32.add + (get_local $2) (get_local $0) ) ) - (i32.const 15) ) - (block - (i32.store - (i32.const 196) - (tee_local $1 - (i32.add - (get_local $2) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 184) + (i32.store + (i32.const 184) + (get_local $3) + ) + (i32.store offset=4 + (get_local $1) + (i32.or (get_local $3) + (i32.const 1) ) - (i32.store offset=4 + ) + (i32.store + (i32.add (get_local $1) - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $1) - (get_local $3) - ) (get_local $3) ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) + (get_local $3) ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) + (i32.store offset=4 + (get_local $2) + (i32.or + (get_local $0) + (i32.const 3) ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $1) - (i32.const 3) - ) + ) + ) + (block + (i32.store + (i32.const 184) + (i32.const 0) + ) + (i32.store + (i32.const 196) + (i32.const 0) + ) + (i32.store offset=4 + (get_local $2) + (i32.or + (get_local $1) + (i32.const 3) ) - (i32.store - (tee_local $0 + ) + (i32.store + (tee_local $0 + (i32.add (i32.add - (i32.add - (get_local $2) - (get_local $1) - ) - (i32.const 4) + (get_local $2) + (get_local $1) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) ) ) - (return - (i32.add - (get_local $2) - (i32.const 8) - ) + ) + (return + (i32.add + (get_local $2) + (i32.const 8) ) ) ) + ) + (block $folding-inner0 (br_if $folding-inner0 (i32.gt_u (tee_local $1 diff --git a/test/emcc_hello_world.fromasm.clamp b/test/emcc_hello_world.fromasm.clamp index 244f8adba..91f1fedd4 100644 --- a/test/emcc_hello_world.fromasm.clamp +++ b/test/emcc_hello_world.fromasm.clamp @@ -7639,274 +7639,258 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (block $folding-inner0 - (set_local $0 - (if (result i32) - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (tee_local $10 - (i32.shr_u - (tee_local $6 - (i32.load - (i32.const 176) - ) + (set_local $0 + (if (result i32) + (i32.lt_u + (get_local $0) + (i32.const 245) + ) + (block (result i32) + (if + (i32.and + (tee_local $10 + (i32.shr_u + (tee_local $6 + (i32.load + (i32.const 176) ) - (tee_local $13 - (i32.shr_u - (tee_local $2 - (select - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u + ) + (tee_local $13 + (i32.shr_u + (tee_local $2 + (select + (i32.const 16) + (i32.and + (i32.add (get_local $0) (i32.const 11) ) + (i32.const -8) + ) + (i32.lt_u + (get_local $0) + (i32.const 11) ) ) - (i32.const 3) ) + (i32.const 3) ) ) ) - (i32.const 3) ) - (block - (set_local $11 - (i32.load - (tee_local $1 - (i32.add - (tee_local $7 - (i32.load - (tee_local $3 - (i32.add - (tee_local $2 - (i32.add - (i32.shl - (tee_local $4 - (i32.add - (i32.xor - (i32.and - (get_local $10) - (i32.const 1) - ) + (i32.const 3) + ) + (block + (set_local $11 + (i32.load + (tee_local $1 + (i32.add + (tee_local $7 + (i32.load + (tee_local $3 + (i32.add + (tee_local $2 + (i32.add + (i32.shl + (tee_local $4 + (i32.add + (i32.xor + (i32.and + (get_local $10) (i32.const 1) ) - (get_local $13) + (i32.const 1) ) + (get_local $13) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $2) - (get_local $11) - ) - (i32.store - (i32.const 176) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $2) + (get_local $11) + ) + (i32.store + (i32.const 176) + (i32.and + (get_local $6) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $4) ) + (i32.const -1) ) ) - (block - (if - (i32.lt_u - (get_local $11) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $11) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $7) ) - (block - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (get_local $3) - (get_local $11) - ) - ) - (call $_abort) + (get_local $7) ) - ) - ) - (i32.store offset=4 - (get_local $7) - (i32.or - (tee_local $0 - (i32.shl - (get_local $4) - (i32.const 3) + (block + (i32.store + (get_local $0) + (get_local $2) + ) + (i32.store + (get_local $3) + (get_local $11) ) ) - (i32.const 3) + (call $_abort) ) ) - (i32.store + ) + (i32.store offset=4 + (get_local $7) + (i32.or (tee_local $0 - (i32.add - (i32.add - (get_local $7) - (get_local $0) - ) - (i32.const 4) + (i32.shl + (get_local $4) + (i32.const 3) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $7) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - (return - (get_local $1) + (i32.or + (i32.load + (get_local $0) + ) + (i32.const 1) ) ) + (return + (get_local $1) + ) ) - (if (result i32) - (i32.gt_u - (get_local $2) - (tee_local $0 - (i32.load - (i32.const 184) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $2) + (tee_local $0 + (i32.load + (i32.const 184) ) ) - (block (result i32) - (if - (get_local $10) - (block - (set_local $7 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.add - (i32.and - (tee_local $3 - (i32.and - (i32.shl - (get_local $10) - (get_local $13) - ) - (i32.or - (tee_local $3 - (i32.shl - (i32.const 2) - (get_local $13) - ) - ) - (i32.sub - (i32.const 0) - (get_local $3) + ) + (block (result i32) + (if + (get_local $10) + (block + (set_local $7 + (i32.and + (i32.shr_u + (tee_local $3 + (i32.add + (i32.and + (tee_local $3 + (i32.and + (i32.shl + (get_local $10) + (get_local $13) + ) + (i32.or + (tee_local $3 + (i32.shl + (i32.const 2) + (get_local $13) ) ) + (i32.sub + (i32.const 0) + (get_local $3) + ) ) ) - (i32.sub - (i32.const 0) - (get_local $3) - ) ) - (i32.const -1) + (i32.sub + (i32.const 0) + (get_local $3) + ) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $10 - (i32.load - (tee_local $4 - (i32.add - (tee_local $8 - (i32.load - (tee_local $3 - (i32.add - (tee_local $7 - (i32.add - (i32.shl - (tee_local $11 - (i32.add + ) + (set_local $10 + (i32.load + (tee_local $4 + (i32.add + (tee_local $8 + (i32.load + (tee_local $3 + (i32.add + (tee_local $7 + (i32.add + (i32.shl + (tee_local $11 + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $3 - (i32.and - (i32.shr_u - (tee_local $4 - (i32.shr_u - (get_local $3) - (get_local $7) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $7) - ) (tee_local $3 (i32.and (i32.shr_u (tee_local $4 (i32.shr_u - (get_local $4) (get_local $3) + (get_local $7) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $7) ) (tee_local $3 (i32.and @@ -7917,9 +7901,9 @@ (get_local $3) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -7934,310 +7918,310 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $4) - (get_local $3) + (tee_local $3 + (i32.and + (i32.shr_u + (tee_local $4 + (i32.shr_u + (get_local $4) + (get_local $3) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) + (i32.shr_u + (get_local $4) + (get_local $3) + ) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $7) - (get_local $10) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $11) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $7) + (get_local $10) + ) + (block + (i32.store + (i32.const 176) + (i32.and + (get_local $6) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $11) ) + (i32.const -1) ) ) - (set_local $9 - (get_local $0) - ) ) - (block - (if - (i32.lt_u - (get_local $10) - (i32.load - (i32.const 192) - ) + (set_local $9 + (get_local $0) + ) + ) + (block + (if + (i32.lt_u + (get_local $10) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $10) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $10) + (i32.const 12) ) ) - (get_local $8) ) - (block - (i32.store - (get_local $0) - (get_local $7) - ) - (i32.store - (get_local $3) - (get_local $10) - ) - (set_local $9 - (i32.load - (i32.const 184) - ) + (get_local $8) + ) + (block + (i32.store + (get_local $0) + (get_local $7) + ) + (i32.store + (get_local $3) + (get_local $10) + ) + (set_local $9 + (i32.load + (i32.const 184) ) ) - (call $_abort) ) + (call $_abort) ) ) - (i32.store offset=4 - (get_local $8) - (i32.or + ) + (i32.store offset=4 + (get_local $8) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (tee_local $7 + (i32.add + (get_local $8) (get_local $2) - (i32.const 3) ) ) - (i32.store offset=4 - (tee_local $7 - (i32.add - (get_local $8) - (get_local $2) - ) - ) - (i32.or - (tee_local $11 - (i32.sub - (i32.shl - (get_local $11) - (i32.const 3) - ) - (get_local $2) + (i32.or + (tee_local $11 + (i32.sub + (i32.shl + (get_local $11) + (i32.const 3) ) + (get_local $2) ) - (i32.const 1) ) + (i32.const 1) ) - (i32.store - (i32.add - (get_local $7) - (get_local $11) - ) + ) + (i32.store + (i32.add + (get_local $7) (get_local $11) ) - (if - (get_local $9) - (block - (set_local $6 - (i32.load - (i32.const 196) - ) + (get_local $11) + ) + (if + (get_local $9) + (block + (set_local $6 + (i32.load + (i32.const 196) ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $9) - (i32.const 3) - ) + ) + (set_local $2 + (i32.add + (i32.shl + (tee_local $0 + (i32.shr_u + (get_local $9) + (i32.const 3) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (if - (i32.and - (tee_local $3 - (i32.load - (i32.const 176) - ) + ) + (if + (i32.and + (tee_local $3 + (i32.load + (i32.const 176) ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) + ) + (tee_local $0 + (i32.shl + (i32.const 1) + (get_local $0) ) ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $3 - (i32.add - (get_local $2) - (i32.const 8) - ) + ) + (if + (i32.lt_u + (tee_local $0 + (i32.load + (tee_local $3 + (i32.add + (get_local $2) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $5 - (get_local $3) - ) - (set_local $1 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $3) - (get_local $0) - ) - ) (set_local $5 - (i32.add - (get_local $2) - (i32.const 8) - ) + (get_local $3) ) (set_local $1 - (get_local $2) + (get_local $0) ) ) ) - (i32.store - (get_local $5) - (get_local $6) - ) - (i32.store offset=12 - (get_local $1) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $1) - ) - (i32.store offset=12 - (get_local $6) - (get_local $2) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $3) + (get_local $0) + ) + ) + (set_local $5 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + (set_local $1 + (get_local $2) + ) ) ) - ) - (i32.store - (i32.const 184) - (get_local $11) - ) - (i32.store - (i32.const 196) - (get_local $7) - ) - (return - (get_local $4) + (i32.store + (get_local $5) + (get_local $6) + ) + (i32.store offset=12 + (get_local $1) + (get_local $6) + ) + (i32.store offset=8 + (get_local $6) + (get_local $1) + ) + (i32.store offset=12 + (get_local $6) + (get_local $2) + ) ) ) + (i32.store + (i32.const 184) + (get_local $11) + ) + (i32.store + (i32.const 196) + (get_local $7) + ) + (return + (get_local $4) + ) ) - (if (result i32) - (tee_local $0 - (i32.load - (i32.const 180) - ) + ) + (if (result i32) + (tee_local $0 + (i32.load + (i32.const 180) ) - (block - (set_local $7 - (i32.and - (i32.shr_u - (tee_local $0 - (i32.add - (i32.and + ) + (block + (set_local $7 + (i32.and + (i32.shr_u + (tee_local $0 + (i32.add + (i32.and + (get_local $0) + (i32.sub + (i32.const 0) (get_local $0) - (i32.sub - (i32.const 0) - (get_local $0) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $11 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $0 - (i32.load offset=480 - (i32.shl - (i32.add + ) + (set_local $11 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $0 + (i32.load offset=480 + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $0) - (get_local $7) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $7) - ) (tee_local $0 (i32.and (i32.shr_u (tee_local $1 (i32.shr_u - (get_local $1) (get_local $0) + (get_local $7) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $7) ) (tee_local $0 (i32.and @@ -8248,9 +8232,9 @@ (get_local $0) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -8265,845 +8249,859 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $1) - (get_local $0) + (tee_local $0 + (i32.and + (i32.shr_u + (tee_local $1 + (i32.shr_u + (get_local $1) + (get_local $0) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $1) + (get_local $0) + ) ) + (i32.const 2) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (set_local $7 - (get_local $0) - ) - (loop $while-in - (block $while-out + ) + (set_local $7 + (get_local $0) + ) + (loop $while-in + (block $while-out + (if + (tee_local $1 + (i32.load offset=16 + (get_local $0) + ) + ) + (set_local $0 + (get_local $1) + ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $0) + (i32.eqz + (tee_local $0 + (i32.load offset=20 + (get_local $0) + ) ) ) - (set_local $0 - (get_local $1) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load offset=20 - (get_local $0) - ) - ) + (block + (set_local $6 + (get_local $11) ) - (block - (set_local $6 - (get_local $11) - ) - (set_local $8 - (get_local $7) - ) - (br $while-out) + (set_local $8 + (get_local $7) ) + (br $while-out) ) ) - (set_local $6 - (i32.lt_u - (tee_local $1 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (set_local $6 + (i32.lt_u + (tee_local $1 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $0) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $11) ) + (get_local $11) ) - (set_local $11 - (select - (get_local $1) - (get_local $11) - (get_local $6) - ) + ) + (set_local $11 + (select + (get_local $1) + (get_local $11) + (get_local $6) ) - (set_local $7 - (select - (get_local $0) - (get_local $7) - (get_local $6) - ) + ) + (set_local $7 + (select + (get_local $0) + (get_local $7) + (get_local $6) ) - (br $while-in) ) + (br $while-in) ) - (if - (i32.lt_u - (get_local $8) - (tee_local $10 - (i32.load - (i32.const 192) - ) + ) + (if + (i32.lt_u + (get_local $8) + (tee_local $10 + (i32.load + (i32.const 192) ) ) - (call $_abort) ) - (if - (i32.ge_u - (get_local $8) - (tee_local $5 - (i32.add - (get_local $8) - (get_local $2) - ) + (call $_abort) + ) + (if + (i32.ge_u + (get_local $8) + (tee_local $5 + (i32.add + (get_local $8) + (get_local $2) ) ) - (call $_abort) ) - (set_local $9 - (i32.load offset=24 - (get_local $8) + (call $_abort) + ) + (set_local $9 + (i32.load offset=24 + (get_local $8) + ) + ) + (if + (i32.eq + (tee_local $0 + (i32.load offset=12 + (get_local $8) + ) ) + (get_local $8) ) - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $8) + (block $do-once4 + (if + (i32.eqz + (tee_local $1 + (i32.load + (tee_local $0 + (i32.add + (get_local $8) + (i32.const 20) + ) + ) + ) ) ) - (get_local $8) - ) - (block $do-once4 - (if + (br_if $do-once4 (i32.eqz (tee_local $1 (i32.load (tee_local $0 (i32.add (get_local $8) - (i32.const 20) + (i32.const 16) ) ) ) ) ) - (br_if $do-once4 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) + ) + ) + (loop $while-in7 + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 20) ) ) ) ) - ) - (loop $while-in7 - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) + (block + (set_local $1 + (get_local $7) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in7) + (set_local $0 + (get_local $11) ) + (br $while-in7) ) - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 16) - ) + ) + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 16) ) ) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in7) + ) + (block + (set_local $1 + (get_local $7) + ) + (set_local $0 + (get_local $11) ) + (br $while-in7) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $0) + (get_local $10) + ) + (call $_abort) + (block + (i32.store (get_local $0) - (get_local $10) + (i32.const 0) ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $4 - (get_local $1) - ) + (set_local $4 + (get_local $1) ) ) ) - (block - (if - (i32.lt_u - (tee_local $11 - (i32.load offset=8 - (get_local $8) - ) + ) + (block + (if + (i32.lt_u + (tee_local $11 + (i32.load offset=8 + (get_local $8) ) - (get_local $10) ) - (call $_abort) + (get_local $10) ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.ne + (i32.load + (tee_local $7 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $8) ) - (call $_abort) + (get_local $8) ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 8) ) ) - (get_local $8) ) - (block - (i32.store - (get_local $7) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $11) - ) - (set_local $4 - (get_local $0) - ) + (get_local $8) + ) + (block + (i32.store + (get_local $7) + (get_local $0) + ) + (i32.store + (get_local $1) + (get_local $11) + ) + (set_local $4 + (get_local $0) ) - (call $_abort) ) + (call $_abort) ) ) - (if - (get_local $9) - (block $do-once8 - (if - (i32.eq - (get_local $8) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $8) - ) + ) + (if + (get_local $9) + (block $do-once8 + (if + (i32.eq + (get_local $8) + (i32.load + (tee_local $0 + (i32.add + (i32.shl + (tee_local $1 + (i32.load offset=28 + (get_local $8) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) ) ) - (block - (i32.store - (get_local $0) + ) + (block + (i32.store + (get_local $0) + (get_local $4) + ) + (if + (i32.eqz (get_local $4) ) - (if - (i32.eqz - (get_local $4) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) + (block + (i32.store + (i32.const 180) + (i32.and + (i32.load + (i32.const 180) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) ) + (i32.const -1) ) ) - (br $do-once8) ) + (br $do-once8) ) ) - (block - (if - (i32.lt_u - (get_local $9) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $9) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $9) - (i32.const 16) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $9) + (i32.const 16) ) ) - (get_local $8) - ) - (i32.store - (get_local $0) - (get_local $4) - ) - (i32.store offset=20 - (get_local $9) - (get_local $4) ) + (get_local $8) ) - (br_if $do-once8 - (i32.eqz - (get_local $4) - ) + (i32.store + (get_local $0) + (get_local $4) + ) + (i32.store offset=20 + (get_local $9) + (get_local $4) ) ) - ) - (if - (i32.lt_u - (get_local $4) - (tee_local $0 - (i32.load - (i32.const 192) - ) + (br_if $do-once8 + (i32.eqz + (get_local $4) ) ) - (call $_abort) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $4) - (get_local $9) + (tee_local $0 + (i32.load + (i32.const 192) + ) + ) + ) + (call $_abort) + ) + (i32.store offset=24 + (get_local $4) + (get_local $9) + ) + (if + (tee_local $1 + (i32.load offset=16 + (get_local $8) + ) ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $8) - ) + (i32.lt_u + (get_local $1) + (get_local $0) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=16 + (get_local $4) (get_local $1) - (get_local $0) ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $4) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $4) - ) + (i32.store offset=24 + (get_local $1) + (get_local $4) ) ) ) + ) + (if + (tee_local $0 + (i32.load offset=20 + (get_local $8) + ) + ) (if - (tee_local $0 - (i32.load offset=20 - (get_local $8) + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 192) ) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=20 + (get_local $4) (get_local $0) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $4) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $4) - ) + (i32.store offset=24 + (get_local $0) + (get_local $4) ) ) ) ) ) - (if - (i32.lt_u - (get_local $6) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $8) - (i32.or - (tee_local $0 - (i32.add - (get_local $6) - (get_local $2) - ) - ) - (i32.const 3) - ) - ) - (i32.store + ) + (if + (i32.lt_u + (get_local $6) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $8) + (i32.or (tee_local $0 (i32.add - (i32.add - (get_local $8) - (get_local $0) - ) - (i32.const 4) + (get_local $6) + (get_local $2) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $8) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - ) - (block - (i32.store offset=4 - (get_local $8) - (i32.or - (get_local $2) - (i32.const 3) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) - (i32.store offset=4 + ) + ) + (block + (i32.store offset=4 + (get_local $8) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $5) + (i32.or + (get_local $6) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $5) - (i32.or - (get_local $6) - (i32.const 1) - ) + (get_local $6) ) - (i32.store - (i32.add - (get_local $5) - (get_local $6) + (get_local $6) + ) + (if + (tee_local $0 + (i32.load + (i32.const 184) ) - (get_local $6) ) - (if - (tee_local $0 + (block + (set_local $4 (i32.load - (i32.const 184) + (i32.const 196) ) ) - (block - (set_local $4 - (i32.load - (i32.const 196) + (set_local $2 + (i32.add + (i32.shl + (tee_local $0 + (i32.shr_u + (get_local $0) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 216) ) - (set_local $2 - (i32.add + ) + (if + (i32.and + (tee_local $1 + (i32.load + (i32.const 176) + ) + ) + (tee_local $0 (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $0) ) - (i32.const 216) ) ) (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 176) - ) - ) + (i32.lt_u (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 8) - ) + (i32.load + (tee_local $1 + (i32.add + (get_local $2) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $12 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $1) - (get_local $0) - ) - ) (set_local $12 - (i32.add - (get_local $2) - (i32.const 8) - ) + (get_local $1) ) (set_local $3 - (get_local $2) + (get_local $0) ) ) ) - (i32.store - (get_local $12) - (get_local $4) - ) - (i32.store offset=12 - (get_local $3) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $3) - ) - (i32.store offset=12 - (get_local $4) - (get_local $2) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $1) + (get_local $0) + ) + ) + (set_local $12 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + (set_local $3 + (get_local $2) + ) ) ) - ) - (i32.store - (i32.const 184) - (get_local $6) - ) - (i32.store - (i32.const 196) - (get_local $5) + (i32.store + (get_local $12) + (get_local $4) + ) + (i32.store offset=12 + (get_local $3) + (get_local $4) + ) + (i32.store offset=8 + (get_local $4) + (get_local $3) + ) + (i32.store offset=12 + (get_local $4) + (get_local $2) + ) ) ) - ) - (return - (i32.add - (get_local $8) - (i32.const 8) + (i32.store + (i32.const 184) + (get_local $6) + ) + (i32.store + (i32.const 196) + (get_local $5) ) ) ) - (get_local $2) + (return + (i32.add + (get_local $8) + (i32.const 8) + ) + ) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (set_local $2 - (i32.and - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 11) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $0) + (i32.const -65) + ) + (i32.const -1) + (block $do-once (result i32) + (set_local $2 + (i32.and + (tee_local $0 + (i32.add + (get_local $0) + (i32.const 11) ) - (i32.const -8) ) + (i32.const -8) ) - (if (result i32) - (tee_local $18 - (i32.load - (i32.const 180) - ) + ) + (if (result i32) + (tee_local $18 + (i32.load + (i32.const 180) ) - (block (result i32) - (set_local $14 + ) + (block (result i32) + (set_local $14 + (if (result i32) + (tee_local $0 + (i32.shr_u + (get_local $0) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 8) - ) + (i32.gt_u + (get_local $2) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $2) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $2) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $2) + (i32.add + (tee_local $0 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $0) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $0) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) + (get_local $3) + ) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $1) + (get_local $0) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $1) + (get_local $0) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $0) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (set_local $3 - (i32.sub - (i32.const 0) - (get_local $2) - ) + ) + (set_local $3 + (i32.sub + (i32.const 0) + (get_local $2) ) - (block $__rjto$3 - (block $__rjti$3 - (if - (tee_local $0 - (i32.load offset=480 - (i32.shl - (get_local $14) - (i32.const 2) - ) + ) + (block $__rjto$3 + (block $__rjti$3 + (if + (tee_local $0 + (i32.load offset=480 + (i32.shl + (get_local $14) + (i32.const 2) ) ) - (block - (set_local $9 - (i32.shl - (get_local $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $14) - (i32.const 1) - ) - ) - (i32.eq + ) + (block + (set_local $9 + (i32.shl + (get_local $2) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $14) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $14) + (i32.const 31) + ) ) ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $4 - (i32.sub - (tee_local $12 - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (set_local $1 + (i32.const 0) + ) + (loop $while-in14 + (if + (i32.lt_u + (tee_local $4 + (i32.sub + (tee_local $12 + (i32.and + (i32.load offset=4 + (get_local $0) ) + (i32.const -8) ) - (get_local $2) ) + (get_local $2) ) - (get_local $3) ) - (set_local $1 - (if (result i32) - (i32.eq - (get_local $12) - (get_local $2) - ) - (block - (set_local $1 - (get_local $4) - ) - (set_local $3 - (get_local $0) - ) - (br $__rjti$3) + (get_local $3) + ) + (set_local $1 + (if (result i32) + (i32.eq + (get_local $12) + (get_local $2) + ) + (block + (set_local $1 + (get_local $4) ) - (block (result i32) - (set_local $3 - (get_local $4) - ) + (set_local $3 (get_local $0) ) + (br $__rjti$3) + ) + (block (result i32) + (set_local $3 + (get_local $4) + ) + (get_local $0) ) ) ) - (set_local $0 - (select - (get_local $5) - (tee_local $4 - (i32.load offset=20 - (get_local $0) - ) + ) + (set_local $0 + (select + (get_local $5) + (tee_local $4 + (i32.load offset=20 + (get_local $0) ) - (i32.or - (i32.eqz - (get_local $4) - ) - (i32.eq - (get_local $4) - (tee_local $12 - (i32.load + ) + (i32.or + (i32.eqz + (get_local $4) + ) + (i32.eq + (get_local $4) + (tee_local $12 + (i32.load + (i32.add (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $9) - (i32.const 31) - ) - (i32.const 2) + (get_local $0) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $9) + (i32.const 31) ) + (i32.const 2) ) ) ) @@ -9111,138 +9109,124 @@ ) ) ) - (set_local $4 - (i32.shl - (get_local $9) - (i32.xor - (tee_local $5 - (i32.eqz - (get_local $12) - ) + ) + (set_local $4 + (i32.shl + (get_local $9) + (i32.xor + (tee_local $5 + (i32.eqz + (get_local $12) ) - (i32.const 1) ) + (i32.const 1) ) ) - (set_local $0 - (if (result i32) - (get_local $5) - (block (result i32) - (set_local $4 - (get_local $0) - ) - (get_local $1) + ) + (set_local $0 + (if (result i32) + (get_local $5) + (block (result i32) + (set_local $4 + (get_local $0) ) - (block - (set_local $5 - (get_local $0) - ) - (set_local $9 - (get_local $4) - ) - (set_local $0 - (get_local $12) - ) - (br $while-in14) + (get_local $1) + ) + (block + (set_local $5 + (get_local $0) + ) + (set_local $9 + (get_local $4) + ) + (set_local $0 + (get_local $12) ) + (br $while-in14) ) ) ) ) - (set_local $0 - (i32.const 0) - ) ) - (if - (i32.eqz - (i32.or - (get_local $4) - (get_local $0) - ) + (set_local $0 + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.or + (get_local $4) + (get_local $0) ) - (block - (drop - (br_if $do-once - (get_local $2) - (i32.eqz - (tee_local $1 - (i32.and - (get_local $18) - (i32.or - (tee_local $1 - (i32.shl - (i32.const 2) - (get_local $14) - ) - ) - (i32.sub - (i32.const 0) - (get_local $1) + ) + (block + (drop + (br_if $do-once + (get_local $2) + (i32.eqz + (tee_local $1 + (i32.and + (get_local $18) + (i32.or + (tee_local $1 + (i32.shl + (i32.const 2) + (get_local $14) ) ) + (i32.sub + (i32.const 0) + (get_local $1) + ) ) ) ) ) ) - (set_local $12 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.add - (i32.and + ) + (set_local $12 + (i32.and + (i32.shr_u + (tee_local $1 + (i32.add + (i32.and + (get_local $1) + (i32.sub + (i32.const 0) (get_local $1) - (i32.sub - (i32.const 0) - (get_local $1) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $4 - (i32.load offset=480 - (i32.shl - (i32.add + ) + (set_local $4 + (i32.load offset=480 + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $1 - (i32.and - (i32.shr_u - (tee_local $4 - (i32.shr_u - (get_local $1) - (get_local $12) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $12) - ) (tee_local $1 (i32.and (i32.shr_u (tee_local $4 (i32.shr_u - (get_local $4) (get_local $1) + (get_local $12) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $12) ) (tee_local $1 (i32.and @@ -9253,9 +9237,9 @@ (get_local $1) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -9270,1048 +9254,1064 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $4) - (get_local $1) + (tee_local $1 + (i32.and + (i32.shr_u + (tee_local $4 + (i32.shr_u + (get_local $4) + (get_local $1) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $4) + (get_local $1) + ) ) + (i32.const 2) ) ) ) ) - (set_local $4 - (if (result i32) - (get_local $4) - (block - (set_local $1 - (get_local $3) - ) - (set_local $3 - (get_local $4) - ) - (br $__rjti$3) + ) + (set_local $4 + (if (result i32) + (get_local $4) + (block + (set_local $1 + (get_local $3) ) - (get_local $0) + (set_local $3 + (get_local $4) + ) + (br $__rjti$3) ) + (get_local $0) ) - (br $__rjto$3) ) - (loop $while-in16 - (set_local $12 - (i32.lt_u - (tee_local $4 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const -8) + (br $__rjto$3) + ) + (loop $while-in16 + (set_local $12 + (i32.lt_u + (tee_local $4 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $3) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $1) ) + (get_local $1) ) - (set_local $1 - (select - (get_local $4) - (get_local $1) - (get_local $12) - ) + ) + (set_local $1 + (select + (get_local $4) + (get_local $1) + (get_local $12) ) - (set_local $0 - (select + ) + (set_local $0 + (select + (get_local $3) + (get_local $0) + (get_local $12) + ) + ) + (if + (tee_local $4 + (i32.load offset=16 (get_local $3) - (get_local $0) - (get_local $12) ) ) - (if - (tee_local $4 - (i32.load offset=16 - (get_local $3) - ) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $while-in16) + (block + (set_local $3 + (get_local $4) ) + (br $while-in16) ) - (br_if $while-in16 - (tee_local $3 - (i32.load offset=20 - (get_local $3) - ) + ) + (br_if $while-in16 + (tee_local $3 + (i32.load offset=20 + (get_local $3) ) ) ) - (set_local $4 - (get_local $0) - ) - (set_local $3 - (get_local $1) - ) ) + (set_local $4 + (get_local $0) + ) + (set_local $3 + (get_local $1) + ) + ) + (if (result i32) + (get_local $4) (if (result i32) - (get_local $4) - (if (result i32) - (i32.lt_u - (get_local $3) - (i32.sub - (i32.load - (i32.const 184) - ) - (get_local $2) + (i32.lt_u + (get_local $3) + (i32.sub + (i32.load + (i32.const 184) ) + (get_local $2) ) - (block - (if - (i32.lt_u - (get_local $4) - (tee_local $8 - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $4) + (tee_local $8 + (i32.load + (i32.const 192) ) ) - (call $_abort) ) - (if - (i32.ge_u - (get_local $4) - (tee_local $5 - (i32.add - (get_local $4) - (get_local $2) - ) + (call $_abort) + ) + (if + (i32.ge_u + (get_local $4) + (tee_local $5 + (i32.add + (get_local $4) + (get_local $2) ) ) - (call $_abort) ) - (set_local $12 - (i32.load offset=24 - (get_local $4) + (call $_abort) + ) + (set_local $12 + (i32.load offset=24 + (get_local $4) + ) + ) + (if + (i32.eq + (tee_local $0 + (i32.load offset=12 + (get_local $4) + ) ) + (get_local $4) ) - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $4) + (block $do-once17 + (if + (i32.eqz + (tee_local $1 + (i32.load + (tee_local $0 + (i32.add + (get_local $4) + (i32.const 20) + ) + ) + ) ) ) - (get_local $4) - ) - (block $do-once17 - (if + (br_if $do-once17 (i32.eqz (tee_local $1 (i32.load (tee_local $0 (i32.add (get_local $4) - (i32.const 20) + (i32.const 16) ) ) ) ) ) - (br_if $do-once17 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 16) - ) - ) + ) + ) + (loop $while-in20 + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 20) ) ) ) ) - ) - (loop $while-in20 - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) + (block + (set_local $1 + (get_local $7) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in20) + (set_local $0 + (get_local $11) ) + (br $while-in20) ) - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 16) - ) + ) + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 16) ) ) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in20) + ) + (block + (set_local $1 + (get_local $7) + ) + (set_local $0 + (get_local $11) ) + (br $while-in20) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $0) + (get_local $8) + ) + (call $_abort) + (block + (i32.store (get_local $0) - (get_local $8) + (i32.const 0) ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $10 - (get_local $1) - ) + (set_local $10 + (get_local $1) ) ) ) - (block - (if - (i32.lt_u - (tee_local $11 - (i32.load offset=8 - (get_local $4) - ) + ) + (block + (if + (i32.lt_u + (tee_local $11 + (i32.load offset=8 + (get_local $4) ) - (get_local $8) ) - (call $_abort) + (get_local $8) ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.ne + (i32.load + (tee_local $7 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $4) ) - (call $_abort) + (get_local $4) ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 8) ) ) - (get_local $4) ) - (block - (i32.store - (get_local $7) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $11) - ) - (set_local $10 - (get_local $0) - ) + (get_local $4) + ) + (block + (i32.store + (get_local $7) + (get_local $0) + ) + (i32.store + (get_local $1) + (get_local $11) + ) + (set_local $10 + (get_local $0) ) - (call $_abort) ) + (call $_abort) ) ) - (if - (get_local $12) - (block $do-once21 - (if - (i32.eq - (get_local $4) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $4) - ) + ) + (if + (get_local $12) + (block $do-once21 + (if + (i32.eq + (get_local $4) + (i32.load + (tee_local $0 + (i32.add + (i32.shl + (tee_local $1 + (i32.load offset=28 + (get_local $4) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) ) ) - (block - (i32.store - (get_local $0) + ) + (block + (i32.store + (get_local $0) + (get_local $10) + ) + (if + (i32.eqz (get_local $10) ) - (if - (i32.eqz - (get_local $10) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) + (block + (i32.store + (i32.const 180) + (i32.and + (i32.load + (i32.const 180) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) ) + (i32.const -1) ) ) - (br $do-once21) ) + (br $do-once21) ) ) - (block - (if - (i32.lt_u - (get_local $12) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $12) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $12) - (i32.const 16) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $12) + (i32.const 16) ) ) - (get_local $4) - ) - (i32.store - (get_local $0) - (get_local $10) - ) - (i32.store offset=20 - (get_local $12) - (get_local $10) ) + (get_local $4) ) - (br_if $do-once21 - (i32.eqz - (get_local $10) - ) + (i32.store + (get_local $0) + (get_local $10) + ) + (i32.store offset=20 + (get_local $12) + (get_local $10) ) ) - ) - (if - (i32.lt_u - (get_local $10) - (tee_local $0 - (i32.load - (i32.const 192) - ) + (br_if $do-once21 + (i32.eqz + (get_local $10) ) ) - (call $_abort) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $10) - (get_local $12) + (tee_local $0 + (i32.load + (i32.const 192) + ) + ) + ) + (call $_abort) + ) + (i32.store offset=24 + (get_local $10) + (get_local $12) + ) + (if + (tee_local $1 + (i32.load offset=16 + (get_local $4) + ) ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $4) - ) + (i32.lt_u + (get_local $1) + (get_local $0) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=16 + (get_local $10) (get_local $1) - (get_local $0) ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $10) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $10) - ) + (i32.store offset=24 + (get_local $1) + (get_local $10) ) ) ) + ) + (if + (tee_local $0 + (i32.load offset=20 + (get_local $4) + ) + ) (if - (tee_local $0 - (i32.load offset=20 - (get_local $4) + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 192) ) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=20 + (get_local $10) (get_local $0) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $10) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $10) - ) + (i32.store offset=24 + (get_local $0) + (get_local $10) ) ) ) ) ) - (if - (i32.lt_u - (get_local $3) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $4) - (i32.or - (tee_local $0 - (i32.add - (get_local $3) - (get_local $2) - ) - ) - (i32.const 3) - ) - ) - (i32.store + ) + (if + (i32.lt_u + (get_local $3) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $4) + (i32.or (tee_local $0 (i32.add - (i32.add - (get_local $4) - (get_local $0) - ) - (i32.const 4) + (get_local $3) + (get_local $2) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $4) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - ) - (block $do-once25 - (i32.store offset=4 - (get_local $4) - (i32.or - (get_local $2) - (i32.const 3) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) - (i32.store offset=4 + ) + ) + (block $do-once25 + (i32.store offset=4 + (get_local $4) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $5) + (i32.or + (get_local $3) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $5) - (i32.or - (get_local $3) - (i32.const 1) - ) + (get_local $3) ) - (i32.store - (i32.add - (get_local $5) - (get_local $3) - ) + (get_local $3) + ) + (set_local $0 + (i32.shr_u (get_local $3) + (i32.const 3) ) - (set_local $0 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) + ) + (if + (i32.lt_u + (get_local $3) + (i32.const 256) ) - (if - (i32.lt_u - (get_local $3) - (i32.const 256) + (block + (set_local $3 + (i32.add + (i32.shl + (get_local $0) + (i32.const 3) + ) + (i32.const 216) + ) ) - (block - (set_local $3 - (i32.add + (if + (i32.and + (tee_local $1 + (i32.load + (i32.const 176) + ) + ) + (tee_local $0 (i32.shl + (i32.const 1) (get_local $0) - (i32.const 3) ) - (i32.const 216) ) ) (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 176) - ) - ) + (i32.lt_u (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $3) - (i32.const 8) - ) + (i32.load + (tee_local $1 + (i32.add + (get_local $3) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $13 - (get_local $1) - ) - (set_local $6 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $1) - (get_local $0) - ) - ) (set_local $13 - (i32.add - (get_local $3) - (i32.const 8) - ) + (get_local $1) ) (set_local $6 - (get_local $3) + (get_local $0) ) ) ) - (i32.store - (get_local $13) - (get_local $5) - ) - (i32.store offset=12 - (get_local $6) - (get_local $5) - ) - (i32.store offset=8 - (get_local $5) - (get_local $6) - ) - (i32.store offset=12 - (get_local $5) - (get_local $3) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $1) + (get_local $0) + ) + ) + (set_local $13 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + (set_local $6 + (get_local $3) + ) ) - (br $do-once25) ) + (i32.store + (get_local $13) + (get_local $5) + ) + (i32.store offset=12 + (get_local $6) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $6) + ) + (i32.store offset=12 + (get_local $5) + (get_local $3) + ) + (br $do-once25) ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $7 + ) + (set_local $2 + (i32.add + (i32.shl + (tee_local $7 + (if (result i32) + (tee_local $0 + (i32.shr_u + (get_local $3) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $0 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) + (i32.gt_u + (get_local $3) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $3) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $3) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $3) + (i32.add + (tee_local $0 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $0) + (tee_local $2 + (i32.and + (i32.shr_u + (i32.add + (get_local $0) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $2) ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) + (get_local $2) + ) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $1) + (get_local $0) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $1) + (get_local $0) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $0) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) - (i32.store offset=28 - (get_local $5) - (get_local $7) - ) - (i32.store offset=4 - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 16) - ) + ) + (i32.store offset=28 + (get_local $5) + (get_local $7) + ) + (i32.store offset=4 + (tee_local $0 + (i32.add + (get_local $5) + (i32.const 16) ) - (i32.const 0) ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 180) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $7) - ) + (i32.const 0) + ) + (i32.store + (get_local $0) + (i32.const 0) + ) + (if + (i32.eqz + (i32.and + (tee_local $1 + (i32.load + (i32.const 180) ) ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (get_local $1) - (get_local $0) + (tee_local $0 + (i32.shl + (i32.const 1) + (get_local $7) ) ) - (i32.store - (get_local $2) - (get_local $5) - ) - (i32.store offset=24 - (get_local $5) - (get_local $2) - ) - (i32.store offset=12 - (get_local $5) - (get_local $5) - ) - (i32.store offset=8 - (get_local $5) - (get_local $5) + ) + ) + (block + (i32.store + (i32.const 180) + (i32.or + (get_local $1) + (get_local $0) ) - (br $do-once25) ) + (i32.store + (get_local $2) + (get_local $5) + ) + (i32.store offset=24 + (get_local $5) + (get_local $2) + ) + (i32.store offset=12 + (get_local $5) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $5) + ) + (br $do-once25) ) - (set_local $7 - (i32.shl - (get_local $3) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $7) - (i32.const 1) - ) - ) - (i32.eq + ) + (set_local $7 + (i32.shl + (get_local $3) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $7) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $7) + (i32.const 31) + ) ) ) - (set_local $0 - (i32.load - (get_local $2) - ) + ) + (set_local $0 + (i32.load + (get_local $2) ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (block $__rjto$1 + (block $__rjti$1 + (loop $while-in28 + (br_if $__rjti$1 + (i32.eq + (i32.and + (i32.load offset=4 + (get_local $0) ) - (get_local $3) + (i32.const -8) ) + (get_local $3) ) - (set_local $2 - (i32.shl - (get_local $7) - (i32.const 1) - ) + ) + (set_local $2 + (i32.shl + (get_local $7) + (i32.const 1) ) - (if - (tee_local $1 - (i32.load - (tee_local $7 + ) + (if + (tee_local $1 + (i32.load + (tee_local $7 + (i32.add (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $7) - (i32.const 31) - ) - (i32.const 2) + (get_local $0) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $7) + (i32.const 31) ) + (i32.const 2) ) ) ) ) - (block - (set_local $7 - (get_local $2) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in28) - ) ) - ) - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) (block - (i32.store - (get_local $7) - (get_local $5) - ) - (i32.store offset=24 - (get_local $5) - (get_local $0) - ) - (i32.store offset=12 - (get_local $5) - (get_local $5) + (set_local $7 + (get_local $2) ) - (i32.store offset=8 - (get_local $5) - (get_local $5) + (set_local $0 + (get_local $1) ) - (br $do-once25) + (br $while-in28) ) ) - (br $__rjto$1) ) (if - (i32.and - (i32.ge_u - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) + (i32.lt_u + (get_local $7) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store offset=12 - (get_local $2) - (get_local $5) - ) (i32.store - (get_local $3) + (get_local $7) (get_local $5) ) - (i32.store offset=8 + (i32.store offset=24 (get_local $5) - (get_local $2) + (get_local $0) ) (i32.store offset=12 (get_local $5) - (get_local $0) + (get_local $5) ) - (i32.store offset=24 + (i32.store offset=8 + (get_local $5) (get_local $5) - (i32.const 0) ) + (br $do-once25) ) - (call $_abort) ) + (br $__rjto$1) + ) + (if + (i32.and + (i32.ge_u + (tee_local $2 + (i32.load + (tee_local $3 + (i32.add + (get_local $0) + (i32.const 8) + ) + ) + ) + ) + (tee_local $1 + (i32.load + (i32.const 192) + ) + ) + ) + (i32.ge_u + (get_local $0) + (get_local $1) + ) + ) + (block + (i32.store offset=12 + (get_local $2) + (get_local $5) + ) + (i32.store + (get_local $3) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $2) + ) + (i32.store offset=12 + (get_local $5) + (get_local $0) + ) + (i32.store offset=24 + (get_local $5) + (i32.const 0) + ) + ) + (call $_abort) ) ) ) - (return - (i32.add - (get_local $4) - (i32.const 8) - ) + ) + (return + (i32.add + (get_local $4) + (i32.const 8) ) ) - (get_local $2) ) (get_local $2) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) ) ) ) - (if - (i32.ge_u - (tee_local $1 - (i32.load - (i32.const 184) - ) + ) + (if + (i32.ge_u + (tee_local $1 + (i32.load + (i32.const 184) ) - (get_local $0) ) - (block - (set_local $2 - (i32.load - (i32.const 196) + (get_local $0) + ) + (block + (set_local $2 + (i32.load + (i32.const 196) + ) + ) + (if + (i32.gt_u + (tee_local $3 + (i32.sub + (get_local $1) + (get_local $0) + ) ) + (i32.const 15) ) - (if - (i32.gt_u - (tee_local $3 - (i32.sub - (get_local $1) + (block + (i32.store + (i32.const 196) + (tee_local $1 + (i32.add + (get_local $2) (get_local $0) ) ) - (i32.const 15) ) - (block - (i32.store - (i32.const 196) - (tee_local $1 - (i32.add - (get_local $2) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 184) + (i32.store + (i32.const 184) + (get_local $3) + ) + (i32.store offset=4 + (get_local $1) + (i32.or (get_local $3) + (i32.const 1) ) - (i32.store offset=4 + ) + (i32.store + (i32.add (get_local $1) - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $1) - (get_local $3) - ) (get_local $3) ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) + (get_local $3) ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) + (i32.store offset=4 + (get_local $2) + (i32.or + (get_local $0) + (i32.const 3) ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $1) - (i32.const 3) - ) + ) + ) + (block + (i32.store + (i32.const 184) + (i32.const 0) + ) + (i32.store + (i32.const 196) + (i32.const 0) + ) + (i32.store offset=4 + (get_local $2) + (i32.or + (get_local $1) + (i32.const 3) ) - (i32.store - (tee_local $0 + ) + (i32.store + (tee_local $0 + (i32.add (i32.add - (i32.add - (get_local $2) - (get_local $1) - ) - (i32.const 4) + (get_local $2) + (get_local $1) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) ) ) - (return - (i32.add - (get_local $2) - (i32.const 8) - ) + ) + (return + (i32.add + (get_local $2) + (i32.const 8) ) ) ) + ) + (block $folding-inner0 (br_if $folding-inner0 (i32.gt_u (tee_local $1 diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise index 5cfa87fe1..de06484f2 100644 --- a/test/emcc_hello_world.fromasm.imprecise +++ b/test/emcc_hello_world.fromasm.imprecise @@ -7503,274 +7503,258 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (block $folding-inner0 - (set_local $0 - (if (result i32) - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (tee_local $10 - (i32.shr_u - (tee_local $6 - (i32.load - (i32.const 176) - ) + (set_local $0 + (if (result i32) + (i32.lt_u + (get_local $0) + (i32.const 245) + ) + (block (result i32) + (if + (i32.and + (tee_local $10 + (i32.shr_u + (tee_local $6 + (i32.load + (i32.const 176) ) - (tee_local $13 - (i32.shr_u - (tee_local $2 - (select - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u + ) + (tee_local $13 + (i32.shr_u + (tee_local $2 + (select + (i32.const 16) + (i32.and + (i32.add (get_local $0) (i32.const 11) ) + (i32.const -8) + ) + (i32.lt_u + (get_local $0) + (i32.const 11) ) ) - (i32.const 3) ) + (i32.const 3) ) ) ) - (i32.const 3) ) - (block - (set_local $11 - (i32.load - (tee_local $1 - (i32.add - (tee_local $7 - (i32.load - (tee_local $3 - (i32.add - (tee_local $2 - (i32.add - (i32.shl - (tee_local $4 - (i32.add - (i32.xor - (i32.and - (get_local $10) - (i32.const 1) - ) + (i32.const 3) + ) + (block + (set_local $11 + (i32.load + (tee_local $1 + (i32.add + (tee_local $7 + (i32.load + (tee_local $3 + (i32.add + (tee_local $2 + (i32.add + (i32.shl + (tee_local $4 + (i32.add + (i32.xor + (i32.and + (get_local $10) (i32.const 1) ) - (get_local $13) + (i32.const 1) ) + (get_local $13) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $2) - (get_local $11) - ) - (i32.store - (i32.const 176) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $2) + (get_local $11) + ) + (i32.store + (i32.const 176) + (i32.and + (get_local $6) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $4) ) + (i32.const -1) ) ) - (block - (if - (i32.lt_u - (get_local $11) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $11) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $7) ) - (block - (i32.store - (get_local $0) - (get_local $2) - ) - (i32.store - (get_local $3) - (get_local $11) - ) - ) - (call $_abort) + (get_local $7) ) - ) - ) - (i32.store offset=4 - (get_local $7) - (i32.or - (tee_local $0 - (i32.shl - (get_local $4) - (i32.const 3) + (block + (i32.store + (get_local $0) + (get_local $2) + ) + (i32.store + (get_local $3) + (get_local $11) ) ) - (i32.const 3) + (call $_abort) ) ) - (i32.store + ) + (i32.store offset=4 + (get_local $7) + (i32.or (tee_local $0 - (i32.add - (i32.add - (get_local $7) - (get_local $0) - ) - (i32.const 4) + (i32.shl + (get_local $4) + (i32.const 3) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $7) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - (return - (get_local $1) + (i32.or + (i32.load + (get_local $0) + ) + (i32.const 1) ) ) + (return + (get_local $1) + ) ) - (if (result i32) - (i32.gt_u - (get_local $2) - (tee_local $0 - (i32.load - (i32.const 184) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $2) + (tee_local $0 + (i32.load + (i32.const 184) ) ) - (block (result i32) - (if - (get_local $10) - (block - (set_local $7 - (i32.and - (i32.shr_u - (tee_local $3 - (i32.add - (i32.and - (tee_local $3 - (i32.and - (i32.shl - (get_local $10) - (get_local $13) - ) - (i32.or - (tee_local $3 - (i32.shl - (i32.const 2) - (get_local $13) - ) - ) - (i32.sub - (i32.const 0) - (get_local $3) + ) + (block (result i32) + (if + (get_local $10) + (block + (set_local $7 + (i32.and + (i32.shr_u + (tee_local $3 + (i32.add + (i32.and + (tee_local $3 + (i32.and + (i32.shl + (get_local $10) + (get_local $13) + ) + (i32.or + (tee_local $3 + (i32.shl + (i32.const 2) + (get_local $13) ) ) + (i32.sub + (i32.const 0) + (get_local $3) + ) ) ) - (i32.sub - (i32.const 0) - (get_local $3) - ) ) - (i32.const -1) + (i32.sub + (i32.const 0) + (get_local $3) + ) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $10 - (i32.load - (tee_local $4 - (i32.add - (tee_local $8 - (i32.load - (tee_local $3 - (i32.add - (tee_local $7 - (i32.add - (i32.shl - (tee_local $11 - (i32.add + ) + (set_local $10 + (i32.load + (tee_local $4 + (i32.add + (tee_local $8 + (i32.load + (tee_local $3 + (i32.add + (tee_local $7 + (i32.add + (i32.shl + (tee_local $11 + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $3 - (i32.and - (i32.shr_u - (tee_local $4 - (i32.shr_u - (get_local $3) - (get_local $7) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $7) - ) (tee_local $3 (i32.and (i32.shr_u (tee_local $4 (i32.shr_u - (get_local $4) (get_local $3) + (get_local $7) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $7) ) (tee_local $3 (i32.and @@ -7781,9 +7765,9 @@ (get_local $3) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -7798,310 +7782,310 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $4) - (get_local $3) + (tee_local $3 + (i32.and + (i32.shr_u + (tee_local $4 + (i32.shr_u + (get_local $4) + (get_local $3) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) + (i32.shr_u + (get_local $4) + (get_local $3) + ) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $7) - (get_local $10) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (get_local $6) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $11) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $7) + (get_local $10) + ) + (block + (i32.store + (i32.const 176) + (i32.and + (get_local $6) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $11) ) + (i32.const -1) ) ) - (set_local $9 - (get_local $0) - ) ) - (block - (if - (i32.lt_u - (get_local $10) - (i32.load - (i32.const 192) - ) + (set_local $9 + (get_local $0) + ) + ) + (block + (if + (i32.lt_u + (get_local $10) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $10) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $10) + (i32.const 12) ) ) - (get_local $8) ) - (block - (i32.store - (get_local $0) - (get_local $7) - ) - (i32.store - (get_local $3) - (get_local $10) - ) - (set_local $9 - (i32.load - (i32.const 184) - ) + (get_local $8) + ) + (block + (i32.store + (get_local $0) + (get_local $7) + ) + (i32.store + (get_local $3) + (get_local $10) + ) + (set_local $9 + (i32.load + (i32.const 184) ) ) - (call $_abort) ) + (call $_abort) ) ) - (i32.store offset=4 - (get_local $8) - (i32.or + ) + (i32.store offset=4 + (get_local $8) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (tee_local $7 + (i32.add + (get_local $8) (get_local $2) - (i32.const 3) ) ) - (i32.store offset=4 - (tee_local $7 - (i32.add - (get_local $8) - (get_local $2) - ) - ) - (i32.or - (tee_local $11 - (i32.sub - (i32.shl - (get_local $11) - (i32.const 3) - ) - (get_local $2) + (i32.or + (tee_local $11 + (i32.sub + (i32.shl + (get_local $11) + (i32.const 3) ) + (get_local $2) ) - (i32.const 1) ) + (i32.const 1) ) - (i32.store - (i32.add - (get_local $7) - (get_local $11) - ) + ) + (i32.store + (i32.add + (get_local $7) (get_local $11) ) - (if - (get_local $9) - (block - (set_local $6 - (i32.load - (i32.const 196) - ) + (get_local $11) + ) + (if + (get_local $9) + (block + (set_local $6 + (i32.load + (i32.const 196) ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $9) - (i32.const 3) - ) + ) + (set_local $2 + (i32.add + (i32.shl + (tee_local $0 + (i32.shr_u + (get_local $9) + (i32.const 3) ) - (i32.const 3) ) - (i32.const 216) + (i32.const 3) ) + (i32.const 216) ) - (if - (i32.and - (tee_local $3 - (i32.load - (i32.const 176) - ) + ) + (if + (i32.and + (tee_local $3 + (i32.load + (i32.const 176) ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) + ) + (tee_local $0 + (i32.shl + (i32.const 1) + (get_local $0) ) ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $3 - (i32.add - (get_local $2) - (i32.const 8) - ) + ) + (if + (i32.lt_u + (tee_local $0 + (i32.load + (tee_local $3 + (i32.add + (get_local $2) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $5 - (get_local $3) - ) - (set_local $1 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $3) - (get_local $0) - ) - ) (set_local $5 - (i32.add - (get_local $2) - (i32.const 8) - ) + (get_local $3) ) (set_local $1 - (get_local $2) + (get_local $0) ) ) ) - (i32.store - (get_local $5) - (get_local $6) - ) - (i32.store offset=12 - (get_local $1) - (get_local $6) - ) - (i32.store offset=8 - (get_local $6) - (get_local $1) - ) - (i32.store offset=12 - (get_local $6) - (get_local $2) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $3) + (get_local $0) + ) + ) + (set_local $5 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + (set_local $1 + (get_local $2) + ) ) ) - ) - (i32.store - (i32.const 184) - (get_local $11) - ) - (i32.store - (i32.const 196) - (get_local $7) - ) - (return - (get_local $4) + (i32.store + (get_local $5) + (get_local $6) + ) + (i32.store offset=12 + (get_local $1) + (get_local $6) + ) + (i32.store offset=8 + (get_local $6) + (get_local $1) + ) + (i32.store offset=12 + (get_local $6) + (get_local $2) + ) ) ) + (i32.store + (i32.const 184) + (get_local $11) + ) + (i32.store + (i32.const 196) + (get_local $7) + ) + (return + (get_local $4) + ) ) - (if (result i32) - (tee_local $0 - (i32.load - (i32.const 180) - ) + ) + (if (result i32) + (tee_local $0 + (i32.load + (i32.const 180) ) - (block - (set_local $7 - (i32.and - (i32.shr_u - (tee_local $0 - (i32.add - (i32.and + ) + (block + (set_local $7 + (i32.and + (i32.shr_u + (tee_local $0 + (i32.add + (i32.and + (get_local $0) + (i32.sub + (i32.const 0) (get_local $0) - (i32.sub - (i32.const 0) - (get_local $0) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $11 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $0 - (i32.load offset=480 - (i32.shl - (i32.add + ) + (set_local $11 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $0 + (i32.load offset=480 + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.shr_u - (get_local $0) - (get_local $7) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $7) - ) (tee_local $0 (i32.and (i32.shr_u (tee_local $1 (i32.shr_u - (get_local $1) (get_local $0) + (get_local $7) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $7) ) (tee_local $0 (i32.and @@ -8112,9 +8096,9 @@ (get_local $0) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -8129,845 +8113,859 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $1) - (get_local $0) + (tee_local $0 + (i32.and + (i32.shr_u + (tee_local $1 + (i32.shr_u + (get_local $1) + (get_local $0) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $1) + (get_local $0) + ) ) + (i32.const 2) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (set_local $7 - (get_local $0) - ) - (loop $while-in - (block $while-out + ) + (set_local $7 + (get_local $0) + ) + (loop $while-in + (block $while-out + (if + (tee_local $1 + (i32.load offset=16 + (get_local $0) + ) + ) + (set_local $0 + (get_local $1) + ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $0) + (i32.eqz + (tee_local $0 + (i32.load offset=20 + (get_local $0) + ) ) ) - (set_local $0 - (get_local $1) - ) - (if - (i32.eqz - (tee_local $0 - (i32.load offset=20 - (get_local $0) - ) - ) + (block + (set_local $6 + (get_local $11) ) - (block - (set_local $6 - (get_local $11) - ) - (set_local $8 - (get_local $7) - ) - (br $while-out) + (set_local $8 + (get_local $7) ) + (br $while-out) ) ) - (set_local $6 - (i32.lt_u - (tee_local $1 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (set_local $6 + (i32.lt_u + (tee_local $1 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $0) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $11) ) + (get_local $11) ) - (set_local $11 - (select - (get_local $1) - (get_local $11) - (get_local $6) - ) + ) + (set_local $11 + (select + (get_local $1) + (get_local $11) + (get_local $6) ) - (set_local $7 - (select - (get_local $0) - (get_local $7) - (get_local $6) - ) + ) + (set_local $7 + (select + (get_local $0) + (get_local $7) + (get_local $6) ) - (br $while-in) ) + (br $while-in) ) - (if - (i32.lt_u - (get_local $8) - (tee_local $10 - (i32.load - (i32.const 192) - ) + ) + (if + (i32.lt_u + (get_local $8) + (tee_local $10 + (i32.load + (i32.const 192) ) ) - (call $_abort) ) - (if - (i32.ge_u - (get_local $8) - (tee_local $5 - (i32.add - (get_local $8) - (get_local $2) - ) + (call $_abort) + ) + (if + (i32.ge_u + (get_local $8) + (tee_local $5 + (i32.add + (get_local $8) + (get_local $2) ) ) - (call $_abort) ) - (set_local $9 - (i32.load offset=24 - (get_local $8) + (call $_abort) + ) + (set_local $9 + (i32.load offset=24 + (get_local $8) + ) + ) + (if + (i32.eq + (tee_local $0 + (i32.load offset=12 + (get_local $8) + ) ) + (get_local $8) ) - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $8) + (block $do-once4 + (if + (i32.eqz + (tee_local $1 + (i32.load + (tee_local $0 + (i32.add + (get_local $8) + (i32.const 20) + ) + ) + ) ) ) - (get_local $8) - ) - (block $do-once4 - (if + (br_if $do-once4 (i32.eqz (tee_local $1 (i32.load (tee_local $0 (i32.add (get_local $8) - (i32.const 20) + (i32.const 16) ) ) ) ) ) - (br_if $do-once4 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $8) - (i32.const 16) - ) - ) + ) + ) + (loop $while-in7 + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 20) ) ) ) ) - ) - (loop $while-in7 - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) + (block + (set_local $1 + (get_local $7) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in7) + (set_local $0 + (get_local $11) ) + (br $while-in7) ) - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 16) - ) + ) + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 16) ) ) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in7) + ) + (block + (set_local $1 + (get_local $7) ) + (set_local $0 + (get_local $11) + ) + (br $while-in7) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $0) + (get_local $10) + ) + (call $_abort) + (block + (i32.store (get_local $0) - (get_local $10) + (i32.const 0) ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $4 - (get_local $1) - ) + (set_local $4 + (get_local $1) ) ) ) - (block - (if - (i32.lt_u - (tee_local $11 - (i32.load offset=8 - (get_local $8) - ) + ) + (block + (if + (i32.lt_u + (tee_local $11 + (i32.load offset=8 + (get_local $8) ) - (get_local $10) ) - (call $_abort) + (get_local $10) ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.ne + (i32.load + (tee_local $7 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $8) ) - (call $_abort) + (get_local $8) ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 8) ) ) - (get_local $8) ) - (block - (i32.store - (get_local $7) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $11) - ) - (set_local $4 - (get_local $0) - ) + (get_local $8) + ) + (block + (i32.store + (get_local $7) + (get_local $0) + ) + (i32.store + (get_local $1) + (get_local $11) + ) + (set_local $4 + (get_local $0) ) - (call $_abort) ) + (call $_abort) ) ) - (if - (get_local $9) - (block $do-once8 - (if - (i32.eq - (get_local $8) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $8) - ) + ) + (if + (get_local $9) + (block $do-once8 + (if + (i32.eq + (get_local $8) + (i32.load + (tee_local $0 + (i32.add + (i32.shl + (tee_local $1 + (i32.load offset=28 + (get_local $8) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) ) ) - (block - (i32.store - (get_local $0) + ) + (block + (i32.store + (get_local $0) + (get_local $4) + ) + (if + (i32.eqz (get_local $4) ) - (if - (i32.eqz - (get_local $4) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) + (block + (i32.store + (i32.const 180) + (i32.and + (i32.load + (i32.const 180) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) ) + (i32.const -1) ) ) - (br $do-once8) ) + (br $do-once8) ) ) - (block - (if - (i32.lt_u - (get_local $9) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $9) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $9) - (i32.const 16) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $9) + (i32.const 16) ) ) - (get_local $8) - ) - (i32.store - (get_local $0) - (get_local $4) - ) - (i32.store offset=20 - (get_local $9) - (get_local $4) ) + (get_local $8) ) - (br_if $do-once8 - (i32.eqz - (get_local $4) - ) + (i32.store + (get_local $0) + (get_local $4) + ) + (i32.store offset=20 + (get_local $9) + (get_local $4) ) ) - ) - (if - (i32.lt_u - (get_local $4) - (tee_local $0 - (i32.load - (i32.const 192) - ) + (br_if $do-once8 + (i32.eqz + (get_local $4) ) ) - (call $_abort) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $4) - (get_local $9) + (tee_local $0 + (i32.load + (i32.const 192) + ) + ) + ) + (call $_abort) + ) + (i32.store offset=24 + (get_local $4) + (get_local $9) + ) + (if + (tee_local $1 + (i32.load offset=16 + (get_local $8) + ) ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $8) - ) + (i32.lt_u + (get_local $1) + (get_local $0) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=16 + (get_local $4) (get_local $1) - (get_local $0) ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $4) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $4) - ) + (i32.store offset=24 + (get_local $1) + (get_local $4) ) ) ) + ) + (if + (tee_local $0 + (i32.load offset=20 + (get_local $8) + ) + ) (if - (tee_local $0 - (i32.load offset=20 - (get_local $8) + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 192) ) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=20 + (get_local $4) (get_local $0) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $4) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $4) - ) + (i32.store offset=24 + (get_local $0) + (get_local $4) ) ) ) ) ) - (if - (i32.lt_u - (get_local $6) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $8) - (i32.or - (tee_local $0 - (i32.add - (get_local $6) - (get_local $2) - ) - ) - (i32.const 3) - ) - ) - (i32.store + ) + (if + (i32.lt_u + (get_local $6) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $8) + (i32.or (tee_local $0 (i32.add - (i32.add - (get_local $8) - (get_local $0) - ) - (i32.const 4) + (get_local $6) + (get_local $2) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $8) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - ) - (block - (i32.store offset=4 - (get_local $8) - (i32.or - (get_local $2) - (i32.const 3) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) - (i32.store offset=4 + ) + ) + (block + (i32.store offset=4 + (get_local $8) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $5) + (i32.or + (get_local $6) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $5) - (i32.or - (get_local $6) - (i32.const 1) - ) + (get_local $6) ) - (i32.store - (i32.add - (get_local $5) - (get_local $6) + (get_local $6) + ) + (if + (tee_local $0 + (i32.load + (i32.const 184) ) - (get_local $6) ) - (if - (tee_local $0 + (block + (set_local $4 (i32.load - (i32.const 184) + (i32.const 196) ) ) - (block - (set_local $4 - (i32.load - (i32.const 196) + (set_local $2 + (i32.add + (i32.shl + (tee_local $0 + (i32.shr_u + (get_local $0) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 216) ) - (set_local $2 - (i32.add + ) + (if + (i32.and + (tee_local $1 + (i32.load + (i32.const 176) + ) + ) + (tee_local $0 (i32.shl - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $0) ) - (i32.const 216) ) ) (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 176) - ) - ) + (i32.lt_u (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $2) - (i32.const 8) - ) + (i32.load + (tee_local $1 + (i32.add + (get_local $2) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $12 - (get_local $1) - ) - (set_local $3 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $1) - (get_local $0) - ) - ) (set_local $12 - (i32.add - (get_local $2) - (i32.const 8) - ) + (get_local $1) ) (set_local $3 - (get_local $2) + (get_local $0) ) ) ) - (i32.store - (get_local $12) - (get_local $4) - ) - (i32.store offset=12 - (get_local $3) - (get_local $4) - ) - (i32.store offset=8 - (get_local $4) - (get_local $3) - ) - (i32.store offset=12 - (get_local $4) - (get_local $2) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $1) + (get_local $0) + ) + ) + (set_local $12 + (i32.add + (get_local $2) + (i32.const 8) + ) + ) + (set_local $3 + (get_local $2) + ) ) ) - ) - (i32.store - (i32.const 184) - (get_local $6) - ) - (i32.store - (i32.const 196) - (get_local $5) + (i32.store + (get_local $12) + (get_local $4) + ) + (i32.store offset=12 + (get_local $3) + (get_local $4) + ) + (i32.store offset=8 + (get_local $4) + (get_local $3) + ) + (i32.store offset=12 + (get_local $4) + (get_local $2) + ) ) ) - ) - (return - (i32.add - (get_local $8) - (i32.const 8) + (i32.store + (i32.const 184) + (get_local $6) + ) + (i32.store + (i32.const 196) + (get_local $5) ) ) ) - (get_local $2) + (return + (i32.add + (get_local $8) + (i32.const 8) + ) + ) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (set_local $2 - (i32.and - (tee_local $0 - (i32.add - (get_local $0) - (i32.const 11) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $0) + (i32.const -65) + ) + (i32.const -1) + (block $do-once (result i32) + (set_local $2 + (i32.and + (tee_local $0 + (i32.add + (get_local $0) + (i32.const 11) ) - (i32.const -8) ) + (i32.const -8) ) - (if (result i32) - (tee_local $18 - (i32.load - (i32.const 180) - ) + ) + (if (result i32) + (tee_local $18 + (i32.load + (i32.const 180) ) - (block (result i32) - (set_local $14 + ) + (block (result i32) + (set_local $14 + (if (result i32) + (tee_local $0 + (i32.shr_u + (get_local $0) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $0 - (i32.shr_u - (get_local $0) - (i32.const 8) - ) + (i32.gt_u + (get_local $2) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $2) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $2) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $2) + (i32.add + (tee_local $0 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $0) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $0) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) + (get_local $3) + ) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $1) + (get_local $0) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $1) + (get_local $0) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $0) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (set_local $3 - (i32.sub - (i32.const 0) - (get_local $2) - ) + ) + (set_local $3 + (i32.sub + (i32.const 0) + (get_local $2) ) - (block $__rjto$3 - (block $__rjti$3 - (if - (tee_local $0 - (i32.load offset=480 - (i32.shl - (get_local $14) - (i32.const 2) - ) + ) + (block $__rjto$3 + (block $__rjti$3 + (if + (tee_local $0 + (i32.load offset=480 + (i32.shl + (get_local $14) + (i32.const 2) ) ) - (block - (set_local $9 - (i32.shl - (get_local $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $14) - (i32.const 1) - ) - ) - (i32.eq + ) + (block + (set_local $9 + (i32.shl + (get_local $2) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $14) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $14) + (i32.const 31) + ) ) ) - (set_local $1 - (i32.const 0) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $4 - (i32.sub - (tee_local $12 - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (set_local $1 + (i32.const 0) + ) + (loop $while-in14 + (if + (i32.lt_u + (tee_local $4 + (i32.sub + (tee_local $12 + (i32.and + (i32.load offset=4 + (get_local $0) ) + (i32.const -8) ) - (get_local $2) ) + (get_local $2) ) - (get_local $3) ) - (set_local $1 - (if (result i32) - (i32.eq - (get_local $12) - (get_local $2) - ) - (block - (set_local $1 - (get_local $4) - ) - (set_local $3 - (get_local $0) - ) - (br $__rjti$3) + (get_local $3) + ) + (set_local $1 + (if (result i32) + (i32.eq + (get_local $12) + (get_local $2) + ) + (block + (set_local $1 + (get_local $4) ) - (block (result i32) - (set_local $3 - (get_local $4) - ) + (set_local $3 (get_local $0) ) + (br $__rjti$3) + ) + (block (result i32) + (set_local $3 + (get_local $4) + ) + (get_local $0) ) ) ) - (set_local $0 - (select - (get_local $5) - (tee_local $4 - (i32.load offset=20 - (get_local $0) - ) + ) + (set_local $0 + (select + (get_local $5) + (tee_local $4 + (i32.load offset=20 + (get_local $0) ) - (i32.or - (i32.eqz - (get_local $4) - ) - (i32.eq - (get_local $4) - (tee_local $12 - (i32.load + ) + (i32.or + (i32.eqz + (get_local $4) + ) + (i32.eq + (get_local $4) + (tee_local $12 + (i32.load + (i32.add (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $9) - (i32.const 31) - ) - (i32.const 2) + (get_local $0) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $9) + (i32.const 31) ) + (i32.const 2) ) ) ) @@ -8975,138 +8973,124 @@ ) ) ) - (set_local $4 - (i32.shl - (get_local $9) - (i32.xor - (tee_local $5 - (i32.eqz - (get_local $12) - ) + ) + (set_local $4 + (i32.shl + (get_local $9) + (i32.xor + (tee_local $5 + (i32.eqz + (get_local $12) ) - (i32.const 1) ) + (i32.const 1) ) ) - (set_local $0 - (if (result i32) - (get_local $5) - (block (result i32) - (set_local $4 - (get_local $0) - ) - (get_local $1) + ) + (set_local $0 + (if (result i32) + (get_local $5) + (block (result i32) + (set_local $4 + (get_local $0) ) - (block - (set_local $5 - (get_local $0) - ) - (set_local $9 - (get_local $4) - ) - (set_local $0 - (get_local $12) - ) - (br $while-in14) + (get_local $1) + ) + (block + (set_local $5 + (get_local $0) + ) + (set_local $9 + (get_local $4) + ) + (set_local $0 + (get_local $12) ) + (br $while-in14) ) ) ) ) - (set_local $0 - (i32.const 0) - ) ) - (if - (i32.eqz - (i32.or - (get_local $4) - (get_local $0) - ) + (set_local $0 + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.or + (get_local $4) + (get_local $0) ) - (block - (drop - (br_if $do-once - (get_local $2) - (i32.eqz - (tee_local $1 - (i32.and - (get_local $18) - (i32.or - (tee_local $1 - (i32.shl - (i32.const 2) - (get_local $14) - ) - ) - (i32.sub - (i32.const 0) - (get_local $1) + ) + (block + (drop + (br_if $do-once + (get_local $2) + (i32.eqz + (tee_local $1 + (i32.and + (get_local $18) + (i32.or + (tee_local $1 + (i32.shl + (i32.const 2) + (get_local $14) ) ) + (i32.sub + (i32.const 0) + (get_local $1) + ) ) ) ) ) ) - (set_local $12 - (i32.and - (i32.shr_u - (tee_local $1 - (i32.add - (i32.and + ) + (set_local $12 + (i32.and + (i32.shr_u + (tee_local $1 + (i32.add + (i32.and + (get_local $1) + (i32.sub + (i32.const 0) (get_local $1) - (i32.sub - (i32.const 0) - (get_local $1) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $4 - (i32.load offset=480 - (i32.shl - (i32.add + ) + (set_local $4 + (i32.load offset=480 + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $1 - (i32.and - (i32.shr_u - (tee_local $4 - (i32.shr_u - (get_local $1) - (get_local $12) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $12) - ) (tee_local $1 (i32.and (i32.shr_u (tee_local $4 (i32.shr_u - (get_local $4) (get_local $1) + (get_local $12) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $12) ) (tee_local $1 (i32.and @@ -9117,9 +9101,9 @@ (get_local $1) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) @@ -9134,1048 +9118,1064 @@ ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $4) - (get_local $1) + (tee_local $1 + (i32.and + (i32.shr_u + (tee_local $4 + (i32.shr_u + (get_local $4) + (get_local $1) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $4) + (get_local $1) + ) ) + (i32.const 2) ) ) ) ) - (set_local $4 - (if (result i32) - (get_local $4) - (block - (set_local $1 - (get_local $3) - ) - (set_local $3 - (get_local $4) - ) - (br $__rjti$3) + ) + (set_local $4 + (if (result i32) + (get_local $4) + (block + (set_local $1 + (get_local $3) ) - (get_local $0) + (set_local $3 + (get_local $4) + ) + (br $__rjti$3) ) + (get_local $0) ) - (br $__rjto$3) ) - (loop $while-in16 - (set_local $12 - (i32.lt_u - (tee_local $4 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $3) - ) - (i32.const -8) + (br $__rjto$3) + ) + (loop $while-in16 + (set_local $12 + (i32.lt_u + (tee_local $4 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $3) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $1) ) + (get_local $1) ) - (set_local $1 - (select - (get_local $4) - (get_local $1) - (get_local $12) - ) + ) + (set_local $1 + (select + (get_local $4) + (get_local $1) + (get_local $12) ) - (set_local $0 - (select + ) + (set_local $0 + (select + (get_local $3) + (get_local $0) + (get_local $12) + ) + ) + (if + (tee_local $4 + (i32.load offset=16 (get_local $3) - (get_local $0) - (get_local $12) ) ) - (if - (tee_local $4 - (i32.load offset=16 - (get_local $3) - ) - ) - (block - (set_local $3 - (get_local $4) - ) - (br $while-in16) + (block + (set_local $3 + (get_local $4) ) + (br $while-in16) ) - (br_if $while-in16 - (tee_local $3 - (i32.load offset=20 - (get_local $3) - ) + ) + (br_if $while-in16 + (tee_local $3 + (i32.load offset=20 + (get_local $3) ) ) ) - (set_local $4 - (get_local $0) - ) - (set_local $3 - (get_local $1) - ) ) + (set_local $4 + (get_local $0) + ) + (set_local $3 + (get_local $1) + ) + ) + (if (result i32) + (get_local $4) (if (result i32) - (get_local $4) - (if (result i32) - (i32.lt_u - (get_local $3) - (i32.sub - (i32.load - (i32.const 184) - ) - (get_local $2) + (i32.lt_u + (get_local $3) + (i32.sub + (i32.load + (i32.const 184) ) + (get_local $2) ) - (block - (if - (i32.lt_u - (get_local $4) - (tee_local $8 - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $4) + (tee_local $8 + (i32.load + (i32.const 192) ) ) - (call $_abort) ) - (if - (i32.ge_u - (get_local $4) - (tee_local $5 - (i32.add - (get_local $4) - (get_local $2) - ) + (call $_abort) + ) + (if + (i32.ge_u + (get_local $4) + (tee_local $5 + (i32.add + (get_local $4) + (get_local $2) ) ) - (call $_abort) ) - (set_local $12 - (i32.load offset=24 - (get_local $4) + (call $_abort) + ) + (set_local $12 + (i32.load offset=24 + (get_local $4) + ) + ) + (if + (i32.eq + (tee_local $0 + (i32.load offset=12 + (get_local $4) + ) ) + (get_local $4) ) - (if - (i32.eq - (tee_local $0 - (i32.load offset=12 - (get_local $4) + (block $do-once17 + (if + (i32.eqz + (tee_local $1 + (i32.load + (tee_local $0 + (i32.add + (get_local $4) + (i32.const 20) + ) + ) + ) ) ) - (get_local $4) - ) - (block $do-once17 - (if + (br_if $do-once17 (i32.eqz (tee_local $1 (i32.load (tee_local $0 (i32.add (get_local $4) - (i32.const 20) + (i32.const 16) ) ) ) ) ) - (br_if $do-once17 - (i32.eqz - (tee_local $1 - (i32.load - (tee_local $0 - (i32.add - (get_local $4) - (i32.const 16) - ) - ) + ) + ) + (loop $while-in20 + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 20) ) ) ) ) - ) - (loop $while-in20 - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 20) - ) - ) - ) + (block + (set_local $1 + (get_local $7) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in20) + (set_local $0 + (get_local $11) ) + (br $while-in20) ) - (if - (tee_local $7 - (i32.load - (tee_local $11 - (i32.add - (get_local $1) - (i32.const 16) - ) + ) + (if + (tee_local $7 + (i32.load + (tee_local $11 + (i32.add + (get_local $1) + (i32.const 16) ) ) ) - (block - (set_local $1 - (get_local $7) - ) - (set_local $0 - (get_local $11) - ) - (br $while-in20) + ) + (block + (set_local $1 + (get_local $7) + ) + (set_local $0 + (get_local $11) ) + (br $while-in20) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $0) + (get_local $8) + ) + (call $_abort) + (block + (i32.store (get_local $0) - (get_local $8) + (i32.const 0) ) - (call $_abort) - (block - (i32.store - (get_local $0) - (i32.const 0) - ) - (set_local $10 - (get_local $1) - ) + (set_local $10 + (get_local $1) ) ) ) - (block - (if - (i32.lt_u - (tee_local $11 - (i32.load offset=8 - (get_local $4) - ) + ) + (block + (if + (i32.lt_u + (tee_local $11 + (i32.load offset=8 + (get_local $4) ) - (get_local $8) ) - (call $_abort) + (get_local $8) ) - (if - (i32.ne - (i32.load - (tee_local $7 - (i32.add - (get_local $11) - (i32.const 12) - ) + (call $_abort) + ) + (if + (i32.ne + (i32.load + (tee_local $7 + (i32.add + (get_local $11) + (i32.const 12) ) ) - (get_local $4) ) - (call $_abort) + (get_local $4) ) - (if - (i32.eq - (i32.load - (tee_local $1 - (i32.add - (get_local $0) - (i32.const 8) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $1 + (i32.add + (get_local $0) + (i32.const 8) ) ) - (get_local $4) ) - (block - (i32.store - (get_local $7) - (get_local $0) - ) - (i32.store - (get_local $1) - (get_local $11) - ) - (set_local $10 - (get_local $0) - ) + (get_local $4) + ) + (block + (i32.store + (get_local $7) + (get_local $0) + ) + (i32.store + (get_local $1) + (get_local $11) + ) + (set_local $10 + (get_local $0) ) - (call $_abort) ) + (call $_abort) ) ) - (if - (get_local $12) - (block $do-once21 - (if - (i32.eq - (get_local $4) - (i32.load - (tee_local $0 - (i32.add - (i32.shl - (tee_local $1 - (i32.load offset=28 - (get_local $4) - ) + ) + (if + (get_local $12) + (block $do-once21 + (if + (i32.eq + (get_local $4) + (i32.load + (tee_local $0 + (i32.add + (i32.shl + (tee_local $1 + (i32.load offset=28 + (get_local $4) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) ) ) - (block - (i32.store - (get_local $0) + ) + (block + (i32.store + (get_local $0) + (get_local $10) + ) + (if + (i32.eqz (get_local $10) ) - (if - (i32.eqz - (get_local $10) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $1) - ) - (i32.const -1) + (block + (i32.store + (i32.const 180) + (i32.and + (i32.load + (i32.const 180) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $1) ) + (i32.const -1) ) ) - (br $do-once21) ) + (br $do-once21) ) ) - (block - (if - (i32.lt_u - (get_local $12) - (i32.load - (i32.const 192) - ) + ) + (block + (if + (i32.lt_u + (get_local $12) + (i32.load + (i32.const 192) ) - (call $_abort) ) - (if - (i32.eq - (i32.load - (tee_local $0 - (i32.add - (get_local $12) - (i32.const 16) - ) + (call $_abort) + ) + (if + (i32.eq + (i32.load + (tee_local $0 + (i32.add + (get_local $12) + (i32.const 16) ) ) - (get_local $4) - ) - (i32.store - (get_local $0) - (get_local $10) - ) - (i32.store offset=20 - (get_local $12) - (get_local $10) ) + (get_local $4) ) - (br_if $do-once21 - (i32.eqz - (get_local $10) - ) + (i32.store + (get_local $0) + (get_local $10) + ) + (i32.store offset=20 + (get_local $12) + (get_local $10) ) ) - ) - (if - (i32.lt_u - (get_local $10) - (tee_local $0 - (i32.load - (i32.const 192) - ) + (br_if $do-once21 + (i32.eqz + (get_local $10) ) ) - (call $_abort) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $10) - (get_local $12) + (tee_local $0 + (i32.load + (i32.const 192) + ) + ) + ) + (call $_abort) + ) + (i32.store offset=24 + (get_local $10) + (get_local $12) + ) + (if + (tee_local $1 + (i32.load offset=16 + (get_local $4) + ) ) (if - (tee_local $1 - (i32.load offset=16 - (get_local $4) - ) + (i32.lt_u + (get_local $1) + (get_local $0) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=16 + (get_local $10) (get_local $1) - (get_local $0) ) - (call $_abort) - (block - (i32.store offset=16 - (get_local $10) - (get_local $1) - ) - (i32.store offset=24 - (get_local $1) - (get_local $10) - ) + (i32.store offset=24 + (get_local $1) + (get_local $10) ) ) ) + ) + (if + (tee_local $0 + (i32.load offset=20 + (get_local $4) + ) + ) (if - (tee_local $0 - (i32.load offset=20 - (get_local $4) + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 192) ) ) - (if - (i32.lt_u + (call $_abort) + (block + (i32.store offset=20 + (get_local $10) (get_local $0) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (i32.store offset=20 - (get_local $10) - (get_local $0) - ) - (i32.store offset=24 - (get_local $0) - (get_local $10) - ) + (i32.store offset=24 + (get_local $0) + (get_local $10) ) ) ) ) ) - (if - (i32.lt_u - (get_local $3) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $4) - (i32.or - (tee_local $0 - (i32.add - (get_local $3) - (get_local $2) - ) - ) - (i32.const 3) - ) - ) - (i32.store + ) + (if + (i32.lt_u + (get_local $3) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $4) + (i32.or (tee_local $0 (i32.add - (i32.add - (get_local $4) - (get_local $0) - ) - (i32.const 4) + (get_local $3) + (get_local $2) ) ) - (i32.or - (i32.load + (i32.const 3) + ) + ) + (i32.store + (tee_local $0 + (i32.add + (i32.add + (get_local $4) (get_local $0) ) - (i32.const 1) + (i32.const 4) ) ) - ) - (block $do-once25 - (i32.store offset=4 - (get_local $4) - (i32.or - (get_local $2) - (i32.const 3) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) - (i32.store offset=4 + ) + ) + (block $do-once25 + (i32.store offset=4 + (get_local $4) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $5) + (i32.or + (get_local $3) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $5) - (i32.or - (get_local $3) - (i32.const 1) - ) + (get_local $3) ) - (i32.store - (i32.add - (get_local $5) - (get_local $3) - ) + (get_local $3) + ) + (set_local $0 + (i32.shr_u (get_local $3) + (i32.const 3) ) - (set_local $0 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) + ) + (if + (i32.lt_u + (get_local $3) + (i32.const 256) ) - (if - (i32.lt_u - (get_local $3) - (i32.const 256) + (block + (set_local $3 + (i32.add + (i32.shl + (get_local $0) + (i32.const 3) + ) + (i32.const 216) + ) ) - (block - (set_local $3 - (i32.add + (if + (i32.and + (tee_local $1 + (i32.load + (i32.const 176) + ) + ) + (tee_local $0 (i32.shl + (i32.const 1) (get_local $0) - (i32.const 3) ) - (i32.const 216) ) ) (if - (i32.and - (tee_local $1 - (i32.load - (i32.const 176) - ) - ) + (i32.lt_u (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $0) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $1 - (i32.add - (get_local $3) - (i32.const 8) - ) + (i32.load + (tee_local $1 + (i32.add + (get_local $3) + (i32.const 8) ) ) ) - (i32.load - (i32.const 192) - ) ) - (call $_abort) - (block - (set_local $13 - (get_local $1) - ) - (set_local $6 - (get_local $0) - ) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store - (i32.const 176) - (i32.or - (get_local $1) - (get_local $0) - ) - ) (set_local $13 - (i32.add - (get_local $3) - (i32.const 8) - ) + (get_local $1) ) (set_local $6 - (get_local $3) + (get_local $0) ) ) ) - (i32.store - (get_local $13) - (get_local $5) - ) - (i32.store offset=12 - (get_local $6) - (get_local $5) - ) - (i32.store offset=8 - (get_local $5) - (get_local $6) - ) - (i32.store offset=12 - (get_local $5) - (get_local $3) + (block + (i32.store + (i32.const 176) + (i32.or + (get_local $1) + (get_local $0) + ) + ) + (set_local $13 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + (set_local $6 + (get_local $3) + ) ) - (br $do-once25) ) + (i32.store + (get_local $13) + (get_local $5) + ) + (i32.store offset=12 + (get_local $6) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $6) + ) + (i32.store offset=12 + (get_local $5) + (get_local $3) + ) + (br $do-once25) ) - (set_local $2 - (i32.add - (i32.shl - (tee_local $7 + ) + (set_local $2 + (i32.add + (i32.shl + (tee_local $7 + (if (result i32) + (tee_local $0 + (i32.shr_u + (get_local $3) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $0 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) + (i32.gt_u + (get_local $3) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $3) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $3) - (i32.add - (tee_local $0 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $3) + (i32.add + (tee_local $0 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $0) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (get_local $0) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $0) + (tee_local $2 + (i32.and + (i32.shr_u + (i32.add + (get_local $0) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $2) ) - (tee_local $0 - (i32.and - (i32.shr_u - (i32.add - (tee_local $1 - (i32.shl - (get_local $1) - (get_local $0) - ) + (get_local $2) + ) + (tee_local $0 + (i32.and + (i32.shr_u + (i32.add + (tee_local $1 + (i32.shl + (get_local $1) + (get_local $0) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $1) - (get_local $0) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $1) + (get_local $0) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $0) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $0) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 480) + (i32.const 2) ) + (i32.const 480) ) - (i32.store offset=28 - (get_local $5) - (get_local $7) - ) - (i32.store offset=4 - (tee_local $0 - (i32.add - (get_local $5) - (i32.const 16) - ) + ) + (i32.store offset=28 + (get_local $5) + (get_local $7) + ) + (i32.store offset=4 + (tee_local $0 + (i32.add + (get_local $5) + (i32.const 16) ) - (i32.const 0) ) - (i32.store - (get_local $0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (tee_local $1 - (i32.load - (i32.const 180) - ) - ) - (tee_local $0 - (i32.shl - (i32.const 1) - (get_local $7) - ) + (i32.const 0) + ) + (i32.store + (get_local $0) + (i32.const 0) + ) + (if + (i32.eqz + (i32.and + (tee_local $1 + (i32.load + (i32.const 180) ) ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (get_local $1) - (get_local $0) + (tee_local $0 + (i32.shl + (i32.const 1) + (get_local $7) ) ) - (i32.store - (get_local $2) - (get_local $5) - ) - (i32.store offset=24 - (get_local $5) - (get_local $2) - ) - (i32.store offset=12 - (get_local $5) - (get_local $5) - ) - (i32.store offset=8 - (get_local $5) - (get_local $5) + ) + ) + (block + (i32.store + (i32.const 180) + (i32.or + (get_local $1) + (get_local $0) ) - (br $do-once25) ) + (i32.store + (get_local $2) + (get_local $5) + ) + (i32.store offset=24 + (get_local $5) + (get_local $2) + ) + (i32.store offset=12 + (get_local $5) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $5) + ) + (br $do-once25) ) - (set_local $7 - (i32.shl - (get_local $3) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $7) - (i32.const 1) - ) - ) - (i32.eq + ) + (set_local $7 + (i32.shl + (get_local $3) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $7) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $7) + (i32.const 31) + ) ) ) - (set_local $0 - (i32.load - (get_local $2) - ) + ) + (set_local $0 + (i32.load + (get_local $2) ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $0) - ) - (i32.const -8) + ) + (block $__rjto$1 + (block $__rjti$1 + (loop $while-in28 + (br_if $__rjti$1 + (i32.eq + (i32.and + (i32.load offset=4 + (get_local $0) ) - (get_local $3) + (i32.const -8) ) + (get_local $3) ) - (set_local $2 - (i32.shl - (get_local $7) - (i32.const 1) - ) + ) + (set_local $2 + (i32.shl + (get_local $7) + (i32.const 1) ) - (if - (tee_local $1 - (i32.load - (tee_local $7 + ) + (if + (tee_local $1 + (i32.load + (tee_local $7 + (i32.add (i32.add - (i32.add - (get_local $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $7) - (i32.const 31) - ) - (i32.const 2) + (get_local $0) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $7) + (i32.const 31) ) + (i32.const 2) ) ) ) ) - (block - (set_local $7 - (get_local $2) - ) - (set_local $0 - (get_local $1) - ) - (br $while-in28) - ) ) - ) - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) (block - (i32.store - (get_local $7) - (get_local $5) - ) - (i32.store offset=24 - (get_local $5) - (get_local $0) - ) - (i32.store offset=12 - (get_local $5) - (get_local $5) + (set_local $7 + (get_local $2) ) - (i32.store offset=8 - (get_local $5) - (get_local $5) + (set_local $0 + (get_local $1) ) - (br $do-once25) + (br $while-in28) ) ) - (br $__rjto$1) ) (if - (i32.and - (i32.ge_u - (tee_local $2 - (i32.load - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 8) - ) - ) - ) - ) - (tee_local $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (get_local $0) - (get_local $1) + (i32.lt_u + (get_local $7) + (i32.load + (i32.const 192) ) ) + (call $_abort) (block - (i32.store offset=12 - (get_local $2) - (get_local $5) - ) (i32.store - (get_local $3) + (get_local $7) (get_local $5) ) - (i32.store offset=8 + (i32.store offset=24 (get_local $5) - (get_local $2) + (get_local $0) ) (i32.store offset=12 (get_local $5) - (get_local $0) + (get_local $5) ) - (i32.store offset=24 + (i32.store offset=8 + (get_local $5) (get_local $5) - (i32.const 0) ) + (br $do-once25) ) - (call $_abort) ) + (br $__rjto$1) + ) + (if + (i32.and + (i32.ge_u + (tee_local $2 + (i32.load + (tee_local $3 + (i32.add + (get_local $0) + (i32.const 8) + ) + ) + ) + ) + (tee_local $1 + (i32.load + (i32.const 192) + ) + ) + ) + (i32.ge_u + (get_local $0) + (get_local $1) + ) + ) + (block + (i32.store offset=12 + (get_local $2) + (get_local $5) + ) + (i32.store + (get_local $3) + (get_local $5) + ) + (i32.store offset=8 + (get_local $5) + (get_local $2) + ) + (i32.store offset=12 + (get_local $5) + (get_local $0) + ) + (i32.store offset=24 + (get_local $5) + (i32.const 0) + ) + ) + (call $_abort) ) ) ) - (return - (i32.add - (get_local $4) - (i32.const 8) - ) + ) + (return + (i32.add + (get_local $4) + (i32.const 8) ) ) - (get_local $2) ) (get_local $2) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) ) ) ) - (if - (i32.ge_u - (tee_local $1 - (i32.load - (i32.const 184) - ) + ) + (if + (i32.ge_u + (tee_local $1 + (i32.load + (i32.const 184) ) - (get_local $0) ) - (block - (set_local $2 - (i32.load - (i32.const 196) + (get_local $0) + ) + (block + (set_local $2 + (i32.load + (i32.const 196) + ) + ) + (if + (i32.gt_u + (tee_local $3 + (i32.sub + (get_local $1) + (get_local $0) + ) ) + (i32.const 15) ) - (if - (i32.gt_u - (tee_local $3 - (i32.sub - (get_local $1) + (block + (i32.store + (i32.const 196) + (tee_local $1 + (i32.add + (get_local $2) (get_local $0) ) ) - (i32.const 15) ) - (block - (i32.store - (i32.const 196) - (tee_local $1 - (i32.add - (get_local $2) - (get_local $0) - ) - ) - ) - (i32.store - (i32.const 184) + (i32.store + (i32.const 184) + (get_local $3) + ) + (i32.store offset=4 + (get_local $1) + (i32.or (get_local $3) + (i32.const 1) ) - (i32.store offset=4 + ) + (i32.store + (i32.add (get_local $1) - (i32.or - (get_local $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (get_local $1) - (get_local $3) - ) (get_local $3) ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $0) - (i32.const 3) - ) - ) + (get_local $3) ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) + (i32.store offset=4 + (get_local $2) + (i32.or + (get_local $0) + (i32.const 3) ) - (i32.store offset=4 - (get_local $2) - (i32.or - (get_local $1) - (i32.const 3) - ) + ) + ) + (block + (i32.store + (i32.const 184) + (i32.const 0) + ) + (i32.store + (i32.const 196) + (i32.const 0) + ) + (i32.store offset=4 + (get_local $2) + (i32.or + (get_local $1) + (i32.const 3) ) - (i32.store - (tee_local $0 + ) + (i32.store + (tee_local $0 + (i32.add (i32.add - (i32.add - (get_local $2) - (get_local $1) - ) - (i32.const 4) + (get_local $2) + (get_local $1) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $0) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $0) ) + (i32.const 1) ) ) ) - (return - (i32.add - (get_local $2) - (i32.const 8) - ) + ) + (return + (i32.add + (get_local $2) + (i32.const 8) ) ) ) + ) + (block $folding-inner0 (br_if $folding-inner0 (i32.gt_u (tee_local $1 diff --git a/test/example/relooper-fuzz1.txt b/test/example/relooper-fuzz1.txt index af3140f9c..d05a316e2 100644 --- a/test/example/relooper-fuzz1.txt +++ b/test/example/relooper-fuzz1.txt @@ -432,11 +432,11 @@ (i32.const 124) (i32.const 3) ) + (call $print + (i32.const 0) + ) (block $block$10$break (block $block$4$break - (call $print - (i32.const 0) - ) (if (i32.and (tee_local $0 diff --git a/test/memorygrowth.fromasm b/test/memorygrowth.fromasm index 38d5d9e5d..992ac9c04 100644 --- a/test/memorygrowth.fromasm +++ b/test/memorygrowth.fromasm @@ -110,782 +110,816 @@ (local $52 i32) (local $53 i32) (local $54 i32) - (block $folding-inner0 - (set_local $25 + (set_local $25 + (get_global $r) + ) + (set_global $r + (i32.add (get_global $r) + (i32.const 16) ) - (set_global $r - (i32.add - (get_global $r) - (i32.const 16) + ) + (set_local $14 + (get_local $25) + ) + (set_local $6 + (if (result i32) + (i32.lt_u + (get_local $0) + (i32.const 245) ) - ) - (set_local $14 - (get_local $25) - ) - (set_local $6 - (if (result i32) - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (tee_local $6 - (i32.shr_u - (tee_local $5 - (i32.load - (i32.const 1208) - ) + (block (result i32) + (if + (i32.and + (tee_local $6 + (i32.shr_u + (tee_local $5 + (i32.load + (i32.const 1208) ) - (tee_local $0 - (i32.shr_u - (tee_local $2 - (select - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u + ) + (tee_local $0 + (i32.shr_u + (tee_local $2 + (select + (i32.const 16) + (i32.and + (i32.add (get_local $0) (i32.const 11) ) + (i32.const -8) + ) + (i32.lt_u + (get_local $0) + (i32.const 11) ) ) - (i32.const 3) ) + (i32.const 3) ) ) ) - (i32.const 3) ) - (block - (set_local $7 - (i32.load - (tee_local $2 - (i32.add - (tee_local $13 - (i32.load - (tee_local $16 - (i32.add - (tee_local $9 - (i32.add - (i32.shl - (tee_local $0 - (i32.add - (i32.xor - (i32.and - (get_local $6) - (i32.const 1) - ) + (i32.const 3) + ) + (block + (set_local $7 + (i32.load + (tee_local $2 + (i32.add + (tee_local $13 + (i32.load + (tee_local $16 + (i32.add + (tee_local $9 + (i32.add + (i32.shl + (tee_local $0 + (i32.add + (i32.xor + (i32.and + (get_local $6) (i32.const 1) ) - (get_local $0) + (i32.const 1) ) + (get_local $0) ) - (i32.const 3) ) - (i32.const 1248) + (i32.const 3) ) + (i32.const 1248) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $9) - (get_local $7) - ) - (i32.store - (i32.const 1208) - (i32.and - (get_local $5) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $0) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $9) + (get_local $7) + ) + (i32.store + (i32.const 1208) + (i32.and + (get_local $5) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $0) ) + (i32.const -1) ) ) - (block - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $7) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $8 + (i32.add + (get_local $7) + (i32.const 12) ) ) - (get_local $13) ) - (block - (i32.store - (get_local $8) - (get_local $9) - ) - (i32.store - (get_local $16) - (get_local $7) - ) + (get_local $13) + ) + (block + (i32.store + (get_local $8) + (get_local $9) + ) + (i32.store + (get_local $16) + (get_local $7) ) - (call $qa) ) + (call $qa) ) ) - (i32.store offset=4 - (get_local $13) - (i32.or - (tee_local $7 - (i32.shl - (get_local $0) - (i32.const 3) - ) + ) + (i32.store offset=4 + (get_local $13) + (i32.or + (tee_local $7 + (i32.shl + (get_local $0) + (i32.const 3) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $16 + ) + (i32.store + (tee_local $16 + (i32.add (i32.add - (i32.add - (get_local $13) - (get_local $7) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $16) + (get_local $13) + (get_local $7) ) - (i32.const 1) + (i32.const 4) ) ) - (set_global $r - (get_local $25) - ) - (return - (get_local $2) + (i32.or + (i32.load + (get_local $16) + ) + (i32.const 1) ) ) - ) - (if (result i32) - (i32.gt_u + (set_global $r + (get_local $25) + ) + (return (get_local $2) - (tee_local $16 - (i32.load - (i32.const 1216) - ) + ) + ) + ) + (if (result i32) + (i32.gt_u + (get_local $2) + (tee_local $16 + (i32.load + (i32.const 1216) ) ) - (block (result i32) - (if - (get_local $6) - (block - (set_local $9 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.add - (i32.and - (tee_local $9 - (i32.and - (i32.shl - (get_local $6) - (get_local $0) - ) - (i32.or - (tee_local $7 - (i32.shl - (i32.const 2) - (get_local $0) - ) - ) - (i32.sub - (i32.const 0) - (get_local $7) + ) + (block (result i32) + (if + (get_local $6) + (block + (set_local $9 + (i32.and + (i32.shr_u + (tee_local $7 + (i32.add + (i32.and + (tee_local $9 + (i32.and + (i32.shl + (get_local $6) + (get_local $0) + ) + (i32.or + (tee_local $7 + (i32.shl + (i32.const 2) + (get_local $0) ) ) + (i32.sub + (i32.const 0) + (get_local $7) + ) ) ) - (i32.sub - (i32.const 0) - (get_local $9) - ) ) - (i32.const -1) + (i32.sub + (i32.const 0) + (get_local $9) + ) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $9 - (i32.load - (tee_local $8 - (i32.add - (tee_local $10 - (i32.load - (tee_local $13 - (i32.add - (tee_local $3 - (i32.add - (i32.shl - (tee_local $4 - (i32.add + ) + (set_local $9 + (i32.load + (tee_local $8 + (i32.add + (tee_local $10 + (i32.load + (tee_local $13 + (i32.add + (tee_local $3 + (i32.add + (i32.shl + (tee_local $4 + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $7 - (i32.and - (i32.shr_u - (tee_local $8 - (i32.shr_u - (get_local $7) - (get_local $9) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $9) - ) - (tee_local $8 + (tee_local $7 (i32.and (i32.shr_u - (tee_local $10 + (tee_local $8 (i32.shr_u - (get_local $8) (get_local $7) + (get_local $9) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $9) ) - (tee_local $10 + (tee_local $8 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $10 (i32.shr_u - (get_local $10) (get_local $8) + (get_local $7) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $3 + (tee_local $10 (i32.and (i32.shr_u - (tee_local $13 + (tee_local $3 (i32.shr_u - (get_local $3) (get_local $10) + (get_local $8) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $13) - (get_local $3) + (tee_local $3 + (i32.and + (i32.shr_u + (tee_local $13 + (i32.shr_u + (get_local $3) + (get_local $10) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) + (i32.shr_u + (get_local $13) + (get_local $3) + ) ) - (i32.const 3) ) - (i32.const 1248) + (i32.const 3) ) + (i32.const 1248) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $3) - (get_local $9) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (get_local $5) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $3) + (get_local $9) + ) + (block + (i32.store + (i32.const 1208) + (i32.and + (get_local $5) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $4) ) + (i32.const -1) ) ) - (set_local $34 - (get_local $16) - ) ) - (block - (if - (i32.lt_u - (get_local $9) - (i32.load - (i32.const 1224) - ) + (set_local $34 + (get_local $16) + ) + ) + (block + (if + (i32.lt_u + (get_local $9) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $7 + (i32.add + (get_local $9) + (i32.const 12) ) ) - (get_local $10) ) - (block - (i32.store - (get_local $7) - (get_local $3) - ) - (i32.store - (get_local $13) - (get_local $9) - ) - (set_local $34 - (i32.load - (i32.const 1216) - ) + (get_local $10) + ) + (block + (i32.store + (get_local $7) + (get_local $3) + ) + (i32.store + (get_local $13) + (get_local $9) + ) + (set_local $34 + (i32.load + (i32.const 1216) ) ) - (call $qa) ) + (call $qa) ) ) - (i32.store offset=4 - (get_local $10) - (i32.or + ) + (i32.store offset=4 + (get_local $10) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (tee_local $13 + (i32.add + (get_local $10) (get_local $2) - (i32.const 3) ) ) - (i32.store offset=4 - (tee_local $13 - (i32.add - (get_local $10) - (get_local $2) - ) - ) - (i32.or - (tee_local $9 - (i32.sub - (i32.shl - (get_local $4) - (i32.const 3) - ) - (get_local $2) + (i32.or + (tee_local $9 + (i32.sub + (i32.shl + (get_local $4) + (i32.const 3) ) + (get_local $2) ) - (i32.const 1) ) + (i32.const 1) ) - (i32.store - (i32.add - (get_local $13) - (get_local $9) - ) + ) + (i32.store + (i32.add + (get_local $13) (get_local $9) ) - (if - (get_local $34) - (block - (set_local $3 - (i32.load - (i32.const 1228) + (get_local $9) + ) + (if + (get_local $34) + (block + (set_local $3 + (i32.load + (i32.const 1228) + ) + ) + (set_local $5 + (i32.add + (i32.shl + (tee_local $16 + (i32.shr_u + (get_local $34) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 1248) ) - (set_local $5 - (i32.add + ) + (if + (i32.and + (tee_local $0 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $6 (i32.shl - (tee_local $16 - (i32.shr_u - (get_local $34) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $16) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $0 (i32.load - (i32.const 1208) - ) - ) - (tee_local $6 - (i32.shl - (i32.const 1) - (get_local $16) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $6 - (i32.add - (get_local $5) - (i32.const 8) - ) + (tee_local $6 + (i32.add + (get_local $5) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $40 - (get_local $6) - ) - (set_local $35 - (get_local $0) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $0) - (get_local $6) - ) - ) (set_local $40 - (i32.add - (get_local $5) - (i32.const 8) - ) + (get_local $6) ) (set_local $35 - (get_local $5) + (get_local $0) ) ) ) - (i32.store - (get_local $40) - (get_local $3) - ) - (i32.store offset=12 - (get_local $35) - (get_local $3) - ) - (i32.store offset=8 - (get_local $3) - (get_local $35) - ) - (i32.store offset=12 - (get_local $3) - (get_local $5) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $0) + (get_local $6) + ) + ) + (set_local $40 + (i32.add + (get_local $5) + (i32.const 8) + ) + ) + (set_local $35 + (get_local $5) + ) ) ) + (i32.store + (get_local $40) + (get_local $3) + ) + (i32.store offset=12 + (get_local $35) + (get_local $3) + ) + (i32.store offset=8 + (get_local $3) + (get_local $35) + ) + (i32.store offset=12 + (get_local $3) + (get_local $5) + ) ) - (i32.store - (i32.const 1216) - (get_local $9) - ) - (i32.store - (i32.const 1228) - (get_local $13) - ) - (set_global $r - (get_local $25) - ) - (return - (get_local $8) - ) + ) + (i32.store + (i32.const 1216) + (get_local $9) + ) + (i32.store + (i32.const 1228) + (get_local $13) + ) + (set_global $r + (get_local $25) + ) + (return + (get_local $8) ) ) - (if (result i32) - (tee_local $13 - (i32.load - (i32.const 1212) - ) + ) + (if (result i32) + (tee_local $13 + (i32.load + (i32.const 1212) ) - (block - (set_local $13 - (i32.and - (i32.shr_u - (tee_local $9 - (i32.add - (i32.and + ) + (block + (set_local $13 + (i32.and + (i32.shr_u + (tee_local $9 + (i32.add + (i32.and + (get_local $13) + (i32.sub + (i32.const 0) (get_local $13) - (i32.sub - (i32.const 0) - (get_local $13) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $0 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $16 - (i32.load - (i32.add - (i32.shl - (i32.add + ) + (set_local $0 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $16 + (i32.load + (i32.add + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $9 - (i32.and - (i32.shr_u - (tee_local $5 - (i32.shr_u - (get_local $9) - (get_local $13) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $13) - ) - (tee_local $5 + (tee_local $9 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $5 (i32.shr_u - (get_local $5) (get_local $9) + (get_local $13) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $13) ) - (tee_local $3 + (tee_local $5 (i32.and (i32.shr_u - (tee_local $0 + (tee_local $3 (i32.shr_u - (get_local $3) (get_local $5) + (get_local $9) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $0 + (tee_local $3 (i32.and (i32.shr_u - (tee_local $6 + (tee_local $0 (i32.shr_u - (get_local $0) (get_local $3) + (get_local $5) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $6) - (get_local $0) + (tee_local $0 + (i32.and + (i32.shr_u + (tee_local $6 + (i32.shr_u + (get_local $0) + (get_local $3) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $6) + (get_local $0) + ) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (set_local $3 - (tee_local $6 - (get_local $16) - ) + ) + (set_local $3 + (tee_local $6 + (get_local $16) ) - (loop $while-in - (block $while-out - (set_local $5 - (i32.lt_u - (tee_local $16 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $6 + ) + (loop $while-in + (block $while-out + (set_local $5 + (i32.lt_u + (tee_local $16 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $6 + (if (result i32) + (tee_local $16 + (i32.load offset=16 + (get_local $6) + ) + ) + (get_local $16) (if (result i32) - (tee_local $16 - (i32.load offset=16 + (tee_local $5 + (i32.load offset=20 (get_local $6) ) ) - (get_local $16) - (if (result i32) - (tee_local $5 - (i32.load offset=20 - (get_local $6) - ) + (get_local $5) + (block + (set_local $7 + (get_local $0) ) - (get_local $5) - (block - (set_local $7 - (get_local $0) - ) - (set_local $1 - (get_local $3) - ) - (br $while-out) + (set_local $1 + (get_local $3) ) + (br $while-out) ) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $0) ) + (get_local $0) ) - (set_local $0 - (select - (get_local $16) - (get_local $0) - (get_local $5) - ) + ) + (set_local $0 + (select + (get_local $16) + (get_local $0) + (get_local $5) ) - (set_local $3 - (select - (get_local $6) - (get_local $3) - (get_local $5) - ) + ) + (set_local $3 + (select + (get_local $6) + (get_local $3) + (get_local $5) ) - (br $while-in) ) + (br $while-in) ) - (if - (i32.lt_u - (get_local $1) - (tee_local $3 - (i32.load - (i32.const 1224) - ) + ) + (if + (i32.lt_u + (get_local $1) + (tee_local $3 + (i32.load + (i32.const 1224) ) ) - (call $qa) ) - (if - (i32.ge_u - (get_local $1) - (tee_local $6 - (i32.add - (get_local $1) - (get_local $2) - ) + (call $qa) + ) + (if + (i32.ge_u + (get_local $1) + (tee_local $6 + (i32.add + (get_local $1) + (get_local $2) ) ) - (call $qa) ) - (set_local $0 - (i32.load offset=24 - (get_local $1) + (call $qa) + ) + (set_local $0 + (i32.load offset=24 + (get_local $1) + ) + ) + (if + (i32.eq + (tee_local $8 + (i32.load offset=12 + (get_local $1) + ) ) + (get_local $1) ) - (if - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $1) + (block $do-once4 + (if + (tee_local $4 + (i32.load + (tee_local $10 + (i32.add + (get_local $1) + (i32.const 20) + ) + ) + ) + ) + (block + (set_local $16 + (get_local $4) + ) + (set_local $5 + (get_local $10) + ) + ) + (br_if $do-once4 + (i32.eqz + (tee_local $16 + (i32.load + (tee_local $5 + (i32.add + (get_local $1) + (i32.const 16) + ) + ) + ) + ) ) ) - (get_local $1) ) - (block $do-once4 + (loop $while-in7 (if (tee_local $4 (i32.load (tee_local $10 (i32.add - (get_local $1) + (get_local $16) (i32.const 20) ) ) @@ -898,725 +932,689 @@ (set_local $5 (get_local $10) ) - ) - (br_if $do-once4 - (i32.eqz - (tee_local $16 - (i32.load - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - ) + (br $while-in7) ) ) - (loop $while-in7 - (if - (tee_local $4 - (i32.load - (tee_local $10 - (i32.add - (get_local $16) - (i32.const 20) - ) + (if + (tee_local $4 + (i32.load + (tee_local $10 + (i32.add + (get_local $16) + (i32.const 16) ) ) ) - (block - (set_local $16 - (get_local $4) - ) - (set_local $5 - (get_local $10) - ) - (br $while-in7) - ) ) - (if - (tee_local $4 - (i32.load - (tee_local $10 - (i32.add - (get_local $16) - (i32.const 16) - ) - ) - ) + (block + (set_local $16 + (get_local $4) ) - (block - (set_local $16 - (get_local $4) - ) - (set_local $5 - (get_local $10) - ) - (br $while-in7) + (set_local $5 + (get_local $10) ) + (br $while-in7) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $5) + (get_local $3) + ) + (call $qa) + (block + (i32.store (get_local $5) - (get_local $3) + (i32.const 0) ) - (call $qa) - (block - (i32.store - (get_local $5) - (i32.const 0) - ) - (set_local $23 - (get_local $16) - ) + (set_local $23 + (get_local $16) ) ) ) - (block - (if - (i32.lt_u - (tee_local $10 - (i32.load offset=8 - (get_local $1) - ) + ) + (block + (if + (i32.lt_u + (tee_local $10 + (i32.load offset=8 + (get_local $1) ) - (get_local $3) ) - (call $qa) + (get_local $3) ) - (if - (i32.ne - (i32.load - (tee_local $4 - (i32.add - (get_local $10) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.ne + (i32.load + (tee_local $4 + (i32.add + (get_local $10) + (i32.const 12) ) ) - (get_local $1) ) - (call $qa) + (get_local $1) ) - (if - (i32.eq - (i32.load - (tee_local $5 - (i32.add - (get_local $8) - (i32.const 8) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $5 + (i32.add + (get_local $8) + (i32.const 8) ) ) - (get_local $1) ) - (block - (i32.store - (get_local $4) - (get_local $8) - ) - (i32.store - (get_local $5) - (get_local $10) - ) - (set_local $23 - (get_local $8) - ) + (get_local $1) + ) + (block + (i32.store + (get_local $4) + (get_local $8) + ) + (i32.store + (get_local $5) + (get_local $10) + ) + (set_local $23 + (get_local $8) ) - (call $qa) ) + (call $qa) ) ) - (if - (get_local $0) - (block $do-once8 - (if - (i32.eq - (get_local $1) - (i32.load - (tee_local $3 - (i32.add - (i32.shl - (tee_local $8 - (i32.load offset=28 - (get_local $1) - ) + ) + (if + (get_local $0) + (block $do-once8 + (if + (i32.eq + (get_local $1) + (i32.load + (tee_local $3 + (i32.add + (i32.shl + (tee_local $8 + (i32.load offset=28 + (get_local $1) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (block - (i32.store - (get_local $3) + ) + (block + (i32.store + (get_local $3) + (get_local $23) + ) + (if + (i32.eqz (get_local $23) ) - (if - (i32.eqz - (get_local $23) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $8) - ) - (i32.const -1) + (block + (i32.store + (i32.const 1212) + (i32.and + (i32.load + (i32.const 1212) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $8) ) + (i32.const -1) ) ) - (br $do-once8) ) + (br $do-once8) ) ) - (block - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $8 + (i32.add + (get_local $0) + (i32.const 16) ) ) - (get_local $1) - ) - (i32.store - (get_local $8) - (get_local $23) - ) - (i32.store offset=20 - (get_local $0) - (get_local $23) ) + (get_local $1) ) - (br_if $do-once8 - (i32.eqz - (get_local $23) - ) + (i32.store + (get_local $8) + (get_local $23) + ) + (i32.store offset=20 + (get_local $0) + (get_local $23) ) ) - ) - (if - (i32.lt_u - (get_local $23) - (tee_local $8 - (i32.load - (i32.const 1224) - ) + (br_if $do-once8 + (i32.eqz + (get_local $23) ) ) - (call $qa) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $23) - (get_local $0) + (tee_local $8 + (i32.load + (i32.const 1224) + ) + ) + ) + (call $qa) + ) + (i32.store offset=24 + (get_local $23) + (get_local $0) + ) + (if + (tee_local $3 + (i32.load offset=16 + (get_local $1) + ) ) (if - (tee_local $3 - (i32.load offset=16 - (get_local $1) - ) + (i32.lt_u + (get_local $3) + (get_local $8) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=16 + (get_local $23) (get_local $3) - (get_local $8) ) - (call $qa) - (block - (i32.store offset=16 - (get_local $23) - (get_local $3) - ) - (i32.store offset=24 - (get_local $3) - (get_local $23) - ) + (i32.store offset=24 + (get_local $3) + (get_local $23) ) ) ) + ) + (if + (tee_local $3 + (i32.load offset=20 + (get_local $1) + ) + ) (if - (tee_local $3 - (i32.load offset=20 - (get_local $1) + (i32.lt_u + (get_local $3) + (i32.load + (i32.const 1224) ) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=20 + (get_local $23) (get_local $3) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (i32.store offset=20 - (get_local $23) - (get_local $3) - ) - (i32.store offset=24 - (get_local $3) - (get_local $23) - ) + (i32.store offset=24 + (get_local $3) + (get_local $23) ) ) ) ) ) - (if - (i32.lt_u - (get_local $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $1) - (i32.or - (tee_local $0 - (i32.add - (get_local $7) - (get_local $2) - ) + ) + (if + (i32.lt_u + (get_local $7) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $1) + (i32.or + (tee_local $0 + (i32.add + (get_local $7) + (get_local $2) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $3 + ) + (i32.store + (tee_local $3 + (i32.add (i32.add - (i32.add - (get_local $1) - (get_local $0) - ) - (i32.const 4) + (get_local $1) + (get_local $0) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $3) ) + (i32.const 1) ) ) - (block - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 3) - ) + ) + (block + (i32.store offset=4 + (get_local $1) + (i32.or + (get_local $2) + (i32.const 3) ) - (i32.store offset=4 + ) + (i32.store offset=4 + (get_local $6) + (i32.or + (get_local $7) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $6) - (i32.or - (get_local $7) - (i32.const 1) - ) + (get_local $7) ) - (i32.store - (i32.add - (get_local $6) - (get_local $7) + (get_local $7) + ) + (if + (tee_local $3 + (i32.load + (i32.const 1216) ) - (get_local $7) ) - (if - (tee_local $3 + (block + (set_local $0 (i32.load - (i32.const 1216) + (i32.const 1228) ) ) - (block - (set_local $0 - (i32.load - (i32.const 1228) + (set_local $3 + (i32.add + (i32.shl + (tee_local $8 + (i32.shr_u + (get_local $3) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 1248) ) - (set_local $3 - (i32.add + ) + (if + (i32.and + (tee_local $10 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $5 (i32.shl - (tee_local $8 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $8) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $10 (i32.load - (i32.const 1208) - ) - ) - (tee_local $5 - (i32.shl - (i32.const 1) - (get_local $8) - ) - ) - ) - (if - (i32.lt_u - (tee_local $10 - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 8) - ) + (tee_local $5 + (i32.add + (get_local $3) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $41 - (get_local $5) - ) - (set_local $27 - (get_local $10) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $10) - (get_local $5) - ) - ) (set_local $41 - (i32.add - (get_local $3) - (i32.const 8) - ) + (get_local $5) ) (set_local $27 - (get_local $3) + (get_local $10) ) ) ) - (i32.store - (get_local $41) - (get_local $0) - ) - (i32.store offset=12 - (get_local $27) - (get_local $0) - ) - (i32.store offset=8 - (get_local $0) - (get_local $27) - ) - (i32.store offset=12 - (get_local $0) - (get_local $3) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $10) + (get_local $5) + ) + ) + (set_local $41 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + (set_local $27 + (get_local $3) + ) ) ) - ) - (i32.store - (i32.const 1216) - (get_local $7) - ) - (i32.store - (i32.const 1228) - (get_local $6) + (i32.store + (get_local $41) + (get_local $0) + ) + (i32.store offset=12 + (get_local $27) + (get_local $0) + ) + (i32.store offset=8 + (get_local $0) + (get_local $27) + ) + (i32.store offset=12 + (get_local $0) + (get_local $3) + ) ) ) - ) - (set_global $r - (get_local $25) - ) - (return - (i32.add - (get_local $1) - (i32.const 8) + (i32.store + (i32.const 1216) + (get_local $7) + ) + (i32.store + (i32.const 1228) + (get_local $6) ) ) ) - (get_local $2) + (set_global $r + (get_local $25) + ) + (return + (i32.add + (get_local $1) + (i32.const 8) + ) + ) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (set_local $0 - (i32.and - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 11) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $0) + (i32.const -65) + ) + (i32.const -1) + (block $do-once (result i32) + (set_local $0 + (i32.and + (tee_local $3 + (i32.add + (get_local $0) + (i32.const 11) ) - (i32.const -8) ) + (i32.const -8) ) - (if (result i32) - (tee_local $10 - (i32.load - (i32.const 1212) - ) + ) + (if (result i32) + (tee_local $10 + (i32.load + (i32.const 1212) ) - (block (result i32) - (set_local $5 - (i32.sub - (i32.const 0) - (get_local $0) - ) + ) + (block (result i32) + (set_local $5 + (i32.sub + (i32.const 0) + (get_local $0) ) - (if - (tee_local $13 - (i32.load - (i32.add - (i32.shl - (tee_local $27 + ) + (if + (tee_local $13 + (i32.load + (i32.add + (i32.shl + (tee_local $27 + (if (result i32) + (tee_local $8 + (i32.shr_u + (get_local $3) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $8 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) + (i32.gt_u + (get_local $0) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $0) - (i32.add - (tee_local $13 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $0) + (i32.add + (tee_local $13 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $8 - (i32.and - (i32.shr_u - (i32.add - (tee_local $4 - (i32.shl - (get_local $8) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $8) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $8 + (i32.and + (i32.shr_u + (i32.add + (tee_local $4 + (i32.shl + (get_local $8) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $8) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $4 - (i32.and - (i32.shr_u - (i32.add - (tee_local $16 - (i32.shl - (get_local $4) - (get_local $8) - ) + (get_local $3) + ) + (tee_local $4 + (i32.and + (i32.shr_u + (i32.add + (tee_local $16 + (i32.shl + (get_local $4) + (get_local $8) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $16) - (get_local $4) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $16) + (get_local $4) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $13) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $13) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) - (block $label$break$a - (set_local $4 - (get_local $5) - ) - (set_local $16 - (i32.const 0) - ) - (set_local $3 - (i32.shl - (get_local $0) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $27) - (i32.const 1) - ) - ) - (i32.eq + ) + (block $label$break$a + (set_local $4 + (get_local $5) + ) + (set_local $16 + (i32.const 0) + ) + (set_local $3 + (i32.shl + (get_local $0) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $27) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $27) + (i32.const 31) + ) ) ) - (set_local $8 - (get_local $13) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $13 - (i32.sub - (tee_local $2 - (i32.and - (i32.load offset=4 - (get_local $8) - ) - (i32.const -8) + ) + (set_local $8 + (get_local $13) + ) + (loop $while-in14 + (if + (i32.lt_u + (tee_local $13 + (i32.sub + (tee_local $2 + (i32.and + (i32.load offset=4 + (get_local $8) ) + (i32.const -8) ) - (get_local $0) ) + (get_local $0) ) - (get_local $4) ) - (set_local $4 - (if (result i32) - (i32.eq - (get_local $2) - (get_local $0) + (get_local $4) + ) + (set_local $4 + (if (result i32) + (i32.eq + (get_local $2) + (get_local $0) + ) + (block + (set_local $29 + (get_local $13) ) - (block - (set_local $29 - (get_local $13) - ) - (set_local $28 - (get_local $8) - ) - (set_local $32 - (get_local $8) - ) - (set_local $8 - (i32.const 90) - ) - (br $label$break$a) + (set_local $28 + (get_local $8) ) - (block (result i32) - (set_local $9 - (get_local $8) - ) - (get_local $13) + (set_local $32 + (get_local $8) ) + (set_local $8 + (i32.const 90) + ) + (br $label$break$a) ) - ) - ) - (set_local $2 - (select - (get_local $16) - (tee_local $13 - (i32.load offset=20 + (block (result i32) + (set_local $9 (get_local $8) ) + (get_local $13) ) - (i32.or - (i32.eqz - (get_local $13) - ) - (i32.eq - (get_local $13) - (tee_local $8 - (i32.load + ) + ) + ) + (set_local $2 + (select + (get_local $16) + (tee_local $13 + (i32.load offset=20 + (get_local $8) + ) + ) + (i32.or + (i32.eqz + (get_local $13) + ) + (i32.eq + (get_local $13) + (tee_local $8 + (i32.load + (i32.add (i32.add - (i32.add - (get_local $8) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $3) - (i32.const 31) - ) - (i32.const 2) + (get_local $8) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $3) + (i32.const 31) ) + (i32.const 2) ) ) ) @@ -1624,262 +1622,283 @@ ) ) ) - (set_local $6 - (if (result i32) - (tee_local $13 - (i32.eqz - (get_local $8) - ) + ) + (set_local $6 + (if (result i32) + (tee_local $13 + (i32.eqz + (get_local $8) ) - (block (result i32) - (set_local $36 - (get_local $4) - ) - (set_local $33 - (get_local $9) - ) - (set_local $8 - (i32.const 86) - ) + ) + (block (result i32) + (set_local $36 + (get_local $4) + ) + (set_local $33 + (get_local $9) + ) + (set_local $8 + (i32.const 86) + ) + (get_local $2) + ) + (block + (set_local $16 (get_local $2) ) - (block - (set_local $16 - (get_local $2) - ) - (set_local $3 - (i32.shl - (get_local $3) - (i32.xor - (i32.and - (get_local $13) - (i32.const 1) - ) + (set_local $3 + (i32.shl + (get_local $3) + (i32.xor + (i32.and + (get_local $13) (i32.const 1) ) + (i32.const 1) ) ) - (br $while-in14) ) + (br $while-in14) ) ) ) ) - (block - (set_local $36 - (get_local $5) - ) - (set_local $8 - (i32.const 86) - ) - ) ) - (if - (i32.eq - (get_local $8) + (block + (set_local $36 + (get_local $5) + ) + (set_local $8 (i32.const 86) ) - (if - (tee_local $2 - (if (result i32) - (i32.or - (get_local $6) - (get_local $33) - ) + ) + ) + (if + (i32.eq + (get_local $8) + (i32.const 86) + ) + (if + (tee_local $2 + (if (result i32) + (i32.or (get_local $6) - (block (result i32) - (drop - (br_if $do-once - (get_local $0) - (i32.eqz - (tee_local $5 - (i32.and - (get_local $10) - (i32.or - (tee_local $13 - (i32.shl - (i32.const 2) - (get_local $27) - ) - ) - (i32.sub - (i32.const 0) - (get_local $13) + (get_local $33) + ) + (get_local $6) + (block (result i32) + (drop + (br_if $do-once + (get_local $0) + (i32.eqz + (tee_local $5 + (i32.and + (get_local $10) + (i32.or + (tee_local $13 + (i32.shl + (i32.const 2) + (get_local $27) ) ) + (i32.sub + (i32.const 0) + (get_local $13) + ) ) ) ) ) ) - (set_local $5 - (i32.and - (i32.shr_u - (tee_local $13 - (i32.add - (i32.and + ) + (set_local $5 + (i32.and + (i32.shr_u + (tee_local $13 + (i32.add + (i32.and + (get_local $5) + (i32.sub + (i32.const 0) (get_local $5) - (i32.sub - (i32.const 0) - (get_local $5) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (i32.load - (i32.add - (i32.shl - (i32.add + ) + (i32.load + (i32.add + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $13 - (i32.and - (i32.shr_u - (tee_local $2 - (i32.shr_u - (get_local $13) - (get_local $5) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $5) - ) - (tee_local $2 + (tee_local $13 (i32.and (i32.shr_u - (tee_local $6 + (tee_local $2 (i32.shr_u - (get_local $2) (get_local $13) + (get_local $5) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $5) ) - (tee_local $6 + (tee_local $2 (i32.and (i32.shr_u - (tee_local $9 + (tee_local $6 (i32.shr_u - (get_local $6) (get_local $2) + (get_local $13) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $9 + (tee_local $6 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $9 (i32.shr_u - (get_local $9) (get_local $6) + (get_local $2) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $3) - (get_local $9) + (tee_local $9 + (i32.and + (i32.shr_u + (tee_local $3 + (i32.shr_u + (get_local $9) + (get_local $6) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $3) + (get_local $9) + ) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) ) - (block - (set_local $29 - (get_local $36) - ) - (set_local $28 - (get_local $2) - ) - (set_local $32 - (get_local $33) - ) - (set_local $8 - (i32.const 90) - ) + ) + (block + (set_local $29 + (get_local $36) ) - (block - (set_local $18 - (get_local $36) - ) - (set_local $11 - (get_local $33) - ) + (set_local $28 + (get_local $2) + ) + (set_local $32 + (get_local $33) + ) + (set_local $8 + (i32.const 90) + ) + ) + (block + (set_local $18 + (get_local $36) + ) + (set_local $11 + (get_local $33) ) ) ) - (if - (i32.eq - (get_local $8) - (i32.const 90) + ) + (if + (i32.eq + (get_local $8) + (i32.const 90) + ) + (loop $while-in16 + (set_local $8 + (i32.const 0) ) - (loop $while-in16 - (set_local $8 - (i32.const 0) - ) - (set_local $3 - (i32.lt_u - (tee_local $9 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $28) - ) - (i32.const -8) + (set_local $3 + (i32.lt_u + (tee_local $9 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $28) ) - (get_local $0) + (i32.const -8) ) + (get_local $0) ) - (get_local $29) ) + (get_local $29) ) - (set_local $6 - (select - (get_local $9) - (get_local $29) - (get_local $3) - ) + ) + (set_local $6 + (select + (get_local $9) + (get_local $29) + (get_local $3) ) - (set_local $9 - (select + ) + (set_local $9 + (select + (get_local $28) + (get_local $32) + (get_local $3) + ) + ) + (if + (tee_local $3 + (i32.load offset=16 (get_local $28) - (get_local $32) + ) + ) + (block + (set_local $29 + (get_local $6) + ) + (set_local $28 (get_local $3) ) + (set_local $32 + (get_local $9) + ) + (br $while-in16) ) - (if - (tee_local $3 - (i32.load offset=16 + ) + (set_local $18 + (if (result i32) + (tee_local $28 + (i32.load offset=20 (get_local $28) ) ) @@ -1887,708 +1906,811 @@ (set_local $29 (get_local $6) ) - (set_local $28 - (get_local $3) - ) (set_local $32 (get_local $9) ) (br $while-in16) ) - ) - (set_local $18 - (if (result i32) - (tee_local $28 - (i32.load offset=20 - (get_local $28) - ) - ) - (block - (set_local $29 - (get_local $6) - ) - (set_local $32 - (get_local $9) - ) - (br $while-in16) - ) - (block (result i32) - (set_local $11 - (get_local $9) - ) - (get_local $6) + (block (result i32) + (set_local $11 + (get_local $9) ) + (get_local $6) ) ) ) ) + ) + (if (result i32) + (get_local $11) (if (result i32) - (get_local $11) - (if (result i32) - (i32.lt_u - (get_local $18) - (i32.sub - (i32.load - (i32.const 1216) - ) - (get_local $0) + (i32.lt_u + (get_local $18) + (i32.sub + (i32.load + (i32.const 1216) ) + (get_local $0) ) - (block - (if - (i32.lt_u - (get_local $11) - (tee_local $10 - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $11) + (tee_local $10 + (i32.load + (i32.const 1224) ) ) - (call $qa) ) - (if - (i32.ge_u - (get_local $11) - (tee_local $9 - (i32.add - (get_local $11) - (get_local $0) - ) + (call $qa) + ) + (if + (i32.ge_u + (get_local $11) + (tee_local $9 + (i32.add + (get_local $11) + (get_local $0) ) ) - (call $qa) ) - (set_local $6 - (i32.load offset=24 - (get_local $11) - ) + (call $qa) + ) + (set_local $6 + (i32.load offset=24 + (get_local $11) ) - (if - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $11) - ) + ) + (if + (i32.eq + (tee_local $3 + (i32.load offset=12 + (get_local $11) ) - (get_local $11) ) - (block $do-once17 - (set_local $4 - (if (result i32) - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $11) - (i32.const 20) - ) - ) - ) - ) - (block (result i32) - (set_local $16 - (get_local $5) - ) - (get_local $2) - ) - (if (result i32) - (tee_local $16 - (i32.load - (tee_local $13 - (i32.add - (get_local $11) - (i32.const 16) - ) - ) + (get_local $11) + ) + (block $do-once17 + (set_local $4 + (if (result i32) + (tee_local $5 + (i32.load + (tee_local $2 + (i32.add + (get_local $11) + (i32.const 20) ) ) - (get_local $13) - (br $do-once17) ) ) - ) - (loop $while-in20 - (if - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $16) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $16 - (get_local $5) - ) - (set_local $4 - (get_local $2) - ) - (br $while-in20) + (block (result i32) + (set_local $16 + (get_local $5) ) + (get_local $2) ) - (if - (tee_local $5 + (if (result i32) + (tee_local $16 (i32.load - (tee_local $2 + (tee_local $13 (i32.add - (get_local $16) + (get_local $11) (i32.const 16) ) ) ) ) - (block - (set_local $16 - (get_local $5) - ) - (set_local $4 - (get_local $2) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (get_local $4) - (get_local $10) - ) - (call $qa) - (block - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $22 - (get_local $16) - ) + (get_local $13) + (br $do-once17) ) ) ) - (block - (if - (i32.lt_u - (tee_local $2 - (i32.load offset=8 - (get_local $11) - ) - ) - (get_local $10) - ) - (call $qa) - ) + (loop $while-in20 (if - (i32.ne + (tee_local $5 (i32.load - (tee_local $5 + (tee_local $2 (i32.add - (get_local $2) - (i32.const 12) + (get_local $16) + (i32.const 20) ) ) ) - (get_local $11) ) - (call $qa) + (block + (set_local $16 + (get_local $5) + ) + (set_local $4 + (get_local $2) + ) + (br $while-in20) + ) ) (if - (i32.eq + (tee_local $5 (i32.load - (tee_local $13 + (tee_local $2 (i32.add - (get_local $3) - (i32.const 8) + (get_local $16) + (i32.const 16) ) ) ) - (get_local $11) ) (block - (i32.store + (set_local $16 (get_local $5) - (get_local $3) ) - (i32.store - (get_local $13) + (set_local $4 (get_local $2) ) - (set_local $22 - (get_local $3) + (br $while-in20) + ) + ) + ) + (if + (i32.lt_u + (get_local $4) + (get_local $10) + ) + (call $qa) + (block + (i32.store + (get_local $4) + (i32.const 0) + ) + (set_local $22 + (get_local $16) + ) + ) + ) + ) + (block + (if + (i32.lt_u + (tee_local $2 + (i32.load offset=8 + (get_local $11) ) ) - (call $qa) + (get_local $10) + ) + (call $qa) + ) + (if + (i32.ne + (i32.load + (tee_local $5 + (i32.add + (get_local $2) + (i32.const 12) + ) + ) + ) + (get_local $11) ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $13 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + ) + (get_local $11) + ) + (block + (i32.store + (get_local $5) + (get_local $3) + ) + (i32.store + (get_local $13) + (get_local $2) + ) + (set_local $22 + (get_local $3) + ) + ) + (call $qa) ) ) - (if - (get_local $6) - (block $do-once21 - (if - (i32.eq - (get_local $11) - (i32.load - (tee_local $10 - (i32.add - (i32.shl - (tee_local $3 - (i32.load offset=28 - (get_local $11) - ) + ) + (if + (get_local $6) + (block $do-once21 + (if + (i32.eq + (get_local $11) + (i32.load + (tee_local $10 + (i32.add + (i32.shl + (tee_local $3 + (i32.load offset=28 + (get_local $11) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (block - (i32.store - (get_local $10) + ) + (block + (i32.store + (get_local $10) + (get_local $22) + ) + (if + (i32.eqz (get_local $22) ) - (if - (i32.eqz - (get_local $22) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) + (block + (i32.store + (i32.const 1212) + (i32.and + (i32.load + (i32.const 1212) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $3) ) + (i32.const -1) ) ) - (br $do-once21) ) + (br $do-once21) ) ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $6) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 16) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $3 + (i32.add + (get_local $6) + (i32.const 16) ) ) - (get_local $11) - ) - (i32.store - (get_local $3) - (get_local $22) - ) - (i32.store offset=20 - (get_local $6) - (get_local $22) ) + (get_local $11) ) - (br_if $do-once21 - (i32.eqz - (get_local $22) - ) + (i32.store + (get_local $3) + (get_local $22) + ) + (i32.store offset=20 + (get_local $6) + (get_local $22) ) ) - ) - (if - (i32.lt_u - (get_local $22) - (tee_local $3 - (i32.load - (i32.const 1224) - ) + (br_if $do-once21 + (i32.eqz + (get_local $22) ) ) - (call $qa) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $22) - (get_local $6) + (tee_local $3 + (i32.load + (i32.const 1224) + ) + ) + ) + (call $qa) + ) + (i32.store offset=24 + (get_local $22) + (get_local $6) + ) + (if + (tee_local $10 + (i32.load offset=16 + (get_local $11) + ) ) (if - (tee_local $10 - (i32.load offset=16 - (get_local $11) - ) + (i32.lt_u + (get_local $10) + (get_local $3) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=16 + (get_local $22) (get_local $10) - (get_local $3) ) - (call $qa) - (block - (i32.store offset=16 - (get_local $22) - (get_local $10) - ) - (i32.store offset=24 - (get_local $10) - (get_local $22) - ) + (i32.store offset=24 + (get_local $10) + (get_local $22) ) ) ) + ) + (if + (tee_local $10 + (i32.load offset=20 + (get_local $11) + ) + ) (if - (tee_local $10 - (i32.load offset=20 - (get_local $11) + (i32.lt_u + (get_local $10) + (i32.load + (i32.const 1224) ) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=20 + (get_local $22) (get_local $10) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (i32.store offset=20 - (get_local $22) - (get_local $10) - ) - (i32.store offset=24 - (get_local $10) - (get_local $22) - ) + (i32.store offset=24 + (get_local $10) + (get_local $22) ) ) ) ) ) - (if - (i32.lt_u - (get_local $18) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $11) - (i32.or - (tee_local $6 - (i32.add - (get_local $18) - (get_local $0) - ) + ) + (if + (i32.lt_u + (get_local $18) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $11) + (i32.or + (tee_local $6 + (i32.add + (get_local $18) + (get_local $0) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $10 + ) + (i32.store + (tee_local $10 + (i32.add (i32.add - (i32.add - (get_local $11) - (get_local $6) - ) - (i32.const 4) + (get_local $11) + (get_local $6) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $10) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $10) ) + (i32.const 1) ) ) - (block $do-once25 - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $0) - (i32.const 3) - ) + ) + (block $do-once25 + (i32.store offset=4 + (get_local $11) + (i32.or + (get_local $0) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $9) + (i32.or + (get_local $18) + (i32.const 1) ) - (i32.store offset=4 + ) + (i32.store + (i32.add (get_local $9) - (i32.or - (get_local $18) - (i32.const 1) - ) + (get_local $18) ) - (i32.store - (i32.add - (get_local $9) - (get_local $18) - ) + (get_local $18) + ) + (set_local $10 + (i32.shr_u (get_local $18) + (i32.const 3) ) - (set_local $10 - (i32.shr_u - (get_local $18) - (i32.const 3) - ) + ) + (if + (i32.lt_u + (get_local $18) + (i32.const 256) ) - (if - (i32.lt_u - (get_local $18) - (i32.const 256) + (block + (set_local $6 + (i32.add + (i32.shl + (get_local $10) + (i32.const 3) + ) + (i32.const 1248) + ) ) - (block - (set_local $6 - (i32.add + (if + (i32.and + (tee_local $3 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $2 (i32.shl + (i32.const 1) (get_local $10) - (i32.const 3) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $3 (i32.load - (i32.const 1208) - ) - ) - (tee_local $2 - (i32.shl - (i32.const 1) - (get_local $10) - ) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) + (tee_local $2 + (i32.add + (get_local $6) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $19 - (get_local $2) - ) - (set_local $7 - (get_local $3) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $3) - (get_local $2) - ) - ) (set_local $19 - (i32.add - (get_local $6) - (i32.const 8) - ) + (get_local $2) ) (set_local $7 - (get_local $6) + (get_local $3) ) ) ) - (i32.store - (get_local $19) - (get_local $9) - ) - (i32.store offset=12 - (get_local $7) - (get_local $9) - ) - (i32.store offset=8 - (get_local $9) - (get_local $7) - ) - (i32.store offset=12 - (get_local $9) - (get_local $6) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $3) + (get_local $2) + ) + ) + (set_local $19 + (i32.add + (get_local $6) + (i32.const 8) + ) + ) + (set_local $7 + (get_local $6) + ) ) - (br $do-once25) ) + (i32.store + (get_local $19) + (get_local $9) + ) + (i32.store offset=12 + (get_local $7) + (get_local $9) + ) + (i32.store offset=8 + (get_local $9) + (get_local $7) + ) + (i32.store offset=12 + (get_local $9) + (get_local $6) + ) + (br $do-once25) ) - (set_local $13 - (i32.add - (i32.shl - (tee_local $3 + ) + (set_local $13 + (i32.add + (i32.shl + (tee_local $3 + (if (result i32) + (tee_local $6 + (i32.shr_u + (get_local $18) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $6 - (i32.shr_u - (get_local $18) - (i32.const 8) - ) + (i32.gt_u + (get_local $18) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $18) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $18) - (i32.add - (tee_local $13 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $18) + (i32.add + (tee_local $13 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $6 - (i32.and - (i32.shr_u - (i32.add - (tee_local $2 - (i32.shl - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $6) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $6 + (i32.and + (i32.shr_u + (i32.add + (tee_local $2 + (i32.shl + (get_local $6) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $6) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (tee_local $10 - (i32.shl - (get_local $2) - (get_local $6) - ) + (get_local $3) + ) + (tee_local $2 + (i32.and + (i32.shr_u + (i32.add + (tee_local $10 + (i32.shl + (get_local $2) + (get_local $6) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $10) - (get_local $2) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $10) + (get_local $2) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $13) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $13) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) - (i32.store offset=28 - (get_local $9) - (get_local $3) + ) + (i32.store offset=28 + (get_local $9) + (get_local $3) + ) + (i32.store offset=4 + (tee_local $2 + (i32.add + (get_local $9) + (i32.const 16) + ) ) - (i32.store offset=4 - (tee_local $2 - (i32.add - (get_local $9) - (i32.const 16) + (i32.const 0) + ) + (i32.store + (get_local $2) + (i32.const 0) + ) + (if + (i32.eqz + (i32.and + (tee_local $2 + (i32.load + (i32.const 1212) + ) + ) + (tee_local $10 + (i32.shl + (i32.const 1) + (get_local $3) + ) ) ) - (i32.const 0) ) - (i32.store - (get_local $2) - (i32.const 0) + (block + (i32.store + (i32.const 1212) + (i32.or + (get_local $2) + (get_local $10) + ) + ) + (i32.store + (get_local $13) + (get_local $9) + ) + (i32.store offset=24 + (get_local $9) + (get_local $13) + ) + (i32.store offset=12 + (get_local $9) + (get_local $9) + ) + (i32.store offset=8 + (get_local $9) + (get_local $9) + ) + (br $do-once25) ) - (if - (i32.eqz - (i32.and - (tee_local $2 - (i32.load - (i32.const 1212) - ) + ) + (set_local $10 + (i32.shl + (get_local $18) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $3) + (i32.const 1) ) - (tee_local $10 - (i32.shl - (i32.const 1) - (get_local $3) + ) + (i32.eq + (get_local $3) + (i32.const 31) + ) + ) + ) + ) + (set_local $2 + (i32.load + (get_local $13) + ) + ) + (if + (i32.eq + (tee_local $8 + (loop $while-in28 (result i32) + (block $while-out27 (result i32) + (if + (i32.eq + (i32.and + (i32.load offset=4 + (get_local $2) + ) + (i32.const -8) + ) + (get_local $18) + ) + (block + (set_local $17 + (get_local $2) + ) + (br $while-out27 + (i32.const 148) + ) + ) + ) + (if (result i32) + (tee_local $3 + (i32.load + (tee_local $13 + (i32.add + (i32.add + (get_local $2) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $10) + (i32.const 31) + ) + (i32.const 2) + ) + ) + ) + ) + ) + (block + (set_local $10 + (i32.shl + (get_local $10) + (i32.const 1) + ) + ) + (set_local $2 + (get_local $3) + ) + (br $while-in28) + ) + (block (result i32) + (set_local $21 + (get_local $13) + ) + (set_local $15 + (get_local $2) + ) + (i32.const 145) + ) ) ) ) ) - (block - (i32.store - (i32.const 1212) - (i32.or - (get_local $2) - (get_local $10) - ) + (i32.const 145) + ) + (if + (i32.lt_u + (get_local $21) + (i32.load + (i32.const 1224) ) + ) + (call $qa) + (block (i32.store - (get_local $13) + (get_local $21) (get_local $9) ) (i32.store offset=24 (get_local $9) - (get_local $13) + (get_local $15) ) (i32.store offset=12 (get_local $9) @@ -2598,209 +2720,87 @@ (get_local $9) (get_local $9) ) - (br $do-once25) - ) - ) - (set_local $10 - (i32.shl - (get_local $18) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $3) - (i32.const 1) - ) - ) - (i32.eq - (get_local $3) - (i32.const 31) - ) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $13) ) ) (if (i32.eq - (tee_local $8 - (loop $while-in28 (result i32) - (block $while-out27 (result i32) - (if - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const -8) - ) - (get_local $18) - ) - (block - (set_local $17 - (get_local $2) - ) - (br $while-out27 - (i32.const 148) + (get_local $8) + (i32.const 148) + ) + (if + (i32.and + (i32.ge_u + (tee_local $10 + (i32.load + (tee_local $2 + (i32.add + (get_local $17) + (i32.const 8) ) ) ) - (if (result i32) - (tee_local $3 - (i32.load - (tee_local $13 - (i32.add - (i32.add - (get_local $2) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $10) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (set_local $10 - (i32.shl - (get_local $10) - (i32.const 1) - ) - ) - (set_local $2 - (get_local $3) - ) - (br $while-in28) - ) - (block (result i32) - (set_local $21 - (get_local $13) - ) - (set_local $15 - (get_local $2) - ) - (i32.const 145) - ) + ) + (tee_local $3 + (i32.load + (i32.const 1224) ) ) ) - ) - (i32.const 145) - ) - (if - (i32.lt_u - (get_local $21) - (i32.load - (i32.const 1224) + (i32.ge_u + (get_local $17) + (get_local $3) ) ) - (call $qa) (block + (i32.store offset=12 + (get_local $10) + (get_local $9) + ) (i32.store - (get_local $21) + (get_local $2) (get_local $9) ) - (i32.store offset=24 + (i32.store offset=8 (get_local $9) - (get_local $15) + (get_local $10) ) (i32.store offset=12 (get_local $9) - (get_local $9) + (get_local $17) ) - (i32.store offset=8 - (get_local $9) + (i32.store offset=24 (get_local $9) + (i32.const 0) ) ) - ) - (if - (i32.eq - (get_local $8) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (tee_local $10 - (i32.load - (tee_local $2 - (i32.add - (get_local $17) - (i32.const 8) - ) - ) - ) - ) - (tee_local $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (get_local $17) - (get_local $3) - ) - ) - (block - (i32.store offset=12 - (get_local $10) - (get_local $9) - ) - (i32.store - (get_local $2) - (get_local $9) - ) - (i32.store offset=8 - (get_local $9) - (get_local $10) - ) - (i32.store offset=12 - (get_local $9) - (get_local $17) - ) - (i32.store offset=24 - (get_local $9) - (i32.const 0) - ) - ) - (call $qa) - ) + (call $qa) ) ) ) ) - (set_global $r - (get_local $25) - ) - (return - (i32.add - (get_local $11) - (i32.const 8) - ) + ) + (set_global $r + (get_local $25) + ) + (return + (i32.add + (get_local $11) + (i32.const 8) ) ) - (get_local $0) ) (get_local $0) ) + (get_local $0) ) - (get_local $0) ) + (get_local $0) ) ) ) ) + ) + (block $folding-inner0 (if (i32.ge_u (tee_local $11 diff --git a/test/memorygrowth.fromasm.clamp b/test/memorygrowth.fromasm.clamp index 38d5d9e5d..992ac9c04 100644 --- a/test/memorygrowth.fromasm.clamp +++ b/test/memorygrowth.fromasm.clamp @@ -110,782 +110,816 @@ (local $52 i32) (local $53 i32) (local $54 i32) - (block $folding-inner0 - (set_local $25 + (set_local $25 + (get_global $r) + ) + (set_global $r + (i32.add (get_global $r) + (i32.const 16) ) - (set_global $r - (i32.add - (get_global $r) - (i32.const 16) + ) + (set_local $14 + (get_local $25) + ) + (set_local $6 + (if (result i32) + (i32.lt_u + (get_local $0) + (i32.const 245) ) - ) - (set_local $14 - (get_local $25) - ) - (set_local $6 - (if (result i32) - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (tee_local $6 - (i32.shr_u - (tee_local $5 - (i32.load - (i32.const 1208) - ) + (block (result i32) + (if + (i32.and + (tee_local $6 + (i32.shr_u + (tee_local $5 + (i32.load + (i32.const 1208) ) - (tee_local $0 - (i32.shr_u - (tee_local $2 - (select - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u + ) + (tee_local $0 + (i32.shr_u + (tee_local $2 + (select + (i32.const 16) + (i32.and + (i32.add (get_local $0) (i32.const 11) ) + (i32.const -8) + ) + (i32.lt_u + (get_local $0) + (i32.const 11) ) ) - (i32.const 3) ) + (i32.const 3) ) ) ) - (i32.const 3) ) - (block - (set_local $7 - (i32.load - (tee_local $2 - (i32.add - (tee_local $13 - (i32.load - (tee_local $16 - (i32.add - (tee_local $9 - (i32.add - (i32.shl - (tee_local $0 - (i32.add - (i32.xor - (i32.and - (get_local $6) - (i32.const 1) - ) + (i32.const 3) + ) + (block + (set_local $7 + (i32.load + (tee_local $2 + (i32.add + (tee_local $13 + (i32.load + (tee_local $16 + (i32.add + (tee_local $9 + (i32.add + (i32.shl + (tee_local $0 + (i32.add + (i32.xor + (i32.and + (get_local $6) (i32.const 1) ) - (get_local $0) + (i32.const 1) ) + (get_local $0) ) - (i32.const 3) ) - (i32.const 1248) + (i32.const 3) ) + (i32.const 1248) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $9) - (get_local $7) - ) - (i32.store - (i32.const 1208) - (i32.and - (get_local $5) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $0) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $9) + (get_local $7) + ) + (i32.store + (i32.const 1208) + (i32.and + (get_local $5) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $0) ) + (i32.const -1) ) ) - (block - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $7) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $8 + (i32.add + (get_local $7) + (i32.const 12) ) ) - (get_local $13) ) - (block - (i32.store - (get_local $8) - (get_local $9) - ) - (i32.store - (get_local $16) - (get_local $7) - ) + (get_local $13) + ) + (block + (i32.store + (get_local $8) + (get_local $9) + ) + (i32.store + (get_local $16) + (get_local $7) ) - (call $qa) ) + (call $qa) ) ) - (i32.store offset=4 - (get_local $13) - (i32.or - (tee_local $7 - (i32.shl - (get_local $0) - (i32.const 3) - ) + ) + (i32.store offset=4 + (get_local $13) + (i32.or + (tee_local $7 + (i32.shl + (get_local $0) + (i32.const 3) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $16 + ) + (i32.store + (tee_local $16 + (i32.add (i32.add - (i32.add - (get_local $13) - (get_local $7) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $16) + (get_local $13) + (get_local $7) ) - (i32.const 1) + (i32.const 4) ) ) - (set_global $r - (get_local $25) - ) - (return - (get_local $2) + (i32.or + (i32.load + (get_local $16) + ) + (i32.const 1) ) ) - ) - (if (result i32) - (i32.gt_u + (set_global $r + (get_local $25) + ) + (return (get_local $2) - (tee_local $16 - (i32.load - (i32.const 1216) - ) + ) + ) + ) + (if (result i32) + (i32.gt_u + (get_local $2) + (tee_local $16 + (i32.load + (i32.const 1216) ) ) - (block (result i32) - (if - (get_local $6) - (block - (set_local $9 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.add - (i32.and - (tee_local $9 - (i32.and - (i32.shl - (get_local $6) - (get_local $0) - ) - (i32.or - (tee_local $7 - (i32.shl - (i32.const 2) - (get_local $0) - ) - ) - (i32.sub - (i32.const 0) - (get_local $7) + ) + (block (result i32) + (if + (get_local $6) + (block + (set_local $9 + (i32.and + (i32.shr_u + (tee_local $7 + (i32.add + (i32.and + (tee_local $9 + (i32.and + (i32.shl + (get_local $6) + (get_local $0) + ) + (i32.or + (tee_local $7 + (i32.shl + (i32.const 2) + (get_local $0) ) ) + (i32.sub + (i32.const 0) + (get_local $7) + ) ) ) - (i32.sub - (i32.const 0) - (get_local $9) - ) ) - (i32.const -1) + (i32.sub + (i32.const 0) + (get_local $9) + ) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $9 - (i32.load - (tee_local $8 - (i32.add - (tee_local $10 - (i32.load - (tee_local $13 - (i32.add - (tee_local $3 - (i32.add - (i32.shl - (tee_local $4 - (i32.add + ) + (set_local $9 + (i32.load + (tee_local $8 + (i32.add + (tee_local $10 + (i32.load + (tee_local $13 + (i32.add + (tee_local $3 + (i32.add + (i32.shl + (tee_local $4 + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $7 - (i32.and - (i32.shr_u - (tee_local $8 - (i32.shr_u - (get_local $7) - (get_local $9) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $9) - ) - (tee_local $8 + (tee_local $7 (i32.and (i32.shr_u - (tee_local $10 + (tee_local $8 (i32.shr_u - (get_local $8) (get_local $7) + (get_local $9) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $9) ) - (tee_local $10 + (tee_local $8 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $10 (i32.shr_u - (get_local $10) (get_local $8) + (get_local $7) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $3 + (tee_local $10 (i32.and (i32.shr_u - (tee_local $13 + (tee_local $3 (i32.shr_u - (get_local $3) (get_local $10) + (get_local $8) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $13) - (get_local $3) + (tee_local $3 + (i32.and + (i32.shr_u + (tee_local $13 + (i32.shr_u + (get_local $3) + (get_local $10) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) + (i32.shr_u + (get_local $13) + (get_local $3) + ) ) - (i32.const 3) ) - (i32.const 1248) + (i32.const 3) ) + (i32.const 1248) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $3) - (get_local $9) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (get_local $5) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $3) + (get_local $9) + ) + (block + (i32.store + (i32.const 1208) + (i32.and + (get_local $5) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $4) ) + (i32.const -1) ) ) - (set_local $34 - (get_local $16) - ) ) - (block - (if - (i32.lt_u - (get_local $9) - (i32.load - (i32.const 1224) - ) + (set_local $34 + (get_local $16) + ) + ) + (block + (if + (i32.lt_u + (get_local $9) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $7 + (i32.add + (get_local $9) + (i32.const 12) ) ) - (get_local $10) ) - (block - (i32.store - (get_local $7) - (get_local $3) - ) - (i32.store - (get_local $13) - (get_local $9) - ) - (set_local $34 - (i32.load - (i32.const 1216) - ) + (get_local $10) + ) + (block + (i32.store + (get_local $7) + (get_local $3) + ) + (i32.store + (get_local $13) + (get_local $9) + ) + (set_local $34 + (i32.load + (i32.const 1216) ) ) - (call $qa) ) + (call $qa) ) ) - (i32.store offset=4 - (get_local $10) - (i32.or + ) + (i32.store offset=4 + (get_local $10) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (tee_local $13 + (i32.add + (get_local $10) (get_local $2) - (i32.const 3) ) ) - (i32.store offset=4 - (tee_local $13 - (i32.add - (get_local $10) - (get_local $2) - ) - ) - (i32.or - (tee_local $9 - (i32.sub - (i32.shl - (get_local $4) - (i32.const 3) - ) - (get_local $2) + (i32.or + (tee_local $9 + (i32.sub + (i32.shl + (get_local $4) + (i32.const 3) ) + (get_local $2) ) - (i32.const 1) ) + (i32.const 1) ) - (i32.store - (i32.add - (get_local $13) - (get_local $9) - ) + ) + (i32.store + (i32.add + (get_local $13) (get_local $9) ) - (if - (get_local $34) - (block - (set_local $3 - (i32.load - (i32.const 1228) + (get_local $9) + ) + (if + (get_local $34) + (block + (set_local $3 + (i32.load + (i32.const 1228) + ) + ) + (set_local $5 + (i32.add + (i32.shl + (tee_local $16 + (i32.shr_u + (get_local $34) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 1248) ) - (set_local $5 - (i32.add + ) + (if + (i32.and + (tee_local $0 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $6 (i32.shl - (tee_local $16 - (i32.shr_u - (get_local $34) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $16) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $0 (i32.load - (i32.const 1208) - ) - ) - (tee_local $6 - (i32.shl - (i32.const 1) - (get_local $16) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $6 - (i32.add - (get_local $5) - (i32.const 8) - ) + (tee_local $6 + (i32.add + (get_local $5) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $40 - (get_local $6) - ) - (set_local $35 - (get_local $0) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $0) - (get_local $6) - ) - ) (set_local $40 - (i32.add - (get_local $5) - (i32.const 8) - ) + (get_local $6) ) (set_local $35 - (get_local $5) + (get_local $0) ) ) ) - (i32.store - (get_local $40) - (get_local $3) - ) - (i32.store offset=12 - (get_local $35) - (get_local $3) - ) - (i32.store offset=8 - (get_local $3) - (get_local $35) - ) - (i32.store offset=12 - (get_local $3) - (get_local $5) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $0) + (get_local $6) + ) + ) + (set_local $40 + (i32.add + (get_local $5) + (i32.const 8) + ) + ) + (set_local $35 + (get_local $5) + ) ) ) + (i32.store + (get_local $40) + (get_local $3) + ) + (i32.store offset=12 + (get_local $35) + (get_local $3) + ) + (i32.store offset=8 + (get_local $3) + (get_local $35) + ) + (i32.store offset=12 + (get_local $3) + (get_local $5) + ) ) - (i32.store - (i32.const 1216) - (get_local $9) - ) - (i32.store - (i32.const 1228) - (get_local $13) - ) - (set_global $r - (get_local $25) - ) - (return - (get_local $8) - ) + ) + (i32.store + (i32.const 1216) + (get_local $9) + ) + (i32.store + (i32.const 1228) + (get_local $13) + ) + (set_global $r + (get_local $25) + ) + (return + (get_local $8) ) ) - (if (result i32) - (tee_local $13 - (i32.load - (i32.const 1212) - ) + ) + (if (result i32) + (tee_local $13 + (i32.load + (i32.const 1212) ) - (block - (set_local $13 - (i32.and - (i32.shr_u - (tee_local $9 - (i32.add - (i32.and + ) + (block + (set_local $13 + (i32.and + (i32.shr_u + (tee_local $9 + (i32.add + (i32.and + (get_local $13) + (i32.sub + (i32.const 0) (get_local $13) - (i32.sub - (i32.const 0) - (get_local $13) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $0 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $16 - (i32.load - (i32.add - (i32.shl - (i32.add + ) + (set_local $0 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $16 + (i32.load + (i32.add + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $9 - (i32.and - (i32.shr_u - (tee_local $5 - (i32.shr_u - (get_local $9) - (get_local $13) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $13) - ) - (tee_local $5 + (tee_local $9 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $5 (i32.shr_u - (get_local $5) (get_local $9) + (get_local $13) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $13) ) - (tee_local $3 + (tee_local $5 (i32.and (i32.shr_u - (tee_local $0 + (tee_local $3 (i32.shr_u - (get_local $3) (get_local $5) + (get_local $9) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $0 + (tee_local $3 (i32.and (i32.shr_u - (tee_local $6 + (tee_local $0 (i32.shr_u - (get_local $0) (get_local $3) + (get_local $5) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $6) - (get_local $0) + (tee_local $0 + (i32.and + (i32.shr_u + (tee_local $6 + (i32.shr_u + (get_local $0) + (get_local $3) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $6) + (get_local $0) + ) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (set_local $3 - (tee_local $6 - (get_local $16) - ) + ) + (set_local $3 + (tee_local $6 + (get_local $16) ) - (loop $while-in - (block $while-out - (set_local $5 - (i32.lt_u - (tee_local $16 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $6 + ) + (loop $while-in + (block $while-out + (set_local $5 + (i32.lt_u + (tee_local $16 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $6 + (if (result i32) + (tee_local $16 + (i32.load offset=16 + (get_local $6) + ) + ) + (get_local $16) (if (result i32) - (tee_local $16 - (i32.load offset=16 + (tee_local $5 + (i32.load offset=20 (get_local $6) ) ) - (get_local $16) - (if (result i32) - (tee_local $5 - (i32.load offset=20 - (get_local $6) - ) + (get_local $5) + (block + (set_local $7 + (get_local $0) ) - (get_local $5) - (block - (set_local $7 - (get_local $0) - ) - (set_local $1 - (get_local $3) - ) - (br $while-out) + (set_local $1 + (get_local $3) ) + (br $while-out) ) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $0) ) + (get_local $0) ) - (set_local $0 - (select - (get_local $16) - (get_local $0) - (get_local $5) - ) + ) + (set_local $0 + (select + (get_local $16) + (get_local $0) + (get_local $5) ) - (set_local $3 - (select - (get_local $6) - (get_local $3) - (get_local $5) - ) + ) + (set_local $3 + (select + (get_local $6) + (get_local $3) + (get_local $5) ) - (br $while-in) ) + (br $while-in) ) - (if - (i32.lt_u - (get_local $1) - (tee_local $3 - (i32.load - (i32.const 1224) - ) + ) + (if + (i32.lt_u + (get_local $1) + (tee_local $3 + (i32.load + (i32.const 1224) ) ) - (call $qa) ) - (if - (i32.ge_u - (get_local $1) - (tee_local $6 - (i32.add - (get_local $1) - (get_local $2) - ) + (call $qa) + ) + (if + (i32.ge_u + (get_local $1) + (tee_local $6 + (i32.add + (get_local $1) + (get_local $2) ) ) - (call $qa) ) - (set_local $0 - (i32.load offset=24 - (get_local $1) + (call $qa) + ) + (set_local $0 + (i32.load offset=24 + (get_local $1) + ) + ) + (if + (i32.eq + (tee_local $8 + (i32.load offset=12 + (get_local $1) + ) ) + (get_local $1) ) - (if - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $1) + (block $do-once4 + (if + (tee_local $4 + (i32.load + (tee_local $10 + (i32.add + (get_local $1) + (i32.const 20) + ) + ) + ) + ) + (block + (set_local $16 + (get_local $4) + ) + (set_local $5 + (get_local $10) + ) + ) + (br_if $do-once4 + (i32.eqz + (tee_local $16 + (i32.load + (tee_local $5 + (i32.add + (get_local $1) + (i32.const 16) + ) + ) + ) + ) ) ) - (get_local $1) ) - (block $do-once4 + (loop $while-in7 (if (tee_local $4 (i32.load (tee_local $10 (i32.add - (get_local $1) + (get_local $16) (i32.const 20) ) ) @@ -898,725 +932,689 @@ (set_local $5 (get_local $10) ) - ) - (br_if $do-once4 - (i32.eqz - (tee_local $16 - (i32.load - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - ) + (br $while-in7) ) ) - (loop $while-in7 - (if - (tee_local $4 - (i32.load - (tee_local $10 - (i32.add - (get_local $16) - (i32.const 20) - ) + (if + (tee_local $4 + (i32.load + (tee_local $10 + (i32.add + (get_local $16) + (i32.const 16) ) ) ) - (block - (set_local $16 - (get_local $4) - ) - (set_local $5 - (get_local $10) - ) - (br $while-in7) - ) ) - (if - (tee_local $4 - (i32.load - (tee_local $10 - (i32.add - (get_local $16) - (i32.const 16) - ) - ) - ) + (block + (set_local $16 + (get_local $4) ) - (block - (set_local $16 - (get_local $4) - ) - (set_local $5 - (get_local $10) - ) - (br $while-in7) + (set_local $5 + (get_local $10) ) + (br $while-in7) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $5) + (get_local $3) + ) + (call $qa) + (block + (i32.store (get_local $5) - (get_local $3) + (i32.const 0) ) - (call $qa) - (block - (i32.store - (get_local $5) - (i32.const 0) - ) - (set_local $23 - (get_local $16) - ) + (set_local $23 + (get_local $16) ) ) ) - (block - (if - (i32.lt_u - (tee_local $10 - (i32.load offset=8 - (get_local $1) - ) + ) + (block + (if + (i32.lt_u + (tee_local $10 + (i32.load offset=8 + (get_local $1) ) - (get_local $3) ) - (call $qa) + (get_local $3) ) - (if - (i32.ne - (i32.load - (tee_local $4 - (i32.add - (get_local $10) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.ne + (i32.load + (tee_local $4 + (i32.add + (get_local $10) + (i32.const 12) ) ) - (get_local $1) ) - (call $qa) + (get_local $1) ) - (if - (i32.eq - (i32.load - (tee_local $5 - (i32.add - (get_local $8) - (i32.const 8) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $5 + (i32.add + (get_local $8) + (i32.const 8) ) ) - (get_local $1) ) - (block - (i32.store - (get_local $4) - (get_local $8) - ) - (i32.store - (get_local $5) - (get_local $10) - ) - (set_local $23 - (get_local $8) - ) + (get_local $1) + ) + (block + (i32.store + (get_local $4) + (get_local $8) + ) + (i32.store + (get_local $5) + (get_local $10) + ) + (set_local $23 + (get_local $8) ) - (call $qa) ) + (call $qa) ) ) - (if - (get_local $0) - (block $do-once8 - (if - (i32.eq - (get_local $1) - (i32.load - (tee_local $3 - (i32.add - (i32.shl - (tee_local $8 - (i32.load offset=28 - (get_local $1) - ) + ) + (if + (get_local $0) + (block $do-once8 + (if + (i32.eq + (get_local $1) + (i32.load + (tee_local $3 + (i32.add + (i32.shl + (tee_local $8 + (i32.load offset=28 + (get_local $1) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (block - (i32.store - (get_local $3) + ) + (block + (i32.store + (get_local $3) + (get_local $23) + ) + (if + (i32.eqz (get_local $23) ) - (if - (i32.eqz - (get_local $23) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $8) - ) - (i32.const -1) + (block + (i32.store + (i32.const 1212) + (i32.and + (i32.load + (i32.const 1212) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $8) ) + (i32.const -1) ) ) - (br $do-once8) ) + (br $do-once8) ) ) - (block - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $8 + (i32.add + (get_local $0) + (i32.const 16) ) ) - (get_local $1) - ) - (i32.store - (get_local $8) - (get_local $23) - ) - (i32.store offset=20 - (get_local $0) - (get_local $23) ) + (get_local $1) ) - (br_if $do-once8 - (i32.eqz - (get_local $23) - ) + (i32.store + (get_local $8) + (get_local $23) + ) + (i32.store offset=20 + (get_local $0) + (get_local $23) ) ) - ) - (if - (i32.lt_u - (get_local $23) - (tee_local $8 - (i32.load - (i32.const 1224) - ) + (br_if $do-once8 + (i32.eqz + (get_local $23) ) ) - (call $qa) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $23) - (get_local $0) + (tee_local $8 + (i32.load + (i32.const 1224) + ) + ) + ) + (call $qa) + ) + (i32.store offset=24 + (get_local $23) + (get_local $0) + ) + (if + (tee_local $3 + (i32.load offset=16 + (get_local $1) + ) ) (if - (tee_local $3 - (i32.load offset=16 - (get_local $1) - ) + (i32.lt_u + (get_local $3) + (get_local $8) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=16 + (get_local $23) (get_local $3) - (get_local $8) ) - (call $qa) - (block - (i32.store offset=16 - (get_local $23) - (get_local $3) - ) - (i32.store offset=24 - (get_local $3) - (get_local $23) - ) + (i32.store offset=24 + (get_local $3) + (get_local $23) ) ) ) + ) + (if + (tee_local $3 + (i32.load offset=20 + (get_local $1) + ) + ) (if - (tee_local $3 - (i32.load offset=20 - (get_local $1) + (i32.lt_u + (get_local $3) + (i32.load + (i32.const 1224) ) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=20 + (get_local $23) (get_local $3) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (i32.store offset=20 - (get_local $23) - (get_local $3) - ) - (i32.store offset=24 - (get_local $3) - (get_local $23) - ) + (i32.store offset=24 + (get_local $3) + (get_local $23) ) ) ) ) ) - (if - (i32.lt_u - (get_local $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $1) - (i32.or - (tee_local $0 - (i32.add - (get_local $7) - (get_local $2) - ) + ) + (if + (i32.lt_u + (get_local $7) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $1) + (i32.or + (tee_local $0 + (i32.add + (get_local $7) + (get_local $2) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $3 + ) + (i32.store + (tee_local $3 + (i32.add (i32.add - (i32.add - (get_local $1) - (get_local $0) - ) - (i32.const 4) + (get_local $1) + (get_local $0) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $3) ) + (i32.const 1) ) ) - (block - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 3) - ) + ) + (block + (i32.store offset=4 + (get_local $1) + (i32.or + (get_local $2) + (i32.const 3) ) - (i32.store offset=4 + ) + (i32.store offset=4 + (get_local $6) + (i32.or + (get_local $7) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $6) - (i32.or - (get_local $7) - (i32.const 1) - ) + (get_local $7) ) - (i32.store - (i32.add - (get_local $6) - (get_local $7) + (get_local $7) + ) + (if + (tee_local $3 + (i32.load + (i32.const 1216) ) - (get_local $7) ) - (if - (tee_local $3 + (block + (set_local $0 (i32.load - (i32.const 1216) + (i32.const 1228) ) ) - (block - (set_local $0 - (i32.load - (i32.const 1228) + (set_local $3 + (i32.add + (i32.shl + (tee_local $8 + (i32.shr_u + (get_local $3) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 1248) ) - (set_local $3 - (i32.add + ) + (if + (i32.and + (tee_local $10 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $5 (i32.shl - (tee_local $8 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $8) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $10 (i32.load - (i32.const 1208) - ) - ) - (tee_local $5 - (i32.shl - (i32.const 1) - (get_local $8) - ) - ) - ) - (if - (i32.lt_u - (tee_local $10 - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 8) - ) + (tee_local $5 + (i32.add + (get_local $3) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $41 - (get_local $5) - ) - (set_local $27 - (get_local $10) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $10) - (get_local $5) - ) - ) (set_local $41 - (i32.add - (get_local $3) - (i32.const 8) - ) + (get_local $5) ) (set_local $27 - (get_local $3) + (get_local $10) ) ) ) - (i32.store - (get_local $41) - (get_local $0) - ) - (i32.store offset=12 - (get_local $27) - (get_local $0) - ) - (i32.store offset=8 - (get_local $0) - (get_local $27) - ) - (i32.store offset=12 - (get_local $0) - (get_local $3) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $10) + (get_local $5) + ) + ) + (set_local $41 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + (set_local $27 + (get_local $3) + ) ) ) - ) - (i32.store - (i32.const 1216) - (get_local $7) - ) - (i32.store - (i32.const 1228) - (get_local $6) + (i32.store + (get_local $41) + (get_local $0) + ) + (i32.store offset=12 + (get_local $27) + (get_local $0) + ) + (i32.store offset=8 + (get_local $0) + (get_local $27) + ) + (i32.store offset=12 + (get_local $0) + (get_local $3) + ) ) ) - ) - (set_global $r - (get_local $25) - ) - (return - (i32.add - (get_local $1) - (i32.const 8) + (i32.store + (i32.const 1216) + (get_local $7) + ) + (i32.store + (i32.const 1228) + (get_local $6) ) ) ) - (get_local $2) + (set_global $r + (get_local $25) + ) + (return + (i32.add + (get_local $1) + (i32.const 8) + ) + ) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (set_local $0 - (i32.and - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 11) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $0) + (i32.const -65) + ) + (i32.const -1) + (block $do-once (result i32) + (set_local $0 + (i32.and + (tee_local $3 + (i32.add + (get_local $0) + (i32.const 11) ) - (i32.const -8) ) + (i32.const -8) ) - (if (result i32) - (tee_local $10 - (i32.load - (i32.const 1212) - ) + ) + (if (result i32) + (tee_local $10 + (i32.load + (i32.const 1212) ) - (block (result i32) - (set_local $5 - (i32.sub - (i32.const 0) - (get_local $0) - ) + ) + (block (result i32) + (set_local $5 + (i32.sub + (i32.const 0) + (get_local $0) ) - (if - (tee_local $13 - (i32.load - (i32.add - (i32.shl - (tee_local $27 + ) + (if + (tee_local $13 + (i32.load + (i32.add + (i32.shl + (tee_local $27 + (if (result i32) + (tee_local $8 + (i32.shr_u + (get_local $3) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $8 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) + (i32.gt_u + (get_local $0) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $0) - (i32.add - (tee_local $13 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $0) + (i32.add + (tee_local $13 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $8 - (i32.and - (i32.shr_u - (i32.add - (tee_local $4 - (i32.shl - (get_local $8) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $8) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $8 + (i32.and + (i32.shr_u + (i32.add + (tee_local $4 + (i32.shl + (get_local $8) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $8) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $4 - (i32.and - (i32.shr_u - (i32.add - (tee_local $16 - (i32.shl - (get_local $4) - (get_local $8) - ) + (get_local $3) + ) + (tee_local $4 + (i32.and + (i32.shr_u + (i32.add + (tee_local $16 + (i32.shl + (get_local $4) + (get_local $8) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $16) - (get_local $4) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $16) + (get_local $4) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $13) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $13) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) - (block $label$break$a - (set_local $4 - (get_local $5) - ) - (set_local $16 - (i32.const 0) - ) - (set_local $3 - (i32.shl - (get_local $0) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $27) - (i32.const 1) - ) - ) - (i32.eq + ) + (block $label$break$a + (set_local $4 + (get_local $5) + ) + (set_local $16 + (i32.const 0) + ) + (set_local $3 + (i32.shl + (get_local $0) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $27) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $27) + (i32.const 31) + ) ) ) - (set_local $8 - (get_local $13) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $13 - (i32.sub - (tee_local $2 - (i32.and - (i32.load offset=4 - (get_local $8) - ) - (i32.const -8) + ) + (set_local $8 + (get_local $13) + ) + (loop $while-in14 + (if + (i32.lt_u + (tee_local $13 + (i32.sub + (tee_local $2 + (i32.and + (i32.load offset=4 + (get_local $8) ) + (i32.const -8) ) - (get_local $0) ) + (get_local $0) ) - (get_local $4) ) - (set_local $4 - (if (result i32) - (i32.eq - (get_local $2) - (get_local $0) + (get_local $4) + ) + (set_local $4 + (if (result i32) + (i32.eq + (get_local $2) + (get_local $0) + ) + (block + (set_local $29 + (get_local $13) ) - (block - (set_local $29 - (get_local $13) - ) - (set_local $28 - (get_local $8) - ) - (set_local $32 - (get_local $8) - ) - (set_local $8 - (i32.const 90) - ) - (br $label$break$a) + (set_local $28 + (get_local $8) ) - (block (result i32) - (set_local $9 - (get_local $8) - ) - (get_local $13) + (set_local $32 + (get_local $8) ) + (set_local $8 + (i32.const 90) + ) + (br $label$break$a) ) - ) - ) - (set_local $2 - (select - (get_local $16) - (tee_local $13 - (i32.load offset=20 + (block (result i32) + (set_local $9 (get_local $8) ) + (get_local $13) ) - (i32.or - (i32.eqz - (get_local $13) - ) - (i32.eq - (get_local $13) - (tee_local $8 - (i32.load + ) + ) + ) + (set_local $2 + (select + (get_local $16) + (tee_local $13 + (i32.load offset=20 + (get_local $8) + ) + ) + (i32.or + (i32.eqz + (get_local $13) + ) + (i32.eq + (get_local $13) + (tee_local $8 + (i32.load + (i32.add (i32.add - (i32.add - (get_local $8) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $3) - (i32.const 31) - ) - (i32.const 2) + (get_local $8) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $3) + (i32.const 31) ) + (i32.const 2) ) ) ) @@ -1624,262 +1622,283 @@ ) ) ) - (set_local $6 - (if (result i32) - (tee_local $13 - (i32.eqz - (get_local $8) - ) + ) + (set_local $6 + (if (result i32) + (tee_local $13 + (i32.eqz + (get_local $8) ) - (block (result i32) - (set_local $36 - (get_local $4) - ) - (set_local $33 - (get_local $9) - ) - (set_local $8 - (i32.const 86) - ) + ) + (block (result i32) + (set_local $36 + (get_local $4) + ) + (set_local $33 + (get_local $9) + ) + (set_local $8 + (i32.const 86) + ) + (get_local $2) + ) + (block + (set_local $16 (get_local $2) ) - (block - (set_local $16 - (get_local $2) - ) - (set_local $3 - (i32.shl - (get_local $3) - (i32.xor - (i32.and - (get_local $13) - (i32.const 1) - ) + (set_local $3 + (i32.shl + (get_local $3) + (i32.xor + (i32.and + (get_local $13) (i32.const 1) ) + (i32.const 1) ) ) - (br $while-in14) ) + (br $while-in14) ) ) ) ) - (block - (set_local $36 - (get_local $5) - ) - (set_local $8 - (i32.const 86) - ) - ) ) - (if - (i32.eq - (get_local $8) + (block + (set_local $36 + (get_local $5) + ) + (set_local $8 (i32.const 86) ) - (if - (tee_local $2 - (if (result i32) - (i32.or - (get_local $6) - (get_local $33) - ) + ) + ) + (if + (i32.eq + (get_local $8) + (i32.const 86) + ) + (if + (tee_local $2 + (if (result i32) + (i32.or (get_local $6) - (block (result i32) - (drop - (br_if $do-once - (get_local $0) - (i32.eqz - (tee_local $5 - (i32.and - (get_local $10) - (i32.or - (tee_local $13 - (i32.shl - (i32.const 2) - (get_local $27) - ) - ) - (i32.sub - (i32.const 0) - (get_local $13) + (get_local $33) + ) + (get_local $6) + (block (result i32) + (drop + (br_if $do-once + (get_local $0) + (i32.eqz + (tee_local $5 + (i32.and + (get_local $10) + (i32.or + (tee_local $13 + (i32.shl + (i32.const 2) + (get_local $27) ) ) + (i32.sub + (i32.const 0) + (get_local $13) + ) ) ) ) ) ) - (set_local $5 - (i32.and - (i32.shr_u - (tee_local $13 - (i32.add - (i32.and + ) + (set_local $5 + (i32.and + (i32.shr_u + (tee_local $13 + (i32.add + (i32.and + (get_local $5) + (i32.sub + (i32.const 0) (get_local $5) - (i32.sub - (i32.const 0) - (get_local $5) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (i32.load - (i32.add - (i32.shl - (i32.add + ) + (i32.load + (i32.add + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $13 - (i32.and - (i32.shr_u - (tee_local $2 - (i32.shr_u - (get_local $13) - (get_local $5) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $5) - ) - (tee_local $2 + (tee_local $13 (i32.and (i32.shr_u - (tee_local $6 + (tee_local $2 (i32.shr_u - (get_local $2) (get_local $13) + (get_local $5) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $5) ) - (tee_local $6 + (tee_local $2 (i32.and (i32.shr_u - (tee_local $9 + (tee_local $6 (i32.shr_u - (get_local $6) (get_local $2) + (get_local $13) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $9 + (tee_local $6 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $9 (i32.shr_u - (get_local $9) (get_local $6) + (get_local $2) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $3) - (get_local $9) + (tee_local $9 + (i32.and + (i32.shr_u + (tee_local $3 + (i32.shr_u + (get_local $9) + (get_local $6) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $3) + (get_local $9) + ) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) ) - (block - (set_local $29 - (get_local $36) - ) - (set_local $28 - (get_local $2) - ) - (set_local $32 - (get_local $33) - ) - (set_local $8 - (i32.const 90) - ) + ) + (block + (set_local $29 + (get_local $36) ) - (block - (set_local $18 - (get_local $36) - ) - (set_local $11 - (get_local $33) - ) + (set_local $28 + (get_local $2) + ) + (set_local $32 + (get_local $33) + ) + (set_local $8 + (i32.const 90) + ) + ) + (block + (set_local $18 + (get_local $36) + ) + (set_local $11 + (get_local $33) ) ) ) - (if - (i32.eq - (get_local $8) - (i32.const 90) + ) + (if + (i32.eq + (get_local $8) + (i32.const 90) + ) + (loop $while-in16 + (set_local $8 + (i32.const 0) ) - (loop $while-in16 - (set_local $8 - (i32.const 0) - ) - (set_local $3 - (i32.lt_u - (tee_local $9 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $28) - ) - (i32.const -8) + (set_local $3 + (i32.lt_u + (tee_local $9 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $28) ) - (get_local $0) + (i32.const -8) ) + (get_local $0) ) - (get_local $29) ) + (get_local $29) ) - (set_local $6 - (select - (get_local $9) - (get_local $29) - (get_local $3) - ) + ) + (set_local $6 + (select + (get_local $9) + (get_local $29) + (get_local $3) ) - (set_local $9 - (select + ) + (set_local $9 + (select + (get_local $28) + (get_local $32) + (get_local $3) + ) + ) + (if + (tee_local $3 + (i32.load offset=16 (get_local $28) - (get_local $32) + ) + ) + (block + (set_local $29 + (get_local $6) + ) + (set_local $28 (get_local $3) ) + (set_local $32 + (get_local $9) + ) + (br $while-in16) ) - (if - (tee_local $3 - (i32.load offset=16 + ) + (set_local $18 + (if (result i32) + (tee_local $28 + (i32.load offset=20 (get_local $28) ) ) @@ -1887,708 +1906,811 @@ (set_local $29 (get_local $6) ) - (set_local $28 - (get_local $3) - ) (set_local $32 (get_local $9) ) (br $while-in16) ) - ) - (set_local $18 - (if (result i32) - (tee_local $28 - (i32.load offset=20 - (get_local $28) - ) - ) - (block - (set_local $29 - (get_local $6) - ) - (set_local $32 - (get_local $9) - ) - (br $while-in16) - ) - (block (result i32) - (set_local $11 - (get_local $9) - ) - (get_local $6) + (block (result i32) + (set_local $11 + (get_local $9) ) + (get_local $6) ) ) ) ) + ) + (if (result i32) + (get_local $11) (if (result i32) - (get_local $11) - (if (result i32) - (i32.lt_u - (get_local $18) - (i32.sub - (i32.load - (i32.const 1216) - ) - (get_local $0) + (i32.lt_u + (get_local $18) + (i32.sub + (i32.load + (i32.const 1216) ) + (get_local $0) ) - (block - (if - (i32.lt_u - (get_local $11) - (tee_local $10 - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $11) + (tee_local $10 + (i32.load + (i32.const 1224) ) ) - (call $qa) ) - (if - (i32.ge_u - (get_local $11) - (tee_local $9 - (i32.add - (get_local $11) - (get_local $0) - ) + (call $qa) + ) + (if + (i32.ge_u + (get_local $11) + (tee_local $9 + (i32.add + (get_local $11) + (get_local $0) ) ) - (call $qa) ) - (set_local $6 - (i32.load offset=24 - (get_local $11) - ) + (call $qa) + ) + (set_local $6 + (i32.load offset=24 + (get_local $11) ) - (if - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $11) - ) + ) + (if + (i32.eq + (tee_local $3 + (i32.load offset=12 + (get_local $11) ) - (get_local $11) ) - (block $do-once17 - (set_local $4 - (if (result i32) - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $11) - (i32.const 20) - ) - ) - ) - ) - (block (result i32) - (set_local $16 - (get_local $5) - ) - (get_local $2) - ) - (if (result i32) - (tee_local $16 - (i32.load - (tee_local $13 - (i32.add - (get_local $11) - (i32.const 16) - ) - ) + (get_local $11) + ) + (block $do-once17 + (set_local $4 + (if (result i32) + (tee_local $5 + (i32.load + (tee_local $2 + (i32.add + (get_local $11) + (i32.const 20) ) ) - (get_local $13) - (br $do-once17) ) ) - ) - (loop $while-in20 - (if - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $16) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $16 - (get_local $5) - ) - (set_local $4 - (get_local $2) - ) - (br $while-in20) + (block (result i32) + (set_local $16 + (get_local $5) ) + (get_local $2) ) - (if - (tee_local $5 + (if (result i32) + (tee_local $16 (i32.load - (tee_local $2 + (tee_local $13 (i32.add - (get_local $16) + (get_local $11) (i32.const 16) ) ) ) ) - (block - (set_local $16 - (get_local $5) - ) - (set_local $4 - (get_local $2) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (get_local $4) - (get_local $10) - ) - (call $qa) - (block - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $22 - (get_local $16) - ) + (get_local $13) + (br $do-once17) ) ) ) - (block - (if - (i32.lt_u - (tee_local $2 - (i32.load offset=8 - (get_local $11) - ) - ) - (get_local $10) - ) - (call $qa) - ) + (loop $while-in20 (if - (i32.ne + (tee_local $5 (i32.load - (tee_local $5 + (tee_local $2 (i32.add - (get_local $2) - (i32.const 12) + (get_local $16) + (i32.const 20) ) ) ) - (get_local $11) ) - (call $qa) + (block + (set_local $16 + (get_local $5) + ) + (set_local $4 + (get_local $2) + ) + (br $while-in20) + ) ) (if - (i32.eq + (tee_local $5 (i32.load - (tee_local $13 + (tee_local $2 (i32.add - (get_local $3) - (i32.const 8) + (get_local $16) + (i32.const 16) ) ) ) - (get_local $11) ) (block - (i32.store + (set_local $16 (get_local $5) - (get_local $3) ) - (i32.store - (get_local $13) + (set_local $4 (get_local $2) ) - (set_local $22 - (get_local $3) + (br $while-in20) + ) + ) + ) + (if + (i32.lt_u + (get_local $4) + (get_local $10) + ) + (call $qa) + (block + (i32.store + (get_local $4) + (i32.const 0) + ) + (set_local $22 + (get_local $16) + ) + ) + ) + ) + (block + (if + (i32.lt_u + (tee_local $2 + (i32.load offset=8 + (get_local $11) ) ) - (call $qa) + (get_local $10) + ) + (call $qa) + ) + (if + (i32.ne + (i32.load + (tee_local $5 + (i32.add + (get_local $2) + (i32.const 12) + ) + ) + ) + (get_local $11) ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $13 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + ) + (get_local $11) + ) + (block + (i32.store + (get_local $5) + (get_local $3) + ) + (i32.store + (get_local $13) + (get_local $2) + ) + (set_local $22 + (get_local $3) + ) + ) + (call $qa) ) ) - (if - (get_local $6) - (block $do-once21 - (if - (i32.eq - (get_local $11) - (i32.load - (tee_local $10 - (i32.add - (i32.shl - (tee_local $3 - (i32.load offset=28 - (get_local $11) - ) + ) + (if + (get_local $6) + (block $do-once21 + (if + (i32.eq + (get_local $11) + (i32.load + (tee_local $10 + (i32.add + (i32.shl + (tee_local $3 + (i32.load offset=28 + (get_local $11) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (block - (i32.store - (get_local $10) + ) + (block + (i32.store + (get_local $10) + (get_local $22) + ) + (if + (i32.eqz (get_local $22) ) - (if - (i32.eqz - (get_local $22) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) + (block + (i32.store + (i32.const 1212) + (i32.and + (i32.load + (i32.const 1212) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $3) ) + (i32.const -1) ) ) - (br $do-once21) ) + (br $do-once21) ) ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $6) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 16) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $3 + (i32.add + (get_local $6) + (i32.const 16) ) ) - (get_local $11) - ) - (i32.store - (get_local $3) - (get_local $22) - ) - (i32.store offset=20 - (get_local $6) - (get_local $22) ) + (get_local $11) ) - (br_if $do-once21 - (i32.eqz - (get_local $22) - ) + (i32.store + (get_local $3) + (get_local $22) + ) + (i32.store offset=20 + (get_local $6) + (get_local $22) ) ) - ) - (if - (i32.lt_u - (get_local $22) - (tee_local $3 - (i32.load - (i32.const 1224) - ) + (br_if $do-once21 + (i32.eqz + (get_local $22) ) ) - (call $qa) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $22) - (get_local $6) + (tee_local $3 + (i32.load + (i32.const 1224) + ) + ) + ) + (call $qa) + ) + (i32.store offset=24 + (get_local $22) + (get_local $6) + ) + (if + (tee_local $10 + (i32.load offset=16 + (get_local $11) + ) ) (if - (tee_local $10 - (i32.load offset=16 - (get_local $11) - ) + (i32.lt_u + (get_local $10) + (get_local $3) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=16 + (get_local $22) (get_local $10) - (get_local $3) ) - (call $qa) - (block - (i32.store offset=16 - (get_local $22) - (get_local $10) - ) - (i32.store offset=24 - (get_local $10) - (get_local $22) - ) + (i32.store offset=24 + (get_local $10) + (get_local $22) ) ) ) + ) + (if + (tee_local $10 + (i32.load offset=20 + (get_local $11) + ) + ) (if - (tee_local $10 - (i32.load offset=20 - (get_local $11) + (i32.lt_u + (get_local $10) + (i32.load + (i32.const 1224) ) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=20 + (get_local $22) (get_local $10) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (i32.store offset=20 - (get_local $22) - (get_local $10) - ) - (i32.store offset=24 - (get_local $10) - (get_local $22) - ) + (i32.store offset=24 + (get_local $10) + (get_local $22) ) ) ) ) ) - (if - (i32.lt_u - (get_local $18) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $11) - (i32.or - (tee_local $6 - (i32.add - (get_local $18) - (get_local $0) - ) + ) + (if + (i32.lt_u + (get_local $18) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $11) + (i32.or + (tee_local $6 + (i32.add + (get_local $18) + (get_local $0) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $10 + ) + (i32.store + (tee_local $10 + (i32.add (i32.add - (i32.add - (get_local $11) - (get_local $6) - ) - (i32.const 4) + (get_local $11) + (get_local $6) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $10) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $10) ) + (i32.const 1) ) ) - (block $do-once25 - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $0) - (i32.const 3) - ) + ) + (block $do-once25 + (i32.store offset=4 + (get_local $11) + (i32.or + (get_local $0) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $9) + (i32.or + (get_local $18) + (i32.const 1) ) - (i32.store offset=4 + ) + (i32.store + (i32.add (get_local $9) - (i32.or - (get_local $18) - (i32.const 1) - ) + (get_local $18) ) - (i32.store - (i32.add - (get_local $9) - (get_local $18) - ) + (get_local $18) + ) + (set_local $10 + (i32.shr_u (get_local $18) + (i32.const 3) ) - (set_local $10 - (i32.shr_u - (get_local $18) - (i32.const 3) - ) + ) + (if + (i32.lt_u + (get_local $18) + (i32.const 256) ) - (if - (i32.lt_u - (get_local $18) - (i32.const 256) + (block + (set_local $6 + (i32.add + (i32.shl + (get_local $10) + (i32.const 3) + ) + (i32.const 1248) + ) ) - (block - (set_local $6 - (i32.add + (if + (i32.and + (tee_local $3 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $2 (i32.shl + (i32.const 1) (get_local $10) - (i32.const 3) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $3 (i32.load - (i32.const 1208) - ) - ) - (tee_local $2 - (i32.shl - (i32.const 1) - (get_local $10) - ) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) + (tee_local $2 + (i32.add + (get_local $6) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $19 - (get_local $2) - ) - (set_local $7 - (get_local $3) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $3) - (get_local $2) - ) - ) (set_local $19 - (i32.add - (get_local $6) - (i32.const 8) - ) + (get_local $2) ) (set_local $7 - (get_local $6) + (get_local $3) ) ) ) - (i32.store - (get_local $19) - (get_local $9) - ) - (i32.store offset=12 - (get_local $7) - (get_local $9) - ) - (i32.store offset=8 - (get_local $9) - (get_local $7) - ) - (i32.store offset=12 - (get_local $9) - (get_local $6) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $3) + (get_local $2) + ) + ) + (set_local $19 + (i32.add + (get_local $6) + (i32.const 8) + ) + ) + (set_local $7 + (get_local $6) + ) ) - (br $do-once25) ) + (i32.store + (get_local $19) + (get_local $9) + ) + (i32.store offset=12 + (get_local $7) + (get_local $9) + ) + (i32.store offset=8 + (get_local $9) + (get_local $7) + ) + (i32.store offset=12 + (get_local $9) + (get_local $6) + ) + (br $do-once25) ) - (set_local $13 - (i32.add - (i32.shl - (tee_local $3 + ) + (set_local $13 + (i32.add + (i32.shl + (tee_local $3 + (if (result i32) + (tee_local $6 + (i32.shr_u + (get_local $18) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $6 - (i32.shr_u - (get_local $18) - (i32.const 8) - ) + (i32.gt_u + (get_local $18) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $18) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $18) - (i32.add - (tee_local $13 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $18) + (i32.add + (tee_local $13 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $6 - (i32.and - (i32.shr_u - (i32.add - (tee_local $2 - (i32.shl - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $6) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $6 + (i32.and + (i32.shr_u + (i32.add + (tee_local $2 + (i32.shl + (get_local $6) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $6) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (tee_local $10 - (i32.shl - (get_local $2) - (get_local $6) - ) + (get_local $3) + ) + (tee_local $2 + (i32.and + (i32.shr_u + (i32.add + (tee_local $10 + (i32.shl + (get_local $2) + (get_local $6) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $10) - (get_local $2) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $10) + (get_local $2) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $13) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $13) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) - (i32.store offset=28 - (get_local $9) - (get_local $3) + ) + (i32.store offset=28 + (get_local $9) + (get_local $3) + ) + (i32.store offset=4 + (tee_local $2 + (i32.add + (get_local $9) + (i32.const 16) + ) ) - (i32.store offset=4 - (tee_local $2 - (i32.add - (get_local $9) - (i32.const 16) + (i32.const 0) + ) + (i32.store + (get_local $2) + (i32.const 0) + ) + (if + (i32.eqz + (i32.and + (tee_local $2 + (i32.load + (i32.const 1212) + ) + ) + (tee_local $10 + (i32.shl + (i32.const 1) + (get_local $3) + ) ) ) - (i32.const 0) ) - (i32.store - (get_local $2) - (i32.const 0) + (block + (i32.store + (i32.const 1212) + (i32.or + (get_local $2) + (get_local $10) + ) + ) + (i32.store + (get_local $13) + (get_local $9) + ) + (i32.store offset=24 + (get_local $9) + (get_local $13) + ) + (i32.store offset=12 + (get_local $9) + (get_local $9) + ) + (i32.store offset=8 + (get_local $9) + (get_local $9) + ) + (br $do-once25) ) - (if - (i32.eqz - (i32.and - (tee_local $2 - (i32.load - (i32.const 1212) - ) + ) + (set_local $10 + (i32.shl + (get_local $18) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $3) + (i32.const 1) ) - (tee_local $10 - (i32.shl - (i32.const 1) - (get_local $3) + ) + (i32.eq + (get_local $3) + (i32.const 31) + ) + ) + ) + ) + (set_local $2 + (i32.load + (get_local $13) + ) + ) + (if + (i32.eq + (tee_local $8 + (loop $while-in28 (result i32) + (block $while-out27 (result i32) + (if + (i32.eq + (i32.and + (i32.load offset=4 + (get_local $2) + ) + (i32.const -8) + ) + (get_local $18) + ) + (block + (set_local $17 + (get_local $2) + ) + (br $while-out27 + (i32.const 148) + ) + ) + ) + (if (result i32) + (tee_local $3 + (i32.load + (tee_local $13 + (i32.add + (i32.add + (get_local $2) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $10) + (i32.const 31) + ) + (i32.const 2) + ) + ) + ) + ) + ) + (block + (set_local $10 + (i32.shl + (get_local $10) + (i32.const 1) + ) + ) + (set_local $2 + (get_local $3) + ) + (br $while-in28) + ) + (block (result i32) + (set_local $21 + (get_local $13) + ) + (set_local $15 + (get_local $2) + ) + (i32.const 145) + ) ) ) ) ) - (block - (i32.store - (i32.const 1212) - (i32.or - (get_local $2) - (get_local $10) - ) + (i32.const 145) + ) + (if + (i32.lt_u + (get_local $21) + (i32.load + (i32.const 1224) ) + ) + (call $qa) + (block (i32.store - (get_local $13) + (get_local $21) (get_local $9) ) (i32.store offset=24 (get_local $9) - (get_local $13) + (get_local $15) ) (i32.store offset=12 (get_local $9) @@ -2598,209 +2720,87 @@ (get_local $9) (get_local $9) ) - (br $do-once25) - ) - ) - (set_local $10 - (i32.shl - (get_local $18) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $3) - (i32.const 1) - ) - ) - (i32.eq - (get_local $3) - (i32.const 31) - ) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $13) ) ) (if (i32.eq - (tee_local $8 - (loop $while-in28 (result i32) - (block $while-out27 (result i32) - (if - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const -8) - ) - (get_local $18) - ) - (block - (set_local $17 - (get_local $2) - ) - (br $while-out27 - (i32.const 148) + (get_local $8) + (i32.const 148) + ) + (if + (i32.and + (i32.ge_u + (tee_local $10 + (i32.load + (tee_local $2 + (i32.add + (get_local $17) + (i32.const 8) ) ) ) - (if (result i32) - (tee_local $3 - (i32.load - (tee_local $13 - (i32.add - (i32.add - (get_local $2) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $10) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (set_local $10 - (i32.shl - (get_local $10) - (i32.const 1) - ) - ) - (set_local $2 - (get_local $3) - ) - (br $while-in28) - ) - (block (result i32) - (set_local $21 - (get_local $13) - ) - (set_local $15 - (get_local $2) - ) - (i32.const 145) - ) + ) + (tee_local $3 + (i32.load + (i32.const 1224) ) ) ) - ) - (i32.const 145) - ) - (if - (i32.lt_u - (get_local $21) - (i32.load - (i32.const 1224) + (i32.ge_u + (get_local $17) + (get_local $3) ) ) - (call $qa) (block + (i32.store offset=12 + (get_local $10) + (get_local $9) + ) (i32.store - (get_local $21) + (get_local $2) (get_local $9) ) - (i32.store offset=24 + (i32.store offset=8 (get_local $9) - (get_local $15) + (get_local $10) ) (i32.store offset=12 (get_local $9) - (get_local $9) + (get_local $17) ) - (i32.store offset=8 - (get_local $9) + (i32.store offset=24 (get_local $9) + (i32.const 0) ) ) - ) - (if - (i32.eq - (get_local $8) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (tee_local $10 - (i32.load - (tee_local $2 - (i32.add - (get_local $17) - (i32.const 8) - ) - ) - ) - ) - (tee_local $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (get_local $17) - (get_local $3) - ) - ) - (block - (i32.store offset=12 - (get_local $10) - (get_local $9) - ) - (i32.store - (get_local $2) - (get_local $9) - ) - (i32.store offset=8 - (get_local $9) - (get_local $10) - ) - (i32.store offset=12 - (get_local $9) - (get_local $17) - ) - (i32.store offset=24 - (get_local $9) - (i32.const 0) - ) - ) - (call $qa) - ) + (call $qa) ) ) ) ) - (set_global $r - (get_local $25) - ) - (return - (i32.add - (get_local $11) - (i32.const 8) - ) + ) + (set_global $r + (get_local $25) + ) + (return + (i32.add + (get_local $11) + (i32.const 8) ) ) - (get_local $0) ) (get_local $0) ) + (get_local $0) ) - (get_local $0) ) + (get_local $0) ) ) ) ) + ) + (block $folding-inner0 (if (i32.ge_u (tee_local $11 diff --git a/test/memorygrowth.fromasm.imprecise b/test/memorygrowth.fromasm.imprecise index 5f0518c42..4925a0ccf 100644 --- a/test/memorygrowth.fromasm.imprecise +++ b/test/memorygrowth.fromasm.imprecise @@ -108,782 +108,816 @@ (local $52 i32) (local $53 i32) (local $54 i32) - (block $folding-inner0 - (set_local $25 + (set_local $25 + (get_global $r) + ) + (set_global $r + (i32.add (get_global $r) + (i32.const 16) ) - (set_global $r - (i32.add - (get_global $r) - (i32.const 16) + ) + (set_local $14 + (get_local $25) + ) + (set_local $6 + (if (result i32) + (i32.lt_u + (get_local $0) + (i32.const 245) ) - ) - (set_local $14 - (get_local $25) - ) - (set_local $6 - (if (result i32) - (i32.lt_u - (get_local $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (tee_local $6 - (i32.shr_u - (tee_local $5 - (i32.load - (i32.const 1208) - ) + (block (result i32) + (if + (i32.and + (tee_local $6 + (i32.shr_u + (tee_local $5 + (i32.load + (i32.const 1208) ) - (tee_local $0 - (i32.shr_u - (tee_local $2 - (select - (i32.const 16) - (i32.and - (i32.add - (get_local $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u + ) + (tee_local $0 + (i32.shr_u + (tee_local $2 + (select + (i32.const 16) + (i32.and + (i32.add (get_local $0) (i32.const 11) ) + (i32.const -8) + ) + (i32.lt_u + (get_local $0) + (i32.const 11) ) ) - (i32.const 3) ) + (i32.const 3) ) ) ) - (i32.const 3) ) - (block - (set_local $7 - (i32.load - (tee_local $2 - (i32.add - (tee_local $13 - (i32.load - (tee_local $16 - (i32.add - (tee_local $9 - (i32.add - (i32.shl - (tee_local $0 - (i32.add - (i32.xor - (i32.and - (get_local $6) - (i32.const 1) - ) + (i32.const 3) + ) + (block + (set_local $7 + (i32.load + (tee_local $2 + (i32.add + (tee_local $13 + (i32.load + (tee_local $16 + (i32.add + (tee_local $9 + (i32.add + (i32.shl + (tee_local $0 + (i32.add + (i32.xor + (i32.and + (get_local $6) (i32.const 1) ) - (get_local $0) + (i32.const 1) ) + (get_local $0) ) - (i32.const 3) ) - (i32.const 1248) + (i32.const 3) ) + (i32.const 1248) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $9) - (get_local $7) - ) - (i32.store - (i32.const 1208) - (i32.and - (get_local $5) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $0) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $9) + (get_local $7) + ) + (i32.store + (i32.const 1208) + (i32.and + (get_local $5) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $0) ) + (i32.const -1) ) ) - (block - (if - (i32.lt_u - (get_local $7) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $7) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $8 - (i32.add - (get_local $7) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $8 + (i32.add + (get_local $7) + (i32.const 12) ) ) - (get_local $13) ) - (block - (i32.store - (get_local $8) - (get_local $9) - ) - (i32.store - (get_local $16) - (get_local $7) - ) + (get_local $13) + ) + (block + (i32.store + (get_local $8) + (get_local $9) + ) + (i32.store + (get_local $16) + (get_local $7) ) - (call $qa) ) + (call $qa) ) ) - (i32.store offset=4 - (get_local $13) - (i32.or - (tee_local $7 - (i32.shl - (get_local $0) - (i32.const 3) - ) + ) + (i32.store offset=4 + (get_local $13) + (i32.or + (tee_local $7 + (i32.shl + (get_local $0) + (i32.const 3) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $16 + ) + (i32.store + (tee_local $16 + (i32.add (i32.add - (i32.add - (get_local $13) - (get_local $7) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.load - (get_local $16) + (get_local $13) + (get_local $7) ) - (i32.const 1) + (i32.const 4) ) ) - (set_global $r - (get_local $25) - ) - (return - (get_local $2) + (i32.or + (i32.load + (get_local $16) + ) + (i32.const 1) ) ) - ) - (if (result i32) - (i32.gt_u + (set_global $r + (get_local $25) + ) + (return (get_local $2) - (tee_local $16 - (i32.load - (i32.const 1216) - ) + ) + ) + ) + (if (result i32) + (i32.gt_u + (get_local $2) + (tee_local $16 + (i32.load + (i32.const 1216) ) ) - (block (result i32) - (if - (get_local $6) - (block - (set_local $9 - (i32.and - (i32.shr_u - (tee_local $7 - (i32.add - (i32.and - (tee_local $9 - (i32.and - (i32.shl - (get_local $6) - (get_local $0) - ) - (i32.or - (tee_local $7 - (i32.shl - (i32.const 2) - (get_local $0) - ) - ) - (i32.sub - (i32.const 0) - (get_local $7) + ) + (block (result i32) + (if + (get_local $6) + (block + (set_local $9 + (i32.and + (i32.shr_u + (tee_local $7 + (i32.add + (i32.and + (tee_local $9 + (i32.and + (i32.shl + (get_local $6) + (get_local $0) + ) + (i32.or + (tee_local $7 + (i32.shl + (i32.const 2) + (get_local $0) ) ) + (i32.sub + (i32.const 0) + (get_local $7) + ) ) ) - (i32.sub - (i32.const 0) - (get_local $9) - ) ) - (i32.const -1) + (i32.sub + (i32.const 0) + (get_local $9) + ) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $9 - (i32.load - (tee_local $8 - (i32.add - (tee_local $10 - (i32.load - (tee_local $13 - (i32.add - (tee_local $3 - (i32.add - (i32.shl - (tee_local $4 - (i32.add + ) + (set_local $9 + (i32.load + (tee_local $8 + (i32.add + (tee_local $10 + (i32.load + (tee_local $13 + (i32.add + (tee_local $3 + (i32.add + (i32.shl + (tee_local $4 + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $7 - (i32.and - (i32.shr_u - (tee_local $8 - (i32.shr_u - (get_local $7) - (get_local $9) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $9) - ) - (tee_local $8 + (tee_local $7 (i32.and (i32.shr_u - (tee_local $10 + (tee_local $8 (i32.shr_u - (get_local $8) (get_local $7) + (get_local $9) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $9) ) - (tee_local $10 + (tee_local $8 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $10 (i32.shr_u - (get_local $10) (get_local $8) + (get_local $7) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $3 + (tee_local $10 (i32.and (i32.shr_u - (tee_local $13 + (tee_local $3 (i32.shr_u - (get_local $3) (get_local $10) + (get_local $8) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $13) - (get_local $3) + (tee_local $3 + (i32.and + (i32.shr_u + (tee_local $13 + (i32.shr_u + (get_local $3) + (get_local $10) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) + (i32.shr_u + (get_local $13) + (get_local $3) + ) ) - (i32.const 3) ) - (i32.const 1248) + (i32.const 3) ) + (i32.const 1248) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (i32.const 8) ) + (i32.const 8) ) ) ) - (if - (i32.eq - (get_local $3) - (get_local $9) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (get_local $5) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $4) - ) - (i32.const -1) + ) + (if + (i32.eq + (get_local $3) + (get_local $9) + ) + (block + (i32.store + (i32.const 1208) + (i32.and + (get_local $5) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $4) ) + (i32.const -1) ) ) - (set_local $34 - (get_local $16) - ) ) - (block - (if - (i32.lt_u - (get_local $9) - (i32.load - (i32.const 1224) - ) + (set_local $34 + (get_local $16) + ) + ) + (block + (if + (i32.lt_u + (get_local $9) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $7 - (i32.add - (get_local $9) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $7 + (i32.add + (get_local $9) + (i32.const 12) ) ) - (get_local $10) ) - (block - (i32.store - (get_local $7) - (get_local $3) - ) - (i32.store - (get_local $13) - (get_local $9) - ) - (set_local $34 - (i32.load - (i32.const 1216) - ) + (get_local $10) + ) + (block + (i32.store + (get_local $7) + (get_local $3) + ) + (i32.store + (get_local $13) + (get_local $9) + ) + (set_local $34 + (i32.load + (i32.const 1216) ) ) - (call $qa) ) + (call $qa) ) ) - (i32.store offset=4 - (get_local $10) - (i32.or + ) + (i32.store offset=4 + (get_local $10) + (i32.or + (get_local $2) + (i32.const 3) + ) + ) + (i32.store offset=4 + (tee_local $13 + (i32.add + (get_local $10) (get_local $2) - (i32.const 3) ) ) - (i32.store offset=4 - (tee_local $13 - (i32.add - (get_local $10) - (get_local $2) - ) - ) - (i32.or - (tee_local $9 - (i32.sub - (i32.shl - (get_local $4) - (i32.const 3) - ) - (get_local $2) + (i32.or + (tee_local $9 + (i32.sub + (i32.shl + (get_local $4) + (i32.const 3) ) + (get_local $2) ) - (i32.const 1) ) + (i32.const 1) ) - (i32.store - (i32.add - (get_local $13) - (get_local $9) - ) + ) + (i32.store + (i32.add + (get_local $13) (get_local $9) ) - (if - (get_local $34) - (block - (set_local $3 - (i32.load - (i32.const 1228) + (get_local $9) + ) + (if + (get_local $34) + (block + (set_local $3 + (i32.load + (i32.const 1228) + ) + ) + (set_local $5 + (i32.add + (i32.shl + (tee_local $16 + (i32.shr_u + (get_local $34) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 1248) ) - (set_local $5 - (i32.add + ) + (if + (i32.and + (tee_local $0 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $6 (i32.shl - (tee_local $16 - (i32.shr_u - (get_local $34) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $16) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $0 (i32.load - (i32.const 1208) - ) - ) - (tee_local $6 - (i32.shl - (i32.const 1) - (get_local $16) - ) - ) - ) - (if - (i32.lt_u - (tee_local $0 - (i32.load - (tee_local $6 - (i32.add - (get_local $5) - (i32.const 8) - ) + (tee_local $6 + (i32.add + (get_local $5) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $40 - (get_local $6) - ) - (set_local $35 - (get_local $0) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $0) - (get_local $6) - ) - ) (set_local $40 - (i32.add - (get_local $5) - (i32.const 8) - ) + (get_local $6) ) (set_local $35 - (get_local $5) + (get_local $0) ) ) ) - (i32.store - (get_local $40) - (get_local $3) - ) - (i32.store offset=12 - (get_local $35) - (get_local $3) - ) - (i32.store offset=8 - (get_local $3) - (get_local $35) - ) - (i32.store offset=12 - (get_local $3) - (get_local $5) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $0) + (get_local $6) + ) + ) + (set_local $40 + (i32.add + (get_local $5) + (i32.const 8) + ) + ) + (set_local $35 + (get_local $5) + ) ) ) + (i32.store + (get_local $40) + (get_local $3) + ) + (i32.store offset=12 + (get_local $35) + (get_local $3) + ) + (i32.store offset=8 + (get_local $3) + (get_local $35) + ) + (i32.store offset=12 + (get_local $3) + (get_local $5) + ) ) - (i32.store - (i32.const 1216) - (get_local $9) - ) - (i32.store - (i32.const 1228) - (get_local $13) - ) - (set_global $r - (get_local $25) - ) - (return - (get_local $8) - ) + ) + (i32.store + (i32.const 1216) + (get_local $9) + ) + (i32.store + (i32.const 1228) + (get_local $13) + ) + (set_global $r + (get_local $25) + ) + (return + (get_local $8) ) ) - (if (result i32) - (tee_local $13 - (i32.load - (i32.const 1212) - ) + ) + (if (result i32) + (tee_local $13 + (i32.load + (i32.const 1212) ) - (block - (set_local $13 - (i32.and - (i32.shr_u - (tee_local $9 - (i32.add - (i32.and + ) + (block + (set_local $13 + (i32.and + (i32.shr_u + (tee_local $9 + (i32.add + (i32.and + (get_local $13) + (i32.sub + (i32.const 0) (get_local $13) - (i32.sub - (i32.const 0) - (get_local $13) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (set_local $0 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $16 - (i32.load - (i32.add - (i32.shl - (i32.add + ) + (set_local $0 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $16 + (i32.load + (i32.add + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $9 - (i32.and - (i32.shr_u - (tee_local $5 - (i32.shr_u - (get_local $9) - (get_local $13) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $13) - ) - (tee_local $5 + (tee_local $9 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $5 (i32.shr_u - (get_local $5) (get_local $9) + (get_local $13) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $13) ) - (tee_local $3 + (tee_local $5 (i32.and (i32.shr_u - (tee_local $0 + (tee_local $3 (i32.shr_u - (get_local $3) (get_local $5) + (get_local $9) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $0 + (tee_local $3 (i32.and (i32.shr_u - (tee_local $6 + (tee_local $0 (i32.shr_u - (get_local $0) (get_local $3) + (get_local $5) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $6) - (get_local $0) + (tee_local $0 + (i32.and + (i32.shr_u + (tee_local $6 + (i32.shr_u + (get_local $0) + (get_local $3) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $6) + (get_local $0) + ) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (set_local $3 - (tee_local $6 - (get_local $16) - ) + ) + (set_local $3 + (tee_local $6 + (get_local $16) ) - (loop $while-in - (block $while-out - (set_local $5 - (i32.lt_u - (tee_local $16 - (i32.sub - (i32.and - (i32.load offset=4 - (tee_local $6 + ) + (loop $while-in + (block $while-out + (set_local $5 + (i32.lt_u + (tee_local $16 + (i32.sub + (i32.and + (i32.load offset=4 + (tee_local $6 + (if (result i32) + (tee_local $16 + (i32.load offset=16 + (get_local $6) + ) + ) + (get_local $16) (if (result i32) - (tee_local $16 - (i32.load offset=16 + (tee_local $5 + (i32.load offset=20 (get_local $6) ) ) - (get_local $16) - (if (result i32) - (tee_local $5 - (i32.load offset=20 - (get_local $6) - ) + (get_local $5) + (block + (set_local $7 + (get_local $0) ) - (get_local $5) - (block - (set_local $7 - (get_local $0) - ) - (set_local $1 - (get_local $3) - ) - (br $while-out) + (set_local $1 + (get_local $3) ) + (br $while-out) ) ) ) ) - (i32.const -8) ) - (get_local $2) + (i32.const -8) ) + (get_local $2) ) - (get_local $0) ) + (get_local $0) ) - (set_local $0 - (select - (get_local $16) - (get_local $0) - (get_local $5) - ) + ) + (set_local $0 + (select + (get_local $16) + (get_local $0) + (get_local $5) ) - (set_local $3 - (select - (get_local $6) - (get_local $3) - (get_local $5) - ) + ) + (set_local $3 + (select + (get_local $6) + (get_local $3) + (get_local $5) ) - (br $while-in) ) + (br $while-in) ) - (if - (i32.lt_u - (get_local $1) - (tee_local $3 - (i32.load - (i32.const 1224) - ) + ) + (if + (i32.lt_u + (get_local $1) + (tee_local $3 + (i32.load + (i32.const 1224) ) ) - (call $qa) ) - (if - (i32.ge_u - (get_local $1) - (tee_local $6 - (i32.add - (get_local $1) - (get_local $2) - ) + (call $qa) + ) + (if + (i32.ge_u + (get_local $1) + (tee_local $6 + (i32.add + (get_local $1) + (get_local $2) ) ) - (call $qa) ) - (set_local $0 - (i32.load offset=24 - (get_local $1) + (call $qa) + ) + (set_local $0 + (i32.load offset=24 + (get_local $1) + ) + ) + (if + (i32.eq + (tee_local $8 + (i32.load offset=12 + (get_local $1) + ) ) + (get_local $1) ) - (if - (i32.eq - (tee_local $8 - (i32.load offset=12 - (get_local $1) + (block $do-once4 + (if + (tee_local $4 + (i32.load + (tee_local $10 + (i32.add + (get_local $1) + (i32.const 20) + ) + ) + ) + ) + (block + (set_local $16 + (get_local $4) + ) + (set_local $5 + (get_local $10) + ) + ) + (br_if $do-once4 + (i32.eqz + (tee_local $16 + (i32.load + (tee_local $5 + (i32.add + (get_local $1) + (i32.const 16) + ) + ) + ) + ) ) ) - (get_local $1) ) - (block $do-once4 + (loop $while-in7 (if (tee_local $4 (i32.load (tee_local $10 (i32.add - (get_local $1) + (get_local $16) (i32.const 20) ) ) @@ -896,725 +930,689 @@ (set_local $5 (get_local $10) ) - ) - (br_if $do-once4 - (i32.eqz - (tee_local $16 - (i32.load - (tee_local $5 - (i32.add - (get_local $1) - (i32.const 16) - ) - ) - ) - ) - ) + (br $while-in7) ) ) - (loop $while-in7 - (if - (tee_local $4 - (i32.load - (tee_local $10 - (i32.add - (get_local $16) - (i32.const 20) - ) + (if + (tee_local $4 + (i32.load + (tee_local $10 + (i32.add + (get_local $16) + (i32.const 16) ) ) ) - (block - (set_local $16 - (get_local $4) - ) - (set_local $5 - (get_local $10) - ) - (br $while-in7) - ) ) - (if - (tee_local $4 - (i32.load - (tee_local $10 - (i32.add - (get_local $16) - (i32.const 16) - ) - ) - ) + (block + (set_local $16 + (get_local $4) ) - (block - (set_local $16 - (get_local $4) - ) - (set_local $5 - (get_local $10) - ) - (br $while-in7) + (set_local $5 + (get_local $10) ) + (br $while-in7) ) ) - (if - (i32.lt_u + ) + (if + (i32.lt_u + (get_local $5) + (get_local $3) + ) + (call $qa) + (block + (i32.store (get_local $5) - (get_local $3) + (i32.const 0) ) - (call $qa) - (block - (i32.store - (get_local $5) - (i32.const 0) - ) - (set_local $23 - (get_local $16) - ) + (set_local $23 + (get_local $16) ) ) ) - (block - (if - (i32.lt_u - (tee_local $10 - (i32.load offset=8 - (get_local $1) - ) + ) + (block + (if + (i32.lt_u + (tee_local $10 + (i32.load offset=8 + (get_local $1) ) - (get_local $3) ) - (call $qa) + (get_local $3) ) - (if - (i32.ne - (i32.load - (tee_local $4 - (i32.add - (get_local $10) - (i32.const 12) - ) + (call $qa) + ) + (if + (i32.ne + (i32.load + (tee_local $4 + (i32.add + (get_local $10) + (i32.const 12) ) ) - (get_local $1) ) - (call $qa) + (get_local $1) ) - (if - (i32.eq - (i32.load - (tee_local $5 - (i32.add - (get_local $8) - (i32.const 8) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $5 + (i32.add + (get_local $8) + (i32.const 8) ) ) - (get_local $1) ) - (block - (i32.store - (get_local $4) - (get_local $8) - ) - (i32.store - (get_local $5) - (get_local $10) - ) - (set_local $23 - (get_local $8) - ) + (get_local $1) + ) + (block + (i32.store + (get_local $4) + (get_local $8) + ) + (i32.store + (get_local $5) + (get_local $10) + ) + (set_local $23 + (get_local $8) ) - (call $qa) ) + (call $qa) ) ) - (if - (get_local $0) - (block $do-once8 - (if - (i32.eq - (get_local $1) - (i32.load - (tee_local $3 - (i32.add - (i32.shl - (tee_local $8 - (i32.load offset=28 - (get_local $1) - ) + ) + (if + (get_local $0) + (block $do-once8 + (if + (i32.eq + (get_local $1) + (i32.load + (tee_local $3 + (i32.add + (i32.shl + (tee_local $8 + (i32.load offset=28 + (get_local $1) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (block - (i32.store - (get_local $3) + ) + (block + (i32.store + (get_local $3) + (get_local $23) + ) + (if + (i32.eqz (get_local $23) ) - (if - (i32.eqz - (get_local $23) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $8) - ) - (i32.const -1) + (block + (i32.store + (i32.const 1212) + (i32.and + (i32.load + (i32.const 1212) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $8) ) + (i32.const -1) ) ) - (br $do-once8) ) + (br $do-once8) ) ) - (block - (if - (i32.lt_u - (get_local $0) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $0) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $8 - (i32.add - (get_local $0) - (i32.const 16) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $8 + (i32.add + (get_local $0) + (i32.const 16) ) ) - (get_local $1) - ) - (i32.store - (get_local $8) - (get_local $23) - ) - (i32.store offset=20 - (get_local $0) - (get_local $23) ) + (get_local $1) ) - (br_if $do-once8 - (i32.eqz - (get_local $23) - ) + (i32.store + (get_local $8) + (get_local $23) + ) + (i32.store offset=20 + (get_local $0) + (get_local $23) ) ) - ) - (if - (i32.lt_u - (get_local $23) - (tee_local $8 - (i32.load - (i32.const 1224) - ) + (br_if $do-once8 + (i32.eqz + (get_local $23) ) ) - (call $qa) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $23) - (get_local $0) + (tee_local $8 + (i32.load + (i32.const 1224) + ) + ) + ) + (call $qa) + ) + (i32.store offset=24 + (get_local $23) + (get_local $0) + ) + (if + (tee_local $3 + (i32.load offset=16 + (get_local $1) + ) ) (if - (tee_local $3 - (i32.load offset=16 - (get_local $1) - ) + (i32.lt_u + (get_local $3) + (get_local $8) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=16 + (get_local $23) (get_local $3) - (get_local $8) ) - (call $qa) - (block - (i32.store offset=16 - (get_local $23) - (get_local $3) - ) - (i32.store offset=24 - (get_local $3) - (get_local $23) - ) + (i32.store offset=24 + (get_local $3) + (get_local $23) ) ) ) + ) + (if + (tee_local $3 + (i32.load offset=20 + (get_local $1) + ) + ) (if - (tee_local $3 - (i32.load offset=20 - (get_local $1) + (i32.lt_u + (get_local $3) + (i32.load + (i32.const 1224) ) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=20 + (get_local $23) (get_local $3) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (i32.store offset=20 - (get_local $23) - (get_local $3) - ) - (i32.store offset=24 - (get_local $3) - (get_local $23) - ) + (i32.store offset=24 + (get_local $3) + (get_local $23) ) ) ) ) ) - (if - (i32.lt_u - (get_local $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $1) - (i32.or - (tee_local $0 - (i32.add - (get_local $7) - (get_local $2) - ) + ) + (if + (i32.lt_u + (get_local $7) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $1) + (i32.or + (tee_local $0 + (i32.add + (get_local $7) + (get_local $2) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $3 + ) + (i32.store + (tee_local $3 + (i32.add (i32.add - (i32.add - (get_local $1) - (get_local $0) - ) - (i32.const 4) + (get_local $1) + (get_local $0) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $3) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $3) ) + (i32.const 1) ) ) - (block - (i32.store offset=4 - (get_local $1) - (i32.or - (get_local $2) - (i32.const 3) - ) + ) + (block + (i32.store offset=4 + (get_local $1) + (i32.or + (get_local $2) + (i32.const 3) ) - (i32.store offset=4 + ) + (i32.store offset=4 + (get_local $6) + (i32.or + (get_local $7) + (i32.const 1) + ) + ) + (i32.store + (i32.add (get_local $6) - (i32.or - (get_local $7) - (i32.const 1) - ) + (get_local $7) ) - (i32.store - (i32.add - (get_local $6) - (get_local $7) + (get_local $7) + ) + (if + (tee_local $3 + (i32.load + (i32.const 1216) ) - (get_local $7) ) - (if - (tee_local $3 + (block + (set_local $0 (i32.load - (i32.const 1216) + (i32.const 1228) ) ) - (block - (set_local $0 - (i32.load - (i32.const 1228) + (set_local $3 + (i32.add + (i32.shl + (tee_local $8 + (i32.shr_u + (get_local $3) + (i32.const 3) + ) + ) + (i32.const 3) ) + (i32.const 1248) ) - (set_local $3 - (i32.add + ) + (if + (i32.and + (tee_local $10 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $5 (i32.shl - (tee_local $8 - (i32.shr_u - (get_local $3) - (i32.const 3) - ) - ) - (i32.const 3) + (i32.const 1) + (get_local $8) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $10 (i32.load - (i32.const 1208) - ) - ) - (tee_local $5 - (i32.shl - (i32.const 1) - (get_local $8) - ) - ) - ) - (if - (i32.lt_u - (tee_local $10 - (i32.load - (tee_local $5 - (i32.add - (get_local $3) - (i32.const 8) - ) + (tee_local $5 + (i32.add + (get_local $3) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $41 - (get_local $5) - ) - (set_local $27 - (get_local $10) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $10) - (get_local $5) - ) - ) (set_local $41 - (i32.add - (get_local $3) - (i32.const 8) - ) + (get_local $5) ) (set_local $27 - (get_local $3) + (get_local $10) ) ) ) - (i32.store - (get_local $41) - (get_local $0) - ) - (i32.store offset=12 - (get_local $27) - (get_local $0) - ) - (i32.store offset=8 - (get_local $0) - (get_local $27) - ) - (i32.store offset=12 - (get_local $0) - (get_local $3) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $10) + (get_local $5) + ) + ) + (set_local $41 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + (set_local $27 + (get_local $3) + ) ) ) - ) - (i32.store - (i32.const 1216) - (get_local $7) - ) - (i32.store - (i32.const 1228) - (get_local $6) + (i32.store + (get_local $41) + (get_local $0) + ) + (i32.store offset=12 + (get_local $27) + (get_local $0) + ) + (i32.store offset=8 + (get_local $0) + (get_local $27) + ) + (i32.store offset=12 + (get_local $0) + (get_local $3) + ) ) ) - ) - (set_global $r - (get_local $25) - ) - (return - (i32.add - (get_local $1) - (i32.const 8) + (i32.store + (i32.const 1216) + (get_local $7) + ) + (i32.store + (i32.const 1228) + (get_local $6) ) ) ) - (get_local $2) + (set_global $r + (get_local $25) + ) + (return + (i32.add + (get_local $1) + (i32.const 8) + ) + ) ) + (get_local $2) ) - (get_local $2) ) + (get_local $2) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (set_local $0 - (i32.and - (tee_local $3 - (i32.add - (get_local $0) - (i32.const 11) - ) + ) + (if (result i32) + (i32.gt_u + (get_local $0) + (i32.const -65) + ) + (i32.const -1) + (block $do-once (result i32) + (set_local $0 + (i32.and + (tee_local $3 + (i32.add + (get_local $0) + (i32.const 11) ) - (i32.const -8) ) + (i32.const -8) ) - (if (result i32) - (tee_local $10 - (i32.load - (i32.const 1212) - ) + ) + (if (result i32) + (tee_local $10 + (i32.load + (i32.const 1212) ) - (block (result i32) - (set_local $5 - (i32.sub - (i32.const 0) - (get_local $0) - ) + ) + (block (result i32) + (set_local $5 + (i32.sub + (i32.const 0) + (get_local $0) ) - (if - (tee_local $13 - (i32.load - (i32.add - (i32.shl - (tee_local $27 + ) + (if + (tee_local $13 + (i32.load + (i32.add + (i32.shl + (tee_local $27 + (if (result i32) + (tee_local $8 + (i32.shr_u + (get_local $3) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $8 - (i32.shr_u - (get_local $3) - (i32.const 8) - ) + (i32.gt_u + (get_local $0) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $0) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $0) - (i32.add - (tee_local $13 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $0) + (i32.add + (tee_local $13 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $8 - (i32.and - (i32.shr_u - (i32.add - (tee_local $4 - (i32.shl - (get_local $8) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $8) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $8 + (i32.and + (i32.shr_u + (i32.add + (tee_local $4 + (i32.shl + (get_local $8) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $8) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $4 - (i32.and - (i32.shr_u - (i32.add - (tee_local $16 - (i32.shl - (get_local $4) - (get_local $8) - ) + (get_local $3) + ) + (tee_local $4 + (i32.and + (i32.shr_u + (i32.add + (tee_local $16 + (i32.shl + (get_local $4) + (get_local $8) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $16) - (get_local $4) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $16) + (get_local $4) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $13) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $13) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) - (block $label$break$a - (set_local $4 - (get_local $5) - ) - (set_local $16 - (i32.const 0) - ) - (set_local $3 - (i32.shl - (get_local $0) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $27) - (i32.const 1) - ) - ) - (i32.eq + ) + (block $label$break$a + (set_local $4 + (get_local $5) + ) + (set_local $16 + (i32.const 0) + ) + (set_local $3 + (i32.shl + (get_local $0) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u (get_local $27) - (i32.const 31) + (i32.const 1) ) ) + (i32.eq + (get_local $27) + (i32.const 31) + ) ) ) - (set_local $8 - (get_local $13) - ) - (loop $while-in14 - (if - (i32.lt_u - (tee_local $13 - (i32.sub - (tee_local $2 - (i32.and - (i32.load offset=4 - (get_local $8) - ) - (i32.const -8) + ) + (set_local $8 + (get_local $13) + ) + (loop $while-in14 + (if + (i32.lt_u + (tee_local $13 + (i32.sub + (tee_local $2 + (i32.and + (i32.load offset=4 + (get_local $8) ) + (i32.const -8) ) - (get_local $0) ) + (get_local $0) ) - (get_local $4) ) - (set_local $4 - (if (result i32) - (i32.eq - (get_local $2) - (get_local $0) + (get_local $4) + ) + (set_local $4 + (if (result i32) + (i32.eq + (get_local $2) + (get_local $0) + ) + (block + (set_local $29 + (get_local $13) ) - (block - (set_local $29 - (get_local $13) - ) - (set_local $28 - (get_local $8) - ) - (set_local $32 - (get_local $8) - ) - (set_local $8 - (i32.const 90) - ) - (br $label$break$a) + (set_local $28 + (get_local $8) ) - (block (result i32) - (set_local $9 - (get_local $8) - ) - (get_local $13) + (set_local $32 + (get_local $8) + ) + (set_local $8 + (i32.const 90) ) + (br $label$break$a) ) - ) - ) - (set_local $2 - (select - (get_local $16) - (tee_local $13 - (i32.load offset=20 + (block (result i32) + (set_local $9 (get_local $8) ) + (get_local $13) ) - (i32.or - (i32.eqz - (get_local $13) - ) - (i32.eq - (get_local $13) - (tee_local $8 - (i32.load + ) + ) + ) + (set_local $2 + (select + (get_local $16) + (tee_local $13 + (i32.load offset=20 + (get_local $8) + ) + ) + (i32.or + (i32.eqz + (get_local $13) + ) + (i32.eq + (get_local $13) + (tee_local $8 + (i32.load + (i32.add (i32.add - (i32.add - (get_local $8) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $3) - (i32.const 31) - ) - (i32.const 2) + (get_local $8) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $3) + (i32.const 31) ) + (i32.const 2) ) ) ) @@ -1622,262 +1620,283 @@ ) ) ) - (set_local $6 - (if (result i32) - (tee_local $13 - (i32.eqz - (get_local $8) - ) + ) + (set_local $6 + (if (result i32) + (tee_local $13 + (i32.eqz + (get_local $8) ) - (block (result i32) - (set_local $36 - (get_local $4) - ) - (set_local $33 - (get_local $9) - ) - (set_local $8 - (i32.const 86) - ) + ) + (block (result i32) + (set_local $36 + (get_local $4) + ) + (set_local $33 + (get_local $9) + ) + (set_local $8 + (i32.const 86) + ) + (get_local $2) + ) + (block + (set_local $16 (get_local $2) ) - (block - (set_local $16 - (get_local $2) - ) - (set_local $3 - (i32.shl - (get_local $3) - (i32.xor - (i32.and - (get_local $13) - (i32.const 1) - ) + (set_local $3 + (i32.shl + (get_local $3) + (i32.xor + (i32.and + (get_local $13) (i32.const 1) ) + (i32.const 1) ) ) - (br $while-in14) ) + (br $while-in14) ) ) ) ) - (block - (set_local $36 - (get_local $5) - ) - (set_local $8 - (i32.const 86) - ) - ) ) - (if - (i32.eq - (get_local $8) + (block + (set_local $36 + (get_local $5) + ) + (set_local $8 (i32.const 86) ) - (if - (tee_local $2 - (if (result i32) - (i32.or - (get_local $6) - (get_local $33) - ) + ) + ) + (if + (i32.eq + (get_local $8) + (i32.const 86) + ) + (if + (tee_local $2 + (if (result i32) + (i32.or (get_local $6) - (block (result i32) - (drop - (br_if $do-once - (get_local $0) - (i32.eqz - (tee_local $5 - (i32.and - (get_local $10) - (i32.or - (tee_local $13 - (i32.shl - (i32.const 2) - (get_local $27) - ) - ) - (i32.sub - (i32.const 0) - (get_local $13) + (get_local $33) + ) + (get_local $6) + (block (result i32) + (drop + (br_if $do-once + (get_local $0) + (i32.eqz + (tee_local $5 + (i32.and + (get_local $10) + (i32.or + (tee_local $13 + (i32.shl + (i32.const 2) + (get_local $27) ) ) + (i32.sub + (i32.const 0) + (get_local $13) + ) ) ) ) ) ) - (set_local $5 - (i32.and - (i32.shr_u - (tee_local $13 - (i32.add - (i32.and + ) + (set_local $5 + (i32.and + (i32.shr_u + (tee_local $13 + (i32.add + (i32.and + (get_local $5) + (i32.sub + (i32.const 0) (get_local $5) - (i32.sub - (i32.const 0) - (get_local $5) - ) ) - (i32.const -1) ) + (i32.const -1) ) - (i32.const 12) ) - (i32.const 16) + (i32.const 12) ) + (i32.const 16) ) - (i32.load - (i32.add - (i32.shl - (i32.add + ) + (i32.load + (i32.add + (i32.shl + (i32.add + (i32.or (i32.or (i32.or (i32.or - (i32.or - (tee_local $13 - (i32.and - (i32.shr_u - (tee_local $2 - (i32.shr_u - (get_local $13) - (get_local $5) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (get_local $5) - ) - (tee_local $2 + (tee_local $13 (i32.and (i32.shr_u - (tee_local $6 + (tee_local $2 (i32.shr_u - (get_local $2) (get_local $13) + (get_local $5) ) ) - (i32.const 2) + (i32.const 5) ) - (i32.const 4) + (i32.const 8) ) ) + (get_local $5) ) - (tee_local $6 + (tee_local $2 (i32.and (i32.shr_u - (tee_local $9 + (tee_local $6 (i32.shr_u - (get_local $6) (get_local $2) + (get_local $13) ) ) - (i32.const 1) + (i32.const 2) ) - (i32.const 2) + (i32.const 4) ) ) ) - (tee_local $9 + (tee_local $6 (i32.and (i32.shr_u - (tee_local $3 + (tee_local $9 (i32.shr_u - (get_local $9) (get_local $6) + (get_local $2) ) ) (i32.const 1) ) - (i32.const 1) + (i32.const 2) ) ) ) - (i32.shr_u - (get_local $3) - (get_local $9) + (tee_local $9 + (i32.and + (i32.shr_u + (tee_local $3 + (i32.shr_u + (get_local $9) + (get_local $6) + ) + ) + (i32.const 1) + ) + (i32.const 1) + ) ) ) - (i32.const 2) + (i32.shr_u + (get_local $3) + (get_local $9) + ) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) ) - (block - (set_local $29 - (get_local $36) - ) - (set_local $28 - (get_local $2) - ) - (set_local $32 - (get_local $33) - ) - (set_local $8 - (i32.const 90) - ) + ) + (block + (set_local $29 + (get_local $36) ) - (block - (set_local $18 - (get_local $36) - ) - (set_local $11 - (get_local $33) - ) + (set_local $28 + (get_local $2) + ) + (set_local $32 + (get_local $33) + ) + (set_local $8 + (i32.const 90) + ) + ) + (block + (set_local $18 + (get_local $36) + ) + (set_local $11 + (get_local $33) ) ) ) - (if - (i32.eq - (get_local $8) - (i32.const 90) + ) + (if + (i32.eq + (get_local $8) + (i32.const 90) + ) + (loop $while-in16 + (set_local $8 + (i32.const 0) ) - (loop $while-in16 - (set_local $8 - (i32.const 0) - ) - (set_local $3 - (i32.lt_u - (tee_local $9 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $28) - ) - (i32.const -8) + (set_local $3 + (i32.lt_u + (tee_local $9 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $28) ) - (get_local $0) + (i32.const -8) ) + (get_local $0) ) - (get_local $29) ) + (get_local $29) ) - (set_local $6 - (select - (get_local $9) - (get_local $29) - (get_local $3) - ) + ) + (set_local $6 + (select + (get_local $9) + (get_local $29) + (get_local $3) ) - (set_local $9 - (select + ) + (set_local $9 + (select + (get_local $28) + (get_local $32) + (get_local $3) + ) + ) + (if + (tee_local $3 + (i32.load offset=16 (get_local $28) - (get_local $32) + ) + ) + (block + (set_local $29 + (get_local $6) + ) + (set_local $28 (get_local $3) ) + (set_local $32 + (get_local $9) + ) + (br $while-in16) ) - (if - (tee_local $3 - (i32.load offset=16 + ) + (set_local $18 + (if (result i32) + (tee_local $28 + (i32.load offset=20 (get_local $28) ) ) @@ -1885,708 +1904,811 @@ (set_local $29 (get_local $6) ) - (set_local $28 - (get_local $3) - ) (set_local $32 (get_local $9) ) (br $while-in16) ) - ) - (set_local $18 - (if (result i32) - (tee_local $28 - (i32.load offset=20 - (get_local $28) - ) - ) - (block - (set_local $29 - (get_local $6) - ) - (set_local $32 - (get_local $9) - ) - (br $while-in16) - ) - (block (result i32) - (set_local $11 - (get_local $9) - ) - (get_local $6) + (block (result i32) + (set_local $11 + (get_local $9) ) + (get_local $6) ) ) ) ) + ) + (if (result i32) + (get_local $11) (if (result i32) - (get_local $11) - (if (result i32) - (i32.lt_u - (get_local $18) - (i32.sub - (i32.load - (i32.const 1216) - ) - (get_local $0) + (i32.lt_u + (get_local $18) + (i32.sub + (i32.load + (i32.const 1216) ) + (get_local $0) ) - (block - (if - (i32.lt_u - (get_local $11) - (tee_local $10 - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $11) + (tee_local $10 + (i32.load + (i32.const 1224) ) ) - (call $qa) ) - (if - (i32.ge_u - (get_local $11) - (tee_local $9 - (i32.add - (get_local $11) - (get_local $0) - ) + (call $qa) + ) + (if + (i32.ge_u + (get_local $11) + (tee_local $9 + (i32.add + (get_local $11) + (get_local $0) ) ) - (call $qa) ) - (set_local $6 - (i32.load offset=24 - (get_local $11) - ) + (call $qa) + ) + (set_local $6 + (i32.load offset=24 + (get_local $11) ) - (if - (i32.eq - (tee_local $3 - (i32.load offset=12 - (get_local $11) - ) + ) + (if + (i32.eq + (tee_local $3 + (i32.load offset=12 + (get_local $11) ) - (get_local $11) ) - (block $do-once17 - (set_local $4 - (if (result i32) - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $11) - (i32.const 20) - ) - ) - ) - ) - (block (result i32) - (set_local $16 - (get_local $5) - ) - (get_local $2) - ) - (if (result i32) - (tee_local $16 - (i32.load - (tee_local $13 - (i32.add - (get_local $11) - (i32.const 16) - ) - ) + (get_local $11) + ) + (block $do-once17 + (set_local $4 + (if (result i32) + (tee_local $5 + (i32.load + (tee_local $2 + (i32.add + (get_local $11) + (i32.const 20) ) ) - (get_local $13) - (br $do-once17) ) ) - ) - (loop $while-in20 - (if - (tee_local $5 - (i32.load - (tee_local $2 - (i32.add - (get_local $16) - (i32.const 20) - ) - ) - ) - ) - (block - (set_local $16 - (get_local $5) - ) - (set_local $4 - (get_local $2) - ) - (br $while-in20) + (block (result i32) + (set_local $16 + (get_local $5) ) + (get_local $2) ) - (if - (tee_local $5 + (if (result i32) + (tee_local $16 (i32.load - (tee_local $2 + (tee_local $13 (i32.add - (get_local $16) + (get_local $11) (i32.const 16) ) ) ) ) - (block - (set_local $16 - (get_local $5) - ) - (set_local $4 - (get_local $2) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (get_local $4) - (get_local $10) - ) - (call $qa) - (block - (i32.store - (get_local $4) - (i32.const 0) - ) - (set_local $22 - (get_local $16) - ) + (get_local $13) + (br $do-once17) ) ) ) - (block - (if - (i32.lt_u - (tee_local $2 - (i32.load offset=8 - (get_local $11) - ) - ) - (get_local $10) - ) - (call $qa) - ) + (loop $while-in20 (if - (i32.ne + (tee_local $5 (i32.load - (tee_local $5 + (tee_local $2 (i32.add - (get_local $2) - (i32.const 12) + (get_local $16) + (i32.const 20) ) ) ) - (get_local $11) ) - (call $qa) + (block + (set_local $16 + (get_local $5) + ) + (set_local $4 + (get_local $2) + ) + (br $while-in20) + ) ) (if - (i32.eq + (tee_local $5 (i32.load - (tee_local $13 + (tee_local $2 (i32.add - (get_local $3) - (i32.const 8) + (get_local $16) + (i32.const 16) ) ) ) - (get_local $11) ) (block - (i32.store + (set_local $16 (get_local $5) - (get_local $3) ) - (i32.store - (get_local $13) + (set_local $4 (get_local $2) ) - (set_local $22 - (get_local $3) + (br $while-in20) + ) + ) + ) + (if + (i32.lt_u + (get_local $4) + (get_local $10) + ) + (call $qa) + (block + (i32.store + (get_local $4) + (i32.const 0) + ) + (set_local $22 + (get_local $16) + ) + ) + ) + ) + (block + (if + (i32.lt_u + (tee_local $2 + (i32.load offset=8 + (get_local $11) ) ) - (call $qa) + (get_local $10) + ) + (call $qa) + ) + (if + (i32.ne + (i32.load + (tee_local $5 + (i32.add + (get_local $2) + (i32.const 12) + ) + ) + ) + (get_local $11) ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $13 + (i32.add + (get_local $3) + (i32.const 8) + ) + ) + ) + (get_local $11) + ) + (block + (i32.store + (get_local $5) + (get_local $3) + ) + (i32.store + (get_local $13) + (get_local $2) + ) + (set_local $22 + (get_local $3) + ) + ) + (call $qa) ) ) - (if - (get_local $6) - (block $do-once21 - (if - (i32.eq - (get_local $11) - (i32.load - (tee_local $10 - (i32.add - (i32.shl - (tee_local $3 - (i32.load offset=28 - (get_local $11) - ) + ) + (if + (get_local $6) + (block $do-once21 + (if + (i32.eq + (get_local $11) + (i32.load + (tee_local $10 + (i32.add + (i32.shl + (tee_local $3 + (i32.load offset=28 + (get_local $11) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) ) ) - (block - (i32.store - (get_local $10) + ) + (block + (i32.store + (get_local $10) + (get_local $22) + ) + (if + (i32.eqz (get_local $22) ) - (if - (i32.eqz - (get_local $22) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (get_local $3) - ) - (i32.const -1) + (block + (i32.store + (i32.const 1212) + (i32.and + (i32.load + (i32.const 1212) + ) + (i32.xor + (i32.shl + (i32.const 1) + (get_local $3) ) + (i32.const -1) ) ) - (br $do-once21) ) + (br $do-once21) ) ) - (block - (if - (i32.lt_u - (get_local $6) - (i32.load - (i32.const 1224) - ) + ) + (block + (if + (i32.lt_u + (get_local $6) + (i32.load + (i32.const 1224) ) - (call $qa) ) - (if - (i32.eq - (i32.load - (tee_local $3 - (i32.add - (get_local $6) - (i32.const 16) - ) + (call $qa) + ) + (if + (i32.eq + (i32.load + (tee_local $3 + (i32.add + (get_local $6) + (i32.const 16) ) ) - (get_local $11) - ) - (i32.store - (get_local $3) - (get_local $22) - ) - (i32.store offset=20 - (get_local $6) - (get_local $22) ) + (get_local $11) ) - (br_if $do-once21 - (i32.eqz - (get_local $22) - ) + (i32.store + (get_local $3) + (get_local $22) + ) + (i32.store offset=20 + (get_local $6) + (get_local $22) ) ) - ) - (if - (i32.lt_u - (get_local $22) - (tee_local $3 - (i32.load - (i32.const 1224) - ) + (br_if $do-once21 + (i32.eqz + (get_local $22) ) ) - (call $qa) ) - (i32.store offset=24 + ) + (if + (i32.lt_u (get_local $22) - (get_local $6) + (tee_local $3 + (i32.load + (i32.const 1224) + ) + ) + ) + (call $qa) + ) + (i32.store offset=24 + (get_local $22) + (get_local $6) + ) + (if + (tee_local $10 + (i32.load offset=16 + (get_local $11) + ) ) (if - (tee_local $10 - (i32.load offset=16 - (get_local $11) - ) + (i32.lt_u + (get_local $10) + (get_local $3) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=16 + (get_local $22) (get_local $10) - (get_local $3) ) - (call $qa) - (block - (i32.store offset=16 - (get_local $22) - (get_local $10) - ) - (i32.store offset=24 - (get_local $10) - (get_local $22) - ) + (i32.store offset=24 + (get_local $10) + (get_local $22) ) ) ) + ) + (if + (tee_local $10 + (i32.load offset=20 + (get_local $11) + ) + ) (if - (tee_local $10 - (i32.load offset=20 - (get_local $11) + (i32.lt_u + (get_local $10) + (i32.load + (i32.const 1224) ) ) - (if - (i32.lt_u + (call $qa) + (block + (i32.store offset=20 + (get_local $22) (get_local $10) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (i32.store offset=20 - (get_local $22) - (get_local $10) - ) - (i32.store offset=24 - (get_local $10) - (get_local $22) - ) + (i32.store offset=24 + (get_local $10) + (get_local $22) ) ) ) ) ) - (if - (i32.lt_u - (get_local $18) - (i32.const 16) - ) - (block - (i32.store offset=4 - (get_local $11) - (i32.or - (tee_local $6 - (i32.add - (get_local $18) - (get_local $0) - ) + ) + (if + (i32.lt_u + (get_local $18) + (i32.const 16) + ) + (block + (i32.store offset=4 + (get_local $11) + (i32.or + (tee_local $6 + (i32.add + (get_local $18) + (get_local $0) ) - (i32.const 3) ) + (i32.const 3) ) - (i32.store - (tee_local $10 + ) + (i32.store + (tee_local $10 + (i32.add (i32.add - (i32.add - (get_local $11) - (get_local $6) - ) - (i32.const 4) + (get_local $11) + (get_local $6) ) + (i32.const 4) ) - (i32.or - (i32.load - (get_local $10) - ) - (i32.const 1) + ) + (i32.or + (i32.load + (get_local $10) ) + (i32.const 1) ) ) - (block $do-once25 - (i32.store offset=4 - (get_local $11) - (i32.or - (get_local $0) - (i32.const 3) - ) + ) + (block $do-once25 + (i32.store offset=4 + (get_local $11) + (i32.or + (get_local $0) + (i32.const 3) + ) + ) + (i32.store offset=4 + (get_local $9) + (i32.or + (get_local $18) + (i32.const 1) ) - (i32.store offset=4 + ) + (i32.store + (i32.add (get_local $9) - (i32.or - (get_local $18) - (i32.const 1) - ) + (get_local $18) ) - (i32.store - (i32.add - (get_local $9) - (get_local $18) - ) + (get_local $18) + ) + (set_local $10 + (i32.shr_u (get_local $18) + (i32.const 3) ) - (set_local $10 - (i32.shr_u - (get_local $18) - (i32.const 3) - ) + ) + (if + (i32.lt_u + (get_local $18) + (i32.const 256) ) - (if - (i32.lt_u - (get_local $18) - (i32.const 256) + (block + (set_local $6 + (i32.add + (i32.shl + (get_local $10) + (i32.const 3) + ) + (i32.const 1248) + ) ) - (block - (set_local $6 - (i32.add + (if + (i32.and + (tee_local $3 + (i32.load + (i32.const 1208) + ) + ) + (tee_local $2 (i32.shl + (i32.const 1) (get_local $10) - (i32.const 3) ) - (i32.const 1248) ) ) (if - (i32.and + (i32.lt_u (tee_local $3 (i32.load - (i32.const 1208) - ) - ) - (tee_local $2 - (i32.shl - (i32.const 1) - (get_local $10) - ) - ) - ) - (if - (i32.lt_u - (tee_local $3 - (i32.load - (tee_local $2 - (i32.add - (get_local $6) - (i32.const 8) - ) + (tee_local $2 + (i32.add + (get_local $6) + (i32.const 8) ) ) ) - (i32.load - (i32.const 1224) - ) ) - (call $qa) - (block - (set_local $19 - (get_local $2) - ) - (set_local $7 - (get_local $3) - ) + (i32.load + (i32.const 1224) ) ) + (call $qa) (block - (i32.store - (i32.const 1208) - (i32.or - (get_local $3) - (get_local $2) - ) - ) (set_local $19 - (i32.add - (get_local $6) - (i32.const 8) - ) + (get_local $2) ) (set_local $7 - (get_local $6) + (get_local $3) ) ) ) - (i32.store - (get_local $19) - (get_local $9) - ) - (i32.store offset=12 - (get_local $7) - (get_local $9) - ) - (i32.store offset=8 - (get_local $9) - (get_local $7) - ) - (i32.store offset=12 - (get_local $9) - (get_local $6) + (block + (i32.store + (i32.const 1208) + (i32.or + (get_local $3) + (get_local $2) + ) + ) + (set_local $19 + (i32.add + (get_local $6) + (i32.const 8) + ) + ) + (set_local $7 + (get_local $6) + ) ) - (br $do-once25) ) + (i32.store + (get_local $19) + (get_local $9) + ) + (i32.store offset=12 + (get_local $7) + (get_local $9) + ) + (i32.store offset=8 + (get_local $9) + (get_local $7) + ) + (i32.store offset=12 + (get_local $9) + (get_local $6) + ) + (br $do-once25) ) - (set_local $13 - (i32.add - (i32.shl - (tee_local $3 + ) + (set_local $13 + (i32.add + (i32.shl + (tee_local $3 + (if (result i32) + (tee_local $6 + (i32.shr_u + (get_local $18) + (i32.const 8) + ) + ) (if (result i32) - (tee_local $6 - (i32.shr_u - (get_local $18) - (i32.const 8) - ) + (i32.gt_u + (get_local $18) + (i32.const 16777215) ) - (if (result i32) - (i32.gt_u - (get_local $18) - (i32.const 16777215) - ) - (i32.const 31) - (i32.or - (i32.and - (i32.shr_u - (get_local $18) - (i32.add - (tee_local $13 - (i32.add - (i32.sub - (i32.const 14) + (i32.const 31) + (i32.or + (i32.and + (i32.shr_u + (get_local $18) + (i32.add + (tee_local $13 + (i32.add + (i32.sub + (i32.const 14) + (i32.or (i32.or - (i32.or - (tee_local $6 - (i32.and - (i32.shr_u - (i32.add - (tee_local $2 - (i32.shl - (get_local $6) - (tee_local $3 - (i32.and - (i32.shr_u - (i32.add - (get_local $6) - (i32.const 1048320) - ) - (i32.const 16) + (tee_local $6 + (i32.and + (i32.shr_u + (i32.add + (tee_local $2 + (i32.shl + (get_local $6) + (tee_local $3 + (i32.and + (i32.shr_u + (i32.add + (get_local $6) + (i32.const 1048320) ) - (i32.const 8) + (i32.const 16) ) + (i32.const 8) ) ) ) - (i32.const 520192) ) - (i32.const 16) + (i32.const 520192) ) - (i32.const 4) + (i32.const 16) ) + (i32.const 4) ) - (get_local $3) ) - (tee_local $2 - (i32.and - (i32.shr_u - (i32.add - (tee_local $10 - (i32.shl - (get_local $2) - (get_local $6) - ) + (get_local $3) + ) + (tee_local $2 + (i32.and + (i32.shr_u + (i32.add + (tee_local $10 + (i32.shl + (get_local $2) + (get_local $6) ) - (i32.const 245760) ) - (i32.const 16) + (i32.const 245760) ) - (i32.const 2) + (i32.const 16) ) + (i32.const 2) ) ) ) - (i32.shr_u - (i32.shl - (get_local $10) - (get_local $2) - ) - (i32.const 15) + ) + (i32.shr_u + (i32.shl + (get_local $10) + (get_local $2) ) + (i32.const 15) ) ) - (i32.const 7) ) + (i32.const 7) ) - (i32.const 1) - ) - (i32.shl - (get_local $13) - (i32.const 1) ) + (i32.const 1) + ) + (i32.shl + (get_local $13) + (i32.const 1) ) ) - (i32.const 0) ) + (i32.const 0) ) - (i32.const 2) ) - (i32.const 1512) + (i32.const 2) ) + (i32.const 1512) ) - (i32.store offset=28 - (get_local $9) - (get_local $3) + ) + (i32.store offset=28 + (get_local $9) + (get_local $3) + ) + (i32.store offset=4 + (tee_local $2 + (i32.add + (get_local $9) + (i32.const 16) + ) ) - (i32.store offset=4 - (tee_local $2 - (i32.add - (get_local $9) - (i32.const 16) + (i32.const 0) + ) + (i32.store + (get_local $2) + (i32.const 0) + ) + (if + (i32.eqz + (i32.and + (tee_local $2 + (i32.load + (i32.const 1212) + ) + ) + (tee_local $10 + (i32.shl + (i32.const 1) + (get_local $3) + ) ) ) - (i32.const 0) ) - (i32.store - (get_local $2) - (i32.const 0) + (block + (i32.store + (i32.const 1212) + (i32.or + (get_local $2) + (get_local $10) + ) + ) + (i32.store + (get_local $13) + (get_local $9) + ) + (i32.store offset=24 + (get_local $9) + (get_local $13) + ) + (i32.store offset=12 + (get_local $9) + (get_local $9) + ) + (i32.store offset=8 + (get_local $9) + (get_local $9) + ) + (br $do-once25) ) - (if - (i32.eqz - (i32.and - (tee_local $2 - (i32.load - (i32.const 1212) - ) + ) + (set_local $10 + (i32.shl + (get_local $18) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $3) + (i32.const 1) ) - (tee_local $10 - (i32.shl - (i32.const 1) - (get_local $3) + ) + (i32.eq + (get_local $3) + (i32.const 31) + ) + ) + ) + ) + (set_local $2 + (i32.load + (get_local $13) + ) + ) + (if + (i32.eq + (tee_local $8 + (loop $while-in28 (result i32) + (block $while-out27 (result i32) + (if + (i32.eq + (i32.and + (i32.load offset=4 + (get_local $2) + ) + (i32.const -8) + ) + (get_local $18) + ) + (block + (set_local $17 + (get_local $2) + ) + (br $while-out27 + (i32.const 148) + ) + ) + ) + (if (result i32) + (tee_local $3 + (i32.load + (tee_local $13 + (i32.add + (i32.add + (get_local $2) + (i32.const 16) + ) + (i32.shl + (i32.shr_u + (get_local $10) + (i32.const 31) + ) + (i32.const 2) + ) + ) + ) + ) + ) + (block + (set_local $10 + (i32.shl + (get_local $10) + (i32.const 1) + ) + ) + (set_local $2 + (get_local $3) + ) + (br $while-in28) + ) + (block (result i32) + (set_local $21 + (get_local $13) + ) + (set_local $15 + (get_local $2) + ) + (i32.const 145) + ) ) ) ) ) - (block - (i32.store - (i32.const 1212) - (i32.or - (get_local $2) - (get_local $10) - ) + (i32.const 145) + ) + (if + (i32.lt_u + (get_local $21) + (i32.load + (i32.const 1224) ) + ) + (call $qa) + (block (i32.store - (get_local $13) + (get_local $21) (get_local $9) ) (i32.store offset=24 (get_local $9) - (get_local $13) + (get_local $15) ) (i32.store offset=12 (get_local $9) @@ -2596,209 +2718,87 @@ (get_local $9) (get_local $9) ) - (br $do-once25) - ) - ) - (set_local $10 - (i32.shl - (get_local $18) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $3) - (i32.const 1) - ) - ) - (i32.eq - (get_local $3) - (i32.const 31) - ) - ) - ) - ) - (set_local $2 - (i32.load - (get_local $13) ) ) (if (i32.eq - (tee_local $8 - (loop $while-in28 (result i32) - (block $while-out27 (result i32) - (if - (i32.eq - (i32.and - (i32.load offset=4 - (get_local $2) - ) - (i32.const -8) - ) - (get_local $18) - ) - (block - (set_local $17 - (get_local $2) - ) - (br $while-out27 - (i32.const 148) + (get_local $8) + (i32.const 148) + ) + (if + (i32.and + (i32.ge_u + (tee_local $10 + (i32.load + (tee_local $2 + (i32.add + (get_local $17) + (i32.const 8) ) ) ) - (if (result i32) - (tee_local $3 - (i32.load - (tee_local $13 - (i32.add - (i32.add - (get_local $2) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (get_local $10) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (set_local $10 - (i32.shl - (get_local $10) - (i32.const 1) - ) - ) - (set_local $2 - (get_local $3) - ) - (br $while-in28) - ) - (block (result i32) - (set_local $21 - (get_local $13) - ) - (set_local $15 - (get_local $2) - ) - (i32.const 145) - ) + ) + (tee_local $3 + (i32.load + (i32.const 1224) ) ) ) - ) - (i32.const 145) - ) - (if - (i32.lt_u - (get_local $21) - (i32.load - (i32.const 1224) + (i32.ge_u + (get_local $17) + (get_local $3) ) ) - (call $qa) (block + (i32.store offset=12 + (get_local $10) + (get_local $9) + ) (i32.store - (get_local $21) + (get_local $2) (get_local $9) ) - (i32.store offset=24 + (i32.store offset=8 (get_local $9) - (get_local $15) + (get_local $10) ) (i32.store offset=12 (get_local $9) - (get_local $9) + (get_local $17) ) - (i32.store offset=8 - (get_local $9) + (i32.store offset=24 (get_local $9) + (i32.const 0) ) ) - ) - (if - (i32.eq - (get_local $8) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (tee_local $10 - (i32.load - (tee_local $2 - (i32.add - (get_local $17) - (i32.const 8) - ) - ) - ) - ) - (tee_local $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (get_local $17) - (get_local $3) - ) - ) - (block - (i32.store offset=12 - (get_local $10) - (get_local $9) - ) - (i32.store - (get_local $2) - (get_local $9) - ) - (i32.store offset=8 - (get_local $9) - (get_local $10) - ) - (i32.store offset=12 - (get_local $9) - (get_local $17) - ) - (i32.store offset=24 - (get_local $9) - (i32.const 0) - ) - ) - (call $qa) - ) + (call $qa) ) ) ) ) - (set_global $r - (get_local $25) - ) - (return - (i32.add - (get_local $11) - (i32.const 8) - ) + ) + (set_global $r + (get_local $25) + ) + (return + (i32.add + (get_local $11) + (i32.const 8) ) ) - (get_local $0) ) (get_local $0) ) + (get_local $0) ) - (get_local $0) ) + (get_local $0) ) ) ) ) + ) + (block $folding-inner0 (if (i32.ge_u (tee_local $11 diff --git a/test/passes/1.txt b/test/passes/1.txt index 048ee292c..3fc55487a 100644 --- a/test/passes/1.txt +++ b/test/passes/1.txt @@ -182,10 +182,10 @@ ) ) (func $switch (; 10 ;) (type $3) (param $0 i32) + (call $switch + (i32.const 1) + ) (block $block$6$break - (call $switch - (i32.const 1) - ) (block $switch$3$default (br_table $block$6$break $block$6$break $block$6$break $switch$3$default (get_local $0) @@ -203,10 +203,10 @@ (nop) ) (func $if-br-wat (; 12 ;) (type $3) (param $0 i32) + (call $if-br-wat + (i32.const 0) + ) (block $block$2$break - (call $if-br-wat - (i32.const 0) - ) (if (get_local $0) (call $if-br-wat diff --git a/test/passes/O2_precompute-propagate_print-stack-ir.txt b/test/passes/O2_precompute-propagate_print-stack-ir.txt index 909e81b85..2d2673bae 100644 --- a/test/passes/O2_precompute-propagate_print-stack-ir.txt +++ b/test/passes/O2_precompute-propagate_print-stack-ir.txt @@ -3,12 +3,10 @@ (export "func" (func $0)) (func $0 (; 0 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) (local $4 i32) - (block $label$1 - (set_local $3 - (i64.const 2147483647) - ) - (nop) + (set_local $3 + (i64.const 2147483647) ) + (nop) (i64.const 2147483647) ) ) @@ -17,12 +15,10 @@ (export "func" (func $0)) (func $0 (; 0 ;) (type $0) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) (local $4 i32) - (block $label$1 - (set_local $3 - (i64.const 2147483647) - ) - (nop) + (set_local $3 + (i64.const 2147483647) ) + (nop) (i64.const 2147483647) ) ) diff --git a/test/passes/merge-blocks.txt b/test/passes/merge-blocks.txt index da5f8b315..00d367f50 100644 --- a/test/passes/merge-blocks.txt +++ b/test/passes/merge-blocks.txt @@ -2,12 +2,12 @@ (type $0 (func)) (type $1 (func (param i32))) (type $2 (func (result i32))) + (type $3 (func (result f32))) + (global $global$0 (mut i32) (i32.const 10)) (func $drop-block (; 0 ;) (type $0) (block $block - (block $x - (drop - (i32.const 0) - ) + (drop + (i32.const 0) ) ) ) @@ -25,10 +25,10 @@ ) (func $drop-block-br-if (; 2 ;) (type $0) (block $block + (drop + (i32.const 1) + ) (block $x - (drop - (i32.const 1) - ) (br_if $x (i32.const 2) ) @@ -269,4 +269,18 @@ ) ) ) + (func $br-value-blocktypechange (; 20 ;) (type $3) (result f32) + (set_global $global$0 + (i32.const 0) + ) + (block $label$1 (result f32) + (set_global $global$0 + (i32.const 0) + ) + (br_if $label$1 + (unreachable) + (i32.const 0) + ) + ) + ) ) diff --git a/test/passes/merge-blocks.wast b/test/passes/merge-blocks.wast index cab2d1804..647645548 100644 --- a/test/passes/merge-blocks.wast +++ b/test/passes/merge-blocks.wast @@ -1,4 +1,5 @@ (module + (global $global$0 (mut i32) (i32.const 10)) (func $drop-block (block (drop @@ -232,5 +233,18 @@ ) ) ) + (func $br-value-blocktypechange (result f32) + (set_global $global$0 + (i32.const 0) + ) + (block $label$1 (result f32) + (set_global $global$0 + (i32.const 0) + ) + (br_if $label$1 + (unreachable) + (i32.const 0) + ) + ) + ) ) - diff --git a/test/passes/remove-unused-names_merge-blocks.txt b/test/passes/remove-unused-names_merge-blocks.txt index 5cc6ca891..974ac4d91 100644 --- a/test/passes/remove-unused-names_merge-blocks.txt +++ b/test/passes/remove-unused-names_merge-blocks.txt @@ -78,10 +78,10 @@ ) (func $b5 (; 10 ;) (type $i) (param $i1 i32) (block $middle + (drop + (i32.const 10) + ) (block $inner - (drop - (i32.const 10) - ) (br $inner) ) (br $middle) @@ -91,10 +91,10 @@ (drop (i32.const 5) ) + (drop + (i32.const 10) + ) (block $inner - (drop - (i32.const 10) - ) (br $inner) ) (drop @@ -105,19 +105,19 @@ (drop (i32.const 3) ) + (drop + (i32.const 6) + ) + (drop + (i32.const 10) + ) + (block $inner + (br $inner) + ) + (drop + (i32.const 15) + ) (block $middle - (drop - (i32.const 6) - ) - (block $inner - (drop - (i32.const 10) - ) - (br $inner) - ) - (drop - (i32.const 15) - ) (br $middle) ) (drop @@ -1020,14 +1020,14 @@ ) ) (block $l12 + (br_if $l12 + (i32.const 21) + ) (block $l13 + (br_if $l13 + (i32.const 22) + ) (block $l14 - (br_if $l12 - (i32.const 21) - ) - (br_if $l13 - (i32.const 22) - ) (br_if $l14 (i32.const 23) ) @@ -1043,26 +1043,26 @@ (i32.const 26) ) ) - (block $l15 - (block $l16 - (block $l17 - (drop - (i32.const 27) - ) - (br_if $l17 - (i32.const 28) - ) - (drop - (i32.const 29) - ) - ) - (br_if $l16 - (i32.const 30) - ) - (drop - (i32.const 31) - ) + (drop + (i32.const 27) + ) + (block $l17 + (br_if $l17 + (i32.const 28) + ) + (drop + (i32.const 29) ) + ) + (block $l16 + (br_if $l16 + (i32.const 30) + ) + (drop + (i32.const 31) + ) + ) + (block $l15 (br_if $l15 (i32.const 32) ) @@ -1108,12 +1108,12 @@ (i32.const 6) ) ) - (block $b2 - (loop $l4 - (br_if $l4 - (i32.const 7) - ) + (loop $l4 + (br_if $l4 + (i32.const 7) ) + ) + (block $b2 (br_if $b2 (i32.const 8) ) @@ -1375,3 +1375,325 @@ ) ) ) +(module + (type $0 (func)) + (func $merge-some-block (; 0 ;) (type $0) + (drop + (i32.const 1) + ) + (block $b1 + (br_if $b1 + (i32.const 0) + ) + ) + (block $b2 + (br_if $b2 + (i32.const 0) + ) + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + (block $b3 + (br_if $b3 + (i32.const 0) + ) + (drop + (i32.const 4) + ) + ) + (block $b3-dead-code-so-ignore + (drop + (i32.const 3) + ) + (br $b3-dead-code-so-ignore) + (drop + (i32.const 4) + ) + ) + (drop + (i32.const 5) + ) + (block $b4 + (br_if $b4 + (i32.const 0) + ) + (drop + (i32.const 6) + ) + (br_if $b4 + (i32.const 0) + ) + ) + (block $b5 + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 7) + ) + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 8) + ) + ) + (drop + (i32.const 9) + ) + (drop + (i32.const 10) + ) + (block $b6 + (br_if $b6 + (i32.const 0) + ) + ) + ) + (func $merge-some-loop (; 1 ;) (type $0) + (drop + (i32.const 1) + ) + (block $b1 + (br_if $b1 + (i32.const 0) + ) + ) + (block $b2 + (br_if $b2 + (i32.const 0) + ) + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + (block $b3 + (br_if $b3 + (i32.const 0) + ) + (drop + (i32.const 4) + ) + ) + (drop + (i32.const 5) + ) + (block $b4 + (br_if $b4 + (i32.const 0) + ) + (drop + (i32.const 6) + ) + (br_if $b4 + (i32.const 0) + ) + ) + (block $b5 + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 7) + ) + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 8) + ) + ) + (drop + (i32.const 9) + ) + (drop + (i32.const 10) + ) + (block $b6 + (br_if $b6 + (i32.const 0) + ) + ) + ) + (func $merge-some-loop-taken (; 2 ;) (type $0) + (loop $l1 + (block $b1 + (drop + (i32.const 1) + ) + (br_if $l1 + (i32.const 0) + ) + (drop + (i32.const 2) + ) + (br_if $b1 + (i32.const 0) + ) + (drop + (i32.const 3) + ) + ) + ) + (loop $l2 + (block $b2 + (drop + (i32.const 4) + ) + (br_if $b2 + (i32.const 0) + ) + (drop + (i32.const 5) + ) + (br_if $l2 + (i32.const 0) + ) + (drop + (i32.const 6) + ) + ) + ) + (loop $l3 + (block $b3 + (drop + (i32.const 7) + ) + (br_if $b3 + (i32.const 0) + ) + (drop + (i32.const 8) + ) + (br_if $l3 + (i32.const 0) + ) + ) + ) + (loop $l4 + (block $b4 + (br_if $l4 + (i32.const 0) + ) + (drop + (i32.const 9) + ) + (br_if $b4 + (i32.const 0) + ) + (drop + (i32.const 10) + ) + ) + ) + (loop $l5 + (block $b5 + (drop + (i32.const 7) + ) + (br_if $b5 + (i32.const 0) + ) + (br_if $l5 + (i32.const 0) + ) + ) + ) + (loop $l6 + (block $b6 + (br_if $l6 + (i32.const 0) + ) + (br_if $b6 + (i32.const 0) + ) + (drop + (i32.const 10) + ) + ) + ) + (loop $l7 + (block $b7 + (drop + (i32.const 11) + ) + (br_if $l7 + (i32.const 0) + ) + (br_if $b7 + (i32.const 0) + ) + (drop + (i32.const 13) + ) + ) + ) + (loop $l8 + (block $b8 + (drop + (i32.const 14) + ) + (br_if $b8 + (i32.const 0) + ) + (br_if $l8 + (i32.const 0) + ) + (drop + (i32.const 16) + ) + ) + ) + (loop $l9 + (drop + (i32.const 17) + ) + (br_if $l9 + (i32.const 0) + ) + (drop + (i32.const 18) + ) + (br_if $l9 + (i32.const 0) + ) + ) + (drop + (i32.const 19) + ) + (loop $l10 + (drop + (i32.const 20) + ) + (br_if $l10 + (i32.const 0) + ) + ) + (drop + (i32.const 21) + ) + (loop $l11 + (br_if $l11 + (i32.const 0) + ) + ) + (drop + (i32.const 23) + ) + (loop $l12 + (drop + (i32.const 24) + ) + (br_if $l12 + (i32.const 0) + ) + ) + ) +) diff --git a/test/passes/remove-unused-names_merge-blocks.wast b/test/passes/remove-unused-names_merge-blocks.wast index 3e6add49c..eb0e7b8a8 100644 --- a/test/passes/remove-unused-names_merge-blocks.wast +++ b/test/passes/remove-unused-names_merge-blocks.wast @@ -1379,3 +1379,180 @@ ) ) ) +(module + (func $merge-some-block + (block $b1 + (drop (i32.const 1)) + (br_if $b1 (i32.const 0)) + ) + (block $b2 + (br_if $b2 (i32.const 0)) + (drop (i32.const 2)) + ) + (block $b3 + (drop (i32.const 3)) + (br_if $b3 (i32.const 0)) + (drop (i32.const 4)) + ) + (block $b3-dead-code-so-ignore + (drop (i32.const 3)) + (br $b3-dead-code-so-ignore) + (drop (i32.const 4)) + ) + (block $b4 + (drop (i32.const 5)) + (br_if $b4 (i32.const 0)) + (drop (i32.const 6)) + (br_if $b4 (i32.const 0)) + ) + (block $b5 + (br_if $b5 (i32.const 0)) + (drop (i32.const 7)) + (br_if $b5 (i32.const 0)) + (drop (i32.const 8)) + ) + (block $b6 + (drop (i32.const 9)) + (drop (i32.const 10)) + (br_if $b6 (i32.const 0)) + ) + ) + (func $merge-some-loop + (loop $l1 + (block $b1 + (drop (i32.const 1)) + (br_if $b1 (i32.const 0)) + ) + ) + (loop $l2 + (block $b2 + (br_if $b2 (i32.const 0)) + (drop (i32.const 2)) + ) + ) + (loop $l3 + (block $b3 + (drop (i32.const 3)) + (br_if $b3 (i32.const 0)) + (drop (i32.const 4)) + ) + ) + (loop $l4 + (block $b4 + (drop (i32.const 5)) + (br_if $b4 (i32.const 0)) + (drop (i32.const 6)) + (br_if $b4 (i32.const 0)) + ) + ) + (loop $l5 + (block $b5 + (br_if $b5 (i32.const 0)) + (drop (i32.const 7)) + (br_if $b5 (i32.const 0)) + (drop (i32.const 8)) + ) + ) + (loop $l6 + (block $b6 + (drop (i32.const 9)) + (drop (i32.const 10)) + (br_if $b6 (i32.const 0)) + ) + ) + ) + (func $merge-some-loop-taken + (loop $l1 + (block $b1 + (drop (i32.const 1)) + (br_if $l1 (i32.const 0)) + (drop (i32.const 2)) + (br_if $b1 (i32.const 0)) + (drop (i32.const 3)) + ) + ) + (loop $l2 + (block $b2 + (drop (i32.const 4)) + (br_if $b2 (i32.const 0)) + (drop (i32.const 5)) + (br_if $l2 (i32.const 0)) + (drop (i32.const 6)) + ) + ) + (loop $l3 + (block $b3 + (drop (i32.const 7)) + (br_if $b3 (i32.const 0)) + (drop (i32.const 8)) + (br_if $l3 (i32.const 0)) + ) + ) + (loop $l4 + (block $b4 + (br_if $l4 (i32.const 0)) + (drop (i32.const 9)) + (br_if $b4 (i32.const 0)) + (drop (i32.const 10)) + ) + ) + (loop $l5 + (block $b5 + (drop (i32.const 7)) + (br_if $b5 (i32.const 0)) + (br_if $l5 (i32.const 0)) + ) + ) + (loop $l6 + (block $b6 + (br_if $l6 (i32.const 0)) + (br_if $b6 (i32.const 0)) + (drop (i32.const 10)) + ) + ) + (loop $l7 + (block $b7 + (drop (i32.const 11)) + (br_if $l7 (i32.const 0)) + (br_if $b7 (i32.const 0)) + (drop (i32.const 13)) + ) + ) + (loop $l8 + (block $b8 + (drop (i32.const 14)) + (br_if $b8 (i32.const 0)) + (br_if $l8 (i32.const 0)) + (drop (i32.const 16)) + ) + ) + (loop $l9 + (block $b9 + (drop (i32.const 17)) + (br_if $l9 (i32.const 0)) + (drop (i32.const 18)) + (br_if $l9 (i32.const 0)) + (drop (i32.const 19)) + ) + ) + (loop $l10 + (block $b10 + (drop (i32.const 20)) + (br_if $l10 (i32.const 0)) + (drop (i32.const 21)) + ) + ) + (loop $l11 + (block $b11 + (br_if $l11 (i32.const 0)) + (drop (i32.const 23)) + ) + ) + (loop $l12 + (block $b12 + (drop (i32.const 24)) + (br_if $l12 (i32.const 0)) + ) + ) + ) +) |