1f0fb84a-3a72-4dcc-a50e-dd772a793302
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 |
|---|---|---|---|---|
| 31603 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 111416 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 111417 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 111418 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 111419 | capability.graph | complete | 1 / 3 | 1 week ago |
| 111420 | detector.run | complete | 1 / 3 | 1 week ago |
| 111421 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:282097] OpenAI Codex v0.77.0 (research preview)
[codex:282097] --------
[codex:282097] workdir: /tmp/codex-multi-5tc116lb
[codex:282097] model: gpt-5.2-codex
[codex:282097] provider: openai
[codex:282097] approval: never
[codex:282097] sandbox: read-only
[codex:282097] reasoning effort: xhigh
[codex:282097] reasoning summaries: auto
[codex:282097] session id: 019b87ec-a285-7d31-9739-17910d6f6b12
[codex:282097] --------
[codex:282097] user
[codex:282097] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:282097]
[codex:282097] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:282097]
[codex:282097] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:282097] - Gas inefficiency, code quality, or best practices
[codex:282097] - Theoretical vulnerabilities without a clear extraction path
[codex:282097] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:282097] - Issues requiring social engineering or off-chain coordination
[codex:282097]
[codex:282097] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:282097] - CALL/DELEGATECALL with controllable destination or calldata
[codex:282097] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:282097] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:282097] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:282097] - External calls before state updates (reentrancy)
[codex:282097] - SELFDESTRUCT with controllable beneficiary
[codex:282097] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:282097]
[codex:282097] For each finding, you MUST explain:
[codex:282097] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:282097] 2. The concrete sequence of transactions to extract value
[codex:282097] 3. Why you believe this is exploitable (not just suspicious)
[codex:282097]
[codex:282097] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:282097] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:282097]
[codex:282097] Output MUST be valid JSON matching the provided schema.
[codex:282097] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:282097] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:282097] mcp startup: no servers
[codex:282097]
[codex:282097] thinking
[codex:282097] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:282097] exec
[codex:282097] /bin/bash -lc ls in /tmp/codex-multi-5tc116lb succeeded in 6ms:
[codex:282097] BYTECODE_BUNDLE.txt
[codex:282097] codex-output-schema.json
[codex:282097] exec
[codex:282097] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-5tc116lb succeeded in 5ms:
[codex:282097] Runtime bytecode bundle for best-effort auditing.
[codex:282097] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:282097]
[codex:282097] FILE: runtime_bytecode.hex
[codex:282097] 0x6060604052600436106100cc5763ffffffff60e060020a60003504166308fec02d81146100ce57806314c2ab11146100f357806334b9384c1461010657806380776e2e146101255780638404c195146101745780639413f25c146101935780639592619c146101b25780639af608c9146101c5578063ae517b7914610221578063b49ff06014610234578063d8580a6f14610247578063dff90b5b1461025a578063e75f7ddb14610262578063f01fe69214610294578063fd8c06c6146102b6578063ffe7d95b146102d5575b005b34156100d957600080fd5b6100e16102e8565b60405190815260200160405180910390f35b34156100fe57600080fd5b6100e16102ee565b341561011157600080fd5b6100cc600160a060020a03600435166102f4565b341561013057600080fd5b610144600160a060020a0360043516610388565b604051600160a060020a039093168352602083019190915215156040808301919091526060909101905180910390f35b341561017f57600080fd5b6100cc600160a060020a03600435166103b9565b341561019e57600080fd5b6100cc600160a060020a03600435166103fd565b34156101bd57600080fd5b6100e16104e2565b34156101d057600080fd5b6101e4600160a060020a0360043516610505565b6040518085815260200184815260200183600160a060020a0316600160a060020a0316815260200182815260200194505050505060405180910390f35b341561022c57600080fd5b6100e161053b565b341561023f57600080fd5b6100cc610541565b341561025257600080fd5b6100cc6105b4565b6100e16105d5565b341561026d57600080fd5b610278600435610687565b604051600160a060020a03909116815260200160405180910390f35b341561029f57600080fd5b6100e1600435600160a060020a03602435166106af565b34156102c157600080fd5b6100e1600160a060020a036004351661078d565b34156102e057600080fd5b6100e16107a2565b60015481565b60065481565b600160a060020a03811660009081526005602052604081208282805b60025482101561037457600280548390811061032857fe5b600091825260209091200154600160a060020a03169050848061035c575080600160a060020a031633600160a060020a0316145b94506103698484836107a8565b600190910190610310565b84151561038057600080fd5b505050505050565b600060208190529081526040902060028101546003820154600490920154600160a060020a03909116919060ff1683565b6000806103c76002336108c4565b15156103d257600080fd5b5050600160a060020a0381166000908152600560205260409020816103f88282336107a8565b505050565b600160a060020a0381166000908152602081905260408120600381015490919081901161042957600080fd5b600482015460ff161561043b57600080fd5b60048201805460ff19166001179055600382015461049390836002604080519081016040529190828260026020028201915b81548152602001906001019080831161046d57505050505061092190919063ffffffff16565b905060008111156103f8576001546104b1908263ffffffff61095216565b6001556002820154600160a060020a03168160405160006040518083038185875af19250505015156103f857600080fd5b33600160a060020a031660009081526020819052604090206001810154905b5090565b600160a060020a039081166000908152602081905260409020805460018201546002830154600390930154919490939290921691565b60045481565b600080805b6002548210156105a857600280548390811061055e57fe5b600091825260209091200154600160a060020a031690508280610592575080600160a060020a031633600160a060020a0316145b925061059d81610964565b600190910190610546565b8215156103f857600080fd5b6105bf6002336108c4565b15156105ca57600080fd5b6105d333610964565b565b60008080348190116105e657600080fd5b600160a060020a033316600090815260208190526040902060038101549092501561061057600080fd5b600082600101541161062157600080fd5b34600383018190556106689083600260408051908101604090815283548252909291908301600183016020850180831161046d57505050505061092190919063ffffffff16565b60015490915061067e908263ffffffff6109df16565b60015591505090565b600280548290811061069557fe5b600091825260209091200154600160a060020a0316905081565b600080806706f05b59d3b2000085106106c757600080fd5b600160a060020a033316600090815260208190526040902091508160010154156106f057600080fd5b61071761070f61070787600263ffffffff6109f516565b600754610a0a565b600654610a21565b60028301805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03871617905590506040805190810160405285815260208101610764878463ffffffff6109df16565b90526107739083906002610b9a565b50610784858263ffffffff6109df16565b95945050505050565b60056020526000908152604090206001015481565b60075481565b60006108388284600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156107fc57600080fd5b5af1151561080957600080fd5b50505060405180519050604080519081016040526001815260025460208201528792919063ffffffff610a3916565b905082600160a060020a031663a9059cbb838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561088e57600080fd5b5af1151561089b57600080fd5b5050506040518051905015156108be576108bc84838363ffffffff610b0916565b505b50505050565b6000805b83548110156109155782600160a060020a031684828154811015156108e957fe5b600091825260209091200154600160a060020a0316141561090d576001915061091a565b6001016108c8565b600091505b5092915050565b6000610949602084015161093d8551859063ffffffff610b6f16565b9063ffffffff6109f516565b90505b92915050565b60008282111561095e57fe5b50900390565b60006109af8261098960015430600160a060020a03163161095290919063ffffffff16565b60408051908101604052600181526002546020820152600392919063ffffffff610a3916565b905081600160a060020a03168160405160006040518083038185875af19250505015156109db57600080fd5b5050565b6000828201838110156109ee57fe5b9392505050565b60008183811515610a0257fe5b049392505050565b600081831015610a1b57508161094c565b50919050565b600081831015610a3257508061094c565b5090919050565b600080600080610a66610a598960010154886109df90919063ffffffff16565b869063ffffffff61092116565b600160a060020a038816600090815260208a90526040902054909350915082821115610a8e57fe5b610a9e838363ffffffff61095216565b600160a060020a038816600090815260208a90526040902054909150610aca908263ffffffff6109df16565b600160a060020a038816600090815260208a905260409020556001880154610af8908263ffffffff6109df16565b600189015592505050949350505050565b600160a060020a038216600090815260208490526040812054610b32908363ffffffff61095216565b600160a060020a0384166000908152602086905260409020556001840154610b60908363ffffffff61095216565b84600101819055509392505050565b600080831515610b82576000915061091a565b50828202828482811515610b9257fe5b04146109ee57fe5b8260028101928215610bc8579160200282015b82811115610bc8578251825591602001919060010190610bad565b5061050192610be89250905b808211156105015760008155600101610bd4565b905600a165627a7a723058204c46491b1999aac050408abcd77d4a42ae176b1f6bb1949134182ebd981f4ce30029
[codex:282097]
[codex:282097] thinking
[codex:282097] **Planning offline EVM bytecode disassembly**
[codex:282097]
[codex:282097] I'll approach this by creating a simple Python EVM disassembler to analyze the runtime bytecode offline, focusing on decoding function selectors and inspecting storage accesses and calls to determine potential exploit paths. This way, I can work within the read-only environment without relying on external tools or network access.
[codex:282097] exec
[codex:282097] /bin/bash -lc "python - <<'PY'
[codex:282097] import binascii
[codex:282097] code_hex=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:282097] code=bytes.fromhex(code_hex)
[codex:282097] # simple disassembler
[codex:282097] opcodes={
[codex:282097] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:282097] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:282097] 0x20:'SHA3',
[codex:282097] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:282097] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:282097] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:282097] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:282097] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:282097] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:282097] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:282097] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:282097] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:282097] }
[codex:282097]
[codex:282097] pc=0
[codex:282097] while pc<len(code):
[codex:282097] op=code[pc]
[codex:282097] name=opcodes.get(op, f'UNKNOWN_{op:02x}')
[codex:282097] if 0x60<=op<=0x7f:
[codex:282097] n=op-0x5f
[codex:282097] data=code[pc+1:pc+1+n]
[codex:282097] print(f'{pc:04x}: {name} 0x{data.hex()}')
[codex:282097] pc+=1+n
[codex:282097] else:
[codex:282097] print(f'{pc:04x}: {name}')
[codex:282097] pc+=1
[codex:282097] PY" in /tmp/codex-multi-5tc116lb succeeded in 20ms:
[codex:282097] 0000: PUSH1 0x60
[codex:282097] 0002: PUSH1 0x40
[codex:282097] 0004: MSTORE
[codex:282097] 0005: PUSH1 0x04
[codex:282097] 0007: CALLDATASIZE
[codex:282097] 0008: LT
[codex:282097] 0009: PUSH2 0x00cc
[codex:282097] 000c: JUMPI
[codex:282097] 000d: PUSH4 0xffffffff
[codex:282097] 0012: PUSH1 0xe0
[codex:282097] 0014: PUSH1 0x02
[codex:282097] 0016: EXP
[codex:282097] 0017: PUSH1 0x00
[codex:282097] 0019: CALLDATALOAD
[codex:282097] 001a: DIV
[codex:282097] 001b: AND
[codex:282097] 001c: PUSH4 0x08fec02d
[codex:282097] 0021: DUP2
[codex:282097] 0022: EQ
[codex:282097] 0023: PUSH2 0x00ce
[codex:282097]
[codex:282097]
[codex:282097]
[codex:282097] thinking
[codex:282097] **Analyzing contract bytecode and storage patterns**
[codex:282097]
[codex:282097] I'm carefully dissecting the contract’s bytecode to understand its structure and function; it resembles a multisig or token distribution DAO, with owner arrays, mappings, and calls to token balance and transfer functions. I'm tracing stack operations and storage slots to infer function behavior, access control checks, and internal calls—especially around token transfers—to spot any vulnerabilities or exploit paths. This detailed dive should help me know if there's a clear profit exploit or just typical multisig logic.
[codex:282097] thinking
[codex:282097] **Analyzing contract functions and storage layout**
[codex:282097]
[codex:282097] I'm tracing functions in this contract to understand how deposits, withdrawals, and token transfers work, especially focusing on how mappings and arrays store owner info and balances. I'm carefully tracking stack and storage operations to see if any function could let someone move tokens or ETH without proper authorization. This involves decoding function selectors, internal calls, and ensuring callvalue checks and safe math to identify potential vulnerabilities or logic flaws.
[codex:282097] thinking
[codex:282097] **Mapping stack and loop variables in distribution function**
[codex:282097]
[codex:282097] I'm carefully reconstructing stack positions and variable roles in the owner-distribution loop function to understand how it iterates and applies checks before calling the internal payout function. Tracing these stack manipulations helps me verify access conditions and how owner addresses are loaded and validated. I'm also examining a key function that processes withdrawals based on address mappings, checking storage flags and cryptic conditions that might control withdrawal eligibility or state changes. This is a detailed step to map storage layout and control flow.
[codex:282097] exec
[codex:282097] /bin/bash -lc "python - <<'PY'
[codex:282097] print(int('06f05b59d3b20000',16))
[codex:282097] PY" in /tmp/codex-multi-5tc116lb succeeded in 18ms:
[codex:282097] 500000000000000000
[codex:282097]
[codex:282097]
[codex:282097] thinking
[codex:282097] **Analyzing smart contract storage and function behavior**
[codex:282097] thinking
[codex:282097] **Reviewing withdrawal and reentrancy mechanics**
[codex:282097]
[codex:282097] I'm carefully tracing the withdrawal function to see if it securely updates state before external calls and if reentrancy or unauthorized withdrawals might be possible; the flag set before the call suggests some protection, but I'll watch for gaps that could let an attacker withdraw others’ funds or exploit call parameters.
[codex:282097] exec
[codex:282097] /bin/bash -lc "python - <<'PY'
[codex:282097] import binascii
[codex:282097] code_hex=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:282097] code=bytes.fromhex(code_hex)
[codex:282097] print('ORIGIN' in [code[i]==0x32 for i in range(len(code))])
[codex:282097] print([i for i,b in enumerate(code) if b==0x32][:10])
[codex:282097] PY" in /tmp/codex-multi-5tc116lb succeeded in 21ms:
[codex:282097] False
[codex:282097] [2602, 2853]
[codex:282097]
[codex:282097] thinking
[codex:282097] **Analyzing potential origin usage and calls**
[codex:282097] exec
[codex:282097] /bin/bash -lc "python - <<'PY'
[codex:282097] import binascii
[codex:282097] code_hex=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:282097] code=bytes.fromhex(code_hex)
[codex:282097] print('delegatecall positions', [i for i,b in enumerate(code) if b==0xf4])
[codex:282097] print('selfdestruct positions', [i for i,b in enumerate(code) if b==0xff])
[codex:282097] PY" in /tmp/codex-multi-5tc116lb succeeded in 18ms:
[codex:282097] delegatecall positions [291]
[codex:282097] selfdestruct positions [14, 15, 16, 17, 195, 949, 1072, 1091, 1165, 1166, 1167, 1168, 1192, 1193, 1194, 1195, 1634, 1635, 1636, 1637, 1653, 1654, 1655, 1656, 1790, 1791, 1792, 1793, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1883, 1884, 1885, 1886, 1915, 1916, 1917, 1918, 1992, 1993, 1994, 1995, 2095, 2096, 2097, 2098, 2133, 2134, 2135, 2136, 2227, 2228, 2229, 2230, 2356, 2357, 2358, 2359, 2368, 2369, 2370, 2371, 2435, 2436, 2437, 2438, 2470, 2471, 2472, 2473, 2643, 2644, 2645, 2646, 2653, 2654, 2655, 2656, 2709, 2710, 2711, 2712, 2753, 2754, 2755, 2756, 2799, 2800, 2801, 2802, 2857, 2858, 2859, 2860, 2903, 2904, 2905, 2906]
[codex:282097]
[codex:282097] thinking
[codex:282097] **Analyzing contract storage and call patterns**
[codex:282097] exec
[codex:282097] /bin/bash -lc "python - <<'PY'
[codex:282097] import hashlib
[codex:282097]
[codex:282097] def sig(s):
[codex:282097] return hashlib.sha3_256(s.encode()).hexdigest()[:8]
[codex:282097]
[codex:282097] names=['owners(uint256)','getOwner(uint256)','owner(uint256)','getOwners()','ownersCount()','isOwner(address)','getBalance(address)','deposit()','withdraw(address)','withdraw()','distribute()','payout(address)','claim(address)','claim()','addOwner(address)','removeOwner(address)','submitTransaction(address,uint256,bytes)','executeTransaction(uint256)','confirmTransaction(uint256)','revokeConfirmation(uint256)','getTransaction(uint256)','getTransactionCount(bool,bool)']
[codex:282097] for n in names:
[codex:282097] print(n, sig(n))
[codex:282097] PY" in /tmp/codex-multi-5tc116lb succeeded in 24ms:
[codex:282097] owners(uint256) bfdf98b2
[codex:282097] getOwner(uint256) 6615c00e
[codex:282097] owner(uint256) 19544b96
[codex:282097] getOwners() 9588d8c5
[codex:282097] ownersCount() 40c08459
[codex:282097] isOwner(address) 44fac43f
[codex:282097] getBalance(address) 628b4d7e
[codex:282097] deposit() 9c02207e
[codex:282097] withdraw(address) 2909145d
[codex:282097] withdraw() f7f84189
[codex:282097] distribute() aae75061
[codex:282097] payout(address) fdce3ed1
[codex:282097] claim(address) 6b5f4ad7
[codex:282097] claim() 6c161277
[codex:282097] addOwner(address) 8c54d081
[codex:282097] removeOwner(address) 04e4834f
[codex:282097] submitTransaction(address,uint256,bytes) 6cb8c0ee
[codex:282097] executeTransaction(uint256) 343ad26e
[codex:282097] confirmTransaction(uint256) 593c9bda
[codex:282097] revokeConfirmation(uint256) bb64c6be
[codex:282097]
[codex:282097]
[codex:282097]
[codex:282097]
[codex:282097] thinking
[codex:282097] **Analyzing bytecode for exploit paths**
[codex:282097] thinking
[codex:282097] **Examining token transfer and reentrancy details**
[codex:282097]
[codex:282097] I'm carefully tracing the order of state updates and external calls around token transfers and ETH sends, confirming that storage updates happen before external calls to mitigate reentrancy risk. I'm also analyzing complex function logic involving loops over owners and token distributions, trying to understand access controls and parameter roles to see if any unrestricted transfers or withdrawals could be exploited. This involves symbolic stack simulation and detailed bytecode inspection, but so far no clear unauthorized access or exploit path emerges.
[codex:282097] thinking
[codex:282097] **Analyzing withdrawal logic and access controls**
[codex:282097]
[codex:282097] I'm stepping through the withdrawal function to confirm it properly checks balances and withdrawal flags before sending funds. By symbolically tracking storage loads and conditions, I see it updates state before sending ETH, reducing reentrancy risk. I’m also verifying that users can only withdraw their own deposits since key-based storage uses `msg.sender` and that recipient addresses can’t be arbitrarily set for others. Though some jumps and calls are complex, authorization seems enforced, and the code uses safe math. I’m considering scenarios where parameter checks might allow withdrawals on zero balances or bypass ownership, but the logic appears robust so far.
[codex:282097] thinking
[codex:282097] **Examining owner update and withdrawal flag resets**
[codex:282097]
[codex:282097] I’m investigating whether any function besides the main withdrawal logic can reset the withdrawal flag stored at base+4, which might allow repeated withdrawals if reset improperly. There’s a suspicion that a function with signature 0xf01fe692 could let anyone add themselves as owner without payment, potentially enabling unauthorized withdrawals if owners can withdraw fees. I’m also checking if storage writes elsewhere overwrite the flag unintentionally, focusing on patterns like `PUSH1 0x04` followed by `SSTORE` in disassembly to find any updates to that mapping slot beyond the withdrawal function.
[codex:282097] exec
[codex:282097] /bin/bash -lc "python - <<'PY'
[codex:282097] import re
[codex:282097] lines=open('disasm.txt','w')
[codex:282097] PY" in /tmp/codex-multi-5tc116lb exited 1 in 30ms:
[codex:282097] Traceback (most recent call last):
[codex:282097] File "<stdin>", line 2, in <module>
[codex:282097] PermissionError: [Errno 13] Permission denied: 'disasm.txt'
[codex:282097]
[codex:282097] thinking
[codex:282097] **Preparing in-memory analysis of SSTORE from disassembly**
[codex:282097] exec
[codex:282097] /bin/bash -lc "python - <<'PY'
[codex:282097] import binascii
[codex:282097] code_hex=open('BYTECODE_BUNDLE.txt').read().split('0x')[1].split('\\n')[0].strip()
[codex:282097] code=bytes.fromhex(code_hex)
[codex:282097] # disassemble to list of (pc, op, arg)
[codex:282097] opcodes={
[codex:282097] 0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',
[codex:282097] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:282097] 0x20:'SHA3',
[codex:282097] 0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:282097] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:282097] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',
[codex:282097] 0x60:'PUSH1',0x61:'PUSH2',0x62:'PUSH3',0x63:'PUSH4',0x64:'PUSH5',0x65:'PUSH6',0x66:'PUSH7',0x67:'PUSH8',0x68:'PUSH9',0x69:'PUSH10',0x6a:'PUSH11',0x6b:'PUSH12',0x6c:'PUSH13',0x6d:'PUSH14',0x6e:'PUSH15',0x6f:'PUSH16',
[codex:282097] 0x70:'PUSH17',0x71:'PUSH18',0x72:'PUSH19',0x73:'PUSH20',0x74:'PUSH21',0x75:'PUSH22',0x76:'PUSH23',0x77:'PUSH24',0x78:'PUSH25',0x79:'PUSH26',0x7a:'PUSH27',0x7b:'PUSH28',0x7c:'PUSH29',0x7d:'PUSH30',0x7e:'PUSH31',0x7f:'PUSH32',
[codex:282097] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:282097] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:282097] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:282097] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:282097] }
[codex:282097]
[codex:282097] # build list
[codex:282097] ops=[]
[codex:282097] pc=0
[codex:282097] while pc < len(code):
[codex:282097] op=code[pc]
[codex:282097] name=opcodes.get(op, f'UNKNOWN_{op:02x}')
[codex:282097] if 0x60<=op<=0x7f:
[codex:282097] n=op-0x5f
[codex:282097] data=code[pc+1:pc+1+n]
[codex:282097] ops.append((pc,name,data.hex()))
[codex:282097] pc+=1+n
[codex:282097] else:
[codex:282097] ops.append((pc,name,''))
[codex:282097] pc+=1
[codex:282097]
[codex:282097] # print context around SSTORE
[codex:282097] for i,(pc,name,arg) in enumerate(ops):
[codex:282097] if name=='SSTORE':
[codex:282097] print('--- SSTORE at',hex(pc))
[codex:282097] for j in range(max(0,i-5), min(len(ops), i+6)):
[codex:282097] pc2,name2,arg2=ops[j]
[codex:282097] if arg2:
[codex:282097] print(f'{pc2:04x}: {name2} 0x{arg2}')
[codex:282097] else:
[codex:282097] print(f'{pc2:04x}: {name2}')
[codex:282097] PY" in /tmp/codex-multi-5tc116lb succeeded in 20ms:
[codex:282097] --- SSTORE at 0x44a
[codex:282097] 0444: NOT
[codex:282097] 0445: AND
[codex:282097] 0446: PUSH1 0x01
[codex:282097] 0448: OR
[codex:282097] 0449: SWAP1
[codex:282097] 044a: SSTORE
[codex:282097] 044b: PUSH1 0x03
[codex:282097] 044d: DUP3
[codex:282097] 044e: ADD
[codex:282097] 044f: SLOAD
[codex:282097] 0450: PUSH2 0x0493
[codex:282097] --- SSTORE at 0x4b4
[codex:282097] 04ac: PUSH2 0x0952
[codex:282097] 04af: AND
[codex:282097] 04b0: JUMP
[codex:282097] 04b1: JUMPDEST
[codex:282097] 04b2: PUSH1 0x01
[codex:282097] 04b4: SSTORE
[codex:282097] 04b5: PUSH1 0x02
[codex:282097]
[codex:282097] thinking
[codex:282097] **Confirming no exploitable flaws found**
[codex:282097]
[codex:282097] I'm carefully verifying that the contract has proper ownership checks on token transfers and no unsafe use of `tx.origin`, `selfdestruct`, or `delegatecall`. The stored flags prevent reentrancy, and external calls are guarded by owner checks, so I conclude no concrete exploit path exists. I'll prepare a concise JSON summary indicating no findings as requested.
[codex:282097] codex
[codex:282097] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths were identifiable from the runtime bytecode alone; external calls appear tied to stored recipients with state updates/owner checks, and no controllable delegatecall/selfdestruct or unrestricted value transfer was observed.","findings":[]}
[codex:282097] tokens used
[codex:282097] 76,956
[codex:282097] {"no_findings":true,"summary":"No concrete, exploitable value-extraction paths were identifiable from the runtime bytecode alone; external calls appear tied to stored recipients with state updates/owner checks, and no controllable delegatecall/selfdestruct or unrestricted value transfer was observed.","findings":[]}
{
"codex": {
"ran_at": "2026-01-04T07:46:56.834465+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction paths were identifiable from the runtime bytecode alone; external calls appear tied to stored recipients with state updates/owner checks, and no controllable delegatecall/selfdestruct or unrestricted value transfer was observed.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction paths were identifiable from the runtime bytecode alone; external calls appear tied to stored recipients with state updates/owner checks, and no controllable delegatecall/selfdestruct or unrestricted value transfer was observed.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00cc 0000000c: JUMPI 0000000d: PUSH4 0xffffffff 00000012: PUSH1 0xe0 00000014: PUSH1 0x02 00000016: EXP 00000017: PUSH1 0x00 00000019: CALLDATALOAD 0000001a: DIV 0000001b: AND 0000001c: PUSH4 0x08fec02d 00000021: DUP2 00000022: EQ 00000023: PUSH2 0x00ce 00000026: JUMPI 00000027: DUP1 00000028: PUSH4 0x14c2ab11 0000002d: EQ 0000002e: PUSH2 0x00f3 00000031: JUMPI 00000032: DUP1 00000033: PUSH4 0x34b9384c 00000038: EQ 00000039: PUSH2 0x0106 0000003c: JUMPI 0000003d: DUP1 0000003e: PUSH4 0x80776e2e 00000043: EQ 00000044: PUSH2 0x0125 00000047: JUMPI 00000048: DUP1 00000049: PUSH4 0x8404c195 0000004e: EQ 0000004f: PUSH2 0x0174 00000052: JUMPI 00000053: DUP1 00000054: PUSH4 0x9413f25c 00000059: EQ 0000005a: PUSH2 0x0193 0000005d: JUMPI 0000005e: DUP1 0000005f: PUSH4 0x9592619c 00000064: EQ 00000065: PUSH2 0x01b2 00000068: JUMPI 00000069: DUP1 0000006a: PUSH4 0x9af608c9 0000006f: EQ 00000070: PUSH2 0x01c5 00000073: JUMPI 00000074: DUP1 00000075: PUSH4 0xae517b79 0000007a: EQ 0000007b: PUSH2 0x0221 0000007e: JUMPI 0000007f: DUP1 00000080: PUSH4 0xb49ff060 00000085: EQ 00000086: PUSH2 0x0234 00000089: JUMPI 0000008a: DUP1 0000008b: PUSH4 0xd8580a6f 00000090: EQ 00000091: PUSH2 0x0247 00000094: JUMPI 00000095: DUP1 00000096: PUSH4 0xdff90b5b 0000009b: EQ 0000009c: PUSH2 0x025a 0000009f: JUMPI 000000a0: DUP1 000000a1: PUSH4 0xe75f7ddb 000000a6: EQ 000000a7: PUSH2 0x0262 000000aa: JUMPI 000000ab: DUP1 000000ac: PUSH4 0xf01fe692 000000b1: EQ 000000b2: PUSH2 0x0294 000000b5: JUMPI 000000b6: DUP1 000000b7: PUSH4 0xfd8c06c6 000000bc: EQ 000000bd: PUSH2 0x02b6 000000c0: JUMPI 000000c1: DUP1 000000c2: PUSH4 0xffe7d95b 000000c7: EQ 000000c8: PUSH2 0x02d5 000000cb: JUMPI 000000cc: JUMPDEST 000000cd: STOP 000000ce: JUMPDEST 000000cf: CALLVALUE 000000d0: ISZERO 000000d1: PUSH2 0x00d9 000000d4: JUMPI 000000d5: PUSH1 0x00 000000d7: DUP1 000000d8: REVERT 000000d9: JUMPDEST 000000da: PUSH2 0x00e1 000000dd: PUSH2 0x02e8 000000e0: JUMP 000000e1: JUMPDEST 000000e2: PUSH1 0x40 000000e4: MLOAD 000000e5: SWAP1 000000e6: DUP2 000000e7: MSTORE 000000e8: PUSH1 0x20 000000ea: ADD 000000eb: PUSH1 0x40 000000ed: MLOAD 000000ee: DUP1 000000ef: SWAP2 000000f0: SUB 000000f1: SWAP1 000000f2: RETURN 000000f3: JUMPDEST 000000f4: CALLVALUE 000000f5: ISZERO 000000f6: PUSH2 0x00fe 000000f9: JUMPI 000000fa: PUSH1 0x00 000000fc: DUP1 000000fd: REVERT 000000fe: JUMPDEST 000000ff: PUSH2 0x00e1 00000102: PUSH2 0x02ee 00000105: JUMP 00000106: JUMPDEST 00000107: CALLVALUE 00000108: ISZERO 00000109: PUSH2 0x0111 0000010c: JUMPI 0000010d: PUSH1 0x00 0000010f: DUP1 00000110: REVERT 00000111: JUMPDEST 00000112: PUSH2 0x00cc 00000115: PUSH1 0x01 00000117: PUSH1 0xa0 00000119: PUSH1 0x02 0000011b: EXP 0000011c: SUB 0000011d: PUSH1 0x04 0000011f: CALLDATALOAD 00000120: AND 00000121: PUSH2 0x02f4 00000124: JUMP 00000125: JUMPDEST 00000126: CALLVALUE 00000127: ISZERO 00000128: PUSH2 0x0130 0000012b: JUMPI 0000012c: PUSH1 0x00 0000012e: DUP1 0000012f: REVERT 00000130: JUMPDEST 00000131: PUSH2 0x0144 00000134: PUSH1 0x01 00000136: PUSH1 0xa0 00000138: PUSH1 0x02 0000013a: EXP 0000013b: SUB 0000013c: PUSH1 0x04 0000013e: CALLDATALOAD 0000013f: AND 00000140: PUSH2 0x0388 00000143: JUMP 00000144: JUMPDEST 00000145: PUSH1 0x40 00000147: MLOAD 00000148: PUSH1 0x01 0000014a: PUSH1 0xa0 0000014c: PUSH1 0x02 0000014e: EXP 0000014f: SUB 00000150: SWAP1 00000151: SWAP4 00000152: AND 00000153: DUP4 00000154: MSTORE 00000155: PUSH1 0x20 00000157: DUP4 00000158: ADD 00000159: SWAP2 0000015a: SWAP1 0000015b: SWAP2 0000015c: MSTORE 0000015d: ISZERO 0000015e: ISZERO 0000015f: PUSH1 0x40 00000161: DUP1 00000162: DUP4 00000163: ADD 00000164: SWAP2 00000165: SWAP1 00000166: SWAP2 00000167: MSTORE 00000168: PUSH1 0x60 0000016a: SWAP1 0000016b: SWAP2 0000016c: ADD 0000016d: SWAP1 0000016e: MLOAD 0000016f: DUP1 00000170: SWAP2 00000171: SUB 00000172: SWAP1 00000173: RETURN 00000174: JUMPDEST 00000175: CALLVALUE 00000176: ISZERO 00000177: PUSH2 0x017f 0000017a: JUMPI 0000017b: PUSH1 0x00 0000017d: DUP1 0000017e: REVERT 0000017f: JUMPDEST 00000180: PUSH2 0x00cc 00000183: PUSH1 0x01 00000185: PUSH1 0xa0 00000187: PUSH1 0x02 00000189: EXP 0000018a: SUB 0000018b: PUSH1 0x04 0000018d: CALLDATALOAD 0000018e: AND 0000018f: PUSH2 0x03b9 00000192: JUMP 00000193: JUMPDEST 00000194: CALLVALUE 00000195: ISZERO 00000196: PUSH2 0x019e 00000199: JUMPI 0000019a: PUSH1 0x00 0000019c: DUP1 0000019d: REVERT 0000019e: JUMPDEST 0000019f: PUSH2 0x00cc 000001a2: PUSH1 0x01 000001a4: PUSH1 0xa0 000001a6: PUSH1 0x02 000001a8: EXP 000001a9: SUB 000001aa: PUSH1 0x04 000001ac: CALLDATALOAD 000001ad: AND 000001ae: PUSH2 0x03fd 000001b1: JUMP 000001b2: JUMPDEST 000001b3: CALLVALUE 000001b4: ISZERO 000001b5: PUSH2 0x01bd 000001b8: JUMPI 000001b9: PUSH1 0x00 000001bb: DUP1 000001bc: REVERT 000001bd: JUMPDEST 000001be: PUSH2 0x00e1 000001c1: PUSH2 0x04e2 000001c4: JUMP 000001c5: JUMPDEST 000001c6: CALLVALUE 000001c7: ISZERO 000001c8: PUSH2 0x01d0 000001cb: JUMPI 000001cc: PUSH1 0x00 000001ce: DUP1 000001cf: REVERT 000001d0: JUMPDEST 000001d1: PUSH2 0x01e4 000001d4: PUSH1 0x01 000001d6: PUSH1 0xa0 000001d8: PUSH1 0x02 000001da: EXP 000001db: SUB 000001dc: PUSH1 0x04 000001de: CALLDATALOAD 000001df: AND 000001e0: PUSH2 0x0505 000001e3: JUMP 000001e4: JUMPDEST 000001e5: PUSH1 0x40 000001e7: MLOAD 000001e8: DUP1 000001e9: DUP6 000001ea: DUP2 000001eb: MSTORE 000001ec: PUSH1 0x20 000001ee: ADD 000001ef: DUP5 000001f0: DUP2 000001f1: MSTORE 000001f2: PUSH1 0x20 000001f4: ADD 000001f5: DUP4 000001f6: PUSH1 0x01 000001f8: PUSH1 0xa0 000001fa: PUSH1 0x02 000001fc: EXP 000001fd: SUB 000001fe: AND 000001ff: PUSH1 0x01 00000201: PUSH1 0xa0 00000203: PUSH1 0x02 00000205: EXP 00000206: SUB 00000207: AND 00000208: DUP2 00000209: MSTORE 0000020a: PUSH1 0x20 0000020c: ADD 0000020d: DUP3 0000020e: DUP2 0000020f: MSTORE 00000210: PUSH1 0x20 00000212: ADD 00000213: SWAP5 00000214: POP 00000215: POP 00000216: POP 00000217: POP 00000218: POP 00000219: PUSH1 0x40 0000021b: MLOAD 0000021c: DUP1 0000021d: SWAP2 0000021e: SUB 0000021f: SWAP1 00000220: RETURN 00000221: JUMPDEST 00000222: CALLVALUE 00000223: ISZERO 00000224: PUSH2 0x022c 00000227: JUMPI 00000228: PUSH1 0x00 0000022a: DUP1 0000022b: REVERT 0000022c: JUMPDEST 0000022d: PUSH2 0x00e1 00000230: PUSH2 0x053b 00000233: JUMP 00000234: JUMPDEST 00000235: CALLVALUE 00000236: ISZERO 00000237: PUSH2 0x023f 0000023a: JUMPI 0000023b: PUSH1 0x00 0000023d: DUP1 0000023e: REVERT 0000023f: JUMPDEST 00000240: PUSH2 0x00cc 00000243: PUSH2 0x0541 00000246: JUMP 00000247: JUMPDEST 00000248: CALLVALUE 00000249: ISZERO 0000024a: PUSH2 0x0252 0000024d: JUMPI 0000024e: PUSH1 0x00 00000250: DUP1 00000251: REVERT 00000252: JUMPDEST 00000253: PUSH2 0x00cc 00000256: PUSH2 0x05b4 00000259: JUMP 0000025a: JUMPDEST 0000025b: PUSH2 0x00e1 0000025e: PUSH2 0x05d5 00000261: JUMP 00000262: JUMPDEST 00000263: CALLVALUE 00000264: ISZERO 00000265: PUSH2 0x026d 00000268: JUMPI 00000269: PUSH1 0x00 0000026b: DUP1 0000026c: REVERT 0000026d: JUMPDEST 0000026e: PUSH2 0x0278 00000271: PUSH1 0x04 00000273: CALLDATALOAD 00000274: PUSH2 0x0687 00000277: JUMP 00000278: JUMPDEST 00000279: PUSH1 0x40 0000027b: MLOAD 0000027c: PUSH1 0x01 0000027e: PUSH1 0xa0 00000280: PUSH1 0x02 00000282: EXP 00000283: SUB 00000284: SWAP1 00000285: SWAP2 00000286: AND 00000287: DUP2 00000288: MSTORE 00000289: PUSH1 0x20 0000028b: ADD 0000028c: PUSH1 0x40 0000028e: MLOAD 0000028f: DUP1 00000290: SWAP2 00000291: SUB 00000292: SWAP1 00000293: RETURN 00000294: JUMPDEST 00000295: CALLVALUE 00000296: ISZERO 00000297: PUSH2 0x029f 0000029a: JUMPI 0000029b: PUSH1 0x00 0000029d: DUP1 0000029e: REVERT 0000029f: JUMPDEST 000002a0: PUSH2 0x00e1 000002a3: PUSH1 0x04 000002a5: CALLDATALOAD 000002a6: PUSH1 0x01 000002a8: PUSH1 0xa0 000002aa: PUSH1 0x02 000002ac: EXP 000002ad: SUB 000002ae: PUSH1 0x24 000002b0: CALLDATALOAD 000002b1: AND 000002b2: PUSH2 0x06af 000002b5: JUMP 000002b6: JUMPDEST 000002b7: CALLVALUE 000002b8: ISZERO 000002b9: PUSH2 0x02c1 000002bc: JUMPI 000002bd: PUSH1 0x00 000002bf: DUP1 000002c0: REVERT 000002c1: JUMPDEST 000002c2: PUSH2 0x00e1 000002c5: PUSH1 0x01 000002c7: PUSH1 0xa0 000002c9: PUSH1 0x02 000002cb: EXP 000002cc: SUB 000002cd: PUSH1 0x04 000002cf: CALLDATALOAD 000002d0: AND 000002d1: PUSH2 0x078d 000002d4: JUMP 000002d5: JUMPDEST 000002d6: CALLVALUE 000002d7: ISZERO 000002d8: PUSH2 0x02e0 000002db: JUMPI 000002dc: PUSH1 0x00 000002de: DUP1 000002df: REVERT 000002e0: JUMPDEST 000002e1: PUSH2 0x00e1 000002e4: PUSH2 0x07a2 000002e7: JUMP 000002e8: JUMPDEST 000002e9: PUSH1 0x01 000002eb: SLOAD 000002ec: DUP2 000002ed: JUMP 000002ee: JUMPDEST 000002ef: PUSH1 0x06 000002f1: SLOAD 000002f2: DUP2 000002f3: JUMP 000002f4: JUMPDEST 000002f5: PUSH1 0x01 000002f7: PUSH1 0xa0 000002f9: PUSH1 0x02 000002fb: EXP 000002fc: SUB 000002fd: DUP2 000002fe: AND 000002ff: PUSH1 0x00 00000301: SWAP1 00000302: DUP2 00000303: MSTORE 00000304: PUSH1 0x05 00000306: PUSH1 0x20 00000308: MSTORE 00000309: PUSH1 0x40 0000030b: DUP2 0000030c: KECCAK256 0000030d: DUP3 0000030e: DUP3 0000030f: DUP1 00000310: JUMPDEST 00000311: PUSH1 0x02 00000313: SLOAD 00000314: DUP3 00000315: LT 00000316: ISZERO 00000317: PUSH2 0x0374 0000031a: JUMPI 0000031b: PUSH1 0x02 0000031d: DUP1 0000031e: SLOAD 0000031f: DUP4 00000320: SWAP1 00000321: DUP2 00000322: LT 00000323: PUSH2 0x0328 00000326: JUMPI 00000327: INVALID 00000328: JUMPDEST 00000329: PUSH1 0x00 0000032b: SWAP2 0000032c: DUP3 0000032d: MSTORE 0000032e: PUSH1 0x20 00000330: SWAP1 00000331: SWAP2 00000332: KECCAK256 00000333: ADD 00000334: SLOAD 00000335: PUSH1 0x01 00000337: PUSH1 0xa0 00000339: PUSH1 0x02 0000033b: EXP 0000033c: SUB 0000033d: AND 0000033e: SWAP1 0000033f: POP 00000340: DUP5 00000341: DUP1 00000342: PUSH2 0x035c 00000345: JUMPI 00000346: POP 00000347: DUP1 00000348: PUSH1 0x01 0000034a: PUSH1 0xa0 0000034c: PUSH1 0x02 0000034e: EXP 0000034f: SUB 00000350: AND 00000351: CALLER 00000352: PUSH1 0x01 00000354: PUSH1 0xa0 00000356: PUSH1 0x02 00000358: EXP 00000359: SUB 0000035a: AND 0000035b: EQ 0000035c: JUMPDEST 0000035d: SWAP5 0000035e: POP 0000035f: PUSH2 0x0369 00000362: DUP5 00000363: DUP5 00000364: DUP4 00000365: PUSH2 0x07a8 00000368: JUMP 00000369: JUMPDEST 0000036a: PUSH1 0x01 0000036c: SWAP1 0000036d: SWAP2 0000036e: ADD 0000036f: SWAP1 00000370: PUSH2 0x0310 00000373: JUMP 00000374: JUMPDEST 00000375: DUP5 00000376: ISZERO 00000377: ISZERO 00000378: PUSH2 0x0380 0000037b: JUMPI 0000037c: PUSH1 0x00 0000037e: DUP1 0000037f: REVERT 00000380: JUMPDEST 00000381: POP 00000382: POP 00000383: POP 00000384: POP 00000385: POP 00000386: POP 00000387: JUMP 00000388: JUMPDEST 00000389: PUSH1 0x00 0000038b: PUSH1 0x20 0000038d: DUP2 0000038e: SWAP1 0000038f: MSTORE 00000390: SWAP1 00000391: DUP2 00000392: MSTORE 00000393: PUSH1 0x40 00000395: SWAP1 00000396: KECCAK256 00000397: PUSH1 0x02 00000399: DUP2 0000039a: ADD 0000039b: SLOAD 0000039c: PUSH1 0x03 0000039e: DUP3 0000039f: ADD 000003a0: SLOAD 000003a1: PUSH1 0x04 000003a3: SWAP1 000003a4: SWAP3 000003a5: ADD 000003a6: SLOAD 000003a7: PUSH1 0x01 000003a9: PUSH1 0xa0 000003ab: PUSH1 0x02 000003ad: EXP 000003ae: SUB 000003af: SWAP1 000003b0: SWAP2 000003b1: AND 000003b2: SWAP2 000003b3: SWAP1 000003b4: PUSH1 0xff 000003b6: AND 000003b7: DUP4 000003b8: JUMP 000003b9: JUMPDEST 000003ba: PUSH1 0x00 000003bc: DUP1 000003bd: PUSH2 0x03c7 000003c0: PUSH1 0x02 000003c2: CALLER 000003c3: PUSH2 0x08c4 000003c6: JUMP 000003c7: JUMPDEST 000003c8: ISZERO 000003c9: ISZERO 000003ca: PUSH2 0x03d2 000003cd: JUMPI 000003ce: PUSH1 0x00 000003d0: DUP1 000003d1: REVERT 000003d2: JUMPDEST 000003d3: POP 000003d4: POP 000003d5: PUSH1 0x01 000003d7: PUSH1 0xa0 000003d9: PUSH1 0x02 000003db: EXP 000003dc: SUB 000003dd: DUP2 000003de: AND 000003df: PUSH1 0x00 000003e1: SWAP1 000003e2: DUP2 000003e3: MSTORE 000003e4: PUSH1 0x05 000003e6: PUSH1 0x20 000003e8: MSTORE 000003e9: PUSH1 0x40 000003eb: SWAP1 000003ec: KECCAK256 000003ed: DUP2 000003ee: PUSH2 0x03f8 000003f1: DUP3 000003f2: DUP3 000003f3: CALLER 000003f4: PUSH2 0x07a8 000003f7: JUMP 000003f8: JUMPDEST 000003f9: POP 000003fa: POP 000003fb: POP 000003fc: JUMP 000003fd: JUMPDEST 000003fe: PUSH1 0x01 00000400: PUSH1 0xa0 00000402: PUSH1 0x02 00000404: EXP 00000405: SUB 00000406: DUP2 00000407: AND 00000408: PUSH1 0x00 0000040a: SWAP1 0000040b: DUP2 0000040c: MSTORE 0000040d: PUSH1 0x20 0000040f: DUP2 00000410: SWAP1 00000411: MSTORE 00000412: PUSH1 0x40 00000414: DUP2 00000415: KECCAK256 00000416: PUSH1 0x03 00000418: DUP2 00000419: ADD 0000041a: SLOAD 0000041b: SWAP1 0000041c: SWAP2 0000041d: SWAP1 0000041e: DUP2 0000041f: SWAP1 00000420: GT 00000421: PUSH2 0x0429 00000424: JUMPI 00000425: PUSH1 0x00 00000427: DUP1 00000428: REVERT 00000429: JUMPDEST 0000042a: PUSH1 0x04 0000042c: DUP3 0000042d: ADD 0000042e: SLOAD 0000042f: PUSH1 0xff 00000431: AND 00000432: ISZERO 00000433: PUSH2 0x043b 00000436: JUMPI 00000437: PUSH1 0x00 00000439: DUP1 0000043a: REVERT 0000043b: JUMPDEST 0000043c: PUSH1 0x04 0000043e: DUP3 0000043f: ADD 00000440: DUP1 00000441: SLOAD 00000442: PUSH1 0xff 00000444: NOT 00000445: AND 00000446: PUSH1 0x01 00000448: OR 00000449: SWAP1 0000044a: SSTORE 0000044b: PUSH1 0x03 0000044d: DUP3 0000044e: ADD 0000044f: SLOAD 00000450: PUSH2 0x0493 00000453: SWAP1 00000454: DUP4 00000455: PUSH1 0x02 00000457: PUSH1 0x40 00000459: DUP1 0000045a: MLOAD 0000045b: SWAP1 0000045c: DUP2 0000045d: ADD 0000045e: PUSH1 0x40 00000460: MSTORE 00000461: SWAP2 00000462: SWAP1 00000463: DUP3 00000464: DUP3 00000465: PUSH1 0x02 00000467: PUSH1 0x20 00000469: MUL 0000046a: DUP3 0000046b: ADD 0000046c: SWAP2 0000046d: JUMPDEST 0000046e: DUP2 0000046f: SLOAD 00000470: DUP2 00000471: MSTORE 00000472: PUSH1 0x20 00000474: ADD 00000475: SWAP1 00000476: PUSH1 0x01 00000478: ADD 00000479: SWAP1 0000047a: DUP1 0000047b: DUP4 0000047c: GT 0000047d: PUSH2 0x046d 00000480: JUMPI 00000481: POP 00000482: POP 00000483: POP 00000484: POP 00000485: POP 00000486: PUSH2 0x0921 00000489: SWAP1 0000048a: SWAP2 0000048b: SWAP1 0000048c: PUSH4 0xffffffff 00000491: AND 00000492: JUMP 00000493: JUMPDEST 00000494: SWAP1 00000495: POP 00000496: PUSH1 0x00 00000498: DUP2 00000499: GT 0000049a: ISZERO 0000049b: PUSH2 0x03f8 0000049e: JUMPI 0000049f: PUSH1 0x01 000004a1: SLOAD 000004a2: PUSH2 0x04b1 000004a5: SWAP1 000004a6: DUP3 000004a7: PUSH4 0xffffffff 000004ac: PUSH2 0x0952 000004af: AND 000004b0: JUMP 000004b1: JUMPDEST 000004b2: PUSH1 0x01 000004b4: SSTORE 000004b5: PUSH1 0x02 000004b7: DUP3 000004b8: ADD 000004b9: SLOAD 000004ba: PUSH1 0x01 000004bc: PUSH1 0xa0 000004be: PUSH1 0x02 000004c0: EXP 000004c1: SUB 000004c2: AND 000004c3: DUP2 000004c4: PUSH1 0x40 000004c6: MLOAD 000004c7: PUSH1 0x00 000004c9: PUSH1 0x40 000004cb: MLOAD 000004cc: DUP1 000004cd: DUP4 000004ce: SUB 000004cf: DUP2 000004d0: DUP6 000004d1: DUP8 000004d2: GAS 000004d3: CALL 000004d4: SWAP3 000004d5: POP 000004d6: POP 000004d7: POP 000004d8: ISZERO 000004d9: ISZERO 000004da: PUSH2 0x03f8 000004dd: JUMPI 000004de: PUSH1 0x00 000004e0: DUP1 000004e1: REVERT 000004e2: JUMPDEST 000004e3: CALLER 000004e4: PUSH1 0x01 000004e6: PUSH1 0xa0 000004e8: PUSH1 0x02 000004ea: EXP 000004eb: SUB 000004ec: AND 000004ed: PUSH1 0x00 000004ef: SWAP1 000004f0: DUP2 000004f1: MSTORE 000004f2: PUSH1 0x20 000004f4: DUP2 000004f5: SWAP1 000004f6: MSTORE 000004f7: PUSH1 0x40 000004f9: SWAP1 000004fa: KECCAK256 000004fb: PUSH1 0x01 000004fd: DUP2 000004fe: ADD 000004ff: SLOAD 00000500: SWAP1 00000501: JUMPDEST 00000502: POP 00000503: SWAP1 00000504: JUMP 00000505: JUMPDEST 00000506: PUSH1 0x01 00000508: PUSH1 0xa0 0000050a: PUSH1 0x02 0000050c: EXP 0000050d: SUB 0000050e: SWAP1 0000050f: DUP2 00000510: AND 00000511: PUSH1 0x00 00000513: SWAP1 00000514: DUP2 00000515: MSTORE 00000516: PUSH1 0x20 00000518: DUP2 00000519: SWAP1 0000051a: MSTORE 0000051b: PUSH1 0x40 0000051d: SWAP1 0000051e: KECCAK256 0000051f: DUP1 00000520: SLOAD 00000521: PUSH1 0x01 00000523: DUP3 00000524: ADD 00000525: SLOAD 00000526: PUSH1 0x02 00000528: DUP4 00000529: ADD 0000052a: SLOAD 0000052b: PUSH1 0x03 0000052d: SWAP1 0000052e: SWAP4 0000052f: ADD 00000530: SLOAD 00000531: SWAP2 00000532: SWAP5 00000533: SWAP1 00000534: SWAP4 00000535: SWAP3 00000536: SWAP1 00000537: SWAP3 00000538: AND 00000539: SWAP2 0000053a: JUMP 0000053b: JUMPDEST 0000053c: PUSH1 0x04 0000053e: SLOAD 0000053f: DUP2 00000540: JUMP 00000541: JUMPDEST 00000542: PUSH1 0x00 00000544: DUP1 00000545: DUP1 00000546: JUMPDEST 00000547: PUSH1 0x02 00000549: SLOAD 0000054a: DUP3 0000054b: LT 0000054c: ISZERO 0000054d: PUSH2 0x05a8 00000550: JUMPI 00000551: PUSH1 0x02 00000553: DUP1 00000554: SLOAD 00000555: DUP4 00000556: SWAP1 00000557: DUP2 00000558: LT 00000559: PUSH2 0x055e 0000055c: JUMPI 0000055d: INVALID 0000055e: JUMPDEST 0000055f: PUSH1 0x00 00000561: SWAP2 00000562: DUP3 00000563: MSTORE 00000564: PUSH1 0x20 00000566: SWAP1 00000567: SWAP2 00000568: KECCAK256 00000569: ADD 0000056a: SLOAD 0000056b: PUSH1 0x01 0000056d: PUSH1 0xa0 0000056f: PUSH1 0x02 00000571: EXP 00000572: SUB 00000573: AND 00000574: SWAP1 00000575: POP 00000576: DUP3 00000577: DUP1 00000578: PUSH2 0x0592 0000057b: JUMPI 0000057c: POP 0000057d: DUP1 0000057e: PUSH1 0x01 00000580: PUSH1 0xa0 00000582: PUSH1 0x02 00000584: EXP 00000585: SUB 00000586: AND 00000587: CALLER 00000588: PUSH1 0x01 0000058a: PUSH1 0xa0 0000058c: PUSH1 0x02 0000058e: EXP 0000058f: SUB 00000590: AND 00000591: EQ 00000592: JUMPDEST 00000593: SWAP3 00000594: POP 00000595: PUSH2 0x059d 00000598: DUP2 00000599: PUSH2 0x0964 0000059c: JUMP 0000059d: JUMPDEST 0000059e: PUSH1 0x01 000005a0: SWAP1 000005a1: SWAP2 000005a2: ADD 000005a3: SWAP1 000005a4: PUSH2 0x0546 000005a7: JUMP 000005a8: JUMPDEST 000005a9: DUP3 000005aa: ISZERO 000005ab: ISZERO 000005ac: PUSH2 0x03f8 000005af: JUMPI 000005b0: PUSH1 0x00 000005b2: DUP1 000005b3: REVERT 000005b4: JUMPDEST 000005b5: PUSH2 0x05bf 000005b8: PUSH1 0x02 000005ba: CALLER 000005bb: PUSH2 0x08c4 000005be: JUMP 000005bf: JUMPDEST 000005c0: ISZERO 000005c1: ISZERO 000005c2: PUSH2 0x05ca 000005c5: JUMPI 000005c6: PUSH1 0x00 000005c8: DUP1 000005c9: REVERT 000005ca: JUMPDEST 000005cb: PUSH2 0x05d3 000005ce: CALLER 000005cf: PUSH2 0x0964 000005d2: JUMP 000005d3: JUMPDEST 000005d4: JUMP 000005d5: JUMPDEST 000005d6: PUSH1 0x00 000005d8: DUP1 000005d9: DUP1 000005da: CALLVALUE 000005db: DUP2 000005dc: SWAP1 000005dd: GT 000005de: PUSH2 0x05e6 000005e1: JUMPI 000005e2: PUSH1 0x00 000005e4: DUP1 000005e5: REVERT 000005e6: JUMPDEST 000005e7: PUSH1 0x01 000005e9: PUSH1 0xa0 000005eb: PUSH1 0x02 000005ed: EXP 000005ee: SUB 000005ef: CALLER 000005f0: AND 000005f1: PUSH1 0x00 000005f3: SWAP1 000005f4: DUP2 000005f5: MSTORE 000005f6: PUSH1 0x20 000005f8: DUP2 000005f9: SWAP1 000005fa: MSTORE 000005fb: PUSH1 0x40 000005fd: SWAP1 000005fe: KECCAK256 000005ff: PUSH1 0x03 00000601: DUP2 00000602: ADD 00000603: SLOAD 00000604: SWAP1 00000605: SWAP3 00000606: POP 00000607: ISZERO 00000608: PUSH2 0x0610 0000060b: JUMPI 0000060c: PUSH1 0x00 0000060e: DUP1 0000060f: REVERT 00000610: JUMPDEST 00000611: PUSH1 0x00 00000613: DUP3 00000614: PUSH1 0x01 00000616: ADD 00000617: SLOAD 00000618: GT 00000619: PUSH2 0x0621 0000061c: JUMPI 0000061d: PUSH1 0x00 0000061f: DUP1 00000620: REVERT 00000621: JUMPDEST 00000622: CALLVALUE 00000623: PUSH1 0x03 00000625: DUP4 00000626: ADD 00000627: DUP2 00000628: SWAP1 00000629: SSTORE 0000062a: PUSH2 0x0668 0000062d: SWAP1 0000062e: DUP4 0000062f: PUSH1 0x02 00000631: PUSH1 0x40 00000633: DUP1 00000634: MLOAD 00000635: SWAP1 00000636: DUP2 00000637: ADD 00000638: PUSH1 0x40 0000063a: SWAP1 0000063b: DUP2 0000063c: MSTORE 0000063d: DUP4 0000063e: SLOAD 0000063f: DUP3 00000640: MSTORE 00000641: SWAP1 00000642: SWAP3 00000643: SWAP2 00000644: SWAP1 00000645: DUP4 00000646: ADD 00000647: PUSH1 0x01 00000649: DUP4 0000064a: ADD 0000064b: PUSH1 0x20 0000064d: DUP6 0000064e: ADD 0000064f: DUP1 00000650: DUP4 00000651: GT 00000652: PUSH2 0x046d 00000655: JUMPI 00000656: POP 00000657: POP 00000658: POP 00000659: POP 0000065a: POP 0000065b: PUSH2 0x0921 0000065e: SWAP1 0000065f: SWAP2 00000660: SWAP1 00000661: PUSH4 0xffffffff 00000666: AND 00000667: JUMP 00000668: JUMPDEST 00000669: PUSH1 0x01 0000066b: SLOAD 0000066c: SWAP1 0000066d: SWAP2 0000066e: POP 0000066f: PUSH2 0x067e 00000672: SWAP1 00000673: DUP3 00000674: PUSH4 0xffffffff 00000679: PUSH2 0x09df 0000067c: AND 0000067d: JUMP 0000067e: JUMPDEST 0000067f: PUSH1 0x01 00000681: SSTORE 00000682: SWAP2 00000683: POP 00000684: POP 00000685: SWAP1 00000686: JUMP 00000687: JUMPDEST 00000688: PUSH1 0x02 0000068a: DUP1 0000068b: SLOAD 0000068c: DUP3 0000068d: SWAP1 0000068e: DUP2 0000068f: LT 00000690: PUSH2 0x0695 00000693: JUMPI 00000694: INVALID 00000695: JUMPDEST 00000696: PUSH1 0x00 00000698: SWAP2 00000699: DUP3 0000069a: MSTORE 0000069b: PUSH1 0x20 0000069d: SWAP1 0000069e: SWAP2 0000069f: KECCAK256 000006a0: ADD 000006a1: SLOAD 000006a2: PUSH1 0x01 000006a4: PUSH1 0xa0 000006a6: PUSH1 0x02 000006a8: EXP 000006a9: SUB 000006aa: AND 000006ab: SWAP1 000006ac: POP 000006ad: DUP2 000006ae: JUMP 000006af: JUMPDEST 000006b0: PUSH1 0x00 000006b2: DUP1 000006b3: DUP1 000006b4: PUSH8 0x06f05b59d3b20000 000006bd: DUP6 000006be: LT 000006bf: PUSH2 0x06c7 000006c2: JUMPI 000006c3: PUSH1 0x00 000006c5: DUP1 000006c6: REVERT 000006c7: JUMPDEST 000006c8: PUSH1 0x01 000006ca: PUSH1 0xa0 000006cc: PUSH1 0x02 000006ce: EXP 000006cf: SUB 000006d0: CALLER 000006d1: AND 000006d2: PUSH1 0x00 000006d4: SWAP1 000006d5: DUP2 000006d6: MSTORE 000006d7: PUSH1 0x20 000006d9: DUP2 000006da: SWAP1 000006db: MSTORE 000006dc: PUSH1 0x40 000006de: SWAP1 000006df: KECCAK256 000006e0: SWAP2 000006e1: POP 000006e2: DUP2 000006e3: PUSH1 0x01 000006e5: ADD 000006e6: SLOAD 000006e7: ISZERO 000006e8: PUSH2 0x06f0 000006eb: JUMPI 000006ec: PUSH1 0x00 000006ee: DUP1 000006ef: REVERT 000006f0: JUMPDEST 000006f1: PUSH2 0x0717 000006f4: PUSH2 0x070f 000006f7: PUSH2 0x0707 000006fa: DUP8 000006fb: PUSH1 0x02 000006fd: PUSH4 0xffffffff 00000702: PUSH2 0x09f5 00000705: AND 00000706: JUMP 00000707: JUMPDEST 00000708: PUSH1 0x07 0000070a: SLOAD 0000070b: PUSH2 0x0a0a 0000070e: JUMP 0000070f: JUMPDEST 00000710: PUSH1 0x06 00000712: SLOAD 00000713: PUSH2 0x0a21 00000716: JUMP 00000717: JUMPDEST 00000718: PUSH1 0x02 0000071a: DUP4 0000071b: ADD 0000071c: DUP1 0000071d: SLOAD 0000071e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000733: NOT 00000734: AND 00000735: PUSH1 0x01 00000737: PUSH1 0xa0 00000739: PUSH1 0x02 0000073b: EXP 0000073c: SUB 0000073d: DUP8 0000073e: AND 0000073f: OR 00000740: SWAP1 00000741: SSTORE 00000742: SWAP1 00000743: POP 00000744: PUSH1 0x40 00000746: DUP1 00000747: MLOAD 00000748: SWAP1 00000749: DUP2 0000074a: ADD 0000074b: PUSH1 0x40 0000074d: MSTORE 0000074e: DUP6 0000074f: DUP2 00000750: MSTORE 00000751: PUSH1 0x20 00000753: DUP2 00000754: ADD 00000755: PUSH2 0x0764 00000758: DUP8 00000759: DUP5 0000075a: PUSH4 0xffffffff 0000075f: PUSH2 0x09df 00000762: AND 00000763: JUMP 00000764: JUMPDEST 00000765: SWAP1 00000766: MSTORE 00000767: PUSH2 0x0773 0000076a: SWAP1 0000076b: DUP4 0000076c: SWAP1 0000076d: PUSH1 0x02 0000076f: PUSH2 0x0b9a 00000772: JUMP 00000773: JUMPDEST 00000774: POP 00000775: PUSH2 0x0784 00000778: DUP6 00000779: DUP3 0000077a: PUSH4 0xffffffff 0000077f: PUSH2 0x09df 00000782: AND 00000783: JUMP 00000784: JUMPDEST 00000785: SWAP6 00000786: SWAP5 00000787: POP 00000788: POP 00000789: POP 0000078a: POP 0000078b: POP 0000078c: JUMP 0000078d: JUMPDEST 0000078e: PUSH1 0x05 00000790: PUSH1 0x20 00000792: MSTORE 00000793: PUSH1 0x00 00000795: SWAP1 00000796: DUP2 00000797: MSTORE 00000798: PUSH1 0x40 0000079a: SWAP1 0000079b: KECCAK256 0000079c: PUSH1 0x01 0000079e: ADD 0000079f: SLOAD 000007a0: DUP2 000007a1: JUMP 000007a2: JUMPDEST 000007a3: PUSH1 0x07 000007a5: SLOAD 000007a6: DUP2 000007a7: JUMP 000007a8: JUMPDEST 000007a9: PUSH1 0x00 000007ab: PUSH2 0x0838 000007ae: DUP3 000007af: DUP5 000007b0: PUSH1 0x01 000007b2: PUSH1 0xa0 000007b4: PUSH1 0x02 000007b6: EXP 000007b7: SUB 000007b8: AND 000007b9: PUSH4 0x70a08231 000007be: ADDRESS 000007bf: PUSH1 0x40 000007c1: MLOAD 000007c2: PUSH1 0xe0 000007c4: PUSH1 0x02 000007c6: EXP 000007c7: PUSH4 0xffffffff 000007cc: DUP5 000007cd: AND 000007ce: MUL 000007cf: DUP2 000007d0: MSTORE 000007d1: PUSH1 0x01 000007d3: PUSH1 0xa0 000007d5: PUSH1 0x02 000007d7: EXP 000007d8: SUB 000007d9: SWAP1 000007da: SWAP2 000007db: AND 000007dc: PUSH1 0x04 000007de: DUP3 000007df: ADD 000007e0: MSTORE 000007e1: PUSH1 0x24 000007e3: ADD 000007e4: PUSH1 0x20 000007e6: PUSH1 0x40 000007e8: MLOAD 000007e9: DUP1 000007ea: DUP4 000007eb: SUB 000007ec: DUP2 000007ed: PUSH1 0x00 000007ef: DUP8 000007f0: DUP1 000007f1: EXTCODESIZE 000007f2: ISZERO 000007f3: ISZERO 000007f4: PUSH2 0x07fc 000007f7: JUMPI 000007f8: PUSH1 0x00 000007fa: DUP1 000007fb: REVERT 000007fc: JUMPDEST 000007fd: GAS 000007fe: CALL 000007ff: ISZERO 00000800: ISZERO 00000801: PUSH2 0x0809 00000804: JUMPI 00000805: PUSH1 0x00 00000807: DUP1 00000808: REVERT 00000809: JUMPDEST 0000080a: POP 0000080b: POP 0000080c: POP 0000080d: PUSH1 0x40 0000080f: MLOAD 00000810: DUP1 00000811: MLOAD 00000812: SWAP1 00000813: POP 00000814: PUSH1 0x40 00000816: DUP1 00000817: MLOAD 00000818: SWAP1 00000819: DUP2 0000081a: ADD 0000081b: PUSH1 0x40 0000081d: MSTORE 0000081e: PUSH1 0x01 00000820: DUP2 00000821: MSTORE 00000822: PUSH1 0x02 00000824: SLOAD 00000825: PUSH1 0x20 00000827: DUP3 00000828: ADD 00000829: MSTORE 0000082a: DUP8 0000082b: SWAP3 0000082c: SWAP2 0000082d: SWAP1 0000082e: PUSH4 0xffffffff 00000833: PUSH2 0x0a39 00000836: AND 00000837: JUMP 00000838: JUMPDEST 00000839: SWAP1 0000083a: POP 0000083b: DUP3 0000083c: PUSH1 0x01 0000083e: PUSH1 0xa0 00000840: PUSH1 0x02 00000842: EXP 00000843: SUB 00000844: AND 00000845: PUSH4 0xa9059cbb 0000084a: DUP4 0000084b: DUP4 0000084c: PUSH1 0x40 0000084e: MLOAD 0000084f: PUSH1 0xe0 00000851: PUSH1 0x02 00000853: EXP 00000854: PUSH4 0xffffffff 00000859: DUP6 0000085a: AND 0000085b: MUL 0000085c: DUP2 0000085d: MSTORE 0000085e: PUSH1 0x01 00000860: PUSH1 0xa0 00000862: PUSH1 0x02 00000864: EXP 00000865: SUB 00000866: SWAP1 00000867: SWAP3 00000868: AND 00000869: PUSH1 0x04 0000086b: DUP4 0000086c: ADD 0000086d: MSTORE 0000086e: PUSH1 0x24 00000870: DUP3 00000871: ADD 00000872: MSTORE 00000873: PUSH1 0x44 00000875: ADD 00000876: PUSH1 0x20 00000878: PUSH1 0x40 0000087a: MLOAD 0000087b: DUP1 0000087c: DUP4 0000087d: SUB 0000087e: DUP2 0000087f: PUSH1 0x00 00000881: DUP8 00000882: DUP1 00000883: EXTCODESIZE 00000884: ISZERO 00000885: ISZERO 00000886: PUSH2 0x088e 00000889: JUMPI 0000088a: PUSH1 0x00 0000088c: DUP1 0000088d: REVERT 0000088e: JUMPDEST 0000088f: GAS 00000890: CALL 00000891: ISZERO 00000892: ISZERO 00000893: PUSH2 0x089b 00000896: JUMPI 00000897: PUSH1 0x00 00000899: DUP1 0000089a: REVERT 0000089b: JUMPDEST 0000089c: POP 0000089d: POP 0000089e: POP 0000089f: PUSH1 0x40 000008a1: MLOAD 000008a2: DUP1 000008a3: MLOAD 000008a4: SWAP1 000008a5: POP 000008a6: ISZERO 000008a7: ISZERO 000008a8: PUSH2 0x08be 000008ab: JUMPI 000008ac: PUSH2 0x08bc 000008af: DUP5 000008b0: DUP4 000008b1: DUP4 000008b2: PUSH4 0xffffffff 000008b7: PUSH2 0x0b09 000008ba: AND 000008bb: JUMP 000008bc: JUMPDEST 000008bd: POP 000008be: JUMPDEST 000008bf: POP 000008c0: POP 000008c1: POP 000008c2: POP 000008c3: JUMP 000008c4: JUMPDEST 000008c5: PUSH1 0x00 000008c7: DUP1 000008c8: JUMPDEST 000008c9: DUP4 000008ca: SLOAD 000008cb: DUP2 000008cc: LT 000008cd: ISZERO 000008ce: PUSH2 0x0915 000008d1: JUMPI 000008d2: DUP3 000008d3: PUSH1 0x01 000008d5: PUSH1 0xa0 000008d7: PUSH1 0x02 000008d9: EXP 000008da: SUB 000008db: AND 000008dc: DUP5 000008dd: DUP3 000008de: DUP2 000008df: SLOAD 000008e0: DUP2 000008e1: LT 000008e2: ISZERO 000008e3: ISZERO 000008e4: PUSH2 0x08e9 000008e7: JUMPI 000008e8: INVALID 000008e9: JUMPDEST 000008ea: PUSH1 0x00 000008ec: SWAP2 000008ed: DUP3 000008ee: MSTORE 000008ef: PUSH1 0x20 000008f1: SWAP1 000008f2: SWAP2 000008f3: KECCAK256 000008f4: ADD 000008f5: SLOAD 000008f6: PUSH1 0x01 000008f8: PUSH1 0xa0 000008fa: PUSH1 0x02 000008fc: EXP 000008fd: SUB 000008fe: AND 000008ff: EQ 00000900: ISZERO 00000901: PUSH2 0x090d 00000904: JUMPI 00000905: PUSH1 0x01 00000907: SWAP2 00000908: POP 00000909: PUSH2 0x091a 0000090c: JUMP 0000090d: JUMPDEST 0000090e: PUSH1 0x01 00000910: ADD 00000911: PUSH2 0x08c8 00000914: JUMP 00000915: JUMPDEST 00000916: PUSH1 0x00 00000918: SWAP2 00000919: POP 0000091a: JUMPDEST 0000091b: POP 0000091c: SWAP3 0000091d: SWAP2 0000091e: POP 0000091f: POP 00000920: JUMP 00000921: JUMPDEST 00000922: PUSH1 0x00 00000924: PUSH2 0x0949 00000927: PUSH1 0x20 00000929: DUP5 0000092a: ADD 0000092b: MLOAD 0000092c: PUSH2 0x093d 0000092f: DUP6 00000930: MLOAD 00000931: DUP6 00000932: SWAP1 00000933: PUSH4 0xffffffff 00000938: PUSH2 0x0b6f 0000093b: AND 0000093c: JUMP 0000093d: JUMPDEST 0000093e: SWAP1 0000093f: PUSH4 0xffffffff 00000944: PUSH2 0x09f5 00000947: AND 00000948: JUMP 00000949: JUMPDEST 0000094a: SWAP1 0000094b: POP 0000094c: JUMPDEST 0000094d: SWAP3 0000094e: SWAP2 0000094f: POP 00000950: POP 00000951: JUMP 00000952: JUMPDEST 00000953: PUSH1 0x00 00000955: DUP3 00000956: DUP3 00000957: GT 00000958: ISZERO 00000959: PUSH2 0x095e 0000095c: JUMPI 0000095d: INVALID 0000095e: JUMPDEST 0000095f: POP 00000960: SWAP1 00000961: SUB 00000962: SWAP1 00000963: JUMP 00000964: JUMPDEST 00000965: PUSH1 0x00 00000967: PUSH2 0x09af 0000096a: DUP3 0000096b: PUSH2 0x0989 0000096e: PUSH1 0x01 00000970: SLOAD 00000971: ADDRESS 00000972: PUSH1 0x01 00000974: PUSH1 0xa0 00000976: PUSH1 0x02 00000978: EXP 00000979: SUB 0000097a: AND 0000097b: BALANCE 0000097c: PUSH2 0x0952 0000097f: SWAP1 00000980: SWAP2 00000981: SWAP1 00000982: PUSH4 0xffffffff 00000987: AND 00000988: JUMP 00000989: JUMPDEST 0000098a: PUSH1 0x40 0000098c: DUP1 0000098d: MLOAD 0000098e: SWAP1 0000098f: DUP2 00000990: ADD 00000991: PUSH1 0x40 00000993: MSTORE 00000994: PUSH1 0x01 00000996: DUP2 00000997: MSTORE 00000998: PUSH1 0x02 0000099a: SLOAD 0000099b: PUSH1 0x20 0000099d: DUP3 0000099e: ADD 0000099f: MSTORE 000009a0: PUSH1 0x03 000009a2: SWAP3 000009a3: SWAP2 000009a4: SWAP1 000009a5: PUSH4 0xffffffff 000009aa: PUSH2 0x0a39 000009ad: AND 000009ae: JUMP 000009af: JUMPDEST 000009b0: SWAP1 000009b1: POP 000009b2: DUP2 000009b3: PUSH1 0x01 000009b5: PUSH1 0xa0 000009b7: PUSH1 0x02 000009b9: EXP 000009ba: SUB 000009bb: AND 000009bc: DUP2 000009bd: PUSH1 0x40 000009bf: MLOAD 000009c0: PUSH1 0x00 000009c2: PUSH1 0x40 000009c4: MLOAD 000009c5: DUP1 000009c6: DUP4 000009c7: SUB 000009c8: DUP2 000009c9: DUP6 000009ca: DUP8 000009cb: GAS 000009cc: CALL 000009cd: SWAP3 000009ce: POP 000009cf: POP 000009d0: POP 000009d1: ISZERO 000009d2: ISZERO 000009d3: PUSH2 0x09db 000009d6: JUMPI 000009d7: PUSH1 0x00 000009d9: DUP1 000009da: REVERT 000009db: JUMPDEST 000009dc: POP 000009dd: POP 000009de: JUMP 000009df: JUMPDEST 000009e0: PUSH1 0x00 000009e2: DUP3 000009e3: DUP3 000009e4: ADD 000009e5: DUP4 000009e6: DUP2 000009e7: LT 000009e8: ISZERO 000009e9: PUSH2 0x09ee 000009ec: JUMPI 000009ed: INVALID 000009ee: JUMPDEST 000009ef: SWAP4 000009f0: SWAP3 000009f1: POP 000009f2: POP 000009f3: POP 000009f4: JUMP 000009f5: JUMPDEST 000009f6: PUSH1 0x00 000009f8: DUP2 000009f9: DUP4 000009fa: DUP2 000009fb: ISZERO 000009fc: ISZERO 000009fd: PUSH2 0x0a02 00000a00: JUMPI 00000a01: INVALID 00000a02: JUMPDEST 00000a03: DIV 00000a04: SWAP4 00000a05: SWAP3 00000a06: POP 00000a07: POP 00000a08: POP 00000a09: JUMP 00000a0a: JUMPDEST 00000a0b: PUSH1 0x00 00000a0d: DUP2 00000a0e: DUP4 00000a0f: LT 00000a10: ISZERO 00000a11: PUSH2 0x0a1b 00000a14: JUMPI 00000a15: POP 00000a16: DUP2 00000a17: PUSH2 0x094c 00000a1a: JUMP 00000a1b: JUMPDEST 00000a1c: POP 00000a1d: SWAP2 00000a1e: SWAP1 00000a1f: POP 00000a20: JUMP 00000a21: JUMPDEST 00000a22: PUSH1 0x00 00000a24: DUP2 00000a25: DUP4 00000a26: LT 00000a27: ISZERO 00000a28: PUSH2 0x0a32 00000a2b: JUMPI 00000a2c: POP 00000a2d: DUP1 00000a2e: PUSH2 0x094c 00000a31: JUMP 00000a32: JUMPDEST 00000a33: POP 00000a34: SWAP1 00000a35: SWAP2 00000a36: SWAP1 00000a37: POP 00000a38: JUMP 00000a39: JUMPDEST 00000a3a: PUSH1 0x00 00000a3c: DUP1 00000a3d: PUSH1 0x00 00000a3f: DUP1 00000a40: PUSH2 0x0a66 00000a43: PUSH2 0x0a59 00000a46: DUP10 00000a47: PUSH1 0x01 00000a49: ADD 00000a4a: SLOAD 00000a4b: DUP9 00000a4c: PUSH2 0x09df 00000a4f: SWAP1 00000a50: SWAP2 00000a51: SWAP1 00000a52: PUSH4 0xffffffff 00000a57: AND 00000a58: JUMP 00000a59: JUMPDEST 00000a5a: DUP7 00000a5b: SWAP1 00000a5c: PUSH4 0xffffffff 00000a61: PUSH2 0x0921 00000a64: AND 00000a65: JUMP 00000a66: JUMPDEST 00000a67: PUSH1 0x01 00000a69: PUSH1 0xa0 00000a6b: PUSH1 0x02 00000a6d: EXP 00000a6e: SUB 00000a6f: DUP9 00000a70: AND 00000a71: PUSH1 0x00 00000a73: SWAP1 00000a74: DUP2 00000a75: MSTORE 00000a76: PUSH1 0x20 00000a78: DUP11 00000a79: SWAP1 00000a7a: MSTORE 00000a7b: PUSH1 0x40 00000a7d: SWAP1 00000a7e: KECCAK256 00000a7f: SLOAD 00000a80: SWAP1 00000a81: SWAP4 00000a82: POP 00000a83: SWAP2 00000a84: POP 00000a85: DUP3 00000a86: DUP3 00000a87: GT 00000a88: ISZERO 00000a89: PUSH2 0x0a8e 00000a8c: JUMPI 00000a8d: INVALID 00000a8e: JUMPDEST 00000a8f: PUSH2 0x0a9e 00000a92: DUP4 00000a93: DUP4 00000a94: PUSH4 0xffffffff 00000a99: PUSH2 0x0952 00000a9c: AND 00000a9d: JUMP 00000a9e: JUMPDEST 00000a9f: PUSH1 0x01 00000aa1: PUSH1 0xa0 00000aa3: PUSH1 0x02 00000aa5: EXP 00000aa6: SUB 00000aa7: DUP9 00000aa8: AND 00000aa9: PUSH1 0x00 00000aab: SWAP1 00000aac: DUP2 00000aad: MSTORE 00000aae: PUSH1 0x20 00000ab0: DUP11 00000ab1: SWAP1 00000ab2: MSTORE 00000ab3: PUSH1 0x40 00000ab5: SWAP1 00000ab6: KECCAK256 00000ab7: SLOAD 00000ab8: SWAP1 00000ab9: SWAP2 00000aba: POP 00000abb: PUSH2 0x0aca 00000abe: SWAP1 00000abf: DUP3 00000ac0: PUSH4 0xffffffff 00000ac5: PUSH2 0x09df 00000ac8: AND 00000ac9: JUMP 00000aca: JUMPDEST 00000acb: PUSH1 0x01 00000acd: PUSH1 0xa0 00000acf: PUSH1 0x02 00000ad1: EXP 00000ad2: SUB 00000ad3: DUP9 00000ad4: AND 00000ad5: PUSH1 0x00 00000ad7: SWAP1 00000ad8: DUP2 00000ad9: MSTORE 00000ada: PUSH1 0x20 00000adc: DUP11 00000add: SWAP1 00000ade: MSTORE 00000adf: PUSH1 0x40 00000ae1: SWAP1 00000ae2: KECCAK256 00000ae3: SSTORE 00000ae4: PUSH1 0x01 00000ae6: DUP9 00000ae7: ADD 00000ae8: SLOAD 00000ae9: PUSH2 0x0af8 00000aec: SWAP1 00000aed: DUP3 00000aee: PUSH4 0xffffffff 00000af3: PUSH2 0x09df 00000af6: AND 00000af7: JUMP 00000af8: JUMPDEST 00000af9: PUSH1 0x01 00000afb: DUP10 00000afc: ADD 00000afd: SSTORE 00000afe: SWAP3 00000aff: POP 00000b00: POP 00000b01: POP 00000b02: SWAP5 00000b03: SWAP4 00000b04: POP 00000b05: POP 00000b06: POP 00000b07: POP 00000b08: JUMP 00000b09: JUMPDEST 00000b0a: PUSH1 0x01 00000b0c: PUSH1 0xa0 00000b0e: PUSH1 0x02 00000b10: EXP 00000b11: SUB 00000b12: DUP3 00000b13: AND 00000b14: PUSH1 0x00 00000b16: SWAP1 00000b17: DUP2 00000b18: MSTORE 00000b19: PUSH1 0x20 00000b1b: DUP5 00000b1c: SWAP1 00000b1d: MSTORE 00000b1e: PUSH1 0x40 00000b20: DUP2 00000b21: KECCAK256 00000b22: SLOAD 00000b23: PUSH2 0x0b32 00000b26: SWAP1 00000b27: DUP4 00000b28: PUSH4 0xffffffff 00000b2d: PUSH2 0x0952 00000b30: AND 00000b31: JUMP 00000b32: JUMPDEST 00000b33: PUSH1 0x01 00000b35: PUSH1 0xa0 00000b37: PUSH1 0x02 00000b39: EXP 00000b3a: SUB 00000b3b: DUP5 00000b3c: AND 00000b3d: PUSH1 0x00 00000b3f: SWAP1 00000b40: DUP2 00000b41: MSTORE 00000b42: PUSH1 0x20 00000b44: DUP7 00000b45: SWAP1 00000b46: MSTORE 00000b47: PUSH1 0x40 00000b49: SWAP1 00000b4a: KECCAK256 00000b4b: SSTORE 00000b4c: PUSH1 0x01 00000b4e: DUP5 00000b4f: ADD 00000b50: SLOAD 00000b51: PUSH2 0x0b60 00000b54: SWAP1 00000b55: DUP4 00000b56: PUSH4 0xffffffff 00000b5b: PUSH2 0x0952 00000b5e: AND 00000b5f: JUMP 00000b60: JUMPDEST 00000b61: DUP5 00000b62: PUSH1 0x01 00000b64: ADD 00000b65: DUP2 00000b66: SWAP1 00000b67: SSTORE 00000b68: POP 00000b69: SWAP4 00000b6a: SWAP3 00000b6b: POP 00000b6c: POP 00000b6d: POP 00000b6e: JUMP 00000b6f: JUMPDEST 00000b70: PUSH1 0x00 00000b72: DUP1 00000b73: DUP4 00000b74: ISZERO 00000b75: ISZERO 00000b76: PUSH2 0x0b82 00000b79: JUMPI 00000b7a: PUSH1 0x00 00000b7c: SWAP2 00000b7d: POP 00000b7e: PUSH2 0x091a 00000b81: JUMP 00000b82: JUMPDEST 00000b83: POP 00000b84: DUP3 00000b85: DUP3 00000b86: MUL 00000b87: DUP3 00000b88: DUP5 00000b89: DUP3 00000b8a: DUP2 00000b8b: ISZERO 00000b8c: ISZERO 00000b8d: PUSH2 0x0b92 00000b90: JUMPI 00000b91: INVALID 00000b92: JUMPDEST 00000b93: DIV 00000b94: EQ 00000b95: PUSH2 0x09ee 00000b98: JUMPI 00000b99: INVALID 00000b9a: JUMPDEST 00000b9b: DUP3 00000b9c: PUSH1 0x02 00000b9e: DUP2 00000b9f: ADD 00000ba0: SWAP3 00000ba1: DUP3 00000ba2: ISZERO 00000ba3: PUSH2 0x0bc8 00000ba6: JUMPI 00000ba7: SWAP2 00000ba8: PUSH1 0x20 00000baa: MUL 00000bab: DUP3 00000bac: ADD 00000bad: JUMPDEST 00000bae: DUP3 00000baf: DUP2 00000bb0: GT 00000bb1: ISZERO 00000bb2: PUSH2 0x0bc8 00000bb5: JUMPI 00000bb6: DUP3 00000bb7: MLOAD 00000bb8: DUP3 00000bb9: SSTORE 00000bba: SWAP2 00000bbb: PUSH1 0x20 00000bbd: ADD 00000bbe: SWAP2 00000bbf: SWAP1 00000bc0: PUSH1 0x01 00000bc2: ADD 00000bc3: SWAP1 00000bc4: PUSH2 0x0bad 00000bc7: JUMP 00000bc8: JUMPDEST 00000bc9: POP 00000bca: PUSH2 0x0501 00000bcd: SWAP3 00000bce: PUSH2 0x0be8 00000bd1: SWAP3 00000bd2: POP 00000bd3: SWAP1 00000bd4: JUMPDEST 00000bd5: DUP1 00000bd6: DUP3 00000bd7: GT 00000bd8: ISZERO 00000bd9: PUSH2 0x0501 00000bdc: JUMPI 00000bdd: PUSH1 0x00 00000bdf: DUP2 00000be0: SSTORE 00000be1: PUSH1 0x01 00000be3: ADD 00000be4: PUSH2 0x0bd4 00000be7: JUMP 00000be8: JUMPDEST 00000be9: SWAP1 00000bea: JUMP 00000beb: STOP 00000bec: LOG1 00000bed: PUSH6 0x627a7a723058 00000bf4: KECCAK256 00000bf5: UNKNOWN(0x4C) 00000bf6: CHAINID 00000bf7: BLOBHASH 00000bf8: SHL 00000bf9: NOT 00000bfa: SWAP10 00000bfb: UNKNOWN(0xAA) 00000bfc: UNKNOWN(0xC0) 00000bfd: POP 00000bfe: BLOCKHASH 00000bff: DUP11 00000c00: UNKNOWN(0xBC) 00000c01: UNKNOWN(0xD7) 00000c02: PUSH30
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x5bcad3166d79ab6b6a8714ff819389dc78f2f7e44e1459ad7f9e7729db3a642c
call_targets:
0xe6bd9c2996e41f2ac1fa1eeff2abb25fdb6c00f6
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x5bcad3166d79ab6b6a8714ff819389dc78f2f7e44e1459ad7f9e7729db3a642c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe6bd9c2996e41f2ac1fa1eeff2abb25fdb6c00f6"
],
"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": "0x08fec02d",
"selector": "0x08fec02d",
"calldata_variants": [
"0x08fec02d",
"0x08fec02d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x14c2ab11",
"selector": "0x14c2ab11",
"calldata_variants": [
"0x14c2ab11",
"0x14c2ab110000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x34b9384c",
"selector": "0x34b9384c",
"calldata_variants": [
"0x34b9384c",
"0x34b9384c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x80776e2e",
"selector": "0x80776e2e",
"calldata_variants": [
"0x80776e2e",
"0x80776e2e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8404c195",
"selector": "0x8404c195",
"calldata_variants": [
"0x8404c195",
"0x8404c1950000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9413f25c",
"selector": "0x9413f25c",
"calldata_variants": [
"0x9413f25c",
"0x9413f25c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9592619c",
"selector": "0x9592619c",
"calldata_variants": [
"0x9592619c",
"0x9592619c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9af608c9",
"selector": "0x9af608c9",
"calldata_variants": [
"0x9af608c9",
"0x9af608c90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1235,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2046,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2192,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [],
"untrusted_call_count": 4
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x5bcad3166d79ab6b6a8714ff819389dc78f2f7e44e1459ad7f9e7729db3a642c
call_targets:
0xe6bd9c2996e41f2ac1fa1eeff2abb25fdb6c00f6
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x5bcad3166d79ab6b6a8714ff819389dc78f2f7e44e1459ad7f9e7729db3a642c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xe6bd9c2996e41f2ac1fa1eeff2abb25fdb6c00f6"
],
"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": "0x08fec02d",
"selector": "0x08fec02d",
"calldata_variants": [
"0x08fec02d",
"0x08fec02d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x14c2ab11",
"selector": "0x14c2ab11",
"calldata_variants": [
"0x14c2ab11",
"0x14c2ab110000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x34b9384c",
"selector": "0x34b9384c",
"calldata_variants": [
"0x34b9384c",
"0x34b9384c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x80776e2e",
"selector": "0x80776e2e",
"calldata_variants": [
"0x80776e2e",
"0x80776e2e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x8404c195",
"selector": "0x8404c195",
"calldata_variants": [
"0x8404c195",
"0x8404c1950000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9413f25c",
"selector": "0x9413f25c",
"calldata_variants": [
"0x9413f25c",
"0x9413f25c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9592619c",
"selector": "0x9592619c",
"calldata_variants": [
"0x9592619c",
"0x9592619c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9af608c9",
"selector": "0x9af608c9",
"calldata_variants": [
"0x9af608c9",
"0x9af608c90000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1235,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2046,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2192,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": []
}
|