Skip to content

fix(fuzz): derive pass-selection mask from default pass count#146

Merged
ozwaldorf merged 1 commit into
masterfrom
fix/fuzz-pass-selection-mask
May 8, 2026
Merged

fix(fuzz): derive pass-selection mask from default pass count#146
ozwaldorf merged 1 commit into
masterfrom
fix/fuzz-pass-selection-mask

Conversation

@ozwaldorf
Copy link
Copy Markdown
Member

Summary

  • Replace the hardcoded rng.next_u32() % 8 mask with a limit derived from the number of entries in DEFAULT_PASSES, so every default pass (including the previously unreachable string_obfuscate) can be selected by the fuzzer.
  • Widen passes_from_bits to take u32 to match the new mask range.
  • Add a regression test asserting every default pass is reachable through the fuzz pass-selection mechanism.

Motivation

Closes #145. The default pass list contains four passes, but % 8 only yields values in 0..7, so bit 3 (the fourth pass, string_obfuscate) was never set in randomized selection. That narrowed fuzzing coverage relative to the documented default transform set.

Changes

  • crates/cli/src/commands/fuzz.rs: introduce default_pass_count / pass_mask_limit helpers; use the derived limit in the worker loop; add tests module with fuzz_pass_selection_can_reach_every_default_pass and pass_mask_limit_covers_all_default_passes.

Out of scope

The issue also raises the broader --check-deploy vs runtime-equivalence boundary. That is intentionally not addressed here so this PR stays focused on the concrete pass-selection bug; it can be tracked as a follow-up.

Test plan

  • cargo test -p azoth-cli --lib commands::fuzz::tests
  • cargo clippy -p azoth-cli --all-targets -- -D warnings
  • cargo fmt --check

The hardcoded % 8 mask only generated 3-bit values, leaving the fourth
default pass (string_obfuscate) unreachable through the randomized
pass-selection path. Compute the mask limit from DEFAULT_PASSES so every
default pass is selectable, and add a regression test.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

Decompile Diff Analysis

Statistics (50 iterations)

  • Total: 57 hunks, -127 removed, +346 added
  • Items: 18 total, 17 with changes
  • Selectors: 20 remapped
Metric Min Avg Max
Hunks 42 50.7 57
Lines removed 104 133.1 159
Lines added 221 268.4 346
Lines unchanged 106 131.9 161
Full Diff Output
─── Storage ───
@@ -1,16 +1,21 @@
-    uint256 public constant tokenContract = 0;
-    uint256 public constant expectedAmount = 0;
-    uint256 public constant unresolved_3d2691bc = 256;
-    uint256 public constant unresolved_8677ab23 = 0;
+    bytes32 store_c;
+    bool public unresolved_9c8a34e7;
+    bytes32 store_o;
+    bytes32 store_m;
+    bytes32 store_p;
+    bytes32 store_j;
+    uint256 store_k;
+    bytes32 store_a;
+    bytes32 store_h;
+    uint256 public unresolved_fa1a730f;
+    bytes32 store_e;
+    bytes32 store_i;
+    bytes32 store_g;
+    uint256 public unresolved_b886398c;
+    bytes32 store_n;
+    bytes32 store_q;
+    bytes32 store_r;
+    uint256 public unresolved_d7514581;
     
-    uint256 public unresolved_8bd03d0a;
-    uint256 public executionDeadline;
-    uint256 public bondAmount;
-    bool public unresolved_308657d7;
-    uint256 public totalBondsDeposited;
-    uint256 public unresolved_d415b3f9;
-    uint256 public currentRewardAmount;
-    address public unresolved_1aa7c0ec;
-    
-    error InvalidRLPList();
+    error CustomError_00000000();
     

─── Function withdraw (0x3ccfd60b → 0x52bcd630) ───
@@ -1,40 +1,43 @@
     
-    /// @custom:selector    0x3ccfd60b
-    /// @custom:signature   withdraw() public payable
-    function withdraw() public payable {
+    /// @custom:selector    0x52bcd630
+    /// @custom:signature   Unresolved_52bcd630(uint256 arg0) public payable
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_52bcd630(uint256 arg0) public payable {
+        require(0xd6 == msg.data[0]);
+        require(0 == 0x01);
         require(msg.value);
         require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
-        require(!(bytes1(unresolved_308657d7 >> 0x08)), CustomError_618bbdd5());
-        require(msg.sender - 0, CustomError_618bbdd5());
-        var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
-        require(executionDeadline, CustomError_9cbc1de1());
-        require(!(block.timestamp > executionDeadline), CustomError_9cbc1de1());
+        require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_9e74422b());
+        require(msg.sender - 0, CustomError_9e74422b());
+        var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+        require(unresolved_fa1a730f, CustomError_9cbc1de1());
+        require(!(block.timestamp > unresolved_fa1a730f), CustomError_9cbc1de1());
         var_a = 0x9cbc1de100000000000000000000000000000000000000000000000000000000;
-        unresolved_1aa7c0ec = uint96(unresolved_1aa7c0ec);
-        bondAmount = 0;
-        executionDeadline = 0;
-        require(unresolved_8bd03d0a > (unresolved_8bd03d0a + unresolved_d415b3f9));
+        store_g = uint96(store_g);
+        store_a = 0;
+        unresolved_fa1a730f = 0;
+        require(store_k > (store_k + unresolved_b886398c));
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_b = 0x11;
-        unresolved_308657d7 = uint248(unresolved_308657d7);
-        unresolved_8bd03d0a = 0;
-        currentRewardAmount = 0;
-        require(!unresolved_8bd03d0a + unresolved_d415b3f9);
+        unresolved_9c8a34e7 = uint248(unresolved_9c8a34e7);
+        store_k = 0;
+        unresolved_d7514581 = 0;
+        require(!store_k + unresolved_b886398c);
         var_c = 0xa9059cbb00000000000000000000000000000000000000000000000000000000;
         address var_d = msg.sender;
-        uint256 var_e = unresolved_8bd03d0a + unresolved_d415b3f9;
+        uint256 var_e = store_k + unresolved_b886398c;
         (bool success, bytes memory ret0) = address(0).Unresolved_a9059cbb(var_d); // call
         require(!0, CustomError_045c4b02());
         var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
-        require(0x20 > ret0.length);
-        require(((var_f + 0x20) > 0xffffffffffffffff) | ((var_f + 0x20) < var_f));
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        require(0x20 > ret0.length, CustomError_b1b7848f());
+        require(((var_f + 0x20) > 0xffffffffffffffff) | ((var_f + 0x20) < var_f), CustomError_b1b7848f());
+        var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x41;
         uint256 var_f = var_f + 0x20;
         require(((var_f + 0x20) - var_f) < 0x20);
         require(var_f.length - var_f.length, CustomError_045c4b02());
         require(!var_f.length, CustomError_045c4b02());
         var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
         var_a = 0x53cd7f7900000000000000000000000000000000000000000000000000000000;
         var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
     }

─── Function fund (0xa65e2cfd → 0xdb2e21af) ───
@@ -1,41 +1,43 @@
     
-    /// @custom:selector    0xa65e2cfd
-    /// @custom:signature   fund(uint256 arg0, uint256 arg1) public payable
+    /// @custom:selector    0xdb2e21af
+    /// @custom:signature   Unresolved_db2e21af(uint256 arg0, uint256 arg1) public payable
     /// @param              arg0 ["uint256", "bytes32", "int256"]
     /// @param              arg1 ["uint256", "bytes32", "int256"]
-    function fund(uint256 arg0, uint256 arg1) public payable {
+    function Unresolved_db2e21af(uint256 arg0, uint256 arg1) public payable {
+        require(!store_n);
+        require(0 == 0x01);
         require(msg.value);
-        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40, CustomError_618bbdd5());
-        require(msg.sender - 0, CustomError_618bbdd5());
-        var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
-        require(bytes1(unresolved_308657d7 >> 0x08), CustomError_5adf6387());
-        var_a = 0x5adf638700000000000000000000000000000000000000000000000000000000;
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40, CustomError_9e74422b());
+        require(msg.sender - 0, CustomError_9e74422b());
+        var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+        require(bytes1(unresolved_9c8a34e7 >> 0x08), CustomError_adab89e1());
+        var_a = 0xadab89e100000000000000000000000000000000000000000000000000000000;
         require(!arg0);
         require(!arg1);
-        currentRewardAmount = arg0;
-        unresolved_d415b3f9 = arg0;
-        unresolved_8bd03d0a = arg1;
-        require(unresolved_d415b3f9 > (unresolved_d415b3f9 + unresolved_8bd03d0a));
+        unresolved_d7514581 = arg0;
+        unresolved_b886398c = arg0;
+        store_k = arg1;
+        require(unresolved_b886398c > (unresolved_b886398c + store_k));
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_b = 0x11;
         var_c = 0x23b872dd00000000000000000000000000000000000000000000000000000000;
         address var_d = msg.sender;
         address var_e = address(this);
-        uint256 var_f = unresolved_d415b3f9 + unresolved_8bd03d0a;
+        uint256 var_f = unresolved_b886398c + store_k;
         (bool success, bytes memory ret0) = address(0).Unresolved_23b872dd(var_d); // call
         require(!0, CustomError_045c4b02());
-        unresolved_308657d7 = (uint248(unresolved_308657d7)) | 0x0100;
+        unresolved_9c8a34e7 = (uint248(unresolved_9c8a34e7)) | 0x0100;
         var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
-        require(0x20 > ret0.length);
-        require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g));
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        require(0x20 > ret0.length, CustomError_b1b7848f());
+        require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g), CustomError_b1b7848f());
+        var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x41;
         uint256 var_g = var_g + 0x20;
         require(((var_g + 0x20) - var_g) < 0x20);
         require(var_g.length - var_g.length, CustomError_045c4b02());
         require(!var_g.length, CustomError_045c4b02());
         var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
-        unresolved_308657d7 = (uint248(unresolved_308657d7)) | 0x0100;
+        unresolved_9c8a34e7 = (uint248(unresolved_9c8a34e7)) | 0x0100;
         var_a = 0x932ca0a300000000000000000000000000000000000000000000000000000000;
         var_a = 0xea1083a700000000000000000000000000000000000000000000000000000000;
     }

─── Function Unresolved_ede7f6a3 (0xede7f6a3 → 0x3a58f686) ───
@@ -1,77 +1,80 @@
-    /// @custom:selector    0xede7f6a3
-    /// @custom:signature   Unresolved_ede7f6a3(uint256 arg0, uint256 arg1) public view
+    
+    /// @custom:selector    0x3a58f686
+    /// @custom:signature   Unresolved_3a58f686(uint256 arg0, uint256 arg1) public view
     /// @param              arg0 ["uint256", "bytes32", "int256"]
     /// @param              arg1 ["uint256", "bytes32", "int256"]
-    function Unresolved_ede7f6a3(uint256 arg0, uint256 arg1) public view {
+    function Unresolved_3a58f686(uint256 arg0, uint256 arg1) public view {
+        require(0xf6 == msg.data[0]);
+        require(0 == 0x01);
         require(msg.value);
         require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40);
         require(arg0 > 0xffffffffffffffff);
         require(((msg.data.length - arg0) + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) < 0xa0);
         require(arg0 + (arg0) > 0xffffffffffffffff);
-        require(!(bytes1(unresolved_308657d7 >> 0x08)), CustomError_ded7c80c());
-        require(msg.sender == (address(unresolved_1aa7c0ec)), CustomError_ded7c80c());
-        require(!(msg.sender == (address(unresolved_1aa7c0ec))), CustomError_ded7c80c());
-        var_a = 0xded7c80c00000000000000000000000000000000000000000000000000000000;
+        require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_212837f4());
+        require(msg.sender == (address(store_g)), CustomError_212837f4());
+        require(!(msg.sender == (address(store_g))), CustomError_212837f4());
+        var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
         require(arg1 > block.number, CustomError_58968cf0());
         var_a = 0x58968cf000000000000000000000000000000000000000000000000000000000;
-        require((block.number - arg1) > block.number, CustomError_c42a0185());
+        require((block.number - arg1) > block.number, CustomError_3bd5fe7b());
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_b = 0x11;
-        require((block.number - arg1) > 0x0100, CustomError_c42a0185());
-        var_a = 0xc42a018500000000000000000000000000000000000000000000000000000000;
-        require(!blockhash(arg1), CustomError_31aed5c2());
-        require(arg0 + (arg0) > 0xffffffffffffffff, CustomError_31aed5c2());
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        require((block.number - arg1) > 0x0100, CustomError_3bd5fe7b());
+        var_a = 0x3bd5fe7b00000000000000000000000000000000000000000000000000000000;
+        require(!blockhash(arg1), CustomError_b1b7848f());
+        require(arg0 + (arg0) > 0xffffffffffffffff, CustomError_b1b7848f());
+        var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x41;
-        require(((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) > 0xffffffffffffffff) | ((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) < var_c), CustomError_31aed5c2());
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        require(((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) > 0xffffffffffffffff) | ((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) < var_c), CustomError_b1b7848f());
+        var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x41;
         uint256 var_c = var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f));
         uint256 var_d = (arg0 + (arg0));
         var_e = msg.data[36:36];
         uint256 var_f = 0;
-        require(keccak256(var_e) - blockhash(arg1), CustomError_31aed5c2());
-        require(!(arg0 + (arg0)), CustomError_31aed5c2());
-        require(bytes1(0x20 + (arg0 + (arg0))) < 0xc000000000000000000000000000000000000000000000000000000000000000, CustomError_31aed5c2());
-        require(!(arg0 + (arg0)), CustomError_31aed5c2());
-        require(bytes1(0x20 + (arg0 + (arg0))) < 0xf800000000000000000000000000000000000000000000000000000000000000, CustomError_31aed5c2());
-        require(!(0 < (arg0 + (arg0))), CustomError_31aed5c2());
-        require((bytes1(((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09) > 0xff, CustomError_31aed5c2());
-        require((0x01 + (bytes1((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09))) > 0xff, CustomError_31aed5c2());
+        require(keccak256(var_e) - blockhash(arg1), CustomError_4ee3f91f());
+        require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+        require(bytes1(0x20 + (arg0 + (arg0))) < 0xc000000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+        require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+        require(bytes1(0x20 + (arg0 + (arg0))) < 0xf800000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+        require(!(0 < (arg0 + (arg0))), CustomError_4ee3f91f());
+        require((bytes1(((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09) > 0xff, CustomError_4ee3f91f());
+        require((0x01 + (bytes1((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09))) > 0xff, CustomError_4ee3f91f());
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_b = 0x11;
-        require(0 > (0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))), CustomError_31aed5c2());
+        require(0 > (0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))), CustomError_4ee3f91f());
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_b = 0x11;
-        require(!(block.chainid == 0xa5bd), CustomError_31aed5c2());
-        require(block.chainid == 0xa5bd, CustomError_31aed5c2());
-        require(0 < 0x03, CustomError_31aed5c2());
-        require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_31aed5c2());
-        require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_31aed5c2());
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
+        require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
+        require(0 < 0x03, CustomError_4ee3f91f());
+        require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+        require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x32;
         var_a = 0x31aed5c200000000000000000000000000000000000000000000000000000000;
         if (0 < 0x08) {
         }
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_b = 0x11;
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x32;
         if (!block.chainid == 0xa5bd) {
             if (block.chainid == 0xa5bd) {
-                require(!(block.chainid == 0xa5bd), CustomError_c0098bd9());
+                require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
             }
-            require(block.chainid == 0xa5bd, CustomError_c0098bd9());
+            require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
         }
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x32;
         var_a = 0xc0098bd900000000000000000000000000000000000000000000000000000000;
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x32;
         var_a = 0xff28378700000000000000000000000000000000000000000000000000000000;
         var_a = 0xbfc9f0d300000000000000000000000000000000000000000000000000000000;
-        require(executionDeadline, CustomError_ded7c80c());
-        require(!(!block.timestamp > executionDeadline), CustomError_ded7c80c());
-        var_a = 0xded7c80c00000000000000000000000000000000000000000000000000000000;
+        require(unresolved_fa1a730f, CustomError_212837f4());
+        require(!(!block.timestamp > unresolved_fa1a730f), CustomError_212837f4());
+        var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
         var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
     }

─── Function bond (0x9940686e → 0x89bf6826) ───
@@ -1,54 +1,56 @@
     
-    /// @custom:selector    0x9940686e
-    /// @custom:signature   bond(uint256 arg0) public payable
+    /// @custom:selector    0x89bf6826
+    /// @custom:signature   Unresolved_89bf6826(uint256 arg0) public payable
     /// @param              arg0 ["uint256", "bytes32", "int256"]
-    function bond(uint256 arg0) public payable {
+    function Unresolved_89bf6826(uint256 arg0) public payable {
+        require(0x68 == msg.data[0]);
+        require(0 == 0x01);
         require(msg.value);
-        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x20, CustomError_253ef1d2());
-        require(executionDeadline, CustomError_253ef1d2());
-        require(block.timestamp > executionDeadline, CustomError_253ef1d2());
-        require(!(bytes1(unresolved_308657d7 >> 0x08)), CustomError_253ef1d2());
-        require(bytes1(unresolved_308657d7), CustomError_253ef1d2());
-        require(executionDeadline, CustomError_253ef1d2());
-        require(!(block.timestamp > executionDeadline), CustomError_253ef1d2());
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x20, CustomError_24793289());
+        require(unresolved_fa1a730f, CustomError_24793289());
+        require(block.timestamp > unresolved_fa1a730f, CustomError_24793289());
+        require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_24793289());
+        require(bytes1(unresolved_9c8a34e7), CustomError_24793289());
+        var_a = 0x2479328900000000000000000000000000000000000000000000000000000000;
+        require(unresolved_fa1a730f, CustomError_253ef1d2());
+        require(!(block.timestamp > unresolved_fa1a730f), CustomError_253ef1d2());
         var_a = 0x253ef1d200000000000000000000000000000000000000000000000000000000;
-        require((currentRewardAmount >> 0x01) > arg0, CustomError_e92c469f());
+        require((unresolved_d7514581 >> 0x01) > arg0, CustomError_e92c469f());
         var_a = 0xe92c469f00000000000000000000000000000000000000000000000000000000;
         var_b = 0x23b872dd00000000000000000000000000000000000000000000000000000000;
         address var_c = msg.sender;
         address var_d = address(this);
         uint256 var_e = arg0;
         (bool success, bytes memory ret0) = address(0).Unresolved_23b872dd(var_c); // call
         require(!0, CustomError_045c4b02());
-        unresolved_1aa7c0ec = (uint96(unresolved_1aa7c0ec)) | msg.sender;
+        store_g = (uint96(store_g)) | msg.sender;
         require(block.timestamp > (block.timestamp + 0x012c), CustomError_045c4b02());
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_f = 0x11;
-        executionDeadline = block.timestamp + 0x012c;
-        bondAmount = arg0;
+        unresolved_fa1a730f = block.timestamp + 0x012c;
+        store_a = arg0;
         var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
-        require(0x20 > ret0.length);
-        require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g));
-        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        require(0x20 > ret0.length, CustomError_b1b7848f());
+        require(((var_g + 0x20) > 0xffffffffffffffff) | ((var_g + 0x20) < var_g), CustomError_b1b7848f());
+        var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
         var_f = 0x41;
         uint256 var_g = var_g + 0x20;
         require(((var_g + 0x20) - var_g) < 0x20);
         require(var_g.length - var_g.length, CustomError_045c4b02());
         require(!var_g.length, CustomError_045c4b02());
         var_a = 0x045c4b0200000000000000000000000000000000000000000000000000000000;
-        var_a = 0x2479328900000000000000000000000000000000000000000000000000000000;
         var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
-        require(currentRewardAmount > (currentRewardAmount + bondAmount), CustomError_9cbc1de1());
+        require(unresolved_d7514581 > (unresolved_d7514581 + store_a), CustomError_9cbc1de1());
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_f = 0x11;
-        currentRewardAmount = currentRewardAmount + bondAmount;
-        require(totalBondsDeposited > (totalBondsDeposited + bondAmount), CustomError_9cbc1de1());
+        unresolved_d7514581 = unresolved_d7514581 + store_a;
+        require(store_h > (store_h + store_a), CustomError_9cbc1de1());
         var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
         var_f = 0x11;
-        totalBondsDeposited = totalBondsDeposited + bondAmount;
-        require(executionDeadline, CustomError_9cbc1de1());
-        require(!(block.timestamp > executionDeadline), CustomError_9cbc1de1());
+        store_h = store_h + store_a;
+        require(unresolved_fa1a730f, CustomError_9cbc1de1());
+        require(!(block.timestamp > unresolved_fa1a730f), CustomError_9cbc1de1());
         var_a = 0x9cbc1de100000000000000000000000000000000000000000000000000000000;
-        if (executionDeadline) {
+        if (unresolved_fa1a730f) {
         }
     }

─── Function resume (0x046f7da2 → 0x42dad26a) ───
@@ -1,10 +1,12 @@
     
-    /// @custom:selector    0x046f7da2
-    /// @custom:signature   resume() public payable
-    function resume() public payable {
+    /// @custom:selector    0x42dad26a
+    /// @custom:signature   Unresolved_42dad26a() public payable
+    function Unresolved_42dad26a() public payable {
+        require(!store_o);
+        require(0 == 0x01);
         require(msg.value);
         require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
-        require(msg.sender - 0, CustomError_618bbdd5());
-        var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
-        unresolved_308657d7 = uint248(unresolved_308657d7);
+        require(msg.sender - 0, CustomError_9e74422b());
+        var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+        unresolved_9c8a34e7 = uint248(unresolved_9c8a34e7);
     }

─── Function requestCancellation (0x81972d00 → 0xd4e2a392) ───
@@ -1,10 +1,12 @@
     
-    /// @custom:selector    0x81972d00
-    /// @custom:signature   requestCancellation() public payable
-    function requestCancellation() public payable {
+    /// @custom:selector    0xd4e2a392
+    /// @custom:signature   Unresolved_d4e2a392() public payable
+    function Unresolved_d4e2a392() public payable {
+        require(!store_p);
+        require(0 == 0x01);
         require(msg.value);
         require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
-        require(msg.sender - 0, CustomError_618bbdd5());
-        var_a = 0x618bbdd500000000000000000000000000000000000000000000000000000000;
-        unresolved_308657d7 = 0x01 | (uint248(unresolved_308657d7));
+        require(msg.sender - 0, CustomError_9e74422b());
+        var_a = 0x9e74422b00000000000000000000000000000000000000000000000000000000;
+        unresolved_9c8a34e7 = 0x01 | (uint248(unresolved_9c8a34e7));
     }

─── Added: Unresolved_551f4e0f (0x551f4e0f) ───
@@ -1,0 +1,17 @@
+    
+    /// @custom:selector    0x551f4e0f
+    /// @custom:signature   Unresolved_551f4e0f(uint256 arg0) public pure returns (uint256)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_551f4e0f(uint256 arg0) public pure returns (uint256) {
+        require(0x55 == msg.data[0]);
+        require(0 == 0x01);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        uint256 var_a = 0;
+        return 0;
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        var_a = 0;
+        return 0;
+    }

─── Added: Unresolved_b975ddd8 (0xb975ddd8) ───
@@ -1,0 +1,86 @@
+    
+    /// @custom:selector    0xb975ddd8
+    /// @custom:signature   Unresolved_b975ddd8(uint256 arg0, uint256 arg1) public view returns (uint256)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    /// @param              arg1 ["uint256", "bytes32", "int256"]
+    function Unresolved_b975ddd8(uint256 arg0, uint256 arg1) public view returns (uint256) {
+        require(!store_m);
+        require(0 == 0x01);
+        require(0xf6 == msg.data[0]);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0x40);
+        require(arg0 > 0xffffffffffffffff);
+        require(((msg.data.length - arg0) + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc) < 0xa0);
+        require(arg0 + (arg0) > 0xffffffffffffffff);
+        require(!(bytes1(unresolved_9c8a34e7 >> 0x08)), CustomError_212837f4());
+        require(msg.sender == (address(store_g)), CustomError_212837f4());
+        require(!(msg.sender == (address(store_g))), CustomError_212837f4());
+        var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
+        require(arg1 > block.number, CustomError_58968cf0());
+        var_a = 0x58968cf000000000000000000000000000000000000000000000000000000000;
+        require((block.number - arg1) > block.number, CustomError_3bd5fe7b());
+        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        var_b = 0x11;
+        require((block.number - arg1) > 0x0100, CustomError_3bd5fe7b());
+        var_a = 0x3bd5fe7b00000000000000000000000000000000000000000000000000000000;
+        require(!blockhash(arg1), CustomError_b1b7848f());
+        require(arg0 + (arg0) > 0xffffffffffffffff, CustomError_b1b7848f());
+        var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
+        var_b = 0x41;
+        require(((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) > 0xffffffffffffffff) | ((var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f))) < var_c), CustomError_b1b7848f());
+        var_a = 0xb1b7848f00000000000000000000000000000000000000000000000000000000;
+        var_b = 0x41;
+        uint256 var_c = var_c + (uint248((0x20 + (0x1f + (arg0 + (arg0)))) + 0x1f));
+        uint256 var_d = (arg0 + (arg0));
+        var_e = msg.data[36:36];
+        uint256 var_f = 0;
+        require(keccak256(var_e) - blockhash(arg1), CustomError_4ee3f91f());
+        require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+        require(bytes1(0x20 + (arg0 + (arg0))) < 0xc000000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+        require(!(arg0 + (arg0)), CustomError_4ee3f91f());
+        require(bytes1(0x20 + (arg0 + (arg0))) < 0xf800000000000000000000000000000000000000000000000000000000000000, CustomError_4ee3f91f());
+        require(!(0 < (arg0 + (arg0))), CustomError_4ee3f91f());
+        require((bytes1(((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09) > 0xff, CustomError_4ee3f91f());
+        require((0x01 + (bytes1((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09))) > 0xff, CustomError_4ee3f91f());
+        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        var_b = 0x11;
+        require(0 > (0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))), CustomError_4ee3f91f());
+        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        var_b = 0x11;
+        require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
+        require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
+        require(0 < 0x03, CustomError_4ee3f91f());
+        require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+        require(!((0 + (bytes1(0x01 + ((((0x20 + (arg0 + (arg0))) + 0) >> 0xf8) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09)))) < (arg0 + (arg0))), CustomError_4ee3f91f());
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+        var_b = 0x32;
+        var_a = 0x31aed5c200000000000000000000000000000000000000000000000000000000;
+        if (0 < 0x08) {
+        }
+        var_a = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
+        var_b = 0x11;
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+        var_b = 0x32;
+        if (!block.chainid == 0xa5bd) {
+            if (block.chainid == 0xa5bd) {
+                require(!(block.chainid == 0xa5bd), CustomError_4ee3f91f());
+            }
+            require(block.chainid == 0xa5bd, CustomError_4ee3f91f());
+        }
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+        var_b = 0x32;
+        var_a = 0xc0098bd900000000000000000000000000000000000000000000000000000000;
+        var_a = 0x4ee3f91f00000000000000000000000000000000000000000000000000000000;
+        var_b = 0x32;
+        var_a = 0xff28378700000000000000000000000000000000000000000000000000000000;
+        var_a = 0xbfc9f0d300000000000000000000000000000000000000000000000000000000;
+        require(unresolved_fa1a730f, CustomError_212837f4());
+        require(!(!block.timestamp > unresolved_fa1a730f), CustomError_212837f4());
+        var_a = 0x212837f400000000000000000000000000000000000000000000000000000000;
+        var_a = 0xd5ef09ba00000000000000000000000000000000000000000000000000000000;
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        var_d = store_k;
+        return store_k;
+    }

─── Added: Unresolved_9a93f6fa (0x9a93f6fa) ───
@@ -1,0 +1,11 @@
+    
+    /// @custom:selector    0x9a93f6fa
+    /// @custom:signature   Unresolved_9a93f6fa() public view returns (uint256)
+    function Unresolved_9a93f6fa() public view returns (uint256) {
+        require(!store_r);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        var_a = 0x0100;
+        return 0x0100;
+    }

─── Added: Unresolved_3004ea5d (0x3004ea5d) ───
@@ -1,0 +1,12 @@
+    
+    /// @custom:selector    0x3004ea5d
+    /// @custom:signature   Unresolved_3004ea5d(uint256 arg0) public view returns (bool)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_3004ea5d(uint256 arg0) public view returns (bool) {
+        require(0x30 == msg.data[0]);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        bytes1 var_a = !(!bytes1(unresolved_9c8a34e7));
+        return !(!bytes1(unresolved_9c8a34e7));
+    }

─── Added: Unresolved_cb44366b (0xcb44366b) ───
@@ -1,0 +1,16 @@
+    
+    /// @custom:selector    0xcb44366b
+    /// @custom:signature   Unresolved_cb44366b(uint256 arg0) public view returns (bool)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_cb44366b(uint256 arg0) public view returns (bool) {
+        require(0xcb == msg.data[0]);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        if (unresolved_fa1a730f) {
+            uint256 var_a = !(block.timestamp > unresolved_fa1a730f);
+            return !(block.timestamp > unresolved_fa1a730f);
+            var_a = unresolved_fa1a730f;
+            return unresolved_fa1a730f;
+        }
+    }

─── Added: Unresolved_9d9ac066 (0x9d9ac066) ───
@@ -1,0 +1,12 @@
+    
+    /// @custom:selector    0x9d9ac066
+    /// @custom:signature   Unresolved_9d9ac066(uint256 arg0) public view returns (address)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_9d9ac066(uint256 arg0) public view returns (address) {
+        require(0xc0 == msg.data[0]);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        address var_a = address(store_g);
+        return address(store_g);
+    }

─── Added: Unresolved_8a552369 (0x8a552369) ───
@@ -1,0 +1,11 @@
+    /// @custom:selector    0x8a552369
+    /// @custom:signature   Unresolved_8a552369(uint256 arg0) public view returns (uint256)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_8a552369(uint256 arg0) public view returns (uint256) {
+        require(0x23 == msg.data[0]);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        var_a = store_a;
+        return store_a;
+    }

─── Added: Unresolved_865cdb2a (0x865cdb2a) ───
@@ -1,0 +1,12 @@
+    
+    /// @custom:selector    0x865cdb2a
+    /// @custom:signature   Unresolved_865cdb2a(uint256 arg0) public pure returns (uint256)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_865cdb2a(uint256 arg0) public pure returns (uint256) {
+        require(0x86 == msg.data[0]);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        uint256 var_a = 0;
+        return 0;
+    }

─── Added: Unresolved_feec7717 (0xfeec7717) ───
@@ -1,0 +1,12 @@
+    
+    /// @custom:selector    0xfeec7717
+    /// @custom:signature   Unresolved_feec7717(uint256 arg0) public view returns (uint256)
+    /// @param              arg0 ["uint256", "bytes32", "int256"]
+    function Unresolved_feec7717(uint256 arg0) public view returns (uint256) {
+        require(0xfe == msg.data[0]);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        var_a = store_h;
+        return store_h;
+    }

─── Added: Unresolved_4fb06e63 (0x4fb06e63) ───
@@ -1,0 +1,11 @@
+    
+    /// @custom:selector    0x4fb06e63
+    /// @custom:signature   Unresolved_4fb06e63() public view returns (uint256)
+    function Unresolved_4fb06e63() public view returns (uint256) {
+        require(!store_e);
+        require(0 == 0x01);
+        require(msg.value);
+        require((0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc + msg.data.length) < 0);
+        uint256 var_a = 0;
+        return 0;
+    }

Commit c4b5e1b

@ozwaldorf ozwaldorf merged commit 1e80da2 into master May 8, 2026
5 checks passed
@ozwaldorf ozwaldorf deleted the fix/fuzz-pass-selection-mask branch May 8, 2026 16:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(fuzz): make default pass selection complete and add runtime equivalence boundary

2 participants