The decompilation preserves only fragments of the contract interface and some superficial calldata checks. Core order validation, fulfillment, transfers, status management, signature verification, conduit interaction, and most public functions are missing or materially incorrect.
matchOrders is represented as a pure function that only performs calldata bounds checks; it omits order validation, fulfillment matching, storage status updates, token and Ether transfers, event emission, and return executions.
The primary fulfillment entry point is unresolved and does not accurately preserve the original basic-order route logic, amount handling, token transfers, conduit calls, signature validation, order status updates, or finalization behavior.
Most externally callable functions are absent, including fulfillOrder, fulfillAdvancedOrder, fulfillAvailableOrders, fulfillAvailableAdvancedOrders, cancel, validate, getOrderHash, and getCounter's intended explicit implementation.
incrementCounter has incorrect behavior: the event arguments are reversed, and the returned value is computed as one greater than the already-incremented counter rather than returning the new counter value.
The reentrancy guard is represented only as a storage check on store_b, with no constructor initialization or complete guard lifecycle equivalent to setting and clearing the original sentinel.
Order status storage is incorrectly modeled as mapping(uint256 => uint8) rather than mapping(bytes32 => packed OrderStatus), and getOrderStatus does not accurately decode or return the original four values.
The original order-status transitions for cancellation, validation, partial fills, full fills, and denominator/numerator scaling are absent.
Signature verification, EIP-712 digest and order-hash derivation, ECDSA recovery, and EIP-1271 fallback behavior are not represented.
Criteria resolver application, Merkle proof verification, unresolved-criteria checks, and related revert conditions are missing.
ERC20, ERC721, ERC1155, batch ERC1155, native Ether, and conduit transfer operations are missing, including external call targets, calldata construction, return handling, and revert bubbling.
OrderFulfilled is emitted only in an incomplete unresolved path and does not accurately preserve the original event data construction, dynamic arrays, indexed fields, or fulfillment semantics.
information() has the wrong return type and does not accurately return the version, domain separator, and conduit controller.
The decompiled functions expose incorrect visibility and mutability for several operations, including pure declarations where the original functions are payable and state-changing.
Candidate
Score: 5/100
The decompiled output preserves only fragments of calldata validation and a few storage accesses; it does not represent the core marketplace, order-validation, transfer, conduit, signature, or fulfillment logic of the original contract.
Most externally callable functions are missing, including fulfillBasicOrder, fulfillOrder, fulfillAdvancedOrder, fulfillAvailableOrders, fulfillAvailableAdvancedOrders, cancel, validate, getOrderHash, getCounter, and name.
matchOrders is represented as a public pure calldata-validation stub, while the original is payable, validates orders, updates order status, applies fulfillments, performs token and Ether transfers, emits fulfillment events, and returns executions.
The unresolved basic-order function does not implement the original order hashing, signature validation, status updates, criteria handling, token transfers, Ether transfers, conduit calls, or finalization logic.
The original reentrancy guard is initialized to a non-entered sentinel in the constructor and cleared after operations; the decompiled storage model and checks do not accurately represent this lifecycle.
Order status storage is incorrectly modeled as mapping(uint256 => uint8), whereas the original uses mapping(bytes32 => OrderStatus) with packed validation, cancellation, numerator, and denominator fields.
getOrderStatus has the wrong return signature and does not clearly return the original four decoded fields with the correct bytes32 key and storage layout.
incrementCounter performs an incorrect increment/event/return sequence: it increments the mapping and then emits and returns an additional incremented value rather than the single new counter value from the original.
The CounterIncremented event arguments are reversed or otherwise incorrect compared with the original event, which emits (newCounter, msg.sender).
The OrderFulfilled event declaration and the emitted argument structure do not faithfully match the original indexed fields and dynamic SpentItem/ReceivedItem arrays.
The information function returns an opaque bytes value and omits the original version string, domain separator, and conduit controller values.
The decompiled output omits conduit address derivation, conduit controller interaction, conduit execution calls, and validation of conduit magic return values.
The decompiled output omits ERC20, ERC721, ERC1155, and batch ERC1155 transfer calls, including their success checks, return-value handling, revert bubbling, and custom failure conditions.
The decompiled output omits signature verification through ecrecover and EIP-1271, including invalid signer, invalid signature, bad v, and bad contract signature conditions.
The decompiled output omits order time validation, partial-fill fraction arithmetic, interpolation and rounding, criteria resolver application, Merkle proof validation, fulfillment aggregation, consideration checks, and native-asset refund behavior.
The decompiled output does not preserve the original payable behavior for order fulfillment functions or the original external/view/pure mutability distinctions.
Diff
Decompiled output is identical between baseline and candidate.