TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

0ca38f70-95ce-4060-97b9-6ab8cf2510ee

failed
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 9:37 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Verified
Review Backing
Not yet
Best current signal
Authorization based on tx.origin
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31349 report.consolidate complete 1 / 1 3 months ago
111092 artifact.fetch failed 1 / 3 1 week ago
111093 tool.cast_disasm complete 1 / 3 1 week ago
111094 analysis.bundle complete 1 / 3 1 week ago
111095 capability.graph complete 1 / 3 1 week ago
111096 detector.run complete 1 / 3 1 week ago
111097 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: yes

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable paths to attacker profit identified after reviewing `AUDIT_BUNDLE.txt`.
View stderr
[codex:413513] OpenAI Codex v0.77.0 (research preview)
[codex:413513] --------
[codex:413513] workdir: /tmp/codex-multi-6gmqrfxp
[codex:413513] model: gpt-5.2-codex
[codex:413513] provider: openai
[codex:413513] approval: never
[codex:413513] sandbox: read-only
[codex:413513] reasoning effort: xhigh
[codex:413513] reasoning summaries: auto
[codex:413513] session id: 019b80a1-65e4-7b51-b473-f61a44722e80
[codex:413513] --------
[codex:413513] user
[codex:413513] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:413513] 
[codex:413513] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:413513] 
[codex:413513] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:413513] - Gas inefficiency, code quality, naming, or best practices
[codex:413513] - Theoretical vulnerabilities without a clear extraction path
[codex:413513] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:413513] - Front-running unless it enables theft beyond MEV
[codex:413513] - DoS, griefing, or issues that don't result in attacker profit
[codex:413513] - Missing events, view function issues, or informational findings
[codex:413513] 
[codex:413513] HIGH-VALUE PATTERNS TO HUNT:
[codex:413513] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:413513] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:413513] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:413513] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:413513] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:413513] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:413513] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:413513] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:413513] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:413513] 
[codex:413513] For each finding, you MUST provide:
[codex:413513] 1. Exact file and line numbers of vulnerable code
[codex:413513] 2. Step-by-step exploit transaction sequence
[codex:413513] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:413513] 
[codex:413513] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:413513] 
[codex:413513] Output MUST be valid JSON matching the provided schema.
[codex:413513] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:413513] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:413513] mcp startup: no servers
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Preparing to read AUDIT_BUNDLE.txt**
[codex:413513] exec
[codex:413513] /bin/bash -lc ls in /tmp/codex-multi-6gmqrfxp succeeded in 6ms:
[codex:413513] AUDIT_BUNDLE.txt
[codex:413513] codex-output-schema.json
[codex:413513] contracts
[codex:413513] exec
[codex:413513] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-6gmqrfxp succeeded in 5ms:
[codex:413513] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:413513] 
[codex:413513] ================================================================================
[codex:413513] FILE: contracts/Contract.sol
[codex:413513] ================================================================================
[codex:413513] // File: ERC20.sol
[codex:413513] 
[codex:413513] pragma solidity ^0.5.10;
[codex:413513] 
[codex:413513] /// @title ERC20 interface is a subset of the ERC20 specification.
[codex:413513] /// @notice see https://github.com/ethereum/EIPs/issues/20
[codex:413513] interface ERC20 {
[codex:413513]     function allowance(address _owner, address _spender) external view returns (uint256);
[codex:413513]     function approve(address _spender, uint256 _value) external returns (bool);
[codex:413513]     function balanceOf(address _who) external view returns (uint256);
[codex:413513]     function totalSupply() external view returns (uint256);
[codex:413513]     function transfer(address _to, uint256 _value) external returns (bool);
[codex:413513]     function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
[codex:413513] }
[codex:413513] 
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Searching for vulnerabilities in AUDIT_BUNDLE**
[codex:413513] exec
[codex:413513] /bin/bash -lc 'rg --files' in /tmp/codex-multi-6gmqrfxp succeeded in 9ms:
[codex:413513] codex-output-schema.json
[codex:413513] AUDIT_BUNDLE.txt
[codex:413513] contracts/Contract.sol
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Preparing to analyze large contract file**
[codex:413513] exec
[codex:413513] /bin/bash -lc 'rg "contract " -n contracts/Contract.sol' in /tmp/codex-multi-6gmqrfxp succeeded in 7ms:
[codex:413513] 191: * contract returns false). Tokens that return no value (and instead revert or
[codex:413513] 241:        //  1. The target address is checked to verify it contains contract code
[codex:413513] 283:/// @title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself
[codex:413513] 284:contract Transferrable {
[codex:413513] 289:    /// @dev This function is used to move tokens sent accidentally to this contract method.
[codex:413513] 328:/// @title Balanceable - This is a contract used to get a balance
[codex:413513] 329:contract Balanceable {
[codex:413513] 366:// The BurnerToken interface is the interface to a token contract which
[codex:413513] 396:/// This contract is modified version of the MIT OpenZepplin Ownable contract
[codex:413513] 397:/// This contract allows for the transferOwnership operation to be made impossible
[codex:413513] 399:contract Ownable {
[codex:413513] 406:    /// @notice Constructor sets the original owner of the contract and whether or not it is one time transferable.
[codex:413513] 423:    /// @notice Allows the current owner to transfer control of the contract to a new address.
[codex:413513] 450:    /// @dev Renouncing to ownership will leave the contract without an owner and unusable.
[codex:413513] 510:contract Controller is IController, Ownable, Transferrable {
[codex:413513] 656:    //// @notice Withdraw tokens from the smart contract to the specified account.
[codex:413513] 723:contract ResolverBase {
[codex:413513] 743:contract ABIResolver is ResolverBase {
[codex:413513] 796:contract AddrResolver is ResolverBase {
[codex:413513] 833:contract ContentHashResolver is ResolverBase {
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Analyzing potential reentrancy and contract roles**
[codex:413513] exec
[codex:413513] /bin/bash -lc "sed -n '480,760p' contracts/Contract.sol" in /tmp/codex-multi-6gmqrfxp succeeded in 5ms:
[codex:413513]  *  This program is free software: you can redistribute it and/or modify
[codex:413513]  *  it under the terms of the GNU General Public License as published by
[codex:413513]  *  the Free Software Foundation, either version 3 of the License, or
[codex:413513]  *  (at your option) any later version.
[codex:413513] 
[codex:413513]  *  This program is distributed in the hope that it will be useful,
[codex:413513]  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
[codex:413513]  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
[codex:413513]  *  GNU General Public License for more details.
[codex:413513] 
[codex:413513]  *  You should have received a copy of the GNU General Public License
[codex:413513]  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
[codex:413513]  */
[codex:413513] 
[codex:413513] pragma solidity ^0.5.10;
[codex:413513] 
[codex:413513] 
[codex:413513] 
[codex:413513] /// @title The IController interface provides access to the isController and isAdmin checks.
[codex:413513] interface IController {
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Analyzing contract components for vulnerabilities**
[codex:413513] exec
[codex:413513] /bin/bash -lc "sed -n '1120,1320p' contracts/Contract.sol" in /tmp/codex-multi-6gmqrfxp succeeded in 6ms:
[codex:413513]      *
[codex:413513]      * @param node The name to change the authorisation on.
[codex:413513]      * @param target The address that is to be authorised or deauthorised.
[codex:413513]      * @param isAuthorised True if the address should be authorised, or false if it should be deauthorised.
[codex:413513]      */
[codex:413513]     function setAuthorisation(bytes32 node, address target, bool isAuthorised) external {
[codex:413513]         authorisations[node][msg.sender][target] = isAuthorised;
[codex:413513]         emit AuthorisationChanged(node, msg.sender, target, isAuthorised);
[codex:413513]     }
[codex:413513] 
[codex:413513]     function isAuthorised(bytes32 node) internal view returns(bool) {
[codex:413513]         address owner = ens.owner(node);
[codex:413513]         return owner == msg.sender || authorisations[node][owner][msg.sender];
[codex:413513]     }
[codex:413513] }
[codex:413513] 
[codex:413513] // File: ensResolvable.sol
[codex:413513] 
[codex:413513] /**
[codex:413513]  *  ENSResolvable - The Consumer Contract Wallet
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Evaluating ENS resolver risks**
[codex:413513] exec
[codex:413513] /bin/bash -lc "sed -n '1880,2360p' contracts/Contract.sol" in /tmp/codex-multi-6gmqrfxp succeeded in 5ms:
[codex:413513]                 // For long needles, use hashing
[codex:413513]                 bytes32 hash;
[codex:413513]                 assembly { hash := keccak256(needleptr, needlelen) }
[codex:413513]                 ptr = selfptr + (selflen - needlelen);
[codex:413513]                 while (ptr >= selfptr) {
[codex:413513]                     bytes32 testHash;
[codex:413513]                     assembly { testHash := keccak256(ptr, needlelen) }
[codex:413513]                     if (hash == testHash)
[codex:413513]                         return ptr + needlelen;
[codex:413513]                     ptr -= 1;
[codex:413513]                 }
[codex:413513]             }
[codex:413513]         }
[codex:413513]         return selfptr;
[codex:413513]     }
[codex:413513] 
[codex:413513]     /*
[codex:413513]      * @dev Modifies `self` to contain everything from the first occurrence of
[codex:413513]      *      `needle` to the end of the slice. `self` is set to the empty slice
[codex:413513]      *      if `needle` is not found.
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Reviewing contract completeness and function logic**
[codex:413513] exec
[codex:413513] /bin/bash -lc 'tail -n 40 contracts/Contract.sol' in /tmp/codex-multi-6gmqrfxp succeeded in 5ms:
[codex:413513]         }
[codex:413513]         // The burner token deducts from the supply before calling.
[codex:413513]         uint supply = IBurner(_burner).currentSupply().add(_amount);
[codex:413513]         address[] memory redeemableAddresses = _redeemableTokens();
[codex:413513]         for (uint i = 0; i < redeemableAddresses.length; i++) {
[codex:413513]             uint redeemableBalance = _balance(address(this), redeemableAddresses[i]);
[codex:413513]             if (redeemableBalance > 0) {
[codex:413513]                 uint redeemableAmount = redeemableBalance.mul(_amount).div(supply);
[codex:413513]                 _safeTransfer(_to, redeemableAddresses[i], redeemableAmount);
[codex:413513]                 emit CashAndBurned(_to, redeemableAddresses[i], redeemableAmount);
[codex:413513]             }
[codex:413513]         }
[codex:413513] 
[codex:413513]         return true;
[codex:413513]     }
[codex:413513] 
[codex:413513]     /// @notice This allows for the admin to reclaim the non-redeemableTokens
[codex:413513]     /// @param _to this is the address which the reclaimed tokens will be sent to
[codex:413513]     /// @param _nonRedeemableAddresses this is the array of tokens to be claimed
[codex:413513]     function nonRedeemableTokenClaim(address payable _to, address[] calldata _nonRedeemableAddresses) external onlyAdmin returns (bool) {
[codex:413513] 
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Analyzing contracts for exploits**
[codex:413513] 
[codex:413513] I'm carefully reviewing key contracts to identify any concrete exploitable profit paths, especially focusing on ownership, token handling, and redeemable token accounting; a notable bug is the potential mismatch in redeemable token count allowing ETH redemption via zero addresses, which might create unintended asset distribution if admin misconfigures redeemable flags, though direct attacker profit seems limited and contingent on admin actions.
[codex:413513] thinking
[codex:413513] **Evaluating reentrancy and authorization risks**
[codex:413513] 
[codex:413513] I'm examining if the burn process allows reentrancy through token transfers or if any authorization functions like in PublicResolver are vulnerable, finding that onlyBurner restrictions and owner checks limit risk; some quirks exist but no clear attacker profit path emerges without admin misconfiguration or external factors.
[codex:413513] exec
[codex:413513] /bin/bash -lc "rg -n \"ecrecover|permit|signature|nonce|delegatecall|call\\(|transferFrom\\(|withdraw|mint|burn|approve\" contracts/Contract.sol" in /tmp/codex-multi-6gmqrfxp succeeded in 7ms:
[codex:413513] 9:    function approve(address _spender, uint256 _value) external returns (bool);
[codex:413513] 13:    function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
[codex:413513] 168: * permit persons to whom the Software is furnished to do so, subject to
[codex:413513] 215:            "SafeERC20: approve from non-zero to non-zero allowance"
[codex:413513] 217:        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
[codex:413513] 222:        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
[codex:413513] 227:        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
[codex:413513] 248:        (bool success, bytes memory returndata) = address(token).call(data);
[codex:413513] 283:/// @title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself
[codex:413513] 344:// File: burner.sol
[codex:413513] 367:// provides the total burnable supply for the TokenHolder contract.
[codex:413513] 672: * modification, are permitted provided that the following conditions are met:
[codex:413513] 912:        (bool success, bytes memory returnData) = a.staticcall(abi.encodeWithSignature("supportsInterface(bytes4)", INTERFACE_META_ID));
[codex:413513] 918:        (success, returnData) = a.staticcall(abi.encodeWithSignature("supportsInterface(bytes4)", interfaceID));
[codex:413513] 1061: * modification, are permitted provided that the following conditions are met:
[codex:413513] 2134:    bytes4 private constant _APPROVE = 0x095ea7b3; // keccak256(approve(address,uint256)) => 0x095ea7b3
[codex:413513] 2135:    bytes4 private constant _BURN = 0x42966c68; // keccak256(burn(uint256)) => 0x42966c68
[codex:413513] 2137:    bytes4 private constant _TRANSFER_FROM = 0x23b872dd; // keccak256(transferFrom(address,address,uint256)) => 0x23b872dd
[codex:413513] 2254:        // Require that there exist enough bytes for encoding at least a method signature + data in the transaction payload:
[codex:413513] 2255:        // 4 (signature)  + 32(address or uint256)
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Analyzing potential token redemption vulnerabilities**
[codex:413513] exec
[codex:413513] /bin/bash -lc 'rg -n "Method|method" contracts/Contract.sol' in /tmp/codex-multi-6gmqrfxp succeeded in 8ms:
[codex:413513] 145:        // This method relies in extcodesize, which returns 0 for contracts in
[codex:413513] 289:    /// @dev This function is used to move tokens sent accidentally to this contract method.
[codex:413513] 2105:    function methodIdWhitelist(bytes4) external view returns (bool);
[codex:413513] 2126:    event AddedMethodId(bytes4 _methodId);
[codex:413513] 2127:    event RemovedMethodId(bytes4 _methodId);
[codex:413513] 2128:    event AddedExclusiveMethod(address _token, bytes4 _methodId);
[codex:413513] 2129:    event RemovedExclusiveMethod(address _token, bytes4 _methodId);
[codex:413513] 2133:    /// @dev these are the methods whitelisted by default in executeTransaction() for protected tokens
[codex:413513] 2151:    // @notice specifies whitelisted methodIds for protected tokens in wallet's excuteTranaction() e.g. keccak256(transfer(address,uint256)) => 0xa9059cbb
[codex:413513] 2152:    mapping(bytes4 => bool) private _methodIdWhitelist;
[codex:413513] 2173:        //a priori ERC20 whitelisted methods
[codex:413513] 2174:        _methodIdWhitelist[_APPROVE] = true;
[codex:413513] 2175:        _methodIdWhitelist[_BURN] = true;
[codex:413513] 2176:        _methodIdWhitelist[_TRANSFER] = true;
[codex:413513] 2177:        _methodIdWhitelist[_TRANSFER_FROM] = true;
[codex:413513] 2251:    /// @notice based on the method it returns the recipient address and amount/value, ERC20 specific.
[codex:413513] 2254:        // Require that there exist enough bytes for encoding at least a method signature + data in the transaction payload:
[codex:413513] 2256:        require(_data.length >= 4 + 32, "not enough method-encoding bytes");
[codex:413513] 2257:        // Get the method signature
[codex:413513] 2259:        // Check if method Id is supported
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Analyzing potential vulnerabilities and file completeness**
[codex:413513] exec
[codex:413513] /bin/bash -lc 'rg -n "external payable|public payable|payable" contracts/Contract.sol' in /tmp/codex-multi-6gmqrfxp succeeded in 7ms:
[codex:413513] 294:    function _safeTransfer(address payable _to, address _asset, uint _amount) internal {
[codex:413513] 403:    address payable private _owner;
[codex:413513] 407:    constructor(address payable _account_, bool _transferable_) internal {
[codex:413513] 426:    function transferOwnership(address payable _account, bool _transferable) external onlyOwner {
[codex:413513] 463:    function owner() public view returns (address payable) {
[codex:413513] 533:    constructor(address payable _ownerAddress_) Ownable(_ownerAddress_, false) public {}
[codex:413513] 657:    function claim(address payable _to, address _asset, uint _amount) external onlyAdmin notStopped {
[codex:413513] 2314:    function claim(address payable _to, address _asset, uint _amount) external onlyAdmin {
[codex:413513] 2582:    function() external payable {
[codex:413513] 2589:    function burn(address payable _to, uint _amount) external onlyBurner returns (bool) {
[codex:413513] 2611:    function nonRedeemableTokenClaim(address payable _to, address[] calldata _nonRedeemableAddresses) external onlyAdmin returns (bool) {
[codex:413513] 
[codex:413513] thinking
[codex:413513] **Assessing exploitable vulnerabilities**
[codex:413513] codex
[codex:413513] {"no_findings":true,"summary":"No concrete, exploitable paths to attacker profit identified after reviewing `AUDIT_BUNDLE.txt`.","findings":[]}
[codex:413513] tokens used
[codex:413513] 53,108
[codex:413513] {"no_findings":true,"summary":"No concrete, exploitable paths to attacker profit identified after reviewing `AUDIT_BUNDLE.txt`.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T21:37:14.298246+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable paths to attacker profit identified after reviewing `AUDIT_BUNDLE.txt`.",
    "raw_final": {
        "summary": "No concrete, exploitable paths to attacker profit identified after reviewing `AUDIT_BUNDLE.txt`.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
8
EXT*/BALANCE
10
Total opcodes
2363
Flags
heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0055
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x27810b6e
00000019: EQ
0000001a: PUSH2 0x0091
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x40f6a70f
00000024: EQ
00000025: PUSH2 0x00c2
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x7d73b231
0000002f: EQ
00000030: PUSH2 0x0163
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0x877337b0
0000003a: EQ
0000003b: PUSH2 0x0178
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x9dc29fac
00000045: EQ
00000046: PUSH2 0x019f
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xe2b4ce97
00000050: EQ
00000051: PUSH2 0x01d8
00000054: JUMPI
00000055: JUMPDEST
00000056: PUSH1 0x40
00000058: DUP1
00000059: MLOAD
0000005a: CALLER
0000005b: DUP2
0000005c: MSTORE
0000005d: CALLVALUE
0000005e: PUSH1 0x20
00000060: DUP3
00000061: ADD
00000062: MSTORE
00000063: DUP2
00000064: MLOAD
00000065: PUSH32 0x88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874
00000086: SWAP3
00000087: SWAP2
00000088: DUP2
00000089: SWAP1
0000008a: SUB
0000008b: SWAP1
0000008c: SWAP2
0000008d: ADD
0000008e: SWAP1
0000008f: LOG1
00000090: STOP
00000091: JUMPDEST
00000092: CALLVALUE
00000093: DUP1
00000094: ISZERO
00000095: PUSH2 0x009d
00000098: JUMPI
00000099: PUSH1 0x00
0000009b: DUP1
0000009c: REVERT
0000009d: JUMPDEST
0000009e: POP
0000009f: PUSH2 0x00a6
000000a2: PUSH2 0x01ed
000000a5: JUMP
000000a6: JUMPDEST
000000a7: PUSH1 0x40
000000a9: DUP1
000000aa: MLOAD
000000ab: PUSH1 0x01
000000ad: PUSH1 0x01
000000af: PUSH1 0xa0
000000b1: SHL
000000b2: SUB
000000b3: SWAP1
000000b4: SWAP3
000000b5: AND
000000b6: DUP3
000000b7: MSTORE
000000b8: MLOAD
000000b9: SWAP1
000000ba: DUP2
000000bb: SWAP1
000000bc: SUB
000000bd: PUSH1 0x20
000000bf: ADD
000000c0: SWAP1
000000c1: RETURN
000000c2: JUMPDEST
000000c3: CALLVALUE
000000c4: DUP1
000000c5: ISZERO
000000c6: PUSH2 0x00ce
000000c9: JUMPI
000000ca: PUSH1 0x00
000000cc: DUP1
000000cd: REVERT
000000ce: JUMPDEST
000000cf: POP
000000d0: PUSH2 0x014f
000000d3: PUSH1 0x04
000000d5: DUP1
000000d6: CALLDATASIZE
000000d7: SUB
000000d8: PUSH1 0x40
000000da: DUP2
000000db: LT
000000dc: ISZERO
000000dd: PUSH2 0x00e5
000000e0: JUMPI
000000e1: PUSH1 0x00
000000e3: DUP1
000000e4: REVERT
000000e5: JUMPDEST
000000e6: PUSH1 0x01
000000e8: PUSH1 0x01
000000ea: PUSH1 0xa0
000000ec: SHL
000000ed: SUB
000000ee: DUP3
000000ef: CALLDATALOAD
000000f0: AND
000000f1: SWAP2
000000f2: SWAP1
000000f3: DUP2
000000f4: ADD
000000f5: SWAP1
000000f6: PUSH1 0x40
000000f8: DUP2
000000f9: ADD
000000fa: PUSH1 0x20
000000fc: DUP3
000000fd: ADD
000000fe: CALLDATALOAD
000000ff: PUSH5 0x0100000000
00000105: DUP2
00000106: GT
00000107: ISZERO
00000108: PUSH2 0x0110
0000010b: JUMPI
0000010c: PUSH1 0x00
0000010e: DUP1
0000010f: REVERT
00000110: JUMPDEST
00000111: DUP3
00000112: ADD
00000113: DUP4
00000114: PUSH1 0x20
00000116: DUP3
00000117: ADD
00000118: GT
00000119: ISZERO
0000011a: PUSH2 0x0122
0000011d: JUMPI
0000011e: PUSH1 0x00
00000120: DUP1
00000121: REVERT
00000122: JUMPDEST
00000123: DUP1
00000124: CALLDATALOAD
00000125: SWAP1
00000126: PUSH1 0x20
00000128: ADD
00000129: SWAP2
0000012a: DUP5
0000012b: PUSH1 0x20
0000012d: DUP4
0000012e: MUL
0000012f: DUP5
00000130: ADD
00000131: GT
00000132: PUSH5 0x0100000000
00000138: DUP4
00000139: GT
0000013a: OR
0000013b: ISZERO
0000013c: PUSH2 0x0144
0000013f: JUMPI
00000140: PUSH1 0x00
00000142: DUP1
00000143: REVERT
00000144: JUMPDEST
00000145: POP
00000146: SWAP1
00000147: SWAP3
00000148: POP
00000149: SWAP1
0000014a: POP
0000014b: PUSH2 0x01fc
0000014e: JUMP
0000014f: JUMPDEST
00000150: PUSH1 0x40
00000152: DUP1
00000153: MLOAD
00000154: SWAP2
00000155: ISZERO
00000156: ISZERO
00000157: DUP3
00000158: MSTORE
00000159: MLOAD
0000015a: SWAP1
0000015b: DUP2
0000015c: SWAP1
0000015d: SUB
0000015e: PUSH1 0x20
00000160: ADD
00000161: SWAP1
00000162: RETURN
00000163: JUMPDEST
00000164: CALLVALUE
00000165: DUP1
00000166: ISZERO
00000167: PUSH2 0x016f
0000016a: JUMPI
0000016b: PUSH1 0x00
0000016d: DUP1
0000016e: REVERT
0000016f: JUMPDEST
00000170: POP
00000171: PUSH2 0x00a6
00000174: PUSH2 0x039f
00000177: JUMP
00000178: JUMPDEST
00000179: CALLVALUE
0000017a: DUP1
0000017b: ISZERO
0000017c: PUSH2 0x0184
0000017f: JUMPI
00000180: PUSH1 0x00
00000182: DUP1
00000183: REVERT
00000184: JUMPDEST
00000185: POP
00000186: PUSH2 0x018d
00000189: PUSH2 0x03ae
0000018c: JUMP
0000018d: JUMPDEST
0000018e: PUSH1 0x40
00000190: DUP1
00000191: MLOAD
00000192: SWAP2
00000193: DUP3
00000194: MSTORE
00000195: MLOAD
00000196: SWAP1
00000197: DUP2
00000198: SWAP1
00000199: SUB
0000019a: PUSH1 0x20
0000019c: ADD
0000019d: SWAP1
0000019e: RETURN
0000019f: JUMPDEST
000001a0: CALLVALUE
000001a1: DUP1
000001a2: ISZERO
000001a3: PUSH2 0x01ab
000001a6: JUMPI
000001a7: PUSH1 0x00
000001a9: DUP1
000001aa: REVERT
000001ab: JUMPDEST
000001ac: POP
000001ad: PUSH2 0x014f
000001b0: PUSH1 0x04
000001b2: DUP1
000001b3: CALLDATASIZE
000001b4: SUB
000001b5: PUSH1 0x40
000001b7: DUP2
000001b8: LT
000001b9: ISZERO
000001ba: PUSH2 0x01c2
000001bd: JUMPI
000001be: PUSH1 0x00
000001c0: DUP1
000001c1: REVERT
000001c2: JUMPDEST
000001c3: POP
000001c4: PUSH1 0x01
000001c6: PUSH1 0x01
000001c8: PUSH1 0xa0
000001ca: SHL
000001cb: SUB
000001cc: DUP2
000001cd: CALLDATALOAD
000001ce: AND
000001cf: SWAP1
000001d0: PUSH1 0x20
000001d2: ADD
000001d3: CALLDATALOAD
000001d4: PUSH2 0x03b4
000001d7: JUMP
000001d8: JUMPDEST
000001d9: CALLVALUE
000001da: DUP1
000001db: ISZERO
000001dc: PUSH2 0x01e4
000001df: JUMPI
000001e0: PUSH1 0x00
000001e2: DUP1
000001e3: REVERT
000001e4: JUMPDEST
000001e5: POP
000001e6: PUSH2 0x018d
000001e9: PUSH2 0x05b3
000001ec: JUMP
000001ed: JUMPDEST
000001ee: PUSH1 0x04
000001f0: SLOAD
000001f1: PUSH1 0x01
000001f3: PUSH1 0x01
000001f5: PUSH1 0xa0
000001f7: SHL
000001f8: SUB
000001f9: AND
000001fa: SWAP1
000001fb: JUMP
000001fc: JUMPDEST
000001fd: PUSH1 0x00
000001ff: PUSH2 0x0207
00000202: CALLER
00000203: PUSH2 0x05b9
00000206: JUMP
00000207: JUMPDEST
00000208: PUSH2 0x0251
0000020b: JUMPI
0000020c: PUSH1 0x40
0000020e: DUP1
0000020f: MLOAD
00000210: PUSH3 0x461bcd
00000214: PUSH1 0xe5
00000216: SHL
00000217: DUP2
00000218: MSTORE
00000219: PUSH1 0x20
0000021b: PUSH1 0x04
0000021d: DUP3
0000021e: ADD
0000021f: MSTORE
00000220: PUSH1 0x16
00000222: PUSH1 0x24
00000224: DUP3
00000225: ADD
00000226: MSTORE
00000227: PUSH22 0x39b2b73232b91034b9903737ba1030b71030b236b4b7
0000023e: PUSH1 0x51
00000240: SHL
00000241: PUSH1 0x44
00000243: DUP3
00000244: ADD
00000245: MSTORE
00000246: SWAP1
00000247: MLOAD
00000248: SWAP1
00000249: DUP2
0000024a: SWAP1
0000024b: SUB
0000024c: PUSH1 0x64
0000024e: ADD
0000024f: SWAP1
00000250: REVERT
00000251: JUMPDEST
00000252: PUSH1 0x00
00000254: JUMPDEST
00000255: DUP3
00000256: DUP2
00000257: LT
00000258: ISZERO
00000259: PUSH2 0x0394
0000025c: JUMPI
0000025d: PUSH2 0x0280
00000260: DUP5
00000261: DUP5
00000262: DUP4
00000263: DUP2
00000264: DUP2
00000265: LT
00000266: PUSH2 0x026b
00000269: JUMPI
0000026a: INVALID
0000026b: JUMPDEST
0000026c: SWAP1
0000026d: POP
0000026e: PUSH1 0x20
00000270: MUL
00000271: ADD
00000272: CALLDATALOAD
00000273: PUSH1 0x01
00000275: PUSH1 0x01
00000277: PUSH1 0xa0
00000279: SHL
0000027a: SUB
0000027b: AND
0000027c: PUSH2 0x064d
0000027f: JUMP
00000280: JUMPDEST
00000281: ISZERO
00000282: PUSH2 0x02d2
00000285: JUMPI
00000286: PUSH1 0x40
00000288: DUP1
00000289: MLOAD
0000028a: PUSH3 0x461bcd
0000028e: PUSH1 0xe5
00000290: SHL
00000291: DUP2
00000292: MSTORE
00000293: PUSH1 0x20
00000295: PUSH1 0x04
00000297: DUP3
00000298: ADD
00000299: MSTORE
0000029a: PUSH1 0x1d
0000029c: PUSH1 0x24
0000029e: DUP3
0000029f: ADD
000002a0: MSTORE
000002a1: PUSH32 0x72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000
000002c2: PUSH1 0x44
000002c4: DUP3
000002c5: ADD
000002c6: MSTORE
000002c7: SWAP1
000002c8: MLOAD
000002c9: SWAP1
000002ca: DUP2
000002cb: SWAP1
000002cc: SUB
000002cd: PUSH1 0x64
000002cf: ADD
000002d0: SWAP1
000002d1: REVERT
000002d2: JUMPDEST
000002d3: PUSH1 0x00
000002d5: PUSH2 0x02f9
000002d8: ADDRESS
000002d9: DUP7
000002da: DUP7
000002db: DUP6
000002dc: DUP2
000002dd: DUP2
000002de: LT
000002df: PUSH2 0x02e4
000002e2: JUMPI
000002e3: INVALID
000002e4: JUMPDEST
000002e5: SWAP1
000002e6: POP
000002e7: PUSH1 0x20
000002e9: MUL
000002ea: ADD
000002eb: CALLDATALOAD
000002ec: PUSH1 0x01
000002ee: PUSH1 0x01
000002f0: PUSH1 0xa0
000002f2: SHL
000002f3: SUB
000002f4: AND
000002f5: PUSH2 0x0666
000002f8: JUMP
000002f9: JUMPDEST
000002fa: SWAP1
000002fb: POP
000002fc: DUP1
000002fd: ISZERO
000002fe: PUSH2 0x038b
00000301: JUMPI
00000302: PUSH2 0x0327
00000305: DUP7
00000306: DUP7
00000307: DUP7
00000308: DUP6
00000309: DUP2
0000030a: DUP2
0000030b: LT
0000030c: PUSH2 0x0311
0000030f: JUMPI
00000310: INVALID
00000311: JUMPDEST
00000312: SWAP1
00000313: POP
00000314: PUSH1 0x20
00000316: MUL
00000317: ADD
00000318: CALLDATALOAD
00000319: PUSH1 0x01
0000031b: PUSH1 0x01
0000031d: PUSH1 0xa0
0000031f: SHL
00000320: SUB
00000321: AND
00000322: DUP4
00000323: PUSH2 0x0711
00000326: JUMP
00000327: JUMPDEST
00000328: PUSH32 0xf7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683
00000349: DUP7
0000034a: DUP7
0000034b: DUP7
0000034c: DUP6
0000034d: DUP2
0000034e: DUP2
0000034f: LT
00000350: PUSH2 0x0355
00000353: JUMPI
00000354: INVALID
00000355: JUMPDEST
00000356: PUSH1 0x40
00000358: DUP1
00000359: MLOAD
0000035a: PUSH1 0x01
0000035c: PUSH1 0x01
0000035e: PUSH1 0xa0
00000360: SHL
00000361: SUB
00000362: SWAP6
00000363: DUP7
00000364: AND
00000365: DUP2
00000366: MSTORE
00000367: PUSH1 0x20
00000369: SWAP3
0000036a: DUP4
0000036b: MUL
0000036c: SWAP5
0000036d: SWAP1
0000036e: SWAP5
0000036f: ADD
00000370: CALLDATALOAD
00000371: SWAP5
00000372: SWAP1
00000373: SWAP5
00000374: AND
00000375: SWAP1
00000376: DUP4
00000377: ADD
00000378: MSTORE
00000379: POP
0000037a: DUP1
0000037b: DUP3
0000037c: ADD
0000037d: DUP5
0000037e: SWAP1
0000037f: MSTORE
00000380: SWAP1
00000381: MLOAD
00000382: SWAP1
00000383: DUP2
00000384: SWAP1
00000385: SUB
00000386: PUSH1 0x60
00000388: ADD
00000389: SWAP1
0000038a: LOG1
0000038b: JUMPDEST
0000038c: POP
0000038d: PUSH1 0x01
0000038f: ADD
00000390: PUSH2 0x0254
00000393: JUMP
00000394: JUMPDEST
00000395: POP
00000396: PUSH1 0x01
00000398: SWAP5
00000399: SWAP4
0000039a: POP
0000039b: POP
0000039c: POP
0000039d: POP
0000039e: JUMP
0000039f: JUMPDEST
000003a0: PUSH1 0x01
000003a2: SLOAD
000003a3: PUSH1 0x01
000003a5: PUSH1 0x01
000003a7: PUSH1 0xa0
000003a9: SHL
000003aa: SUB
000003ab: AND
000003ac: SWAP1
000003ad: JUMP
000003ae: JUMPDEST
000003af: PUSH1 0x03
000003b1: SLOAD
000003b2: SWAP1
000003b3: JUMP
000003b4: JUMPDEST
000003b5: PUSH1 0x04
000003b7: SLOAD
000003b8: PUSH1 0x00
000003ba: SWAP1
000003bb: PUSH1 0x01
000003bd: PUSH1 0x01
000003bf: PUSH1 0xa0
000003c1: SHL
000003c2: SUB
000003c3: AND
000003c4: CALLER
000003c5: EQ
000003c6: PUSH2 0x0400
000003c9: JUMPI
000003ca: PUSH1 0x40
000003cc: MLOAD
000003cd: PUSH3 0x461bcd
000003d1: PUSH1 0xe5
000003d3: SHL
000003d4: DUP2
000003d5: MSTORE
000003d6: PUSH1 0x04
000003d8: ADD
000003d9: DUP1
000003da: DUP1
000003db: PUSH1 0x20
000003dd: ADD
000003de: DUP3
000003df: DUP2
000003e0: SUB
000003e1: DUP3
000003e2: MSTORE
000003e3: PUSH1 0x21
000003e5: DUP2
000003e6: MSTORE
000003e7: PUSH1 0x20
000003e9: ADD
000003ea: DUP1
000003eb: PUSH2 0x0dbf
000003ee: PUSH1 0x21
000003f0: SWAP2
000003f1: CODECOPY
000003f2: PUSH1 0x40
000003f4: ADD
000003f5: SWAP2
000003f6: POP
000003f7: POP
000003f8: PUSH1 0x40
000003fa: MLOAD
000003fb: DUP1
000003fc: SWAP2
000003fd: SUB
000003fe: SWAP1
000003ff: REVERT
00000400: JUMPDEST
00000401: DUP2
00000402: PUSH2 0x040d
00000405: JUMPI
00000406: POP
00000407: PUSH1 0x01
00000409: PUSH2 0x05ad
0000040c: JUMP
0000040d: JUMPDEST
0000040e: PUSH1 0x00
00000410: PUSH2 0x0499
00000413: DUP4
00000414: PUSH1 0x04
00000416: PUSH1 0x00
00000418: SWAP1
00000419: SLOAD
0000041a: SWAP1
0000041b: PUSH2 0x0100
0000041e: EXP
0000041f: SWAP1
00000420: DIV
00000421: PUSH1 0x01
00000423: PUSH1 0x01
00000425: PUSH1 0xa0
00000427: SHL
00000428: SUB
00000429: AND
0000042a: PUSH1 0x01
0000042c: PUSH1 0x01
0000042e: PUSH1 0xa0
00000430: SHL
00000431: SUB
00000432: AND
00000433: PUSH4 0x771282f6
00000438: PUSH1 0x40
0000043a: MLOAD
0000043b: DUP2
0000043c: PUSH4 0xffffffff
00000441: AND
00000442: PUSH1 0xe0
00000444: SHL
00000445: DUP2
00000446: MSTORE
00000447: PUSH1 0x04
00000449: ADD
0000044a: PUSH1 0x20
0000044c: PUSH1 0x40
0000044e: MLOAD
0000044f: DUP1
00000450: DUP4
00000451: SUB
00000452: DUP2
00000453: DUP7
00000454: DUP1
00000455: EXTCODESIZE
00000456: ISZERO
00000457: DUP1
00000458: ISZERO
00000459: PUSH2 0x0461
0000045c: JUMPI
0000045d: PUSH1 0x00
0000045f: DUP1
00000460: REVERT
00000461: JUMPDEST
00000462: POP
00000463: GAS
00000464: STATICCALL
00000465: ISZERO
00000466: DUP1
00000467: ISZERO
00000468: PUSH2 0x0475
0000046b: JUMPI
0000046c: RETURNDATASIZE
0000046d: PUSH1 0x00
0000046f: DUP1
00000470: RETURNDATACOPY
00000471: RETURNDATASIZE
00000472: PUSH1 0x00
00000474: REVERT
00000475: JUMPDEST
00000476: POP
00000477: POP
00000478: POP
00000479: POP
0000047a: PUSH1 0x40
0000047c: MLOAD
0000047d: RETURNDATASIZE
0000047e: PUSH1 0x20
00000480: DUP2
00000481: LT
00000482: ISZERO
00000483: PUSH2 0x048b
00000486: JUMPI
00000487: PUSH1 0x00
00000489: DUP1
0000048a: REVERT
0000048b: JUMPDEST
0000048c: POP
0000048d: MLOAD
0000048e: SWAP1
0000048f: PUSH4 0xffffffff
00000494: PUSH2 0x077a
00000497: AND
00000498: JUMP
00000499: JUMPDEST
0000049a: SWAP1
0000049b: POP
0000049c: PUSH1 0x60
0000049e: PUSH2 0x04a5
000004a1: PUSH2 0x07db
000004a4: JUMP
000004a5: JUMPDEST
000004a6: SWAP1
000004a7: POP
000004a8: PUSH1 0x00
000004aa: JUMPDEST
000004ab: DUP2
000004ac: MLOAD
000004ad: DUP2
000004ae: LT
000004af: ISZERO
000004b0: PUSH2 0x05a5
000004b3: JUMPI
000004b4: PUSH1 0x00
000004b6: PUSH2 0x04d2
000004b9: ADDRESS
000004ba: DUP5
000004bb: DUP5
000004bc: DUP2
000004bd: MLOAD
000004be: DUP2
000004bf: LT
000004c0: PUSH2 0x04c5
000004c3: JUMPI
000004c4: INVALID
000004c5: JUMPDEST
000004c6: PUSH1 0x20
000004c8: MUL
000004c9: PUSH1 0x20
000004cb: ADD
000004cc: ADD
000004cd: MLOAD
000004ce: PUSH2 0x0666
000004d1: JUMP
000004d2: JUMPDEST
000004d3: SWAP1
000004d4: POP
000004d5: DUP1
000004d6: ISZERO
000004d7: PUSH2 0x059c
000004da: JUMPI
000004db: PUSH1 0x00
000004dd: PUSH2 0x04fc
000004e0: DUP6
000004e1: PUSH2 0x04f0
000004e4: DUP5
000004e5: DUP11
000004e6: PUSH4 0xffffffff
000004eb: PUSH2 0x08b0
000004ee: AND
000004ef: JUMP
000004f0: JUMPDEST
000004f1: SWAP1
000004f2: PUSH4 0xffffffff
000004f7: PUSH2 0x0909
000004fa: AND
000004fb: JUMP
000004fc: JUMPDEST
000004fd: SWAP1
000004fe: POP
000004ff: PUSH2 0x051c
00000502: DUP9
00000503: DUP6
00000504: DUP6
00000505: DUP2
00000506: MLOAD
00000507: DUP2
00000508: LT
00000509: PUSH2 0x050e
0000050c: JUMPI
0000050d: INVALID
0000050e: JUMPDEST
0000050f: PUSH1 0x20
00000511: MUL
00000512: PUSH1 0x20
00000514: ADD
00000515: ADD
00000516: MLOAD
00000517: DUP4
00000518: PUSH2 0x0711
0000051b: JUMP
0000051c: JUMPDEST
0000051d: PUSH32 0x43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c56
0000053e: DUP9
0000053f: DUP6
00000540: DUP6
00000541: DUP2
00000542: MLOAD
00000543: DUP2
00000544: LT
00000545: PUSH2 0x054a
00000548: JUMPI
00000549: INVALID
0000054a: JUMPDEST
0000054b: PUSH1 0x20
0000054d: MUL
0000054e: PUSH1 0x20
00000550: ADD
00000551: ADD
00000552: MLOAD
00000553: DUP4
00000554: PUSH1 0x40
00000556: MLOAD
00000557: DUP1
00000558: DUP5
00000559: PUSH1 0x01
0000055b: PUSH1 0x01
0000055d: PUSH1 0xa0
0000055f: SHL
00000560: SUB
00000561: AND
00000562: PUSH1 0x01
00000564: PUSH1 0x01
00000566: PUSH1 0xa0
00000568: SHL
00000569: SUB
0000056a: AND
0000056b: DUP2
0000056c: MSTORE
0000056d: PUSH1 0x20
0000056f: ADD
00000570: DUP4
00000571: PUSH1 0x01
00000573: PUSH1 0x01
00000575: PUSH1 0xa0
00000577: SHL
00000578: SUB
00000579: AND
0000057a: PUSH1 0x01
0000057c: PUSH1 0x01
0000057e: PUSH1 0xa0
00000580: SHL
00000581: SUB
00000582: AND
00000583: DUP2
00000584: MSTORE
00000585: PUSH1 0x20
00000587: ADD
00000588: DUP3
00000589: DUP2
0000058a: MSTORE
0000058b: PUSH1 0x20
0000058d: ADD
0000058e: SWAP4
0000058f: POP
00000590: POP
00000591: POP
00000592: POP
00000593: PUSH1 0x40
00000595: MLOAD
00000596: DUP1
00000597: SWAP2
00000598: SUB
00000599: SWAP1
0000059a: LOG1
0000059b: POP
0000059c: JUMPDEST
0000059d: POP
0000059e: PUSH1 0x01
000005a0: ADD
000005a1: PUSH2 0x04aa
000005a4: JUMP
000005a5: JUMPDEST
000005a6: POP
000005a7: PUSH1 0x01
000005a9: SWAP3
000005aa: POP
000005ab: POP
000005ac: POP
000005ad: JUMPDEST
000005ae: SWAP3
000005af: SWAP2
000005b0: POP
000005b1: POP
000005b2: JUMP
000005b3: JUMPDEST
000005b4: PUSH1 0x02
000005b6: SLOAD
000005b7: SWAP1
000005b8: JUMP
000005b9: JUMPDEST
000005ba: PUSH1 0x00
000005bc: PUSH2 0x05c6
000005bf: PUSH1 0x02
000005c1: SLOAD
000005c2: PUSH2 0x0973
000005c5: JUMP
000005c6: JUMPDEST
000005c7: PUSH1 0x01
000005c9: PUSH1 0x01
000005cb: PUSH1 0xa0
000005cd: SHL
000005ce: SUB
000005cf: AND
000005d0: PUSH4 0x24d7806c
000005d5: DUP4
000005d6: PUSH1 0x40
000005d8: MLOAD
000005d9: DUP3
000005da: PUSH4 0xffffffff
000005df: AND
000005e0: PUSH1 0xe0
000005e2: SHL
000005e3: DUP2
000005e4: MSTORE
000005e5: PUSH1 0x04
000005e7: ADD
000005e8: DUP1
000005e9: DUP3
000005ea: PUSH1 0x01
000005ec: PUSH1 0x01
000005ee: PUSH1 0xa0
000005f0: SHL
000005f1: SUB
000005f2: AND
000005f3: PUSH1 0x01
000005f5: PUSH1 0x01
000005f7: PUSH1 0xa0
000005f9: SHL
000005fa: SUB
000005fb: AND
000005fc: DUP2
000005fd: MSTORE
000005fe: PUSH1 0x20
00000600: ADD
00000601: SWAP2
00000602: POP
00000603: POP
00000604: PUSH1 0x20
00000606: PUSH1 0x40
00000608: MLOAD
00000609: DUP1
0000060a: DUP4
0000060b: SUB
0000060c: DUP2
0000060d: DUP7
0000060e: DUP1
0000060f: EXTCODESIZE
00000610: ISZERO
00000611: DUP1
00000612: ISZERO
00000613: PUSH2 0x061b
00000616: JUMPI
00000617: PUSH1 0x00
00000619: DUP1
0000061a: REVERT
0000061b: JUMPDEST
0000061c: POP
0000061d: GAS
0000061e: STATICCALL
0000061f: ISZERO
00000620: DUP1
00000621: ISZERO
00000622: PUSH2 0x062f
00000625: JUMPI
00000626: RETURNDATASIZE
00000627: PUSH1 0x00
00000629: DUP1
0000062a: RETURNDATACOPY
0000062b: RETURNDATASIZE
0000062c: PUSH1 0x00
0000062e: REVERT
0000062f: JUMPDEST
00000630: POP
00000631: POP
00000632: POP
00000633: POP
00000634: PUSH1 0x40
00000636: MLOAD
00000637: RETURNDATASIZE
00000638: PUSH1 0x20
0000063a: DUP2
0000063b: LT
0000063c: ISZERO
0000063d: PUSH2 0x0645
00000640: JUMPI
00000641: PUSH1 0x00
00000643: DUP1
00000644: REVERT
00000645: JUMPDEST
00000646: POP
00000647: MLOAD
00000648: SWAP3
00000649: SWAP2
0000064a: POP
0000064b: POP
0000064c: JUMP
0000064d: JUMPDEST
0000064e: PUSH1 0x00
00000650: DUP1
00000651: PUSH2 0x0659
00000654: DUP4
00000655: PUSH2 0x0a35
00000658: JUMP
00000659: JUMPDEST
0000065a: POP
0000065b: SWAP9
0000065c: SWAP8
0000065d: POP
0000065e: POP
0000065f: POP
00000660: POP
00000661: POP
00000662: POP
00000663: POP
00000664: POP
00000665: JUMP
00000666: JUMPDEST
00000667: PUSH1 0x00
00000669: PUSH1 0x01
0000066b: PUSH1 0x01
0000066d: PUSH1 0xa0
0000066f: SHL
00000670: SUB
00000671: DUP3
00000672: AND
00000673: ISZERO
00000674: PUSH2 0x0700
00000677: JUMPI
00000678: DUP2
00000679: PUSH1 0x01
0000067b: PUSH1 0x01
0000067d: PUSH1 0xa0
0000067f: SHL
00000680: SUB
00000681: AND
00000682: PUSH4 0x70a08231
00000687: DUP5
00000688: PUSH1 0x40
0000068a: MLOAD
0000068b: DUP3
0000068c: PUSH4 0xffffffff
00000691: AND
00000692: PUSH1 0xe0
00000694: SHL
00000695: DUP2
00000696: MSTORE
00000697: PUSH1 0x04
00000699: ADD
0000069a: DUP1
0000069b: DUP3
0000069c: PUSH1 0x01
0000069e: PUSH1 0x01
000006a0: PUSH1 0xa0
000006a2: SHL
000006a3: SUB
000006a4: AND
000006a5: PUSH1 0x01
000006a7: PUSH1 0x01
000006a9: PUSH1 0xa0
000006ab: SHL
000006ac: SUB
000006ad: AND
000006ae: DUP2
000006af: MSTORE
000006b0: PUSH1 0x20
000006b2: ADD
000006b3: SWAP2
000006b4: POP
000006b5: POP
000006b6: PUSH1 0x20
000006b8: PUSH1 0x40
000006ba: MLOAD
000006bb: DUP1
000006bc: DUP4
000006bd: SUB
000006be: DUP2
000006bf: DUP7
000006c0: DUP1
000006c1: EXTCODESIZE
000006c2: ISZERO
000006c3: DUP1
000006c4: ISZERO
000006c5: PUSH2 0x06cd
000006c8: JUMPI
000006c9: PUSH1 0x00
000006cb: DUP1
000006cc: REVERT
000006cd: JUMPDEST
000006ce: POP
000006cf: GAS
000006d0: STATICCALL
000006d1: ISZERO
000006d2: DUP1
000006d3: ISZERO
000006d4: PUSH2 0x06e1
000006d7: JUMPI
000006d8: RETURNDATASIZE
000006d9: PUSH1 0x00
000006db: DUP1
000006dc: RETURNDATACOPY
000006dd: RETURNDATASIZE
000006de: PUSH1 0x00
000006e0: REVERT
000006e1: JUMPDEST
000006e2: POP
000006e3: POP
000006e4: POP
000006e5: POP
000006e6: PUSH1 0x40
000006e8: MLOAD
000006e9: RETURNDATASIZE
000006ea: PUSH1 0x20
000006ec: DUP2
000006ed: LT
000006ee: ISZERO
000006ef: PUSH2 0x06f7
000006f2: JUMPI
000006f3: PUSH1 0x00
000006f5: DUP1
000006f6: REVERT
000006f7: JUMPDEST
000006f8: POP
000006f9: MLOAD
000006fa: SWAP1
000006fb: POP
000006fc: PUSH2 0x05ad
000006ff: JUMP
00000700: JUMPDEST
00000701: POP
00000702: PUSH1 0x01
00000704: PUSH1 0x01
00000706: PUSH1 0xa0
00000708: SHL
00000709: SUB
0000070a: DUP3
0000070b: AND
0000070c: BALANCE
0000070d: PUSH2 0x05ad
00000710: JUMP
00000711: JUMPDEST
00000712: PUSH1 0x01
00000714: PUSH1 0x01
00000716: PUSH1 0xa0
00000718: SHL
00000719: SUB
0000071a: DUP3
0000071b: AND
0000071c: PUSH2 0x075b
0000071f: JUMPI
00000720: PUSH1 0x40
00000722: MLOAD
00000723: PUSH1 0x01
00000725: PUSH1 0x01
00000727: PUSH1 0xa0
00000729: SHL
0000072a: SUB
0000072b: DUP5
0000072c: AND
0000072d: SWAP1
0000072e: DUP3
0000072f: ISZERO
00000730: PUSH2 0x08fc
00000733: MUL
00000734: SWAP1
00000735: DUP4
00000736: SWAP1
00000737: PUSH1 0x00
00000739: DUP2
0000073a: DUP2
0000073b: DUP2
0000073c: DUP6
0000073d: DUP9
0000073e: DUP9
0000073f: CALL
00000740: SWAP4
00000741: POP
00000742: POP
00000743: POP
00000744: POP
00000745: ISZERO
00000746: DUP1
00000747: ISZERO
00000748: PUSH2 0x0755
0000074b: JUMPI
0000074c: RETURNDATASIZE
0000074d: PUSH1 0x00
0000074f: DUP1
00000750: RETURNDATACOPY
00000751: RETURNDATASIZE
00000752: PUSH1 0x00
00000754: REVERT
00000755: JUMPDEST
00000756: POP
00000757: PUSH2 0x0775
0000075a: JUMP
0000075b: JUMPDEST
0000075c: PUSH2 0x0775
0000075f: PUSH1 0x01
00000761: PUSH1 0x01
00000763: PUSH1 0xa0
00000765: SHL
00000766: SUB
00000767: DUP4
00000768: AND
00000769: DUP5
0000076a: DUP4
0000076b: PUSH4 0xffffffff
00000770: PUSH2 0x0b62
00000773: AND
00000774: JUMP
00000775: JUMPDEST
00000776: POP
00000777: POP
00000778: POP
00000779: JUMP
0000077a: JUMPDEST
0000077b: PUSH1 0x00
0000077d: DUP3
0000077e: DUP3
0000077f: ADD
00000780: DUP4
00000781: DUP2
00000782: LT
00000783: ISZERO
00000784: PUSH2 0x07d4
00000787: JUMPI
00000788: PUSH1 0x40
0000078a: DUP1
0000078b: MLOAD
0000078c: PUSH3 0x461bcd
00000790: PUSH1 0xe5
00000792: SHL
00000793: DUP2
00000794: MSTORE
00000795: PUSH1 0x20
00000797: PUSH1 0x04
00000799: DUP3
0000079a: ADD
0000079b: MSTORE
0000079c: PUSH1 0x1b
0000079e: PUSH1 0x24
000007a0: DUP3
000007a1: ADD
000007a2: MSTORE
000007a3: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
000007c4: PUSH1 0x44
000007c6: DUP3
000007c7: ADD
000007c8: MSTORE
000007c9: SWAP1
000007ca: MLOAD
000007cb: SWAP1
000007cc: DUP2
000007cd: SWAP1
000007ce: SUB
000007cf: PUSH1 0x64
000007d1: ADD
000007d2: SWAP1
000007d3: REVERT
000007d4: JUMPDEST
000007d5: SWAP4
000007d6: SWAP3
000007d7: POP
000007d8: POP
000007d9: POP
000007da: JUMP
000007db: JUMPDEST
000007dc: PUSH1 0x60
000007de: PUSH2 0x07e8
000007e1: PUSH1 0x03
000007e3: SLOAD
000007e4: PUSH2 0x0973
000007e7: JUMP
000007e8: JUMPDEST
000007e9: PUSH1 0x01
000007eb: PUSH1 0x01
000007ed: PUSH1 0xa0
000007ef: SHL
000007f0: SUB
000007f1: AND
000007f2: PUSH4 0x44b049bc
000007f7: PUSH1 0x40
000007f9: MLOAD
000007fa: DUP2
000007fb: PUSH4 0xffffffff
00000800: AND
00000801: PUSH1 0xe0
00000803: SHL
00000804: DUP2
00000805: MSTORE
00000806: PUSH1 0x04
00000808: ADD
00000809: PUSH1 0x00
0000080b: PUSH1 0x40
0000080d: MLOAD
0000080e: DUP1
0000080f: DUP4
00000810: SUB
00000811: DUP2
00000812: DUP7
00000813: DUP1
00000814: EXTCODESIZE
00000815: ISZERO
00000816: DUP1
00000817: ISZERO
00000818: PUSH2 0x0820
0000081b: JUMPI
0000081c: PUSH1 0x00
0000081e: DUP1
0000081f: REVERT
00000820: JUMPDEST
00000821: POP
00000822: GAS
00000823: STATICCALL
00000824: ISZERO
00000825: DUP1
00000826: ISZERO
00000827: PUSH2 0x0834
0000082a: JUMPI
0000082b: RETURNDATASIZE
0000082c: PUSH1 0x00
0000082e: DUP1
0000082f: RETURNDATACOPY
00000830: RETURNDATASIZE
00000831: PUSH1 0x00
00000833: REVERT
00000834: JUMPDEST
00000835: POP
00000836: POP
00000837: POP
00000838: POP
00000839: PUSH1 0x40
0000083b: MLOAD
0000083c: RETURNDATASIZE
0000083d: PUSH1 0x00
0000083f: DUP3
00000840: RETURNDATACOPY
00000841: PUSH1 0x1f
00000843: RETURNDATASIZE
00000844: SWAP1
00000845: DUP2
00000846: ADD
00000847: PUSH1 0x1f
00000849: NOT
0000084a: AND
0000084b: DUP3
0000084c: ADD
0000084d: PUSH1 0x40
0000084f: MSTORE
00000850: PUSH1 0x20
00000852: DUP2
00000853: LT
00000854: ISZERO
00000855: PUSH2 0x085d
00000858: JUMPI
00000859: PUSH1 0x00
0000085b: DUP1
0000085c: REVERT
0000085d: JUMPDEST
0000085e: DUP2
0000085f: ADD
00000860: SWAP1
00000861: DUP1
00000862: DUP1
00000863: MLOAD
00000864: PUSH5 0x0100000000
0000086a: DUP2
0000086b: GT
0000086c: ISZERO
0000086d: PUSH2 0x0875
00000870: JUMPI
00000871: PUSH1 0x00
00000873: DUP1
00000874: REVERT
00000875: JUMPDEST
00000876: DUP3
00000877: ADD
00000878: PUSH1 0x20
0000087a: DUP2
0000087b: ADD
0000087c: DUP5
0000087d: DUP2
0000087e: GT
0000087f: ISZERO
00000880: PUSH2 0x0888
00000883: JUMPI
00000884: PUSH1 0x00
00000886: DUP1
00000887: REVERT
00000888: JUMPDEST
00000889: DUP2
0000088a: MLOAD
0000088b: DUP6
0000088c: PUSH1 0x20
0000088e: DUP3
0000088f: MUL
00000890: DUP4
00000891: ADD
00000892: GT
00000893: PUSH5 0x0100000000
00000899: DUP3
0000089a: GT
0000089b: OR
0000089c: ISZERO
0000089d: PUSH2 0x08a5
000008a0: JUMPI
000008a1: PUSH1 0x00
000008a3: DUP1
000008a4: REVERT
000008a5: JUMPDEST
000008a6: POP
000008a7: SWAP1
000008a8: SWAP5
000008a9: POP
000008aa: POP
000008ab: POP
000008ac: POP
000008ad: POP
000008ae: SWAP1
000008af: JUMP
000008b0: JUMPDEST
000008b1: PUSH1 0x00
000008b3: DUP3
000008b4: PUSH2 0x08bf
000008b7: JUMPI
000008b8: POP
000008b9: PUSH1 0x00
000008bb: PUSH2 0x05ad
000008be: JUMP
000008bf: JUMPDEST
000008c0: DUP3
000008c1: DUP3
000008c2: MUL
000008c3: DUP3
000008c4: DUP5
000008c5: DUP3
000008c6: DUP2
000008c7: PUSH2 0x08cc
000008ca: JUMPI
000008cb: INVALID
000008cc: JUMPDEST
000008cd: DIV
000008ce: EQ
000008cf: PUSH2 0x07d4
000008d2: JUMPI
000008d3: PUSH1 0x40
000008d5: MLOAD
000008d6: PUSH3 0x461bcd
000008da: PUSH1 0xe5
000008dc: SHL
000008dd: DUP2
000008de: MSTORE
000008df: PUSH1 0x04
000008e1: ADD
000008e2: DUP1
000008e3: DUP1
000008e4: PUSH1 0x20
000008e6: ADD
000008e7: DUP3
000008e8: DUP2
000008e9: SUB
000008ea: DUP3
000008eb: MSTORE
000008ec: PUSH1 0x21
000008ee: DUP2
000008ef: MSTORE
000008f0: PUSH1 0x20
000008f2: ADD
000008f3: DUP1
000008f4: PUSH2 0x0d74
000008f7: PUSH1 0x21
000008f9: SWAP2
000008fa: CODECOPY
000008fb: PUSH1 0x40
000008fd: ADD
000008fe: SWAP2
000008ff: POP
00000900: POP
00000901: PUSH1 0x40
00000903: MLOAD
00000904: DUP1
00000905: SWAP2
00000906: SUB
00000907: SWAP1
00000908: REVERT
00000909: JUMPDEST
0000090a: PUSH1 0x00
0000090c: DUP1
0000090d: DUP3
0000090e: GT
0000090f: PUSH2 0x095f
00000912: JUMPI
00000913: PUSH1 0x40
00000915: DUP1
00000916: MLOAD
00000917: PUSH3 0x461bcd
0000091b: PUSH1 0xe5
0000091d: SHL
0000091e: DUP2
0000091f: MSTORE
00000920: PUSH1 0x20
00000922: PUSH1 0x04
00000924: DUP3
00000925: ADD
00000926: MSTORE
00000927: PUSH1 0x1a
00000929: PUSH1 0x24
0000092b: DUP3
0000092c: ADD
0000092d: MSTORE
0000092e: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
0000094f: PUSH1 0x44
00000951: DUP3
00000952: ADD
00000953: MSTORE
00000954: SWAP1
00000955: MLOAD
00000956: SWAP1
00000957: DUP2
00000958: SWAP1
00000959: SUB
0000095a: PUSH1 0x64
0000095c: ADD
0000095d: SWAP1
0000095e: REVERT
0000095f: JUMPDEST
00000960: PUSH1 0x00
00000962: DUP3
00000963: DUP5
00000964: DUP2
00000965: PUSH2 0x096a
00000968: JUMPI
00000969: INVALID
0000096a: JUMPDEST
0000096b: DIV
0000096c: SWAP5
0000096d: SWAP4
0000096e: POP
0000096f: POP
00000970: POP
00000971: POP
00000972: JUMP
00000973: JUMPDEST
00000974: PUSH1 0x00
00000976: DUP1
00000977: SLOAD
00000978: PUSH1 0x40
0000097a: DUP1
0000097b: MLOAD
0000097c: PUSH4 0x0178b8bf
00000981: PUSH1 0xe0
00000983: SHL
00000984: DUP2
00000985: MSTORE
00000986: PUSH1 0x04
00000988: DUP2
00000989: ADD
0000098a: DUP6
0000098b: SWAP1
0000098c: MSTORE
0000098d: SWAP1
0000098e: MLOAD
0000098f: PUSH1 0x01
00000991: PUSH1 0x01
00000993: PUSH1 0xa0
00000995: SHL
00000996: SUB
00000997: SWAP1
00000998: SWAP3
00000999: AND
0000099a: SWAP2
0000099b: PUSH4 0x0178b8bf
000009a0: SWAP2
000009a1: PUSH1 0x24
000009a3: DUP1
000009a4: DUP3
000009a5: ADD
000009a6: SWAP3
000009a7: PUSH1 0x20
000009a9: SWAP3
000009aa: SWAP1
000009ab: SWAP2
000009ac: SWAP1
000009ad: DUP3
000009ae: SWAP1
000009af: SUB
000009b0: ADD
000009b1: DUP2
000009b2: DUP7
000009b3: DUP1
000009b4: EXTCODESIZE
000009b5: ISZERO
000009b6: DUP1
000009b7: ISZERO
000009b8: PUSH2 0x09c0
000009bb: JUMPI
000009bc: PUSH1 0x00
000009be: DUP1
000009bf: REVERT
000009c0: JUMPDEST
000009c1: POP
000009c2: GAS
000009c3: STATICCALL
000009c4: ISZERO
000009c5: DUP1
000009c6: ISZERO
000009c7: PUSH2 0x09d4
000009ca: JUMPI
000009cb: RETURNDATASIZE
000009cc: PUSH1 0x00
000009ce: DUP1
000009cf: RETURNDATACOPY
000009d0: RETURNDATASIZE
000009d1: PUSH1 0x00
000009d3: REVERT
000009d4: JUMPDEST
000009d5: POP
000009d6: POP
000009d7: POP
000009d8: POP
000009d9: PUSH1 0x40
000009db: MLOAD
000009dc: RETURNDATASIZE
000009dd: PUSH1 0x20
000009df: DUP2
000009e0: LT
000009e1: ISZERO
000009e2: PUSH2 0x09ea
000009e5: JUMPI
000009e6: PUSH1 0x00
000009e8: DUP1
000009e9: REVERT
000009ea: JUMPDEST
000009eb: POP
000009ec: MLOAD
000009ed: PUSH1 0x40
000009ef: DUP1
000009f0: MLOAD
000009f1: PUSH4 0x1d9dabef
000009f6: PUSH1 0xe1
000009f8: SHL
000009f9: DUP2
000009fa: MSTORE
000009fb: PUSH1 0x04
000009fd: DUP2
000009fe: ADD
000009ff: DUP6
00000a00: SWAP1
00000a01: MSTORE
00000a02: SWAP1
00000a03: MLOAD
00000a04: PUSH1 0x01
00000a06: PUSH1 0x01
00000a08: PUSH1 0xa0
00000a0a: SHL
00000a0b: SUB
00000a0c: SWAP1
00000a0d: SWAP3
00000a0e: AND
00000a0f: SWAP2
00000a10: PUSH4 0x3b3b57de
00000a15: SWAP2
00000a16: PUSH1 0x24
00000a18: DUP1
00000a19: DUP3
00000a1a: ADD
00000a1b: SWAP3
00000a1c: PUSH1 0x20
00000a1e: SWAP3
00000a1f: SWAP1
00000a20: SWAP2
00000a21: SWAP1
00000a22: DUP3
00000a23: SWAP1
00000a24: SUB
00000a25: ADD
00000a26: DUP2
00000a27: DUP7
00000a28: DUP1
00000a29: EXTCODESIZE
00000a2a: ISZERO
00000a2b: DUP1
00000a2c: ISZERO
00000a2d: PUSH2 0x061b
00000a30: JUMPI
00000a31: PUSH1 0x00
00000a33: DUP1
00000a34: REVERT
00000a35: JUMPDEST
00000a36: PUSH1 0x60
00000a38: PUSH1 0x00
00000a3a: DUP1
00000a3b: PUSH1 0x00
00000a3d: DUP1
00000a3e: PUSH1 0x00
00000a40: DUP1
00000a41: PUSH2 0x0a4b
00000a44: PUSH1 0x03
00000a46: SLOAD
00000a47: PUSH2 0x0973
00000a4a: JUMP
00000a4b: JUMPDEST
00000a4c: PUSH1 0x01
00000a4e: PUSH1 0x01
00000a50: PUSH1 0xa0
00000a52: SHL
00000a53: SUB
00000a54: AND
00000a55: PUSH4 0x1f69565f
00000a5a: DUP10
00000a5b: PUSH1 0x40
00000a5d: MLOAD
00000a5e: DUP3
00000a5f: PUSH4 0xffffffff
00000a64: AND
00000a65: PUSH1 0xe0
00000a67: SHL
00000a68: DUP2
00000a69: MSTORE
00000a6a: PUSH1 0x04
00000a6c: ADD
00000a6d: DUP1
00000a6e: DUP3
00000a6f: PUSH1 0x01
00000a71: PUSH1 0x01
00000a73: PUSH1 0xa0
00000a75: SHL
00000a76: SUB
00000a77: AND
00000a78: PUSH1 0x01
00000a7a: PUSH1 0x01
00000a7c: PUSH1 0xa0
00000a7e: SHL
00000a7f: SUB
00000a80: AND
00000a81: DUP2
00000a82: MSTORE
00000a83: PUSH1 0x20
00000a85: ADD
00000a86: SWAP2
00000a87: POP
00000a88: POP
00000a89: PUSH1 0x00
00000a8b: PUSH1 0x40
00000a8d: MLOAD
00000a8e: DUP1
00000a8f: DUP4
00000a90: SUB
00000a91: DUP2
00000a92: DUP7
00000a93: DUP1
00000a94: EXTCODESIZE
00000a95: ISZERO
00000a96: DUP1
00000a97: ISZERO
00000a98: PUSH2 0x0aa0
00000a9b: JUMPI
00000a9c: PUSH1 0x00
00000a9e: DUP1
00000a9f: REVERT
00000aa0: JUMPDEST
00000aa1: POP
00000aa2: GAS
00000aa3: STATICCALL
00000aa4: ISZERO
00000aa5: DUP1
00000aa6: ISZERO
00000aa7: PUSH2 0x0ab4
00000aaa: JUMPI
00000aab: RETURNDATASIZE
00000aac: PUSH1 0x00
00000aae: DUP1
00000aaf: RETURNDATACOPY
00000ab0: RETURNDATASIZE
00000ab1: PUSH1 0x00
00000ab3: REVERT
00000ab4: JUMPDEST
00000ab5: POP
00000ab6: POP
00000ab7: POP
00000ab8: POP
00000ab9: PUSH1 0x40
00000abb: MLOAD
00000abc: RETURNDATASIZE
00000abd: PUSH1 0x00
00000abf: DUP3
00000ac0: RETURNDATACOPY
00000ac1: PUSH1 0x1f
00000ac3: RETURNDATASIZE
00000ac4: SWAP1
00000ac5: DUP2
00000ac6: ADD
00000ac7: PUSH1 0x1f
00000ac9: NOT
00000aca: AND
00000acb: DUP3
00000acc: ADD
00000acd: PUSH1 0x40
00000acf: MSTORE
00000ad0: PUSH1 0xe0
00000ad2: DUP2
00000ad3: LT
00000ad4: ISZERO
00000ad5: PUSH2 0x0add
00000ad8: JUMPI
00000ad9: PUSH1 0x00
00000adb: DUP1
00000adc: REVERT
00000add: JUMPDEST
00000ade: DUP2
00000adf: ADD
00000ae0: SWAP1
00000ae1: DUP1
00000ae2: DUP1
00000ae3: MLOAD
00000ae4: PUSH5 0x0100000000
00000aea: DUP2
00000aeb: GT
00000aec: ISZERO
00000aed: PUSH2 0x0af5
00000af0: JUMPI
00000af1: PUSH1 0x00
00000af3: DUP1
00000af4: REVERT
00000af5: JUMPDEST
00000af6: DUP3
00000af7: ADD
00000af8: PUSH1 0x20
00000afa: DUP2
00000afb: ADD
00000afc: DUP5
00000afd: DUP2
00000afe: GT
00000aff: ISZERO
00000b00: PUSH2 0x0b08
00000b03: JUMPI
00000b04: PUSH1 0x00
00000b06: DUP1
00000b07: REVERT
00000b08: JUMPDEST
00000b09: DUP2
00000b0a: MLOAD
00000b0b: PUSH5 0x0100000000
00000b11: DUP2
00000b12: GT
00000b13: DUP3
00000b14: DUP3
00000b15: ADD
00000b16: DUP8
00000b17: LT
00000b18: OR
00000b19: ISZERO
00000b1a: PUSH2 0x0b22
00000b1d: JUMPI
00000b1e: PUSH1 0x00
00000b20: DUP1
00000b21: REVERT
00000b22: JUMPDEST
00000b23: POP
00000b24: POP
00000b25: PUSH1 0x20
00000b27: DUP3
00000b28: ADD
00000b29: MLOAD
00000b2a: PUSH1 0x40
00000b2c: DUP4
00000b2d: ADD
00000b2e: MLOAD
00000b2f: PUSH1 0x60
00000b31: DUP5
00000b32: ADD
00000b33: MLOAD
00000b34: PUSH1 0x80
00000b36: DUP6
00000b37: ADD
00000b38: MLOAD
00000b39: PUSH1 0xa0
00000b3b: DUP7
00000b3c: ADD
00000b3d: MLOAD
00000b3e: PUSH1 0xc0
00000b40: SWAP1
00000b41: SWAP7
00000b42: ADD
00000b43: MLOAD
00000b44: SWAP5
00000b45: SWAP15
00000b46: POP
00000b47: SWAP3
00000b48: SWAP13
00000b49: POP
00000b4a: SWAP1
00000b4b: SWAP11
00000b4c: POP
00000b4d: SWAP9
00000b4e: POP
00000b4f: SWAP7
00000b50: POP
00000b51: SWAP1
00000b52: SWAP5
00000b53: POP
00000b54: SWAP3
00000b55: POP
00000b56: POP
00000b57: POP
00000b58: SWAP2
00000b59: SWAP4
00000b5a: SWAP6
00000b5b: SWAP8
00000b5c: SWAP1
00000b5d: SWAP3
00000b5e: SWAP5
00000b5f: SWAP7
00000b60: POP
00000b61: JUMP
00000b62: JUMPDEST
00000b63: PUSH1 0x40
00000b65: DUP1
00000b66: MLOAD
00000b67: PUSH1 0x01
00000b69: PUSH1 0x01
00000b6b: PUSH1 0xa0
00000b6d: SHL
00000b6e: SUB
00000b6f: DUP5
00000b70: AND
00000b71: PUSH1 0x24
00000b73: DUP3
00000b74: ADD
00000b75: MSTORE
00000b76: PUSH1 0x44
00000b78: DUP1
00000b79: DUP3
00000b7a: ADD
00000b7b: DUP5
00000b7c: SWAP1
00000b7d: MSTORE
00000b7e: DUP3
00000b7f: MLOAD
00000b80: DUP1
00000b81: DUP4
00000b82: SUB
00000b83: SWAP1
00000b84: SWAP2
00000b85: ADD
00000b86: DUP2
00000b87: MSTORE
00000b88: PUSH1 0x64
00000b8a: SWAP1
00000b8b: SWAP2
00000b8c: ADD
00000b8d: SWAP1
00000b8e: SWAP2
00000b8f: MSTORE
00000b90: PUSH1 0x20
00000b92: DUP2
00000b93: ADD
00000b94: DUP1
00000b95: MLOAD
00000b96: PUSH1 0x01
00000b98: PUSH1 0x01
00000b9a: PUSH1 0xe0
00000b9c: SHL
00000b9d: SUB
00000b9e: AND
00000b9f: PUSH4 0xa9059cbb
00000ba4: PUSH1 0xe0
00000ba6: SHL
00000ba7: OR
00000ba8: SWAP1
00000ba9: MSTORE
00000baa: PUSH2 0x0775
00000bad: SWAP1
00000bae: DUP5
00000baf: SWAP1
00000bb0: PUSH2 0x0bc1
00000bb3: DUP3
00000bb4: PUSH1 0x01
00000bb6: PUSH1 0x01
00000bb8: PUSH1 0xa0
00000bba: SHL
00000bbb: SUB
00000bbc: AND
00000bbd: PUSH2 0x0d6d
00000bc0: JUMP
00000bc1: JUMPDEST
00000bc2: PUSH2 0x0c12
00000bc5: JUMPI
00000bc6: PUSH1 0x40
00000bc8: DUP1
00000bc9: MLOAD
00000bca: PUSH3 0x461bcd
00000bce: PUSH1 0xe5
00000bd0: SHL
00000bd1: DUP2
00000bd2: MSTORE
00000bd3: PUSH1 0x20
00000bd5: PUSH1 0x04
00000bd7: DUP3
00000bd8: ADD
00000bd9: MSTORE
00000bda: PUSH1 0x1f
00000bdc: PUSH1 0x24
00000bde: DUP3
00000bdf: ADD
00000be0: MSTORE
00000be1: PUSH32 0x5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400
00000c02: PUSH1 0x44
00000c04: DUP3
00000c05: ADD
00000c06: MSTORE
00000c07: SWAP1
00000c08: MLOAD
00000c09: SWAP1
00000c0a: DUP2
00000c0b: SWAP1
00000c0c: SUB
00000c0d: PUSH1 0x64
00000c0f: ADD
00000c10: SWAP1
00000c11: REVERT
00000c12: JUMPDEST
00000c13: PUSH1 0x00
00000c15: PUSH1 0x60
00000c17: DUP4
00000c18: PUSH1 0x01
00000c1a: PUSH1 0x01
00000c1c: PUSH1 0xa0
00000c1e: SHL
00000c1f: SUB
00000c20: AND
00000c21: DUP4
00000c22: PUSH1 0x40
00000c24: MLOAD
00000c25: DUP1
00000c26: DUP3
00000c27: DUP1
00000c28: MLOAD
00000c29: SWAP1
00000c2a: PUSH1 0x20
00000c2c: ADD
00000c2d: SWAP1
00000c2e: DUP1
00000c2f: DUP4
00000c30: DUP4
00000c31: JUMPDEST
00000c32: PUSH1 0x20
00000c34: DUP4
00000c35: LT
00000c36: PUSH2 0x0c50
00000c39: JUMPI
00000c3a: DUP1
00000c3b: MLOAD
00000c3c: DUP3
00000c3d: MSTORE
00000c3e: PUSH1 0x1f
00000c40: NOT
00000c41: SWAP1
00000c42: SWAP3
00000c43: ADD
00000c44: SWAP2
00000c45: PUSH1 0x20
00000c47: SWAP2
00000c48: DUP3
00000c49: ADD
00000c4a: SWAP2
00000c4b: ADD
00000c4c: PUSH2 0x0c31
00000c4f: JUMP
00000c50: JUMPDEST
00000c51: PUSH1 0x01
00000c53: DUP4
00000c54: PUSH1 0x20
00000c56: SUB
00000c57: PUSH2 0x0100
00000c5a: EXP
00000c5b: SUB
00000c5c: DUP1
00000c5d: NOT
00000c5e: DUP3
00000c5f: MLOAD
00000c60: AND
00000c61: DUP2
00000c62: DUP5
00000c63: MLOAD
00000c64: AND
00000c65: DUP1
00000c66: DUP3
00000c67: OR
00000c68: DUP6
00000c69: MSTORE
00000c6a: POP
00000c6b: POP
00000c6c: POP
00000c6d: POP
00000c6e: POP
00000c6f: POP
00000c70: SWAP1
00000c71: POP
00000c72: ADD
00000c73: SWAP2
00000c74: POP
00000c75: POP
00000c76: PUSH1 0x00
00000c78: PUSH1 0x40
00000c7a: MLOAD
00000c7b: DUP1
00000c7c: DUP4
00000c7d: SUB
00000c7e: DUP2
00000c7f: PUSH1 0x00
00000c81: DUP7
00000c82: GAS
00000c83: CALL
00000c84: SWAP2
00000c85: POP
00000c86: POP
00000c87: RETURNDATASIZE
00000c88: DUP1
00000c89: PUSH1 0x00
00000c8b: DUP2
00000c8c: EQ
00000c8d: PUSH2 0x0cb2
00000c90: JUMPI
00000c91: PUSH1 0x40
00000c93: MLOAD
00000c94: SWAP2
00000c95: POP
00000c96: PUSH1 0x1f
00000c98: NOT
00000c99: PUSH1 0x3f
00000c9b: RETURNDATASIZE
00000c9c: ADD
00000c9d: AND
00000c9e: DUP3
00000c9f: ADD
00000ca0: PUSH1 0x40
00000ca2: MSTORE
00000ca3: RETURNDATASIZE
00000ca4: DUP3
00000ca5: MSTORE
00000ca6: RETURNDATASIZE
00000ca7: PUSH1 0x00
00000ca9: PUSH1 0x20
00000cab: DUP5
00000cac: ADD
00000cad: RETURNDATACOPY
00000cae: PUSH2 0x0cb7
00000cb1: JUMP
00000cb2: JUMPDEST
00000cb3: PUSH1 0x60
00000cb5: SWAP2
00000cb6: POP
00000cb7: JUMPDEST
00000cb8: POP
00000cb9: SWAP2
00000cba: POP
00000cbb: SWAP2
00000cbc: POP
00000cbd: DUP2
00000cbe: PUSH2 0x0d0e
00000cc1: JUMPI
00000cc2: PUSH1 0x40
00000cc4: DUP1
00000cc5: MLOAD
00000cc6: PUSH3 0x461bcd
00000cca: PUSH1 0xe5
00000ccc: SHL
00000ccd: DUP2
00000cce: MSTORE
00000ccf: PUSH1 0x20
00000cd1: PUSH1 0x04
00000cd3: DUP3
00000cd4: ADD
00000cd5: DUP2
00000cd6: SWAP1
00000cd7: MSTORE
00000cd8: PUSH1 0x24
00000cda: DUP3
00000cdb: ADD
00000cdc: MSTORE
00000cdd: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00000cfe: PUSH1 0x44
00000d00: DUP3
00000d01: ADD
00000d02: MSTORE
00000d03: SWAP1
00000d04: MLOAD
00000d05: SWAP1
00000d06: DUP2
00000d07: SWAP1
00000d08: SUB
00000d09: PUSH1 0x64
00000d0b: ADD
00000d0c: SWAP1
00000d0d: REVERT
00000d0e: JUMPDEST
00000d0f: DUP1
00000d10: MLOAD
00000d11: ISZERO
00000d12: PUSH2 0x0d67
00000d15: JUMPI
00000d16: DUP1
00000d17: DUP1
00000d18: PUSH1 0x20
00000d1a: ADD
00000d1b: SWAP1
00000d1c: MLOAD
00000d1d: PUSH1 0x20
00000d1f: DUP2
00000d20: LT
00000d21: ISZERO
00000d22: PUSH2 0x0d2a
00000d25: JUMPI
00000d26: PUSH1 0x00
00000d28: DUP1
00000d29: REVERT
00000d2a: JUMPDEST
00000d2b: POP
00000d2c: MLOAD
00000d2d: PUSH2 0x0d67
00000d30: JUMPI
00000d31: PUSH1 0x40
00000d33: MLOAD
00000d34: PUSH3 0x461bcd
00000d38: PUSH1 0xe5
00000d3a: SHL
00000d3b: DUP2
00000d3c: MSTORE
00000d3d: PUSH1 0x04
00000d3f: ADD
00000d40: DUP1
00000d41: DUP1
00000d42: PUSH1 0x20
00000d44: ADD
00000d45: DUP3
00000d46: DUP2
00000d47: SUB
00000d48: DUP3
00000d49: MSTORE
00000d4a: PUSH1 0x2a
00000d4c: DUP2
00000d4d: MSTORE
00000d4e: PUSH1 0x20
00000d50: ADD
00000d51: DUP1
00000d52: PUSH2 0x0d95
00000d55: PUSH1 0x2a
00000d57: SWAP2
00000d58: CODECOPY
00000d59: PUSH1 0x40
00000d5b: ADD
00000d5c: SWAP2
00000d5d: POP
00000d5e: POP
00000d5f: PUSH1 0x40
00000d61: MLOAD
00000d62: DUP1
00000d63: SWAP2
00000d64: SUB
00000d65: SWAP1
00000d66: REVERT
00000d67: JUMPDEST
00000d68: POP
00000d69: POP
00000d6a: POP
00000d6b: POP
00000d6c: JUMP
00000d6d: JUMPDEST
00000d6e: EXTCODESIZE
00000d6f: ISZERO
00000d70: ISZERO
00000d71: SWAP1
00000d72: JUMP
00000d73: INVALID
00000d74: MSTORE8
00000d75: PUSH2 0x6665
00000d78: UNKNOWN(0x4D)
00000d79: PUSH2 0x7468
00000d7c: GASPRICE
00000d7d: KECCAK256
00000d7e: PUSH14 0x756c7469706c69636174696f6e20
00000d8d: PUSH16 0x766572666c6f77536166654552433230
00000d9e: GASPRICE
00000d9f: KECCAK256
00000da0: GASLIMIT
00000da1: MSTORE
00000da2: NUMBER
00000da3: ORIGIN
00000da4: ADDRESS
00000da5: KECCAK256
00000da6: PUSH16 0x7065726174696f6e20646964206e6f74
00000db7: KECCAK256
00000db8: PUSH20 0x7563636565646275726e657220636f6e74726163
00000dcd: PUSH21 0x206973206e6f74207468652073656e646572a26562
00000de3: PUSH27 0x7a723058203b68b4250f0c8813dc24bb500350e4d13a81095b7e30
00000dff: UNKNOWN(0xA6)
00000e00: ADDMOD
00000e01: UNKNOWN(0xD6)
00000e02: SWAP15
00000e03: UNKNOWN(0xBB)
00000e04: EXTCODECOPY
00000e05: PUSH23

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x27810b6e",
            "selector": "0x27810b6e",
            "calldata_variants": [
                "0x27810b6e",
                "0x27810b6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x40f6a70f",
            "selector": "0x40f6a70f",
            "calldata_variants": [
                "0x40f6a70f",
                "0x40f6a70f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7d73b231",
            "selector": "0x7d73b231",
            "calldata_variants": [
                "0x7d73b231",
                "0x7d73b2310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x877337b0",
            "selector": "0x877337b0",
            "calldata_variants": [
                "0x877337b0",
                "0x877337b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9dc29fac",
            "selector": "0x9dc29fac",
            "calldata_variants": [
                "0x9dc29fac",
                "0x9dc29fac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2b4ce97",
            "selector": "0xe2b4ce97",
            "calldata_variants": [
                "0xe2b4ce97",
                "0xe2b4ce970000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 3491,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x13685eaea50530058d3c0c59f00c2535af6ac47756d142489420714ed4c8b430
call_targets: 0x24f0bb6c9b2c3db66603fa0ec07ab0cf55cdd387
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x13685eaea50530058d3c0c59f00c2535af6ac47756d142489420714ed4c8b430",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x24f0bb6c9b2c3db66603fa0ec07ab0cf55cdd387"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x27810b6e",
            "selector": "0x27810b6e",
            "calldata_variants": [
                "0x27810b6e",
                "0x27810b6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x40f6a70f",
            "selector": "0x40f6a70f",
            "calldata_variants": [
                "0x40f6a70f",
                "0x40f6a70f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7d73b231",
            "selector": "0x7d73b231",
            "calldata_variants": [
                "0x7d73b231",
                "0x7d73b2310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x877337b0",
            "selector": "0x877337b0",
            "calldata_variants": [
                "0x877337b0",
                "0x877337b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9dc29fac",
            "selector": "0x9dc29fac",
            "calldata_variants": [
                "0x9dc29fac",
                "0x9dc29fac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2b4ce97",
            "selector": "0xe2b4ce97",
            "calldata_variants": [
                "0xe2b4ce97",
                "0xe2b4ce970000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1855,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3203,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 3491,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 2
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x13685eaea50530058d3c0c59f00c2535af6ac47756d142489420714ed4c8b430
call_targets: 0x24f0bb6c9b2c3db66603fa0ec07ab0cf55cdd387
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x13685eaea50530058d3c0c59f00c2535af6ac47756d142489420714ed4c8b430",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x24f0bb6c9b2c3db66603fa0ec07ab0cf55cdd387"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x27810b6e",
            "selector": "0x27810b6e",
            "calldata_variants": [
                "0x27810b6e",
                "0x27810b6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x40f6a70f",
            "selector": "0x40f6a70f",
            "calldata_variants": [
                "0x40f6a70f",
                "0x40f6a70f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7d73b231",
            "selector": "0x7d73b231",
            "calldata_variants": [
                "0x7d73b231",
                "0x7d73b2310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x877337b0",
            "selector": "0x877337b0",
            "calldata_variants": [
                "0x877337b0",
                "0x877337b00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9dc29fac",
            "selector": "0x9dc29fac",
            "calldata_variants": [
                "0x9dc29fac",
                "0x9dc29fac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2b4ce97",
            "selector": "0xe2b4ce97",
            "calldata_variants": [
                "0xe2b4ce97",
                "0xe2b4ce970000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1855,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3203,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 3491,
            "type": "tx_origin_used"
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 10
}