4f95316a-085a-485c-91cf-2d9aeb443f94
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 |
|---|---|---|---|---|
| 31610 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 111458 | artifact.fetch | failed | 1 / 3 | 1 week ago |
| 111459 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 111460 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 111461 | capability.graph | complete | 1 / 3 | 1 week ago |
| 111462 | detector.run | complete | 1 / 3 | 1 week ago |
| 111463 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:519589] OpenAI Codex v0.77.0 (research preview)
[codex:519589] --------
[codex:519589] workdir: /tmp/codex-multi-nk3z75at
[codex:519589] model: gpt-5.2-codex
[codex:519589] provider: openai
[codex:519589] approval: never
[codex:519589] sandbox: read-only
[codex:519589] reasoning effort: xhigh
[codex:519589] reasoning summaries: auto
[codex:519589] session id: 019b8833-69b6-72b3-ba71-405bf239d6ee
[codex:519589] --------
[codex:519589] user
[codex:519589] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:519589]
[codex:519589] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:519589]
[codex:519589] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:519589] - Gas inefficiency, code quality, naming, or best practices
[codex:519589] - Theoretical vulnerabilities without a clear extraction path
[codex:519589] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:519589] - Front-running unless it enables theft beyond MEV
[codex:519589] - DoS, griefing, or issues that don't result in attacker profit
[codex:519589] - Missing events, view function issues, or informational findings
[codex:519589]
[codex:519589] HIGH-VALUE PATTERNS TO HUNT:
[codex:519589] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:519589] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:519589] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:519589] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:519589] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:519589] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:519589] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:519589] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:519589] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:519589]
[codex:519589] For each finding, you MUST provide:
[codex:519589] 1. Exact file and line numbers of vulnerable code
[codex:519589] 2. Step-by-step exploit transaction sequence
[codex:519589] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:519589]
[codex:519589] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:519589]
[codex:519589] Output MUST be valid JSON matching the provided schema.
[codex:519589] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:519589] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:519589] mcp startup: no servers
[codex:519589]
[codex:519589] thinking
[codex:519589] **Preparing to audit and check skills**
[codex:519589] exec
[codex:519589] /bin/bash -lc ls in /tmp/codex-multi-nk3z75at succeeded in 5ms:
[codex:519589] AUDIT_BUNDLE.txt
[codex:519589] codex-output-schema.json
[codex:519589] contracts
[codex:519589] exec
[codex:519589] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-nk3z75at succeeded in 6ms:
[codex:519589] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:519589]
[codex:519589] ================================================================================
[codex:519589] FILE: contracts/contracts/Curve.sol
[codex:519589] ================================================================================
[codex:519589] // SPDX-License-Identifier: MIT
[codex:519589]
[codex:519589] pragma solidity >=0.6.0 <0.8.0;
[codex:519589]
[codex:519589] import "./ERC721.sol";
[codex:519589] import "./utils/SafeMath.sol";
[codex:519589]
[codex:519589] contract Curve {
[codex:519589] using SafeMath for uint256;
[codex:519589] // linear bonding curve
[codex:519589] // 99.5% going into reserve.
[codex:519589] // 0.5% going to creator.
[codex:519589]
[codex:519589] // this is currently 0.5%
[codex:519589] uint256 public initMintPrice = 0.001 ether; // at 0
[codex:519589]
[codex:519589] thinking
[codex:519589] **Continuing to gather the full bundle**
[codex:519589] exec
[codex:519589] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-nk3z75at succeeded in 5ms:
[codex:519589] import "./utils/Strings.sol";
[codex:519589]
[codex:519589] /**
[codex:519589] * @title ERC721 Non-Fungible Token Standard basic implementation
[codex:519589] * @dev see https://eips.ethereum.org/EIPS/eip-721
[codex:519589] */
[codex:519589] contract ERC721 is ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
[codex:519589] using SafeMath for uint256;
[codex:519589] using Address for address;
[codex:519589] using EnumerableSet for EnumerableSet.UintSet;
[codex:519589] using EnumerableMap for EnumerableMap.UintToAddressMap;
[codex:519589] using Strings for uint256;
[codex:519589]
[codex:519589] // Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
[codex:519589] // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`
[codex:519589] bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
[codex:519589]
[codex:519589] // Mapping from holder address to their (enumerable) set of owned tokens
[codex:519589] mapping (address => EnumerableSet.UintSet) private _holderTokens;
[codex:519589]
[codex:519589]
[codex:519589] thinking
[codex:519589] **Requesting more content**
[codex:519589] exec
[codex:519589] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-nk3z75at succeeded in 6ms:
[codex:519589]
[codex:519589] /*
[codex:519589] ERC721 code
[codex:519589] - Took out safeMint. Not needed since only Curve can mint.
[codex:519589] - Took out beforeTokenTransfer hook.
[codex:519589] */
[codex:519589]
[codex:519589] /**
[codex:519589] * @dev See {IERC721-balanceOf}.
[codex:519589] */
[codex:519589] function balanceOf(address owner) public view override returns (uint256) {
[codex:519589] require(owner != address(0), "ERC721: balance query for the zero address");
[codex:519589]
[codex:519589] return _holderTokens[owner].length();
[codex:519589] }
[codex:519589]
[codex:519589] /**
[codex:519589] * @dev See {IERC721-ownerOf}.
[codex:519589] */
[codex:519589] function ownerOf(uint256 tokenId) public view override returns (address) {
[codex:519589]
[codex:519589] thinking
[codex:519589] **Finishing review**
[codex:519589] exec
[codex:519589] /bin/bash -lc "sed -n '800,1200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-nk3z75at succeeded in 5ms:
[codex:519589] * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
[codex:519589] * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
[codex:519589] *
[codex:519589] * Emits a {Transfer} event.
[codex:519589] */
[codex:519589] function safeTransferFrom(address from, address to, uint256 tokenId) external;
[codex:519589]
[codex:519589] /**
[codex:519589] * @dev Transfers `tokenId` token from `from` to `to`.
[codex:519589] *
[codex:519589] * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
[codex:519589] *
[codex:519589] * Requirements:
[codex:519589] *
[codex:519589] * - `from` cannot be the zero address.
[codex:519589] * - `to` cannot be the zero address.
[codex:519589] * - `tokenId` token must be owned by `from`.
[codex:519589] * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
[codex:519589] *
[codex:519589] * Emits a {Transfer} event.
[codex:519589]
[codex:519589] thinking
[codex:519589] **Continuing process**
[codex:519589] exec
[codex:519589] /bin/bash -lc "sed -n '1200,1600p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-nk3z75at succeeded in 6ms:
[codex:519589] // implementations (such as Uint256ToAddressMap) are just wrappers around
[codex:519589] // the underlying Map.
[codex:519589] // This means that we can only create new EnumerableMaps for types that fit
[codex:519589] // in bytes32.
[codex:519589]
[codex:519589] struct MapEntry {
[codex:519589] bytes32 _key;
[codex:519589] bytes32 _value;
[codex:519589] }
[codex:519589]
[codex:519589] struct Map {
[codex:519589] // Storage of map keys and values
[codex:519589] MapEntry[] _entries;
[codex:519589]
[codex:519589] // Position of the entry defined by a key in the `entries` array, plus 1
[codex:519589] // because index 0 means a key is not in the map.
[codex:519589] mapping (bytes32 => uint256) _indexes;
[codex:519589] }
[codex:519589]
[codex:519589] /**
[codex:519589]
[codex:519589] thinking
[codex:519589] **Continuing exploration**
[codex:519589] exec
[codex:519589] /bin/bash -lc "sed -n '1600,2000p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-nk3z75at succeeded in 6ms:
[codex:519589] }
[codex:519589]
[codex:519589] /**
[codex:519589] * @dev Add a value to a set. O(1).
[codex:519589] *
[codex:519589] * Returns true if the value was added to the set, that is if it was not
[codex:519589] * already present.
[codex:519589] */
[codex:519589] function add(AddressSet storage set, address value) internal returns (bool) {
[codex:519589] return _add(set._inner, bytes32(uint256(value)));
[codex:519589] }
[codex:519589]
[codex:519589] /**
[codex:519589] * @dev Removes a value from a set. O(1).
[codex:519589] *
[codex:519589] * Returns true if the value was removed from the set, that is if it was
[codex:519589] * present.
[codex:519589] */
[codex:519589] function remove(AddressSet storage set, address value) internal returns (bool) {
[codex:519589] return _remove(set._inner, bytes32(uint256(value)));
[codex:519589]
[codex:519589]
[codex:519589] thinking
[codex:519589] **Analyzing bonding curve economic exploitability**
[codex:519589]
[codex:519589] I’m carefully checking how the Curve contract’s bonding curve handles mint and burn prices, reserves, and supply to find any real profit exploits. It seems there’s an economic imbalance allowing early minters to profit by burning tokens after supply grows, exploiting the undercollateralized reserve, though no direct reentrancy or coding bug is evident. This looks like a design flaw leading to a Ponzi-like profit extraction rather than a strict technical vulnerability.
[codex:519589] thinking
[codex:519589] **Preparing to pinpoint code locations**
[codex:519589]
[codex:519589] I’m verifying that the economic exploit qualifies as a high-value accounting error and now need to locate exact line numbers in the Curve.sol code to provide precise references for the finding. I'll open the relevant Solidity file in the repo and use line numbering tools to get the details.
[codex:519589] exec
[codex:519589] /bin/bash -lc 'nl -ba contracts/contracts/Curve.sol' in /tmp/codex-multi-nk3z75at succeeded in 6ms:
[codex:519589] 1 // SPDX-License-Identifier: MIT
[codex:519589] 2
[codex:519589] 3 pragma solidity >=0.6.0 <0.8.0;
[codex:519589] 4
[codex:519589] 5 import "./ERC721.sol";
[codex:519589] 6 import "./utils/SafeMath.sol";
[codex:519589] 7
[codex:519589] 8 contract Curve {
[codex:519589] 9 using SafeMath for uint256;
[codex:519589] 10 // linear bonding curve
[codex:519589] 11 // 99.5% going into reserve.
[codex:519589] 12 // 0.5% going to creator.
[codex:519589] 13
[codex:519589] 14 // this is currently 0.5%
[codex:519589] 15 uint256 public initMintPrice = 0.001 ether; // at 0
[codex:519589] 16 uint256 public initBurnPrice = 0.000995 ether; // at 1
[codex:519589] 17
[codex:519589] 18 // You technically do not need to keep tabs on the reserve
[codex:519589] 19 // because it uses linear pricing
[codex:519589] 20 // but useful to know off-hand. Especially because this.balance might not be the same as the actual reserve
[codex:519589]
[codex:519589]
[codex:519589]
[codex:519589] thinking
[codex:519589] **Analyzing bonding curve profit exploit**
[codex:519589] thinking
[codex:519589] **Evaluating economic and technical exploitability**
[codex:519589]
[codex:519589] I’m weighing whether the observed reserve underfunding actually enables a unique exploitable profit beyond typical bonding curve gains. Although early minters can profit by buying low and burning later at higher prices, this is common bonding curve behavior rather than a direct vulnerability. The miscalculation redirects funds to the creator, potentially weakening reserve collateral, but doesn’t clearly increase attacker profit. I’m also checking reentrancy and token ID issues but find no clear exploitable profit paths besides the economic design quirks. Overall, the attacker profit seems tied to market mechanics, not a concrete bug allowing extra extraction.
[codex:519589] thinking
[codex:519589] **Confirming absence of exploitable issues**
[codex:519589]
[codex:519589] I carefully re-examined key contract logic, especially the reserve and minting calculations, and found the reserve is properly collateralized as intended. I also checked for reentrancy, token ID collisions, approvals, and randomness manipulation, but none lead to a clear exploitable profit path. Given this, I'll prepare a JSON output confirming no concrete exploit findings in the contracts analyzed.
[codex:519589] codex
[codex:519589] {"no_findings":true,"summary":"No concrete, exploitable profit paths found in the provided contracts.","findings":[]}
[codex:519589] tokens used
[codex:519589] 42,594
[codex:519589] {"no_findings":true,"summary":"No concrete, exploitable profit paths found in the provided contracts.","findings":[]}
{
"codex": {
"ran_at": "2026-01-04T08:55:19.263518+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable profit paths found in the provided contracts.",
"raw_final": {
"summary": "No concrete, exploitable profit paths found in the provided contracts.",
"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 0x009c 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x4f3e1efc 00000019: GT 0000001a: PUSH2 0x0064 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0x4f3e1efc 00000024: EQ 00000025: PUSH2 0x0191 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xc96b6544 0000002f: EQ 00000030: PUSH2 0x01bc 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xcd3293de 0000003a: EQ 0000003b: PUSH2 0x01e7 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xd441426a 00000045: EQ 00000046: PUSH2 0x0212 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xe4628745 00000050: EQ 00000051: PUSH2 0x023d 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xe57567db 0000005b: EQ 0000005c: PUSH2 0x0268 0000005f: JUMPI 00000060: PUSH2 0x009c 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x02d05d3f 0000006b: EQ 0000006c: PUSH2 0x00a1 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x1249c58b 00000076: EQ 00000077: PUSH2 0x00e2 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x1649229f 00000081: EQ 00000082: PUSH2 0x0100 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0x2e8ad69f 0000008c: EQ 0000008d: PUSH2 0x012b 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0x42966c68 00000097: EQ 00000098: PUSH2 0x0156 0000009b: JUMPI 0000009c: JUMPDEST 0000009d: PUSH1 0x00 0000009f: DUP1 000000a0: REVERT 000000a1: JUMPDEST 000000a2: CALLVALUE 000000a3: DUP1 000000a4: ISZERO 000000a5: PUSH2 0x00ad 000000a8: JUMPI 000000a9: PUSH1 0x00 000000ab: DUP1 000000ac: REVERT 000000ad: JUMPDEST 000000ae: POP 000000af: PUSH2 0x00b6 000000b2: PUSH2 0x02a9 000000b5: JUMP 000000b6: JUMPDEST 000000b7: PUSH1 0x40 000000b9: MLOAD 000000ba: DUP1 000000bb: DUP3 000000bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000d1: AND 000000d2: DUP2 000000d3: MSTORE 000000d4: PUSH1 0x20 000000d6: ADD 000000d7: SWAP2 000000d8: POP 000000d9: POP 000000da: PUSH1 0x40 000000dc: MLOAD 000000dd: DUP1 000000de: SWAP2 000000df: SUB 000000e0: SWAP1 000000e1: RETURN 000000e2: JUMPDEST 000000e3: PUSH2 0x00ea 000000e6: PUSH2 0x02cf 000000e9: JUMP 000000ea: JUMPDEST 000000eb: PUSH1 0x40 000000ed: MLOAD 000000ee: DUP1 000000ef: DUP3 000000f0: DUP2 000000f1: MSTORE 000000f2: PUSH1 0x20 000000f4: ADD 000000f5: SWAP2 000000f6: POP 000000f7: POP 000000f8: PUSH1 0x40 000000fa: MLOAD 000000fb: DUP1 000000fc: SWAP2 000000fd: SUB 000000fe: SWAP1 000000ff: RETURN 00000100: JUMPDEST 00000101: CALLVALUE 00000102: DUP1 00000103: ISZERO 00000104: PUSH2 0x010c 00000107: JUMPI 00000108: PUSH1 0x00 0000010a: DUP1 0000010b: REVERT 0000010c: JUMPDEST 0000010d: POP 0000010e: PUSH2 0x0115 00000111: PUSH2 0x05e3 00000114: JUMP 00000115: JUMPDEST 00000116: PUSH1 0x40 00000118: MLOAD 00000119: DUP1 0000011a: DUP3 0000011b: DUP2 0000011c: MSTORE 0000011d: PUSH1 0x20 0000011f: ADD 00000120: SWAP2 00000121: POP 00000122: POP 00000123: PUSH1 0x40 00000125: MLOAD 00000126: DUP1 00000127: SWAP2 00000128: SUB 00000129: SWAP1 0000012a: RETURN 0000012b: JUMPDEST 0000012c: CALLVALUE 0000012d: DUP1 0000012e: ISZERO 0000012f: PUSH2 0x0137 00000132: JUMPI 00000133: PUSH1 0x00 00000135: DUP1 00000136: REVERT 00000137: JUMPDEST 00000138: POP 00000139: PUSH2 0x0140 0000013c: PUSH2 0x05e9 0000013f: JUMP 00000140: JUMPDEST 00000141: PUSH1 0x40 00000143: MLOAD 00000144: DUP1 00000145: DUP3 00000146: DUP2 00000147: MSTORE 00000148: PUSH1 0x20 0000014a: ADD 0000014b: SWAP2 0000014c: POP 0000014d: POP 0000014e: PUSH1 0x40 00000150: MLOAD 00000151: DUP1 00000152: SWAP2 00000153: SUB 00000154: SWAP1 00000155: RETURN 00000156: JUMPDEST 00000157: CALLVALUE 00000158: DUP1 00000159: ISZERO 0000015a: PUSH2 0x0162 0000015d: JUMPI 0000015e: PUSH1 0x00 00000160: DUP1 00000161: REVERT 00000162: JUMPDEST 00000163: POP 00000164: PUSH2 0x018f 00000167: PUSH1 0x04 00000169: DUP1 0000016a: CALLDATASIZE 0000016b: SUB 0000016c: PUSH1 0x20 0000016e: DUP2 0000016f: LT 00000170: ISZERO 00000171: PUSH2 0x0179 00000174: JUMPI 00000175: PUSH1 0x00 00000177: DUP1 00000178: REVERT 00000179: JUMPDEST 0000017a: DUP2 0000017b: ADD 0000017c: SWAP1 0000017d: DUP1 0000017e: DUP1 0000017f: CALLDATALOAD 00000180: SWAP1 00000181: PUSH1 0x20 00000183: ADD 00000184: SWAP1 00000185: SWAP3 00000186: SWAP2 00000187: SWAP1 00000188: POP 00000189: POP 0000018a: POP 0000018b: PUSH2 0x05ef 0000018e: JUMP 0000018f: JUMPDEST 00000190: STOP 00000191: JUMPDEST 00000192: CALLVALUE 00000193: DUP1 00000194: ISZERO 00000195: PUSH2 0x019d 00000198: JUMPI 00000199: PUSH1 0x00 0000019b: DUP1 0000019c: REVERT 0000019d: JUMPDEST 0000019e: POP 0000019f: PUSH2 0x01a6 000001a2: PUSH2 0x073d 000001a5: JUMP 000001a6: JUMPDEST 000001a7: PUSH1 0x40 000001a9: MLOAD 000001aa: DUP1 000001ab: DUP3 000001ac: DUP2 000001ad: MSTORE 000001ae: PUSH1 0x20 000001b0: ADD 000001b1: SWAP2 000001b2: POP 000001b3: POP 000001b4: PUSH1 0x40 000001b6: MLOAD 000001b7: DUP1 000001b8: SWAP2 000001b9: SUB 000001ba: SWAP1 000001bb: RETURN 000001bc: JUMPDEST 000001bd: CALLVALUE 000001be: DUP1 000001bf: ISZERO 000001c0: PUSH2 0x01c8 000001c3: JUMPI 000001c4: PUSH1 0x00 000001c6: DUP1 000001c7: REVERT 000001c8: JUMPDEST 000001c9: POP 000001ca: PUSH2 0x01d1 000001cd: PUSH2 0x07e7 000001d0: JUMP 000001d1: JUMPDEST 000001d2: PUSH1 0x40 000001d4: MLOAD 000001d5: DUP1 000001d6: DUP3 000001d7: DUP2 000001d8: MSTORE 000001d9: PUSH1 0x20 000001db: ADD 000001dc: SWAP2 000001dd: POP 000001de: POP 000001df: PUSH1 0x40 000001e1: MLOAD 000001e2: DUP1 000001e3: SWAP2 000001e4: SUB 000001e5: SWAP1 000001e6: RETURN 000001e7: JUMPDEST 000001e8: CALLVALUE 000001e9: DUP1 000001ea: ISZERO 000001eb: PUSH2 0x01f3 000001ee: JUMPI 000001ef: PUSH1 0x00 000001f1: DUP1 000001f2: REVERT 000001f3: JUMPDEST 000001f4: POP 000001f5: PUSH2 0x01fc 000001f8: PUSH2 0x0823 000001fb: JUMP 000001fc: JUMPDEST 000001fd: PUSH1 0x40 000001ff: MLOAD 00000200: DUP1 00000201: DUP3 00000202: DUP2 00000203: MSTORE 00000204: PUSH1 0x20 00000206: ADD 00000207: SWAP2 00000208: POP 00000209: POP 0000020a: PUSH1 0x40 0000020c: MLOAD 0000020d: DUP1 0000020e: SWAP2 0000020f: SUB 00000210: SWAP1 00000211: RETURN 00000212: JUMPDEST 00000213: CALLVALUE 00000214: DUP1 00000215: ISZERO 00000216: PUSH2 0x021e 00000219: JUMPI 0000021a: PUSH1 0x00 0000021c: DUP1 0000021d: REVERT 0000021e: JUMPDEST 0000021f: POP 00000220: PUSH2 0x0227 00000223: PUSH2 0x0829 00000226: JUMP 00000227: JUMPDEST 00000228: PUSH1 0x40 0000022a: MLOAD 0000022b: DUP1 0000022c: DUP3 0000022d: DUP2 0000022e: MSTORE 0000022f: PUSH1 0x20 00000231: ADD 00000232: SWAP2 00000233: POP 00000234: POP 00000235: PUSH1 0x40 00000237: MLOAD 00000238: DUP1 00000239: SWAP2 0000023a: SUB 0000023b: SWAP1 0000023c: RETURN 0000023d: JUMPDEST 0000023e: CALLVALUE 0000023f: DUP1 00000240: ISZERO 00000241: PUSH2 0x0249 00000244: JUMPI 00000245: PUSH1 0x00 00000247: DUP1 00000248: REVERT 00000249: JUMPDEST 0000024a: POP 0000024b: PUSH2 0x0252 0000024e: PUSH2 0x0851 00000251: JUMP 00000252: JUMPDEST 00000253: PUSH1 0x40 00000255: MLOAD 00000256: DUP1 00000257: DUP3 00000258: DUP2 00000259: MSTORE 0000025a: PUSH1 0x20 0000025c: ADD 0000025d: SWAP2 0000025e: POP 0000025f: POP 00000260: PUSH1 0x40 00000262: MLOAD 00000263: DUP1 00000264: SWAP2 00000265: SUB 00000266: SWAP1 00000267: RETURN 00000268: JUMPDEST 00000269: CALLVALUE 0000026a: DUP1 0000026b: ISZERO 0000026c: PUSH2 0x0274 0000026f: JUMPI 00000270: PUSH1 0x00 00000272: DUP1 00000273: REVERT 00000274: JUMPDEST 00000275: POP 00000276: PUSH2 0x027d 00000279: PUSH2 0x0860 0000027c: JUMP 0000027d: JUMPDEST 0000027e: PUSH1 0x40 00000280: MLOAD 00000281: DUP1 00000282: DUP3 00000283: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000298: AND 00000299: DUP2 0000029a: MSTORE 0000029b: PUSH1 0x20 0000029d: ADD 0000029e: SWAP2 0000029f: POP 000002a0: POP 000002a1: PUSH1 0x40 000002a3: MLOAD 000002a4: DUP1 000002a5: SWAP2 000002a6: SUB 000002a7: SWAP1 000002a8: RETURN 000002a9: JUMPDEST 000002aa: PUSH1 0x03 000002ac: PUSH1 0x00 000002ae: SWAP1 000002af: SLOAD 000002b0: SWAP1 000002b1: PUSH2 0x0100 000002b4: EXP 000002b5: SWAP1 000002b6: DIV 000002b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002cc: AND 000002cd: DUP2 000002ce: JUMP 000002cf: JUMPDEST 000002d0: PUSH1 0x00 000002d2: DUP1 000002d3: CALLVALUE 000002d4: GT 000002d5: PUSH2 0x0346 000002d8: JUMPI 000002d9: PUSH1 0x40 000002db: MLOAD 000002dc: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000002fd: DUP2 000002fe: MSTORE 000002ff: PUSH1 0x04 00000301: ADD 00000302: DUP1 00000303: DUP1 00000304: PUSH1 0x20 00000306: ADD 00000307: DUP3 00000308: DUP2 00000309: SUB 0000030a: DUP3 0000030b: MSTORE 0000030c: PUSH1 0x0e 0000030e: DUP2 0000030f: MSTORE 00000310: PUSH1 0x20 00000312: ADD 00000313: DUP1 00000314: PUSH32 0x433a204e6f204554482073656e74000000000000000000000000000000000000 00000335: DUP2 00000336: MSTORE 00000337: POP 00000338: PUSH1 0x20 0000033a: ADD 0000033b: SWAP2 0000033c: POP 0000033d: POP 0000033e: PUSH1 0x40 00000340: MLOAD 00000341: DUP1 00000342: SWAP2 00000343: SUB 00000344: SWAP1 00000345: REVERT 00000346: JUMPDEST 00000347: PUSH1 0x00 00000349: PUSH2 0x0350 0000034c: PUSH2 0x07e7 0000034f: JUMP 00000350: JUMPDEST 00000351: SWAP1 00000352: POP 00000353: DUP1 00000354: CALLVALUE 00000355: LT 00000356: ISZERO 00000357: PUSH2 0x03c8 0000035a: JUMPI 0000035b: PUSH1 0x40 0000035d: MLOAD 0000035e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000037f: DUP2 00000380: MSTORE 00000381: PUSH1 0x04 00000383: ADD 00000384: DUP1 00000385: DUP1 00000386: PUSH1 0x20 00000388: ADD 00000389: DUP3 0000038a: DUP2 0000038b: SUB 0000038c: DUP3 0000038d: MSTORE 0000038e: PUSH1 0x16 00000390: DUP2 00000391: MSTORE 00000392: PUSH1 0x20 00000394: ADD 00000395: DUP1 00000396: PUSH32 0x433a204e6f7420656e6f756768204554482073656e7400000000000000000000 000003b7: DUP2 000003b8: MSTORE 000003b9: POP 000003ba: PUSH1 0x20 000003bc: ADD 000003bd: SWAP2 000003be: POP 000003bf: POP 000003c0: PUSH1 0x40 000003c2: MLOAD 000003c3: DUP1 000003c4: SWAP2 000003c5: SUB 000003c6: SWAP1 000003c7: REVERT 000003c8: JUMPDEST 000003c9: PUSH1 0x00 000003cb: PUSH1 0x04 000003cd: PUSH1 0x00 000003cf: SWAP1 000003d0: SLOAD 000003d1: SWAP1 000003d2: PUSH2 0x0100 000003d5: EXP 000003d6: SWAP1 000003d7: DIV 000003d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003ed: AND 000003ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000403: AND 00000404: PUSH4 0x6a627842 00000409: CALLER 0000040a: PUSH1 0x40 0000040c: MLOAD 0000040d: DUP3 0000040e: PUSH4 0xffffffff 00000413: AND 00000414: PUSH1 0xe0 00000416: SHL 00000417: DUP2 00000418: MSTORE 00000419: PUSH1 0x04 0000041b: ADD 0000041c: DUP1 0000041d: DUP3 0000041e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000433: AND 00000434: DUP2 00000435: MSTORE 00000436: PUSH1 0x20 00000438: ADD 00000439: SWAP2 0000043a: POP 0000043b: POP 0000043c: PUSH1 0x20 0000043e: PUSH1 0x40 00000440: MLOAD 00000441: DUP1 00000442: DUP4 00000443: SUB 00000444: DUP2 00000445: PUSH1 0x00 00000447: DUP8 00000448: DUP1 00000449: EXTCODESIZE 0000044a: ISZERO 0000044b: DUP1 0000044c: ISZERO 0000044d: PUSH2 0x0455 00000450: JUMPI 00000451: PUSH1 0x00 00000453: DUP1 00000454: REVERT 00000455: JUMPDEST 00000456: POP 00000457: GAS 00000458: CALL 00000459: ISZERO 0000045a: DUP1 0000045b: ISZERO 0000045c: PUSH2 0x0469 0000045f: JUMPI 00000460: RETURNDATASIZE 00000461: PUSH1 0x00 00000463: DUP1 00000464: RETURNDATACOPY 00000465: RETURNDATASIZE 00000466: PUSH1 0x00 00000468: REVERT 00000469: JUMPDEST 0000046a: POP 0000046b: POP 0000046c: POP 0000046d: POP 0000046e: PUSH1 0x40 00000470: MLOAD 00000471: RETURNDATASIZE 00000472: PUSH1 0x20 00000474: DUP2 00000475: LT 00000476: ISZERO 00000477: PUSH2 0x047f 0000047a: JUMPI 0000047b: PUSH1 0x00 0000047d: DUP1 0000047e: REVERT 0000047f: JUMPDEST 00000480: DUP2 00000481: ADD 00000482: SWAP1 00000483: DUP1 00000484: DUP1 00000485: MLOAD 00000486: SWAP1 00000487: PUSH1 0x20 00000489: ADD 0000048a: SWAP1 0000048b: SWAP3 0000048c: SWAP2 0000048d: SWAP1 0000048e: POP 0000048f: POP 00000490: POP 00000491: SWAP1 00000492: POP 00000493: PUSH1 0x00 00000495: PUSH2 0x049c 00000498: PUSH2 0x0851 0000049b: JUMP 0000049c: JUMPDEST 0000049d: SWAP1 0000049e: POP 0000049f: PUSH2 0x04b3 000004a2: DUP2 000004a3: PUSH1 0x02 000004a5: SLOAD 000004a6: PUSH2 0x0886 000004a9: SWAP1 000004aa: SWAP2 000004ab: SWAP1 000004ac: PUSH4 0xffffffff 000004b1: AND 000004b2: JUMP 000004b3: JUMPDEST 000004b4: PUSH1 0x02 000004b6: DUP2 000004b7: SWAP1 000004b8: SSTORE 000004b9: POP 000004ba: PUSH1 0x03 000004bc: PUSH1 0x00 000004be: SWAP1 000004bf: SLOAD 000004c0: SWAP1 000004c1: PUSH2 0x0100 000004c4: EXP 000004c5: SWAP1 000004c6: DIV 000004c7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004dc: AND 000004dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004f2: AND 000004f3: PUSH2 0x08fc 000004f6: PUSH2 0x0508 000004f9: DUP4 000004fa: DUP7 000004fb: PUSH2 0x090e 000004fe: SWAP1 000004ff: SWAP2 00000500: SWAP1 00000501: PUSH4 0xffffffff 00000506: AND 00000507: JUMP 00000508: JUMPDEST 00000509: SWAP1 0000050a: DUP2 0000050b: ISZERO 0000050c: MUL 0000050d: SWAP1 0000050e: PUSH1 0x40 00000510: MLOAD 00000511: PUSH1 0x00 00000513: PUSH1 0x40 00000515: MLOAD 00000516: DUP1 00000517: DUP4 00000518: SUB 00000519: DUP2 0000051a: DUP6 0000051b: DUP9 0000051c: DUP9 0000051d: CALL 0000051e: SWAP4 0000051f: POP 00000520: POP 00000521: POP 00000522: POP 00000523: ISZERO 00000524: DUP1 00000525: ISZERO 00000526: PUSH2 0x0533 00000529: JUMPI 0000052a: RETURNDATASIZE 0000052b: PUSH1 0x00 0000052d: DUP1 0000052e: RETURNDATACOPY 0000052f: RETURNDATASIZE 00000530: PUSH1 0x00 00000532: REVERT 00000533: JUMPDEST 00000534: POP 00000535: PUSH1 0x00 00000537: PUSH2 0x0549 0000053a: DUP5 0000053b: CALLVALUE 0000053c: PUSH2 0x090e 0000053f: SWAP1 00000540: SWAP2 00000541: SWAP1 00000542: PUSH4 0xffffffff 00000547: AND 00000548: JUMP 00000549: JUMPDEST 0000054a: GT 0000054b: ISZERO 0000054c: PUSH2 0x05a9 0000054f: JUMPI 00000550: CALLER 00000551: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000566: AND 00000567: PUSH2 0x08fc 0000056a: PUSH2 0x057c 0000056d: DUP6 0000056e: CALLVALUE 0000056f: PUSH2 0x090e 00000572: SWAP1 00000573: SWAP2 00000574: SWAP1 00000575: PUSH4 0xffffffff 0000057a: AND 0000057b: JUMP 0000057c: JUMPDEST 0000057d: SWAP1 0000057e: DUP2 0000057f: ISZERO 00000580: MUL 00000581: SWAP1 00000582: PUSH1 0x40 00000584: MLOAD 00000585: PUSH1 0x00 00000587: PUSH1 0x40 00000589: MLOAD 0000058a: DUP1 0000058b: DUP4 0000058c: SUB 0000058d: DUP2 0000058e: DUP6 0000058f: DUP9 00000590: DUP9 00000591: CALL 00000592: SWAP4 00000593: POP 00000594: POP 00000595: POP 00000596: POP 00000597: ISZERO 00000598: DUP1 00000599: ISZERO 0000059a: PUSH2 0x05a7 0000059d: JUMPI 0000059e: RETURNDATASIZE 0000059f: PUSH1 0x00 000005a1: DUP1 000005a2: RETURNDATACOPY 000005a3: RETURNDATASIZE 000005a4: PUSH1 0x00 000005a6: REVERT 000005a7: JUMPDEST 000005a8: POP 000005a9: JUMPDEST 000005aa: PUSH1 0x02 000005ac: SLOAD 000005ad: DUP4 000005ae: DUP4 000005af: PUSH32 0x488bbf7ce8682b98371a0bb07d4e838ce2e533a907ceda8ac6ee658fdbd162e0 000005d0: PUSH1 0x40 000005d2: MLOAD 000005d3: PUSH1 0x40 000005d5: MLOAD 000005d6: DUP1 000005d7: SWAP2 000005d8: SUB 000005d9: SWAP1 000005da: LOG4 000005db: DUP2 000005dc: SWAP4 000005dd: POP 000005de: POP 000005df: POP 000005e0: POP 000005e1: SWAP1 000005e2: JUMP 000005e3: JUMPDEST 000005e4: PUSH1 0x00 000005e6: SLOAD 000005e7: DUP2 000005e8: JUMP 000005e9: JUMPDEST 000005ea: PUSH1 0x01 000005ec: SLOAD 000005ed: DUP2 000005ee: JUMP 000005ef: JUMPDEST 000005f0: PUSH1 0x00 000005f2: PUSH2 0x05f9 000005f5: PUSH2 0x0829 000005f8: JUMP 000005f9: JUMPDEST 000005fa: SWAP1 000005fb: POP 000005fc: PUSH1 0x04 000005fe: PUSH1 0x00 00000600: SWAP1 00000601: SLOAD 00000602: SWAP1 00000603: PUSH2 0x0100 00000606: EXP 00000607: SWAP1 00000608: DIV 00000609: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000061e: AND 0000061f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000634: AND 00000635: PUSH4 0x9dc29fac 0000063a: CALLER 0000063b: DUP5 0000063c: PUSH1 0x40 0000063e: MLOAD 0000063f: DUP4 00000640: PUSH4 0xffffffff 00000645: AND 00000646: PUSH1 0xe0 00000648: SHL 00000649: DUP2 0000064a: MSTORE 0000064b: PUSH1 0x04 0000064d: ADD 0000064e: DUP1 0000064f: DUP4 00000650: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000665: AND 00000666: DUP2 00000667: MSTORE 00000668: PUSH1 0x20 0000066a: ADD 0000066b: DUP3 0000066c: DUP2 0000066d: MSTORE 0000066e: PUSH1 0x20 00000670: ADD 00000671: SWAP3 00000672: POP 00000673: POP 00000674: POP 00000675: PUSH1 0x00 00000677: PUSH1 0x40 00000679: MLOAD 0000067a: DUP1 0000067b: DUP4 0000067c: SUB 0000067d: DUP2 0000067e: PUSH1 0x00 00000680: DUP8 00000681: DUP1 00000682: EXTCODESIZE 00000683: ISZERO 00000684: DUP1 00000685: ISZERO 00000686: PUSH2 0x068e 00000689: JUMPI 0000068a: PUSH1 0x00 0000068c: DUP1 0000068d: REVERT 0000068e: JUMPDEST 0000068f: POP 00000690: GAS 00000691: CALL 00000692: ISZERO 00000693: DUP1 00000694: ISZERO 00000695: PUSH2 0x06a2 00000698: JUMPI 00000699: RETURNDATASIZE 0000069a: PUSH1 0x00 0000069c: DUP1 0000069d: RETURNDATACOPY 0000069e: RETURNDATASIZE 0000069f: PUSH1 0x00 000006a1: REVERT 000006a2: JUMPDEST 000006a3: POP 000006a4: POP 000006a5: POP 000006a6: POP 000006a7: PUSH2 0x06bb 000006aa: DUP2 000006ab: PUSH1 0x02 000006ad: SLOAD 000006ae: PUSH2 0x090e 000006b1: SWAP1 000006b2: SWAP2 000006b3: SWAP1 000006b4: PUSH4 0xffffffff 000006b9: AND 000006ba: JUMP 000006bb: JUMPDEST 000006bc: PUSH1 0x02 000006be: DUP2 000006bf: SWAP1 000006c0: SSTORE 000006c1: POP 000006c2: CALLER 000006c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006d8: AND 000006d9: PUSH2 0x08fc 000006dc: DUP3 000006dd: SWAP1 000006de: DUP2 000006df: ISZERO 000006e0: MUL 000006e1: SWAP1 000006e2: PUSH1 0x40 000006e4: MLOAD 000006e5: PUSH1 0x00 000006e7: PUSH1 0x40 000006e9: MLOAD 000006ea: DUP1 000006eb: DUP4 000006ec: SUB 000006ed: DUP2 000006ee: DUP6 000006ef: DUP9 000006f0: DUP9 000006f1: CALL 000006f2: SWAP4 000006f3: POP 000006f4: POP 000006f5: POP 000006f6: POP 000006f7: ISZERO 000006f8: DUP1 000006f9: ISZERO 000006fa: PUSH2 0x0707 000006fd: JUMPI 000006fe: RETURNDATASIZE 000006ff: PUSH1 0x00 00000701: DUP1 00000702: RETURNDATACOPY 00000703: RETURNDATASIZE 00000704: PUSH1 0x00 00000706: REVERT 00000707: JUMPDEST 00000708: POP 00000709: PUSH1 0x02 0000070b: SLOAD 0000070c: DUP2 0000070d: DUP4 0000070e: PUSH32 0x82ac44fe03cbf84203fdc07400a8a763498cf2ccaa9788e23b09d56f4fc85f72 0000072f: PUSH1 0x40 00000731: MLOAD 00000732: PUSH1 0x40 00000734: MLOAD 00000735: DUP1 00000736: SWAP2 00000737: SUB 00000738: SWAP1 00000739: LOG4 0000073a: POP 0000073b: POP 0000073c: JUMP 0000073d: JUMPDEST 0000073e: PUSH1 0x00 00000740: PUSH1 0x04 00000742: PUSH1 0x00 00000744: SWAP1 00000745: SLOAD 00000746: SWAP1 00000747: PUSH2 0x0100 0000074a: EXP 0000074b: SWAP1 0000074c: DIV 0000074d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000762: AND 00000763: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000778: AND 00000779: PUSH4 0x18160ddd 0000077e: PUSH1 0x40 00000780: MLOAD 00000781: DUP2 00000782: PUSH4 0xffffffff 00000787: AND 00000788: PUSH1 0xe0 0000078a: SHL 0000078b: DUP2 0000078c: MSTORE 0000078d: PUSH1 0x04 0000078f: ADD 00000790: PUSH1 0x20 00000792: PUSH1 0x40 00000794: MLOAD 00000795: DUP1 00000796: DUP4 00000797: SUB 00000798: DUP2 00000799: DUP7 0000079a: DUP1 0000079b: EXTCODESIZE 0000079c: ISZERO 0000079d: DUP1 0000079e: ISZERO 0000079f: PUSH2 0x07a7 000007a2: JUMPI 000007a3: PUSH1 0x00 000007a5: DUP1 000007a6: REVERT 000007a7: JUMPDEST 000007a8: POP 000007a9: GAS 000007aa: STATICCALL 000007ab: ISZERO 000007ac: DUP1 000007ad: ISZERO 000007ae: PUSH2 0x07bb 000007b1: JUMPI 000007b2: RETURNDATASIZE 000007b3: PUSH1 0x00 000007b5: DUP1 000007b6: RETURNDATACOPY 000007b7: RETURNDATASIZE 000007b8: PUSH1 0x00 000007ba: REVERT 000007bb: JUMPDEST 000007bc: POP 000007bd: POP 000007be: POP 000007bf: POP 000007c0: PUSH1 0x40 000007c2: MLOAD 000007c3: RETURNDATASIZE 000007c4: PUSH1 0x20 000007c6: DUP2 000007c7: LT 000007c8: ISZERO 000007c9: PUSH2 0x07d1 000007cc: JUMPI 000007cd: PUSH1 0x00 000007cf: DUP1 000007d0: REVERT 000007d1: JUMPDEST 000007d2: DUP2 000007d3: ADD 000007d4: SWAP1 000007d5: DUP1 000007d6: DUP1 000007d7: MLOAD 000007d8: SWAP1 000007d9: PUSH1 0x20 000007db: ADD 000007dc: SWAP1 000007dd: SWAP3 000007de: SWAP2 000007df: SWAP1 000007e0: POP 000007e1: POP 000007e2: POP 000007e3: SWAP1 000007e4: POP 000007e5: SWAP1 000007e6: JUMP 000007e7: JUMPDEST 000007e8: PUSH1 0x00 000007ea: DUP1 000007eb: PUSH2 0x081a 000007ee: PUSH2 0x0809 000007f1: PUSH1 0x00 000007f3: SLOAD 000007f4: PUSH2 0x07fb 000007f7: PUSH2 0x073d 000007fa: JUMP 000007fb: JUMPDEST 000007fc: PUSH2 0x0958 000007ff: SWAP1 00000800: SWAP2 00000801: SWAP1 00000802: PUSH4 0xffffffff 00000807: AND 00000808: JUMP 00000809: JUMPDEST 0000080a: PUSH1 0x00 0000080c: SLOAD 0000080d: PUSH2 0x0886 00000810: SWAP1 00000811: SWAP2 00000812: SWAP1 00000813: PUSH4 0xffffffff 00000818: AND 00000819: JUMP 0000081a: JUMPDEST 0000081b: SWAP1 0000081c: POP 0000081d: DUP1 0000081e: SWAP2 0000081f: POP 00000820: POP 00000821: SWAP1 00000822: JUMP 00000823: JUMPDEST 00000824: PUSH1 0x02 00000826: SLOAD 00000827: DUP2 00000828: JUMP 00000829: JUMPDEST 0000082a: PUSH1 0x00 0000082c: DUP1 0000082d: PUSH2 0x0848 00000830: PUSH1 0x01 00000832: SLOAD 00000833: PUSH2 0x083a 00000836: PUSH2 0x073d 00000839: JUMP 0000083a: JUMPDEST 0000083b: PUSH2 0x0958 0000083e: SWAP1 0000083f: SWAP2 00000840: SWAP1 00000841: PUSH4 0xffffffff 00000846: AND 00000847: JUMP 00000848: JUMPDEST 00000849: SWAP1 0000084a: POP 0000084b: DUP1 0000084c: SWAP2 0000084d: POP 0000084e: POP 0000084f: SWAP1 00000850: JUMP 00000851: JUMPDEST 00000852: PUSH1 0x00 00000854: PUSH2 0x085b 00000857: PUSH2 0x0829 0000085a: JUMP 0000085b: JUMPDEST 0000085c: SWAP1 0000085d: POP 0000085e: SWAP1 0000085f: JUMP 00000860: JUMPDEST 00000861: PUSH1 0x04 00000863: PUSH1 0x00 00000865: SWAP1 00000866: SLOAD 00000867: SWAP1 00000868: PUSH2 0x0100 0000086b: EXP 0000086c: SWAP1 0000086d: DIV 0000086e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000883: AND 00000884: DUP2 00000885: JUMP 00000886: JUMPDEST 00000887: PUSH1 0x00 00000889: DUP1 0000088a: DUP3 0000088b: DUP5 0000088c: ADD 0000088d: SWAP1 0000088e: POP 0000088f: DUP4 00000890: DUP2 00000891: LT 00000892: ISZERO 00000893: PUSH2 0x0904 00000896: JUMPI 00000897: PUSH1 0x40 00000899: MLOAD 0000089a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000008bb: DUP2 000008bc: MSTORE 000008bd: PUSH1 0x04 000008bf: ADD 000008c0: DUP1 000008c1: DUP1 000008c2: PUSH1 0x20 000008c4: ADD 000008c5: DUP3 000008c6: DUP2 000008c7: SUB 000008c8: DUP3 000008c9: MSTORE 000008ca: PUSH1 0x1b 000008cc: DUP2 000008cd: MSTORE 000008ce: PUSH1 0x20 000008d0: ADD 000008d1: DUP1 000008d2: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 000008f3: DUP2 000008f4: MSTORE 000008f5: POP 000008f6: PUSH1 0x20 000008f8: ADD 000008f9: SWAP2 000008fa: POP 000008fb: POP 000008fc: PUSH1 0x40 000008fe: MLOAD 000008ff: DUP1 00000900: SWAP2 00000901: SUB 00000902: SWAP1 00000903: REVERT 00000904: JUMPDEST 00000905: DUP1 00000906: SWAP2 00000907: POP 00000908: POP 00000909: SWAP3 0000090a: SWAP2 0000090b: POP 0000090c: POP 0000090d: JUMP 0000090e: JUMPDEST 0000090f: PUSH1 0x00 00000911: PUSH2 0x0950 00000914: DUP4 00000915: DUP4 00000916: PUSH1 0x40 00000918: MLOAD 00000919: DUP1 0000091a: PUSH1 0x40 0000091c: ADD 0000091d: PUSH1 0x40 0000091f: MSTORE 00000920: DUP1 00000921: PUSH1 0x1e 00000923: DUP2 00000924: MSTORE 00000925: PUSH1 0x20 00000927: ADD 00000928: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00000949: DUP2 0000094a: MSTORE 0000094b: POP 0000094c: PUSH2 0x09de 0000094f: JUMP 00000950: JUMPDEST 00000951: SWAP1 00000952: POP 00000953: SWAP3 00000954: SWAP2 00000955: POP 00000956: POP 00000957: JUMP 00000958: JUMPDEST 00000959: PUSH1 0x00 0000095b: DUP1 0000095c: DUP4 0000095d: EQ 0000095e: ISZERO 0000095f: PUSH2 0x096b 00000962: JUMPI 00000963: PUSH1 0x00 00000965: SWAP1 00000966: POP 00000967: PUSH2 0x09d8 0000096a: JUMP 0000096b: JUMPDEST 0000096c: PUSH1 0x00 0000096e: DUP3 0000096f: DUP5 00000970: MUL 00000971: SWAP1 00000972: POP 00000973: DUP3 00000974: DUP5 00000975: DUP3 00000976: DUP2 00000977: PUSH2 0x097c 0000097a: JUMPI 0000097b: INVALID 0000097c: JUMPDEST 0000097d: DIV 0000097e: EQ 0000097f: PUSH2 0x09d3 00000982: JUMPI 00000983: PUSH1 0x40 00000985: MLOAD 00000986: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 000009a7: DUP2 000009a8: MSTORE 000009a9: PUSH1 0x04 000009ab: ADD 000009ac: DUP1 000009ad: DUP1 000009ae: PUSH1 0x20 000009b0: ADD 000009b1: DUP3 000009b2: DUP2 000009b3: SUB 000009b4: DUP3 000009b5: MSTORE 000009b6: PUSH1 0x21 000009b8: DUP2 000009b9: MSTORE 000009ba: PUSH1 0x20 000009bc: ADD 000009bd: DUP1 000009be: PUSH2 0x0a9f 000009c1: PUSH1 0x21 000009c3: SWAP2 000009c4: CODECOPY 000009c5: PUSH1 0x40 000009c7: ADD 000009c8: SWAP2 000009c9: POP 000009ca: POP 000009cb: PUSH1 0x40 000009cd: MLOAD 000009ce: DUP1 000009cf: SWAP2 000009d0: SUB 000009d1: SWAP1 000009d2: REVERT 000009d3: JUMPDEST 000009d4: DUP1 000009d5: SWAP2 000009d6: POP 000009d7: POP 000009d8: JUMPDEST 000009d9: SWAP3 000009da: SWAP2 000009db: POP 000009dc: POP 000009dd: JUMP 000009de: JUMPDEST 000009df: PUSH1 0x00 000009e1: DUP4 000009e2: DUP4 000009e3: GT 000009e4: ISZERO 000009e5: DUP3 000009e6: SWAP1 000009e7: PUSH2 0x0a8b 000009ea: JUMPI 000009eb: PUSH1 0x40 000009ed: MLOAD 000009ee: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00000a0f: DUP2 00000a10: MSTORE 00000a11: PUSH1 0x04 00000a13: ADD 00000a14: DUP1 00000a15: DUP1 00000a16: PUSH1 0x20 00000a18: ADD 00000a19: DUP3 00000a1a: DUP2 00000a1b: SUB 00000a1c: DUP3 00000a1d: MSTORE 00000a1e: DUP4 00000a1f: DUP2 00000a20: DUP2 00000a21: MLOAD 00000a22: DUP2 00000a23: MSTORE 00000a24: PUSH1 0x20 00000a26: ADD 00000a27: SWAP2 00000a28: POP 00000a29: DUP1 00000a2a: MLOAD 00000a2b: SWAP1 00000a2c: PUSH1 0x20 00000a2e: ADD 00000a2f: SWAP1 00000a30: DUP1 00000a31: DUP4 00000a32: DUP4 00000a33: PUSH1 0x00 00000a35: JUMPDEST 00000a36: DUP4 00000a37: DUP2 00000a38: LT 00000a39: ISZERO 00000a3a: PUSH2 0x0a50 00000a3d: JUMPI 00000a3e: DUP1 00000a3f: DUP3 00000a40: ADD 00000a41: MLOAD 00000a42: DUP2 00000a43: DUP5 00000a44: ADD 00000a45: MSTORE 00000a46: PUSH1 0x20 00000a48: DUP2 00000a49: ADD 00000a4a: SWAP1 00000a4b: POP 00000a4c: PUSH2 0x0a35 00000a4f: JUMP 00000a50: JUMPDEST 00000a51: POP 00000a52: POP 00000a53: POP 00000a54: POP 00000a55: SWAP1 00000a56: POP 00000a57: SWAP1 00000a58: DUP2 00000a59: ADD 00000a5a: SWAP1 00000a5b: PUSH1 0x1f 00000a5d: AND 00000a5e: DUP1 00000a5f: ISZERO 00000a60: PUSH2 0x0a7d 00000a63: JUMPI 00000a64: DUP1 00000a65: DUP3 00000a66: SUB 00000a67: DUP1 00000a68: MLOAD 00000a69: PUSH1 0x01 00000a6b: DUP4 00000a6c: PUSH1 0x20 00000a6e: SUB 00000a6f: PUSH2 0x0100 00000a72: EXP 00000a73: SUB 00000a74: NOT 00000a75: AND 00000a76: DUP2 00000a77: MSTORE 00000a78: PUSH1 0x20 00000a7a: ADD 00000a7b: SWAP2 00000a7c: POP 00000a7d: JUMPDEST 00000a7e: POP 00000a7f: SWAP3 00000a80: POP 00000a81: POP 00000a82: POP 00000a83: PUSH1 0x40 00000a85: MLOAD 00000a86: DUP1 00000a87: SWAP2 00000a88: SUB 00000a89: SWAP1 00000a8a: REVERT 00000a8b: JUMPDEST 00000a8c: POP 00000a8d: PUSH1 0x00 00000a8f: DUP4 00000a90: DUP6 00000a91: SUB 00000a92: SWAP1 00000a93: POP 00000a94: DUP1 00000a95: SWAP2 00000a96: POP 00000a97: POP 00000a98: SWAP4 00000a99: SWAP3 00000a9a: POP 00000a9b: POP 00000a9c: POP 00000a9d: JUMP 00000a9e: INVALID 00000a9f: MSTORE8 00000aa0: PUSH2 0x6665 00000aa3: UNKNOWN(0x4D) 00000aa4: PUSH2 0x7468 00000aa7: GASPRICE 00000aa8: KECCAK256 00000aa9: PUSH14 0x756c7469706c69636174696f6e20 00000ab8: PUSH16 0x766572666c6f77a26469706673582212 00000ac9: KECCAK256 00000aca: UNKNOWN(0xE4) 00000acb: POP 00000acc: LOG4 00000acd: UNKNOWN(0xCE) 00000ace: UNKNOWN(0xBF) 00000acf: PUSH31 0x798afbbfdaea204d1f4dd8d6731588ffe9372aa3f266ca83fa6364736f6c63 00000aef: NUMBER 00000af0: STOP 00000af1: SMOD 00000af2: SUB 00000af3: STOP 00000af4: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0xdd79c28cd83c4f8865ad07ce8411beb54535261faf556cddc384f6511b8fb59b
call_targets:
0x174150478891bdd4eaefab50fb24b9126f289fa6
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xdd79c28cd83c4f8865ad07ce8411beb54535261faf556cddc384f6511b8fb59b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x174150478891bdd4eaefab50fb24b9126f289fa6"
],
"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": "0x4f3e1efc",
"selector": "0x4f3e1efc",
"calldata_variants": [
"0x4f3e1efc",
"0x4f3e1efc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc96b6544",
"selector": "0xc96b6544",
"calldata_variants": [
"0xc96b6544",
"0xc96b65440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd3293de",
"selector": "0xcd3293de",
"calldata_variants": [
"0xcd3293de",
"0xcd3293de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd441426a",
"selector": "0xd441426a",
"calldata_variants": [
"0xd441426a",
"0xd441426a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe4628745",
"selector": "0xe4628745",
"calldata_variants": [
"0xe4628745",
"0xe46287450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe57567db",
"selector": "0xe57567db",
"calldata_variants": [
"0xe57567db",
"0xe57567db0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x02d05d3f",
"selector": "0x02d05d3f",
"calldata_variants": [
"0x02d05d3f",
"0x02d05d3f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1249c58b",
"selector": "0x1249c58b",
"calldata_variants": [
"0x1249c58b",
"0x1249c58b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1112,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1309,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1425,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 5,
"guards_detected": [],
"untrusted_call_count": 5
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0xdd79c28cd83c4f8865ad07ce8411beb54535261faf556cddc384f6511b8fb59b
call_targets:
0x174150478891bdd4eaefab50fb24b9126f289fa6
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xdd79c28cd83c4f8865ad07ce8411beb54535261faf556cddc384f6511b8fb59b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x174150478891bdd4eaefab50fb24b9126f289fa6"
],
"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": "0x4f3e1efc",
"selector": "0x4f3e1efc",
"calldata_variants": [
"0x4f3e1efc",
"0x4f3e1efc0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc96b6544",
"selector": "0xc96b6544",
"calldata_variants": [
"0xc96b6544",
"0xc96b65440000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xcd3293de",
"selector": "0xcd3293de",
"calldata_variants": [
"0xcd3293de",
"0xcd3293de0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xd441426a",
"selector": "0xd441426a",
"calldata_variants": [
"0xd441426a",
"0xd441426a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe4628745",
"selector": "0xe4628745",
"calldata_variants": [
"0xe4628745",
"0xe46287450000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xe57567db",
"selector": "0xe57567db",
"calldata_variants": [
"0xe57567db",
"0xe57567db0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x02d05d3f",
"selector": "0x02d05d3f",
"calldata_variants": [
"0x02d05d3f",
"0x02d05d3f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1249c58b",
"selector": "0x1249c58b",
"calldata_variants": [
"0x1249c58b",
"0x1249c58b0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1112,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1309,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 1425,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 5,
"guards_detected": []
}
|