NestedMapping

Heimdall Evaluation Report · target: storage · status: pass

LLM evaluation

Baseline

No LLM evaluation was recorded.

Candidate

Score: 8/100

The decompilation fails to capture essentially all of the contract's behavior. Every one of the seven recovered selectors is emitted as either a bare revert() or a pair of trivial calldata-length checks followed by `require(true)`; not a single storage read or write appears anywhere in the output. The original contract consists entirely of nested-mapping slot computations (keccak-based hashing of key/slot pairs) and SSTORE/SLOAD operations, plus four public getters that return mapping values — none of this survives. All functions are also marked `pure` and given no return values, which is the opposite of the actual state-mutating / view semantics.

Unified diff

@@ -1,0 +1,72 @@+// SPDX-License-Identifier: MIT+pragma solidity >=0.8.0;++/// @title            Decompiled Contract+/// @author           Jonathan Becker <jonathan@jbecker.dev>+/// @custom:version   heimdall-rs v0.9.2+///+/// @notice           This contract was decompiled using the heimdall-rs decompiler.+///                     It was generated directly by tracing the EVM opcodes from this contract.+///                     As a result, it may not compile or even be valid solidity code.+///                     Despite this, it should be obvious what each function does. Overall+///                     logic should have been preserved throughout decompiling.+///+/// @custom:github    You can find the open-source decompiler here:+///                       https://heimdall.rs++contract DecompiledContract {+    +    /// @custom:selector    0x8019f65b+    /// @custom:signature   Unresolved_8019f65b(uint256 arg0) public pure+    /// @param              arg0 ["uint256", "bytes32", "int256"]+    function Unresolved_8019f65b(uint256 arg0) public pure {+        revert();+    }+    +    /// @custom:selector    0xda46098c+    /// @custom:signature   Unresolved_da46098c(address arg0) public pure+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    function Unresolved_da46098c(address arg0) public pure {+        require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x60);+        require(true);+    }+    +    /// @custom:selector    0x0af4187d+    /// @custom:signature   Unresolved_0af4187d(address arg0) public pure+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    function Unresolved_0af4187d(address arg0) public pure {+        require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+        require(true);+    }+    +    /// @custom:selector    0x9d266b8a+    /// @custom:signature   Unresolved_9d266b8a(address arg0, uint256 arg1) public pure+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    /// @param              arg1 ["uint256", "bytes32", "int256"]+    function Unresolved_9d266b8a(address arg0, uint256 arg1) public pure {+        revert();+    }+    +    /// @custom:selector    0x55b6ed5c+    /// @custom:signature   Unresolved_55b6ed5c(address arg0) public pure+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    function Unresolved_55b6ed5c(address arg0) public pure {+        require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+        require(true);+    }+    +    /// @custom:selector    0x146008e3+    /// @custom:signature   Unresolved_146008e3(uint256 arg0) public pure+    /// @param              arg0 ["uint256", "bytes32", "int256"]+    function Unresolved_146008e3(uint256 arg0) public pure {+        revert();+    }+    +    /// @custom:selector    0x1365b4e1+    /// @custom:signature   Unresolved_1365b4e1(address arg0, uint256 arg1) public pure+    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]+    /// @param              arg1 ["uint256", "bytes32", "int256"]+    function Unresolved_1365b4e1(address arg0, uint256 arg1) public pure {+        revert();+    }+}