0ca38f70-95ce-4060-97b9-6ab8cf2510ee
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 10
}
|