No LLM evaluation was recorded.
Score: 62/100
All 7 external functions are recovered with correct argument shapes and calldata bounds checks, and 5 of them reproduce their event emissions faithfully (Deposit, Withdrawal, Log(string), LogBytes(bytes), and the three-event emitMultiple including the correct inline string literal "Multiple events emitted"). However, the two three-argument functions (emitTransfer and emitApproval) decompile to nothing but calldata-length requires — their sole behavior, the LOG emission, is entirely missing, and the Approval event does not appear anywhere in the output.
@@ -1,0 +1,95 @@+// 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 {+ event Log(string);+ event Withdrawal(address, uint256);+ event Deposit(address, uint256);+ event LogBytes(bytes);+ event Transfer(address, address, uint256);+ + /// @custom:selector 0x5687f2b8+ /// @custom:signature Unresolved_5687f2b8(address arg0) public pure+ /// @param arg0 ["address", "uint160", "bytes20", "int160"]+ function Unresolved_5687f2b8(address arg0) public pure {+ require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x60);+ require(true);+ }+ + /// @custom:selector 0xd0062fbb+ /// @custom:signature Unresolved_d0062fbb(uint256 arg0) public pure+ /// @param arg0 ["uint256", "bytes32", "int256"]+ function Unresolved_d0062fbb(uint256 arg0) public pure {+ require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x20);+ require(arg0 <= 0xffffffffffffffff);+ require(0x04 + arg0 + 0x1f < 0x04 + (msg.data.length - 0x04));+ require(msg.data[0x04 + arg0] <= 0xffffffffffffffff);+ require(0x04 + arg0 + 0x20 + msg.data[0x04 + arg0] <= 0x04 + (msg.data.length - 0x04));+ emit LogBytes(var_b + 0x20 - var_b, msg.data[0x04 + arg0]);+ }+ + /// @custom:selector 0x28ba84ca+ /// @custom:signature emitDeposit(address arg0, uint256 arg1) public pure+ /// @param arg0 ["address", "uint160", "bytes20", "int160"]+ /// @param arg1 ["uint256", "bytes32", "int256"]+ function emitDeposit(address arg0, uint256 arg1) public pure {+ require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+ require(true);+ emit Deposit(arg0, arg1);+ }+ + /// @custom:selector 0x23de6651+ /// @custom:signature Unresolved_23de6651(address arg0) public pure+ /// @param arg0 ["address", "uint160", "bytes20", "int160"]+ function Unresolved_23de6651(address arg0) public pure {+ require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x60);+ require(true);+ }+ + /// @custom:selector 0xfc4ae4ba+ /// @custom:signature Unresolved_fc4ae4ba(address arg0, uint256 arg1) public pure+ /// @param arg0 ["address", "uint160", "bytes20", "int160"]+ /// @param arg1 ["uint256", "bytes32", "int256"]+ function Unresolved_fc4ae4ba(address arg0, uint256 arg1) public pure {+ require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+ require(true);+ emit Withdrawal(arg0, arg1);+ }+ + /// @custom:selector 0xe3a379c5+ /// @custom:signature Unresolved_e3a379c5(address arg0, uint256 arg1) public pure+ /// @param arg0 ["address", "uint160", "bytes20", "int160"]+ /// @param arg1 ["uint256", "bytes32", "int256"]+ function Unresolved_e3a379c5(address arg0, uint256 arg1) public pure {+ require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x40);+ require(true);+ emit Deposit(arg0, arg1);+ emit Transfer(0, arg0, arg1);+ emit Log(var_b + 0x20 - var_b, 0x17, 0x4d756c7469706c65206576656e747320656d6974746564000000000000000000);+ }+ + /// @custom:selector 0x2e3c2a4d+ /// @custom:signature Unresolved_2e3c2a4d(uint256 arg0) public pure+ /// @param arg0 ["uint256", "bytes32", "int256"]+ function Unresolved_2e3c2a4d(uint256 arg0) public pure {+ require(0x04 + (msg.data.length - 0x04) - 0x04 >= 0x20);+ require(arg0 <= 0xffffffffffffffff);+ require(0x04 + arg0 + 0x1f < 0x04 + (msg.data.length - 0x04));+ require(msg.data[0x04 + arg0] <= 0xffffffffffffffff);+ require(0x04 + arg0 + 0x20 + msg.data[0x04 + arg0] <= 0x04 + (msg.data.length - 0x04));+ emit Log(var_b + 0x20 - var_b, msg.data[0x04 + arg0]);+ }+}