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

Analysis Run

4f95316a-085a-485c-91cf-2d9aeb443f94

failed
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 8:55 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
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

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable profit paths found in the provided contracts.
View stderr
[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":[]}
Metadata
{
    "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
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
6
EXT*/BALANCE
3
Total opcodes
1549
Flags
No heuristic flags raised.
View cast disassembly output
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

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_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
view
trace_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": []
}