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

Analysis Run

d8602a45-4bec-466d-8f05-3238a798ab2d

complete
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 7:43 PM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30743 report.consolidate complete 1 / 1 3 months ago
75454 artifact.fetch complete 1 / 3 2 weeks ago
75455 tool.cast_disasm complete 1 / 3 2 weeks ago
75456 analysis.bundle complete 1 / 3 2 weeks ago
75457 capability.graph complete 1 / 3 2 weeks ago
75458 detector.run complete 1 / 3 2 weeks ago
75459 validation.fork complete 1 / 3 2 weeks ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
Scanned runtime bytecode in BYTECODE_BUNDLE.txt; observed standard Ownable + SafeERC20 patterns for ownership and ERC20 transfers, with no concrete vulnerability signatures identifiable from the bytecode alone.
View stderr
[codex:1248531] OpenAI Codex v0.77.0 (research preview)
[codex:1248531] --------
[codex:1248531] workdir: /tmp/codex-multi-uog3g8zh
[codex:1248531] model: gpt-5.2-codex
[codex:1248531] provider: openai
[codex:1248531] approval: never
[codex:1248531] sandbox: read-only
[codex:1248531] reasoning effort: xhigh
[codex:1248531] reasoning summaries: auto
[codex:1248531] session id: 019b70c4-3a08-7ac1-a297-99cf8eb13bd6
[codex:1248531] --------
[codex:1248531] user
[codex:1248531] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1248531] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1248531] 
[codex:1248531] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1248531] 
[codex:1248531] Output MUST be valid JSON matching the provided schema.
[codex:1248531] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1248531] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1248531] 
[codex:1248531] Output constraints (IMPORTANT):
[codex:1248531] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1248531] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1248531] mcp startup: no servers
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:1248531] exec
[codex:1248531] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-uog3g8zh succeeded in 5ms:
[codex:1248531] Runtime bytecode bundle for best-effort auditing.
[codex:1248531] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1248531] 
[codex:1248531] FILE: runtime_bytecode.hex
[codex:1248531] 0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063715018a6116100765780639e96a23a1161005b5780639e96a23a1461017b578063b2a02ff11461019b578063f2fde38b146101ae57600080fd5b8063715018a6146101555780638da5cb5b1461015d57600080fd5b80634c0f38c2116100a75780634c0f38c2146100eb578063512d00d0146101075780636d4ce63c1461011057600080fd5b80630de05659146100c3578063379607f5146100d8575b600080fd5b6100d66100d1366004610967565b6101c1565b005b6100d66100e6366004610993565b6101cf565b6100f460025481565b6040519081526020015b60405180910390f35b6100f460045481565b6001546101309073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fe565b6100d66101dc565b60005473ffffffffffffffffffffffffffffffffffffffff16610130565b6003546101309073ffffffffffffffffffffffffffffffffffffffff1681565b6100d66101a93660046109ac565b6101f0565b6100d66101bc3660046109ed565b610285565b6101cb828261033e565b5050565b6101d9338261033e565b50565b6101e46103f7565b6101ee6000610478565b565b6101f86103f7565b61021973ffffffffffffffffffffffffffffffffffffffff841683836104ed565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f0eaaadac87f199d46d8127736588b675533df9cfc4aee1f85c448ff39fc01c818360405161027891815260200190565b60405180910390a3505050565b61028d6103f7565b73ffffffffffffffffffffffffffffffffffffffff8116610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101d981610478565b6001546103639073ffffffffffffffffffffffffffffffffffffffff163330846105c6565b6000600254600454836103769190610a11565b6103809190610a75565b6003549091506103a79073ffffffffffffffffffffffffffffffffffffffff1684836104ed565b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff85169133917f2f6639d24651730c7bf57c95ddbf96d66d11477e4ec626876f92c22e5f365e689101610278565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105c19084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261062a565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526106249085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161053f565b50505050565b600061068c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107399092919063ffffffff16565b90508051600014806106ad5750808060200190518101906106ad9190610ab0565b6105c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161032c565b60606107488484600085610750565b949350505050565b6060824710156107e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161032c565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161080b9190610afe565b60006040518083038185875af1925050503d8060008114610848576040519150601f19603f3d011682016040523d82523d6000602084013e61084d565b606091505b509150915061085e87838387610869565b979650505050505050565b606083156108fc5782516108f55773ffffffffffffffffffffffffffffffffffffffff85163b6108f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161032c565b5081610748565b61074883838151156109115781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032c9190610b1a565b73ffffffffffffffffffffffffffffffffffffffff811681146101d957600080fd5b6000806040838503121561097a57600080fd5b823561098581610945565b946020939093013593505050565b6000602082840312156109a557600080fd5b5035919050565b6000806000606084860312156109c157600080fd5b83356109cc81610945565b925060208401356109dc81610945565b929592945050506040919091013590565b6000602082840312156109ff57600080fd5b8135610a0a81610945565b9392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610a70577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b600082610aab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215610ac257600080fd5b81518015158114610a0a57600080fd5b60005b83811015610aed578181015183820152602001610ad5565b838111156106245750506000910152565b60008251610b10818460208701610ad2565b9190910192915050565b6020815260008251806020840152610b39816040850160208701610ad2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212203d282628085128265ed8b3df32d20a1b4ec2fce98becb21ccbd53c2ad6173c0a64736f6c63430008090033
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Analyzing contract bytecode and functions**
[codex:1248531] 
[codex:1248531] I'm examining bytecode selectors and revert strings to infer that this contract follows OpenZeppelin's Ownable and SafeERC20 patterns, likely involving token transfers and ownership controls. I plan to write a Python script to disassemble the bytecode offline, identify functions, and check for potential vulnerabilities like unprotected external calls or improper token rescues.
[codex:1248531] exec
[codex:1248531] /bin/bash -lc "python - <<'PY'
[codex:1248531] from binascii import unhexlify
[codex:1248531] import textwrap
[codex:1248531] hexstr=open('BYTECODE_BUNDLE.txt').read().split('0x',1)[1].strip()  # naive? actually contains multiple; but after 0x at runtime
[codex:1248531] # Actually file content includes note + file and bytecode in same line. We'll parse line containing 0x
[codex:1248531] for line in open('BYTECODE_BUNDLE.txt'):
[codex:1248531]     if line.startswith('0x'):
[codex:1248531]         hexstr=line.strip()[2:]
[codex:1248531]         break
[codex:1248531] else:
[codex:1248531]     raise SystemExit('no bytecode')
[codex:1248531] code=unhexlify(hexstr)
[codex:1248531] # opcode map
[codex:1248531] opcodes={
[codex:1248531]     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:1248531]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1248531]     0x20:'SHA3',
[codex:1248531]     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:1248531]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1248531]     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:1248531]     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',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:1248531]     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:1248531]     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:1248531]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1248531]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1248531] }
[codex:1248531] 
[codex:1248531] i=0
[codex:1248531] out=[]
[codex:1248531] while i<len(code):
[codex:1248531]     op=code[i]
[codex:1248531]     name=opcodes.get(op, f'OP{op:02x}')
[codex:1248531]     if 0x60<=op<=0x7f:
[codex:1248531]         n=op-0x5f
[codex:1248531]         data=code[i+1:i+1+n]
[codex:1248531]         out.append(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1248531]         i+=1+n
[codex:1248531]     else:
[codex:1248531]         out.append(f'{i:04x}: {name}')
[codex:1248531]         i+=1
[codex:1248531] # print first 300 lines for view
[codex:1248531] print('\\n'.join(out[:400]))
[codex:1248531] PY" in /tmp/codex-multi-uog3g8zh succeeded in 27ms:
[codex:1248531] 0000: PUSH1 0x80
[codex:1248531] 0002: PUSH1 0x40
[codex:1248531] 0004: MSTORE
[codex:1248531] 0005: CALLVALUE
[codex:1248531] 0006: DUP1
[codex:1248531] 0007: ISZERO
[codex:1248531] 0008: PUSH2 0x0010
[codex:1248531] 000b: JUMPI
[codex:1248531] 000c: PUSH1 0x00
[codex:1248531] 000e: DUP1
[codex:1248531] 000f: REVERT
[codex:1248531] 0010: JUMPDEST
[codex:1248531] 0011: POP
[codex:1248531] 0012: PUSH1 0x04
[codex:1248531] 0014: CALLDATASIZE
[codex:1248531] 0015: LT
[codex:1248531] 0016: PUSH2 0x00be
[codex:1248531] 0019: JUMPI
[codex:1248531] 001a: PUSH1 0x00
[codex:1248531] 001c: CALLDATALOAD
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Analyzing contract disassembly**
[codex:1248531] exec
[codex:1248531] /bin/bash -lc "python - <<'PY'
[codex:1248531] from binascii import unhexlify
[codex:1248531] hexstr=None
[codex:1248531] for line in open('BYTECODE_BUNDLE.txt'):
[codex:1248531]     if line.startswith('0x'):
[codex:1248531]         hexstr=line.strip()[2:]
[codex:1248531]         break
[codex:1248531] code=unhexlify(hexstr)
[codex:1248531] opcodes={
[codex:1248531]     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:1248531]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1248531]     0x20:'SHA3',
[codex:1248531]     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:1248531]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1248531]     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:1248531]     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',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:1248531]     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:1248531]     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:1248531]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1248531]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1248531] }
[codex:1248531] 
[codex:1248531] def disasm(start=0, end=None):
[codex:1248531]     i=0
[codex:1248531]     out=[]
[codex:1248531]     while i<len(code):
[codex:1248531]         if i<start:
[codex:1248531]             op=code[i]
[codex:1248531]             if 0x60<=op<=0x7f:
[codex:1248531]                 i+=1+(op-0x5f)
[codex:1248531]             else:
[codex:1248531]                 i+=1
[codex:1248531]             continue
[codex:1248531]         if end is not None and i>=end:
[codex:1248531]             break
[codex:1248531]         op=code[i]
[codex:1248531]         name=opcodes.get(op, f'OP{op:02x}')
[codex:1248531]         if 0x60<=op<=0x7f:
[codex:1248531]             n=op-0x5f
[codex:1248531]             data=code[i+1:i+1+n]
[codex:1248531]             out.append(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1248531]             i+=1+n
[codex:1248531]         else:
[codex:1248531]             out.append(f'{i:04x}: {name}')
[codex:1248531]             i+=1
[codex:1248531]     return out
[codex:1248531] 
[codex:1248531] # print section around 0x03a0-0x0500
[codex:1248531] print('\\n'.join(disasm(0x03a0, 0x0500)))
[codex:1248531] PY" in /tmp/codex-multi-uog3g8zh succeeded in 18ms:
[codex:1248531] 03a0: AND
[codex:1248531] 03a1: DUP5
[codex:1248531] 03a2: DUP4
[codex:1248531] 03a3: PUSH2 0x04ed
[codex:1248531] 03a6: JUMP
[codex:1248531] 03a7: JUMPDEST
[codex:1248531] 03a8: PUSH1 0x40
[codex:1248531] 03aa: DUP1
[codex:1248531] 03ab: MLOAD
[codex:1248531] 03ac: DUP4
[codex:1248531] 03ad: DUP2
[codex:1248531] 03ae: MSTORE
[codex:1248531] 03af: PUSH1 0x20
[codex:1248531] 03b1: DUP2
[codex:1248531] 03b2: ADD
[codex:1248531] 03b3: DUP4
[codex:1248531] 03b4: SWAP1
[codex:1248531] 03b5: MSTORE
[codex:1248531] 03b6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1248531] 03cb: DUP6
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Continuing exploration from checkpoint**
[codex:1248531] exec
[codex:1248531] /bin/bash -lc "python - <<'PY'
[codex:1248531] from binascii import unhexlify
[codex:1248531] hexstr=None
[codex:1248531] for line in open('BYTECODE_BUNDLE.txt'):
[codex:1248531]     if line.startswith('0x'):
[codex:1248531]         hexstr=line.strip()[2:]
[codex:1248531]         break
[codex:1248531] code=unhexlify(hexstr)
[codex:1248531] opcodes={
[codex:1248531]     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:1248531]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1248531]     0x20:'SHA3',
[codex:1248531]     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:1248531]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1248531]     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:1248531]     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',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:1248531]     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:1248531]     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:1248531]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1248531]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1248531] }
[codex:1248531] 
[codex:1248531] # disasm from 0x04ed onward
[codex:1248531] 
[codex:1248531] def disasm(start=0, end=None):
[codex:1248531]     i=0
[codex:1248531]     out=[]
[codex:1248531]     while i<len(code):
[codex:1248531]         if i<start:
[codex:1248531]             op=code[i]
[codex:1248531]             if 0x60<=op<=0x7f:
[codex:1248531]                 i+=1+(op-0x5f)
[codex:1248531]             else:
[codex:1248531]                 i+=1
[codex:1248531]             continue
[codex:1248531]         if end is not None and i>=end:
[codex:1248531]             break
[codex:1248531]         op=code[i]
[codex:1248531]         name=opcodes.get(op, f'OP{op:02x}')
[codex:1248531]         if 0x60<=op<=0x7f:
[codex:1248531]             n=op-0x5f
[codex:1248531]             data=code[i+1:i+1+n]
[codex:1248531]             out.append(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1248531]             i+=1+n
[codex:1248531]         else:
[codex:1248531]             out.append(f'{i:04x}: {name}')
[codex:1248531]             i+=1
[codex:1248531]     return out
[codex:1248531] 
[codex:1248531] print('\\n'.join(disasm(0x04ed, 0x0650)))
[codex:1248531] PY" in /tmp/codex-multi-uog3g8zh succeeded in 26ms:
[codex:1248531] 04ed: JUMPDEST
[codex:1248531] 04ee: PUSH1 0x40
[codex:1248531] 04f0: MLOAD
[codex:1248531] 04f1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:1248531] 0506: DUP4
[codex:1248531] 0507: AND
[codex:1248531] 0508: PUSH1 0x24
[codex:1248531] 050a: DUP3
[codex:1248531] 050b: ADD
[codex:1248531] 050c: MSTORE
[codex:1248531] 050d: PUSH1 0x44
[codex:1248531] 050f: DUP2
[codex:1248531] 0510: ADD
[codex:1248531] 0511: DUP3
[codex:1248531] 0512: SWAP1
[codex:1248531] 0513: MSTORE
[codex:1248531] 0514: PUSH2 0x05c1
[codex:1248531] 0517: SWAP1
[codex:1248531] 0518: DUP5
[codex:1248531] 0519: SWAP1
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Proceeding with task**
[codex:1248531] exec
[codex:1248531] /bin/bash -lc "python - <<'PY'
[codex:1248531] from binascii import unhexlify
[codex:1248531] hexstr=None
[codex:1248531] for line in open('BYTECODE_BUNDLE.txt'):
[codex:1248531]     if line.startswith('0x'):
[codex:1248531]         hexstr=line.strip()[2:]
[codex:1248531]         break
[codex:1248531] code=unhexlify(hexstr)
[codex:1248531] opcodes={
[codex:1248531]     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:1248531]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1248531]     0x20:'SHA3',
[codex:1248531]     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:1248531]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1248531]     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:1248531]     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',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:1248531]     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:1248531]     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:1248531]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1248531]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1248531] }
[codex:1248531] 
[codex:1248531] # disasm from 0x062a onward
[codex:1248531] 
[codex:1248531] def disasm(start=0, end=None):
[codex:1248531]     i=0
[codex:1248531]     out=[]
[codex:1248531]     while i<len(code):
[codex:1248531]         if i<start:
[codex:1248531]             op=code[i]
[codex:1248531]             if 0x60<=op<=0x7f:
[codex:1248531]                 i+=1+(op-0x5f)
[codex:1248531]             else:
[codex:1248531]                 i+=1
[codex:1248531]             continue
[codex:1248531]         if end is not None and i>=end:
[codex:1248531]             break
[codex:1248531]         op=code[i]
[codex:1248531]         name=opcodes.get(op, f'OP{op:02x}')
[codex:1248531]         if 0x60<=op<=0x7f:
[codex:1248531]             n=op-0x5f
[codex:1248531]             data=code[i+1:i+1+n]
[codex:1248531]             out.append(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1248531]             i+=1+n
[codex:1248531]         else:
[codex:1248531]             out.append(f'{i:04x}: {name}')
[codex:1248531]             i+=1
[codex:1248531]     return out
[codex:1248531] 
[codex:1248531] print('\\n'.join(disasm(0x062a, 0x0850)))
[codex:1248531] PY" in /tmp/codex-multi-uog3g8zh succeeded in 23ms:
[codex:1248531] 062a: JUMPDEST
[codex:1248531] 062b: PUSH1 0x00
[codex:1248531] 062d: PUSH2 0x068c
[codex:1248531] 0630: DUP3
[codex:1248531] 0631: PUSH1 0x40
[codex:1248531] 0633: MLOAD
[codex:1248531] 0634: DUP1
[codex:1248531] 0635: PUSH1 0x40
[codex:1248531] 0637: ADD
[codex:1248531] 0638: PUSH1 0x40
[codex:1248531] 063a: MSTORE
[codex:1248531] 063b: DUP1
[codex:1248531] 063c: PUSH1 0x20
[codex:1248531] 063e: DUP2
[codex:1248531] 063f: MSTORE
[codex:1248531] 0640: PUSH1 0x20
[codex:1248531] 0642: ADD
[codex:1248531] 0643: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
[codex:1248531] 0664: DUP2
[codex:1248531] 0665: MSTORE
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Planning further disassembly**
[codex:1248531] exec
[codex:1248531] /bin/bash -lc "python - <<'PY'
[codex:1248531] from binascii import unhexlify
[codex:1248531] hexstr=None
[codex:1248531] for line in open('BYTECODE_BUNDLE.txt'):
[codex:1248531]     if line.startswith('0x'):
[codex:1248531]         hexstr=line.strip()[2:]
[codex:1248531]         break
[codex:1248531] code=unhexlify(hexstr)
[codex:1248531] opcodes={
[codex:1248531]     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:1248531]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1248531]     0x20:'SHA3',
[codex:1248531]     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:1248531]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1248531]     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:1248531]     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',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:1248531]     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:1248531]     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:1248531]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1248531]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1248531] }
[codex:1248531] 
[codex:1248531] 
[codex:1248531] def disasm(start=0, end=None):
[codex:1248531]     i=0
[codex:1248531]     out=[]
[codex:1248531]     while i<len(code):
[codex:1248531]         if i<start:
[codex:1248531]             op=code[i]
[codex:1248531]             if 0x60<=op<=0x7f:
[codex:1248531]                 i+=1+(op-0x5f)
[codex:1248531]             else:
[codex:1248531]                 i+=1
[codex:1248531]             continue
[codex:1248531]         if end is not None and i>=end:
[codex:1248531]             break
[codex:1248531]         op=code[i]
[codex:1248531]         name=opcodes.get(op, f'OP{op:02x}')
[codex:1248531]         if 0x60<=op<=0x7f:
[codex:1248531]             n=op-0x5f
[codex:1248531]             data=code[i+1:i+1+n]
[codex:1248531]             out.append(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1248531]             i+=1+n
[codex:1248531]         else:
[codex:1248531]             out.append(f'{i:04x}: {name}')
[codex:1248531]             i+=1
[codex:1248531]     return out
[codex:1248531] 
[codex:1248531] print('\\n'.join(disasm(0x084d, 0x0b50)))
[codex:1248531] PY" in /tmp/codex-multi-uog3g8zh succeeded in 17ms:
[codex:1248531] 084d: JUMPDEST
[codex:1248531] 084e: POP
[codex:1248531] 084f: SWAP2
[codex:1248531] 0850: POP
[codex:1248531] 0851: SWAP2
[codex:1248531] 0852: POP
[codex:1248531] 0853: PUSH2 0x085e
[codex:1248531] 0856: DUP8
[codex:1248531] 0857: DUP4
[codex:1248531] 0858: DUP4
[codex:1248531] 0859: DUP8
[codex:1248531] 085a: PUSH2 0x0869
[codex:1248531] 085d: JUMP
[codex:1248531] 085e: JUMPDEST
[codex:1248531] 085f: SWAP8
[codex:1248531] 0860: SWAP7
[codex:1248531] 0861: POP
[codex:1248531] 0862: POP
[codex:1248531] 0863: POP
[codex:1248531] 0864: POP
[codex:1248531] 
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Analyzing function selectors and ABI decoding**
[codex:1248531] thinking
[codex:1248531] **Tracing stack behavior and token transfer logic**
[codex:1248531] 
[codex:1248531] I'm carefully tracking stack operations across calls to understand how arguments flow for token transfers and events; this helps clarify how deposit and withdrawal functions operate and if access control applies properly. I’m parsing intricate EVM stack manipulations to map parameters to handler functions and then verifying if any critical state variables can be modified without protection.
[codex:1248531] exec
[codex:1248531] /bin/bash -lc "python - <<'PY'
[codex:1248531] from binascii import unhexlify
[codex:1248531] hexstr=None
[codex:1248531] for line in open('BYTECODE_BUNDLE.txt'):
[codex:1248531]     if line.startswith('0x'):
[codex:1248531]         hexstr=line.strip()[2:]
[codex:1248531]         break
[codex:1248531] code=unhexlify(hexstr)
[codex:1248531] positions=[]
[codex:1248531] for i,b in enumerate(code):
[codex:1248531]     if b==0x55:  # SSTORE
[codex:1248531]         positions.append(i)
[codex:1248531] print('SSTORE positions:', positions)
[codex:1248531] PY" in /tmp/codex-multi-uog3g8zh succeeded in 19ms:
[codex:1248531] SSTORE positions: [101, 1211]
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Analyzing SSTORE positions in bytecode**
[codex:1248531] exec
[codex:1248531] /bin/bash -lc "python - <<'PY'
[codex:1248531] from binascii import unhexlify
[codex:1248531] hexstr=None
[codex:1248531] for line in open('BYTECODE_BUNDLE.txt'):
[codex:1248531]     if line.startswith('0x'):
[codex:1248531]         hexstr=line.strip()[2:]
[codex:1248531]         break
[codex:1248531] code=unhexlify(hexstr)
[codex:1248531] # print opcodes around offset 0x60 to 0x70
[codex:1248531] start=0x60
[codex:1248531] end=0x80
[codex:1248531] opcodes={
[codex:1248531]     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:1248531]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:1248531]     0x20:'SHA3',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:1248531]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1248531]     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:1248531]     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',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:1248531]     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:1248531]     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:1248531]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:1248531]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1248531] }
[codex:1248531] 
[codex:1248531] i=start
[codex:1248531] while i<end:
[codex:1248531]     op=code[i]
[codex:1248531]     name=opcodes.get(op, f'OP{op:02x}')
[codex:1248531]     if 0x60<=op<=0x7f:
[codex:1248531]         n=op-0x5f
[codex:1248531]         data=code[i+1:i+1+n]
[codex:1248531]         print(f'{i:04x}: {name} 0x{data.hex()}')
[codex:1248531]         i+=1+n
[codex:1248531]     else:
[codex:1248531]         print(f'{i:04x}: {name}')
[codex:1248531]         i+=1
[codex:1248531] PY" in /tmp/codex-multi-uog3g8zh succeeded in 17ms:
[codex:1248531] 0060: XOR
[codex:1248531] 0061: OPa6
[codex:1248531] 0062: EQ
[codex:1248531] 0063: PUSH2 0x0155
[codex:1248531] 0066: JUMPI
[codex:1248531] 0067: DUP1
[codex:1248531] 0068: PUSH4 0x8da5cb5b
[codex:1248531] 006d: EQ
[codex:1248531] 006e: PUSH2 0x015d
[codex:1248531] 0071: JUMPI
[codex:1248531] 0072: PUSH1 0x00
[codex:1248531] 0074: DUP1
[codex:1248531] 0075: REVERT
[codex:1248531] 0076: JUMPDEST
[codex:1248531] 0077: DUP1
[codex:1248531] 0078: PUSH4 0x4c0f38c2
[codex:1248531] 007d: GT
[codex:1248531] 007e: PUSH2 0x00a7
[codex:1248531] 
[codex:1248531] thinking
[codex:1248531] **Analyzing contract bytecode for vulnerabilities**
[codex:1248531] codex
[codex:1248531] {"no_findings":true,"summary":"Scanned runtime bytecode in BYTECODE_BUNDLE.txt; observed standard Ownable + SafeERC20 patterns for ownership and ERC20 transfers, with no concrete vulnerability signatures identifiable from the bytecode alone.","findings":[]}
[codex:1248531] tokens used
[codex:1248531] 64,792
[codex:1248531] {"no_findings":true,"summary":"Scanned runtime bytecode in BYTECODE_BUNDLE.txt; observed standard Ownable + SafeERC20 patterns for ownership and ERC20 transfers, with no concrete vulnerability signatures identifiable from the bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T19:43:58.134330+00:00",
        "returncode": 0
    },
    "summary": "Scanned runtime bytecode in BYTECODE_BUNDLE.txt; observed standard Ownable + SafeERC20 patterns for ownership and ERC20 transfers, with no concrete vulnerability signatures identifiable from the bytecode alone.",
    "raw_final": {
        "summary": "Scanned runtime bytecode in BYTECODE_BUNDLE.txt; observed standard Ownable + SafeERC20 patterns for ownership and ERC20 transfers, with no concrete vulnerability signatures identifiable from the bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
3
Total opcodes
1236
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x00be
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x715018a6
00000026: GT
00000027: PUSH2 0x0076
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0x9e96a23a
00000031: GT
00000032: PUSH2 0x005b
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0x9e96a23a
0000003c: EQ
0000003d: PUSH2 0x017b
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xb2a02ff1
00000047: EQ
00000048: PUSH2 0x019b
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xf2fde38b
00000052: EQ
00000053: PUSH2 0x01ae
00000056: JUMPI
00000057: PUSH1 0x00
00000059: DUP1
0000005a: REVERT
0000005b: JUMPDEST
0000005c: DUP1
0000005d: PUSH4 0x715018a6
00000062: EQ
00000063: PUSH2 0x0155
00000066: JUMPI
00000067: DUP1
00000068: PUSH4 0x8da5cb5b
0000006d: EQ
0000006e: PUSH2 0x015d
00000071: JUMPI
00000072: PUSH1 0x00
00000074: DUP1
00000075: REVERT
00000076: JUMPDEST
00000077: DUP1
00000078: PUSH4 0x4c0f38c2
0000007d: GT
0000007e: PUSH2 0x00a7
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x4c0f38c2
00000088: EQ
00000089: PUSH2 0x00eb
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0x512d00d0
00000093: EQ
00000094: PUSH2 0x0107
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0x6d4ce63c
0000009e: EQ
0000009f: PUSH2 0x0110
000000a2: JUMPI
000000a3: PUSH1 0x00
000000a5: DUP1
000000a6: REVERT
000000a7: JUMPDEST
000000a8: DUP1
000000a9: PUSH4 0x0de05659
000000ae: EQ
000000af: PUSH2 0x00c3
000000b2: JUMPI
000000b3: DUP1
000000b4: PUSH4 0x379607f5
000000b9: EQ
000000ba: PUSH2 0x00d8
000000bd: JUMPI
000000be: JUMPDEST
000000bf: PUSH1 0x00
000000c1: DUP1
000000c2: REVERT
000000c3: JUMPDEST
000000c4: PUSH2 0x00d6
000000c7: PUSH2 0x00d1
000000ca: CALLDATASIZE
000000cb: PUSH1 0x04
000000cd: PUSH2 0x0967
000000d0: JUMP
000000d1: JUMPDEST
000000d2: PUSH2 0x01c1
000000d5: JUMP
000000d6: JUMPDEST
000000d7: STOP
000000d8: JUMPDEST
000000d9: PUSH2 0x00d6
000000dc: PUSH2 0x00e6
000000df: CALLDATASIZE
000000e0: PUSH1 0x04
000000e2: PUSH2 0x0993
000000e5: JUMP
000000e6: JUMPDEST
000000e7: PUSH2 0x01cf
000000ea: JUMP
000000eb: JUMPDEST
000000ec: PUSH2 0x00f4
000000ef: PUSH1 0x02
000000f1: SLOAD
000000f2: DUP2
000000f3: JUMP
000000f4: JUMPDEST
000000f5: PUSH1 0x40
000000f7: MLOAD
000000f8: SWAP1
000000f9: DUP2
000000fa: MSTORE
000000fb: PUSH1 0x20
000000fd: ADD
000000fe: JUMPDEST
000000ff: PUSH1 0x40
00000101: MLOAD
00000102: DUP1
00000103: SWAP2
00000104: SUB
00000105: SWAP1
00000106: RETURN
00000107: JUMPDEST
00000108: PUSH2 0x00f4
0000010b: PUSH1 0x04
0000010d: SLOAD
0000010e: DUP2
0000010f: JUMP
00000110: JUMPDEST
00000111: PUSH1 0x01
00000113: SLOAD
00000114: PUSH2 0x0130
00000117: SWAP1
00000118: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000012d: AND
0000012e: DUP2
0000012f: JUMP
00000130: JUMPDEST
00000131: PUSH1 0x40
00000133: MLOAD
00000134: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000149: SWAP1
0000014a: SWAP2
0000014b: AND
0000014c: DUP2
0000014d: MSTORE
0000014e: PUSH1 0x20
00000150: ADD
00000151: PUSH2 0x00fe
00000154: JUMP
00000155: JUMPDEST
00000156: PUSH2 0x00d6
00000159: PUSH2 0x01dc
0000015c: JUMP
0000015d: JUMPDEST
0000015e: PUSH1 0x00
00000160: SLOAD
00000161: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000176: AND
00000177: PUSH2 0x0130
0000017a: JUMP
0000017b: JUMPDEST
0000017c: PUSH1 0x03
0000017e: SLOAD
0000017f: PUSH2 0x0130
00000182: SWAP1
00000183: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000198: AND
00000199: DUP2
0000019a: JUMP
0000019b: JUMPDEST
0000019c: PUSH2 0x00d6
0000019f: PUSH2 0x01a9
000001a2: CALLDATASIZE
000001a3: PUSH1 0x04
000001a5: PUSH2 0x09ac
000001a8: JUMP
000001a9: JUMPDEST
000001aa: PUSH2 0x01f0
000001ad: JUMP
000001ae: JUMPDEST
000001af: PUSH2 0x00d6
000001b2: PUSH2 0x01bc
000001b5: CALLDATASIZE
000001b6: PUSH1 0x04
000001b8: PUSH2 0x09ed
000001bb: JUMP
000001bc: JUMPDEST
000001bd: PUSH2 0x0285
000001c0: JUMP
000001c1: JUMPDEST
000001c2: PUSH2 0x01cb
000001c5: DUP3
000001c6: DUP3
000001c7: PUSH2 0x033e
000001ca: JUMP
000001cb: JUMPDEST
000001cc: POP
000001cd: POP
000001ce: JUMP
000001cf: JUMPDEST
000001d0: PUSH2 0x01d9
000001d3: CALLER
000001d4: DUP3
000001d5: PUSH2 0x033e
000001d8: JUMP
000001d9: JUMPDEST
000001da: POP
000001db: JUMP
000001dc: JUMPDEST
000001dd: PUSH2 0x01e4
000001e0: PUSH2 0x03f7
000001e3: JUMP
000001e4: JUMPDEST
000001e5: PUSH2 0x01ee
000001e8: PUSH1 0x00
000001ea: PUSH2 0x0478
000001ed: JUMP
000001ee: JUMPDEST
000001ef: JUMP
000001f0: JUMPDEST
000001f1: PUSH2 0x01f8
000001f4: PUSH2 0x03f7
000001f7: JUMP
000001f8: JUMPDEST
000001f9: PUSH2 0x0219
000001fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000211: DUP5
00000212: AND
00000213: DUP4
00000214: DUP4
00000215: PUSH2 0x04ed
00000218: JUMP
00000219: JUMPDEST
0000021a: DUP2
0000021b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000230: AND
00000231: DUP4
00000232: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000247: AND
00000248: PUSH32 0x0eaaadac87f199d46d8127736588b675533df9cfc4aee1f85c448ff39fc01c81
00000269: DUP4
0000026a: PUSH1 0x40
0000026c: MLOAD
0000026d: PUSH2 0x0278
00000270: SWAP2
00000271: DUP2
00000272: MSTORE
00000273: PUSH1 0x20
00000275: ADD
00000276: SWAP1
00000277: JUMP
00000278: JUMPDEST
00000279: PUSH1 0x40
0000027b: MLOAD
0000027c: DUP1
0000027d: SWAP2
0000027e: SUB
0000027f: SWAP1
00000280: LOG3
00000281: POP
00000282: POP
00000283: POP
00000284: JUMP
00000285: JUMPDEST
00000286: PUSH2 0x028d
00000289: PUSH2 0x03f7
0000028c: JUMP
0000028d: JUMPDEST
0000028e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002a3: DUP2
000002a4: AND
000002a5: PUSH2 0x0335
000002a8: JUMPI
000002a9: PUSH1 0x40
000002ab: MLOAD
000002ac: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000002cd: DUP2
000002ce: MSTORE
000002cf: PUSH1 0x20
000002d1: PUSH1 0x04
000002d3: DUP3
000002d4: ADD
000002d5: MSTORE
000002d6: PUSH1 0x26
000002d8: PUSH1 0x24
000002da: DUP3
000002db: ADD
000002dc: MSTORE
000002dd: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
000002fe: PUSH1 0x44
00000300: DUP3
00000301: ADD
00000302: MSTORE
00000303: PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000
00000324: PUSH1 0x64
00000326: DUP3
00000327: ADD
00000328: MSTORE
00000329: PUSH1 0x84
0000032b: ADD
0000032c: JUMPDEST
0000032d: PUSH1 0x40
0000032f: MLOAD
00000330: DUP1
00000331: SWAP2
00000332: SUB
00000333: SWAP1
00000334: REVERT
00000335: JUMPDEST
00000336: PUSH2 0x01d9
00000339: DUP2
0000033a: PUSH2 0x0478
0000033d: JUMP
0000033e: JUMPDEST
0000033f: PUSH1 0x01
00000341: SLOAD
00000342: PUSH2 0x0363
00000345: SWAP1
00000346: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000035b: AND
0000035c: CALLER
0000035d: ADDRESS
0000035e: DUP5
0000035f: PUSH2 0x05c6
00000362: JUMP
00000363: JUMPDEST
00000364: PUSH1 0x00
00000366: PUSH1 0x02
00000368: SLOAD
00000369: PUSH1 0x04
0000036b: SLOAD
0000036c: DUP4
0000036d: PUSH2 0x0376
00000370: SWAP2
00000371: SWAP1
00000372: PUSH2 0x0a11
00000375: JUMP
00000376: JUMPDEST
00000377: PUSH2 0x0380
0000037a: SWAP2
0000037b: SWAP1
0000037c: PUSH2 0x0a75
0000037f: JUMP
00000380: JUMPDEST
00000381: PUSH1 0x03
00000383: SLOAD
00000384: SWAP1
00000385: SWAP2
00000386: POP
00000387: PUSH2 0x03a7
0000038a: SWAP1
0000038b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003a0: AND
000003a1: DUP5
000003a2: DUP4
000003a3: PUSH2 0x04ed
000003a6: JUMP
000003a7: JUMPDEST
000003a8: PUSH1 0x40
000003aa: DUP1
000003ab: MLOAD
000003ac: DUP4
000003ad: DUP2
000003ae: MSTORE
000003af: PUSH1 0x20
000003b1: DUP2
000003b2: ADD
000003b3: DUP4
000003b4: SWAP1
000003b5: MSTORE
000003b6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003cb: DUP6
000003cc: AND
000003cd: SWAP2
000003ce: CALLER
000003cf: SWAP2
000003d0: PUSH32 0x2f6639d24651730c7bf57c95ddbf96d66d11477e4ec626876f92c22e5f365e68
000003f1: SWAP2
000003f2: ADD
000003f3: PUSH2 0x0278
000003f6: JUMP
000003f7: JUMPDEST
000003f8: PUSH1 0x00
000003fa: SLOAD
000003fb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000410: AND
00000411: CALLER
00000412: EQ
00000413: PUSH2 0x01ee
00000416: JUMPI
00000417: PUSH1 0x40
00000419: MLOAD
0000041a: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000043b: DUP2
0000043c: MSTORE
0000043d: PUSH1 0x20
0000043f: PUSH1 0x04
00000441: DUP3
00000442: ADD
00000443: DUP2
00000444: SWAP1
00000445: MSTORE
00000446: PUSH1 0x24
00000448: DUP3
00000449: ADD
0000044a: MSTORE
0000044b: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
0000046c: PUSH1 0x44
0000046e: DUP3
0000046f: ADD
00000470: MSTORE
00000471: PUSH1 0x64
00000473: ADD
00000474: PUSH2 0x032c
00000477: JUMP
00000478: JUMPDEST
00000479: PUSH1 0x00
0000047b: DUP1
0000047c: SLOAD
0000047d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000492: DUP4
00000493: DUP2
00000494: AND
00000495: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000
000004b6: DUP4
000004b7: AND
000004b8: DUP2
000004b9: OR
000004ba: DUP5
000004bb: SSTORE
000004bc: PUSH1 0x40
000004be: MLOAD
000004bf: SWAP2
000004c0: SWAP1
000004c1: SWAP3
000004c2: AND
000004c3: SWAP3
000004c4: DUP4
000004c5: SWAP2
000004c6: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000004e7: SWAP2
000004e8: SWAP1
000004e9: LOG3
000004ea: POP
000004eb: POP
000004ec: JUMP
000004ed: JUMPDEST
000004ee: PUSH1 0x40
000004f0: MLOAD
000004f1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000506: DUP4
00000507: AND
00000508: PUSH1 0x24
0000050a: DUP3
0000050b: ADD
0000050c: MSTORE
0000050d: PUSH1 0x44
0000050f: DUP2
00000510: ADD
00000511: DUP3
00000512: SWAP1
00000513: MSTORE
00000514: PUSH2 0x05c1
00000517: SWAP1
00000518: DUP5
00000519: SWAP1
0000051a: PUSH32 0xa9059cbb00000000000000000000000000000000000000000000000000000000
0000053b: SWAP1
0000053c: PUSH1 0x64
0000053e: ADD
0000053f: JUMPDEST
00000540: PUSH1 0x40
00000542: DUP1
00000543: MLOAD
00000544: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00000565: DUP2
00000566: DUP5
00000567: SUB
00000568: ADD
00000569: DUP2
0000056a: MSTORE
0000056b: SWAP2
0000056c: SWAP1
0000056d: MSTORE
0000056e: PUSH1 0x20
00000570: DUP2
00000571: ADD
00000572: DUP1
00000573: MLOAD
00000574: PUSH28 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000591: AND
00000592: PUSH32 0xffffffff00000000000000000000000000000000000000000000000000000000
000005b3: SWAP1
000005b4: SWAP4
000005b5: AND
000005b6: SWAP3
000005b7: SWAP1
000005b8: SWAP3
000005b9: OR
000005ba: SWAP1
000005bb: SWAP2
000005bc: MSTORE
000005bd: PUSH2 0x062a
000005c0: JUMP
000005c1: JUMPDEST
000005c2: POP
000005c3: POP
000005c4: POP
000005c5: JUMP
000005c6: JUMPDEST
000005c7: PUSH1 0x40
000005c9: MLOAD
000005ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005df: DUP1
000005e0: DUP6
000005e1: AND
000005e2: PUSH1 0x24
000005e4: DUP4
000005e5: ADD
000005e6: MSTORE
000005e7: DUP4
000005e8: AND
000005e9: PUSH1 0x44
000005eb: DUP3
000005ec: ADD
000005ed: MSTORE
000005ee: PUSH1 0x64
000005f0: DUP2
000005f1: ADD
000005f2: DUP3
000005f3: SWAP1
000005f4: MSTORE
000005f5: PUSH2 0x0624
000005f8: SWAP1
000005f9: DUP6
000005fa: SWAP1
000005fb: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
0000061c: SWAP1
0000061d: PUSH1 0x84
0000061f: ADD
00000620: PUSH2 0x053f
00000623: JUMP
00000624: JUMPDEST
00000625: POP
00000626: POP
00000627: POP
00000628: POP
00000629: JUMP
0000062a: JUMPDEST
0000062b: PUSH1 0x00
0000062d: PUSH2 0x068c
00000630: DUP3
00000631: PUSH1 0x40
00000633: MLOAD
00000634: DUP1
00000635: PUSH1 0x40
00000637: ADD
00000638: PUSH1 0x40
0000063a: MSTORE
0000063b: DUP1
0000063c: PUSH1 0x20
0000063e: DUP2
0000063f: MSTORE
00000640: PUSH1 0x20
00000642: ADD
00000643: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00000664: DUP2
00000665: MSTORE
00000666: POP
00000667: DUP6
00000668: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000067d: AND
0000067e: PUSH2 0x0739
00000681: SWAP1
00000682: SWAP3
00000683: SWAP2
00000684: SWAP1
00000685: PUSH4 0xffffffff
0000068a: AND
0000068b: JUMP
0000068c: JUMPDEST
0000068d: SWAP1
0000068e: POP
0000068f: DUP1
00000690: MLOAD
00000691: PUSH1 0x00
00000693: EQ
00000694: DUP1
00000695: PUSH2 0x06ad
00000698: JUMPI
00000699: POP
0000069a: DUP1
0000069b: DUP1
0000069c: PUSH1 0x20
0000069e: ADD
0000069f: SWAP1
000006a0: MLOAD
000006a1: DUP2
000006a2: ADD
000006a3: SWAP1
000006a4: PUSH2 0x06ad
000006a7: SWAP2
000006a8: SWAP1
000006a9: PUSH2 0x0ab0
000006ac: JUMP
000006ad: JUMPDEST
000006ae: PUSH2 0x05c1
000006b1: JUMPI
000006b2: PUSH1 0x40
000006b4: MLOAD
000006b5: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000006d6: DUP2
000006d7: MSTORE
000006d8: PUSH1 0x20
000006da: PUSH1 0x04
000006dc: DUP3
000006dd: ADD
000006de: MSTORE
000006df: PUSH1 0x2a
000006e1: PUSH1 0x24
000006e3: DUP3
000006e4: ADD
000006e5: MSTORE
000006e6: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e
00000707: PUSH1 0x44
00000709: DUP3
0000070a: ADD
0000070b: MSTORE
0000070c: PUSH32 0x6f74207375636365656400000000000000000000000000000000000000000000
0000072d: PUSH1 0x64
0000072f: DUP3
00000730: ADD
00000731: MSTORE
00000732: PUSH1 0x84
00000734: ADD
00000735: PUSH2 0x032c
00000738: JUMP
00000739: JUMPDEST
0000073a: PUSH1 0x60
0000073c: PUSH2 0x0748
0000073f: DUP5
00000740: DUP5
00000741: PUSH1 0x00
00000743: DUP6
00000744: PUSH2 0x0750
00000747: JUMP
00000748: JUMPDEST
00000749: SWAP5
0000074a: SWAP4
0000074b: POP
0000074c: POP
0000074d: POP
0000074e: POP
0000074f: JUMP
00000750: JUMPDEST
00000751: PUSH1 0x60
00000753: DUP3
00000754: SELFBALANCE
00000755: LT
00000756: ISZERO
00000757: PUSH2 0x07e2
0000075a: JUMPI
0000075b: PUSH1 0x40
0000075d: MLOAD
0000075e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000077f: DUP2
00000780: MSTORE
00000781: PUSH1 0x20
00000783: PUSH1 0x04
00000785: DUP3
00000786: ADD
00000787: MSTORE
00000788: PUSH1 0x26
0000078a: PUSH1 0x24
0000078c: DUP3
0000078d: ADD
0000078e: MSTORE
0000078f: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f
000007b0: PUSH1 0x44
000007b2: DUP3
000007b3: ADD
000007b4: MSTORE
000007b5: PUSH32 0x722063616c6c0000000000000000000000000000000000000000000000000000
000007d6: PUSH1 0x64
000007d8: DUP3
000007d9: ADD
000007da: MSTORE
000007db: PUSH1 0x84
000007dd: ADD
000007de: PUSH2 0x032c
000007e1: JUMP
000007e2: JUMPDEST
000007e3: PUSH1 0x00
000007e5: DUP1
000007e6: DUP7
000007e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007fc: AND
000007fd: DUP6
000007fe: DUP8
000007ff: PUSH1 0x40
00000801: MLOAD
00000802: PUSH2 0x080b
00000805: SWAP2
00000806: SWAP1
00000807: PUSH2 0x0afe
0000080a: JUMP
0000080b: JUMPDEST
0000080c: PUSH1 0x00
0000080e: PUSH1 0x40
00000810: MLOAD
00000811: DUP1
00000812: DUP4
00000813: SUB
00000814: DUP2
00000815: DUP6
00000816: DUP8
00000817: GAS
00000818: CALL
00000819: SWAP3
0000081a: POP
0000081b: POP
0000081c: POP
0000081d: RETURNDATASIZE
0000081e: DUP1
0000081f: PUSH1 0x00
00000821: DUP2
00000822: EQ
00000823: PUSH2 0x0848
00000826: JUMPI
00000827: PUSH1 0x40
00000829: MLOAD
0000082a: SWAP2
0000082b: POP
0000082c: PUSH1 0x1f
0000082e: NOT
0000082f: PUSH1 0x3f
00000831: RETURNDATASIZE
00000832: ADD
00000833: AND
00000834: DUP3
00000835: ADD
00000836: PUSH1 0x40
00000838: MSTORE
00000839: RETURNDATASIZE
0000083a: DUP3
0000083b: MSTORE
0000083c: RETURNDATASIZE
0000083d: PUSH1 0x00
0000083f: PUSH1 0x20
00000841: DUP5
00000842: ADD
00000843: RETURNDATACOPY
00000844: PUSH2 0x084d
00000847: JUMP
00000848: JUMPDEST
00000849: PUSH1 0x60
0000084b: SWAP2
0000084c: POP
0000084d: JUMPDEST
0000084e: POP
0000084f: SWAP2
00000850: POP
00000851: SWAP2
00000852: POP
00000853: PUSH2 0x085e
00000856: DUP8
00000857: DUP4
00000858: DUP4
00000859: DUP8
0000085a: PUSH2 0x0869
0000085d: JUMP
0000085e: JUMPDEST
0000085f: SWAP8
00000860: SWAP7
00000861: POP
00000862: POP
00000863: POP
00000864: POP
00000865: POP
00000866: POP
00000867: POP
00000868: JUMP
00000869: JUMPDEST
0000086a: PUSH1 0x60
0000086c: DUP4
0000086d: ISZERO
0000086e: PUSH2 0x08fc
00000871: JUMPI
00000872: DUP3
00000873: MLOAD
00000874: PUSH2 0x08f5
00000877: JUMPI
00000878: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000088d: DUP6
0000088e: AND
0000088f: EXTCODESIZE
00000890: PUSH2 0x08f5
00000893: JUMPI
00000894: PUSH1 0x40
00000896: MLOAD
00000897: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000008b8: DUP2
000008b9: MSTORE
000008ba: PUSH1 0x20
000008bc: PUSH1 0x04
000008be: DUP3
000008bf: ADD
000008c0: MSTORE
000008c1: PUSH1 0x1d
000008c3: PUSH1 0x24
000008c5: DUP3
000008c6: ADD
000008c7: MSTORE
000008c8: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
000008e9: PUSH1 0x44
000008eb: DUP3
000008ec: ADD
000008ed: MSTORE
000008ee: PUSH1 0x64
000008f0: ADD
000008f1: PUSH2 0x032c
000008f4: JUMP
000008f5: JUMPDEST
000008f6: POP
000008f7: DUP2
000008f8: PUSH2 0x0748
000008fb: JUMP
000008fc: JUMPDEST
000008fd: PUSH2 0x0748
00000900: DUP4
00000901: DUP4
00000902: DUP2
00000903: MLOAD
00000904: ISZERO
00000905: PUSH2 0x0911
00000908: JUMPI
00000909: DUP2
0000090a: MLOAD
0000090b: DUP1
0000090c: DUP4
0000090d: PUSH1 0x20
0000090f: ADD
00000910: REVERT
00000911: JUMPDEST
00000912: DUP1
00000913: PUSH1 0x40
00000915: MLOAD
00000916: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000937: DUP2
00000938: MSTORE
00000939: PUSH1 0x04
0000093b: ADD
0000093c: PUSH2 0x032c
0000093f: SWAP2
00000940: SWAP1
00000941: PUSH2 0x0b1a
00000944: JUMP
00000945: JUMPDEST
00000946: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000095b: DUP2
0000095c: AND
0000095d: DUP2
0000095e: EQ
0000095f: PUSH2 0x01d9
00000962: JUMPI
00000963: PUSH1 0x00
00000965: DUP1
00000966: REVERT
00000967: JUMPDEST
00000968: PUSH1 0x00
0000096a: DUP1
0000096b: PUSH1 0x40
0000096d: DUP4
0000096e: DUP6
0000096f: SUB
00000970: SLT
00000971: ISZERO
00000972: PUSH2 0x097a
00000975: JUMPI
00000976: PUSH1 0x00
00000978: DUP1
00000979: REVERT
0000097a: JUMPDEST
0000097b: DUP3
0000097c: CALLDATALOAD
0000097d: PUSH2 0x0985
00000980: DUP2
00000981: PUSH2 0x0945
00000984: JUMP
00000985: JUMPDEST
00000986: SWAP5
00000987: PUSH1 0x20
00000989: SWAP4
0000098a: SWAP1
0000098b: SWAP4
0000098c: ADD
0000098d: CALLDATALOAD
0000098e: SWAP4
0000098f: POP
00000990: POP
00000991: POP
00000992: JUMP
00000993: JUMPDEST
00000994: PUSH1 0x00
00000996: PUSH1 0x20
00000998: DUP3
00000999: DUP5
0000099a: SUB
0000099b: SLT
0000099c: ISZERO
0000099d: PUSH2 0x09a5
000009a0: JUMPI
000009a1: PUSH1 0x00
000009a3: DUP1
000009a4: REVERT
000009a5: JUMPDEST
000009a6: POP
000009a7: CALLDATALOAD
000009a8: SWAP2
000009a9: SWAP1
000009aa: POP
000009ab: JUMP
000009ac: JUMPDEST
000009ad: PUSH1 0x00
000009af: DUP1
000009b0: PUSH1 0x00
000009b2: PUSH1 0x60
000009b4: DUP5
000009b5: DUP7
000009b6: SUB
000009b7: SLT
000009b8: ISZERO
000009b9: PUSH2 0x09c1
000009bc: JUMPI
000009bd: PUSH1 0x00
000009bf: DUP1
000009c0: REVERT
000009c1: JUMPDEST
000009c2: DUP4
000009c3: CALLDATALOAD
000009c4: PUSH2 0x09cc
000009c7: DUP2
000009c8: PUSH2 0x0945
000009cb: JUMP
000009cc: JUMPDEST
000009cd: SWAP3
000009ce: POP
000009cf: PUSH1 0x20
000009d1: DUP5
000009d2: ADD
000009d3: CALLDATALOAD
000009d4: PUSH2 0x09dc
000009d7: DUP2
000009d8: PUSH2 0x0945
000009db: JUMP
000009dc: JUMPDEST
000009dd: SWAP3
000009de: SWAP6
000009df: SWAP3
000009e0: SWAP5
000009e1: POP
000009e2: POP
000009e3: POP
000009e4: PUSH1 0x40
000009e6: SWAP2
000009e7: SWAP1
000009e8: SWAP2
000009e9: ADD
000009ea: CALLDATALOAD
000009eb: SWAP1
000009ec: JUMP
000009ed: JUMPDEST
000009ee: PUSH1 0x00
000009f0: PUSH1 0x20
000009f2: DUP3
000009f3: DUP5
000009f4: SUB
000009f5: SLT
000009f6: ISZERO
000009f7: PUSH2 0x09ff
000009fa: JUMPI
000009fb: PUSH1 0x00
000009fd: DUP1
000009fe: REVERT
000009ff: JUMPDEST
00000a00: DUP2
00000a01: CALLDATALOAD
00000a02: PUSH2 0x0a0a
00000a05: DUP2
00000a06: PUSH2 0x0945
00000a09: JUMP
00000a0a: JUMPDEST
00000a0b: SWAP4
00000a0c: SWAP3
00000a0d: POP
00000a0e: POP
00000a0f: POP
00000a10: JUMP
00000a11: JUMPDEST
00000a12: PUSH1 0x00
00000a14: DUP2
00000a15: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
00000a36: DIV
00000a37: DUP4
00000a38: GT
00000a39: DUP3
00000a3a: ISZERO
00000a3b: ISZERO
00000a3c: AND
00000a3d: ISZERO
00000a3e: PUSH2 0x0a70
00000a41: JUMPI
00000a42: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00000a63: PUSH1 0x00
00000a65: MSTORE
00000a66: PUSH1 0x11
00000a68: PUSH1 0x04
00000a6a: MSTORE
00000a6b: PUSH1 0x24
00000a6d: PUSH1 0x00
00000a6f: REVERT
00000a70: JUMPDEST
00000a71: POP
00000a72: MUL
00000a73: SWAP1
00000a74: JUMP
00000a75: JUMPDEST
00000a76: PUSH1 0x00
00000a78: DUP3
00000a79: PUSH2 0x0aab
00000a7c: JUMPI
00000a7d: PUSH32 0x4e487b7100000000000000000000000000000000000000000000000000000000
00000a9e: PUSH1 0x00
00000aa0: MSTORE
00000aa1: PUSH1 0x12
00000aa3: PUSH1 0x04
00000aa5: MSTORE
00000aa6: PUSH1 0x24
00000aa8: PUSH1 0x00
00000aaa: REVERT
00000aab: JUMPDEST
00000aac: POP
00000aad: DIV
00000aae: SWAP1
00000aaf: JUMP
00000ab0: JUMPDEST
00000ab1: PUSH1 0x00
00000ab3: PUSH1 0x20
00000ab5: DUP3
00000ab6: DUP5
00000ab7: SUB
00000ab8: SLT
00000ab9: ISZERO
00000aba: PUSH2 0x0ac2
00000abd: JUMPI
00000abe: PUSH1 0x00
00000ac0: DUP1
00000ac1: REVERT
00000ac2: JUMPDEST
00000ac3: DUP2
00000ac4: MLOAD
00000ac5: DUP1
00000ac6: ISZERO
00000ac7: ISZERO
00000ac8: DUP2
00000ac9: EQ
00000aca: PUSH2 0x0a0a
00000acd: JUMPI
00000ace: PUSH1 0x00
00000ad0: DUP1
00000ad1: REVERT
00000ad2: JUMPDEST
00000ad3: PUSH1 0x00
00000ad5: JUMPDEST
00000ad6: DUP4
00000ad7: DUP2
00000ad8: LT
00000ad9: ISZERO
00000ada: PUSH2 0x0aed
00000add: JUMPI
00000ade: DUP2
00000adf: DUP2
00000ae0: ADD
00000ae1: MLOAD
00000ae2: DUP4
00000ae3: DUP3
00000ae4: ADD
00000ae5: MSTORE
00000ae6: PUSH1 0x20
00000ae8: ADD
00000ae9: PUSH2 0x0ad5
00000aec: JUMP
00000aed: JUMPDEST
00000aee: DUP4
00000aef: DUP2
00000af0: GT
00000af1: ISZERO
00000af2: PUSH2 0x0624
00000af5: JUMPI
00000af6: POP
00000af7: POP
00000af8: PUSH1 0x00
00000afa: SWAP2
00000afb: ADD
00000afc: MSTORE
00000afd: JUMP
00000afe: JUMPDEST
00000aff: PUSH1 0x00
00000b01: DUP3
00000b02: MLOAD
00000b03: PUSH2 0x0b10
00000b06: DUP2
00000b07: DUP5
00000b08: PUSH1 0x20
00000b0a: DUP8
00000b0b: ADD
00000b0c: PUSH2 0x0ad2
00000b0f: JUMP
00000b10: JUMPDEST
00000b11: SWAP2
00000b12: SWAP1
00000b13: SWAP2
00000b14: ADD
00000b15: SWAP3
00000b16: SWAP2
00000b17: POP
00000b18: POP
00000b19: JUMP
00000b1a: JUMPDEST
00000b1b: PUSH1 0x20
00000b1d: DUP2
00000b1e: MSTORE
00000b1f: PUSH1 0x00
00000b21: DUP3
00000b22: MLOAD
00000b23: DUP1
00000b24: PUSH1 0x20
00000b26: DUP5
00000b27: ADD
00000b28: MSTORE
00000b29: PUSH2 0x0b39
00000b2c: DUP2
00000b2d: PUSH1 0x40
00000b2f: DUP6
00000b30: ADD
00000b31: PUSH1 0x20
00000b33: DUP8
00000b34: ADD
00000b35: PUSH2 0x0ad2
00000b38: JUMP
00000b39: JUMPDEST
00000b3a: PUSH1 0x1f
00000b3c: ADD
00000b3d: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
00000b5e: AND
00000b5f: SWAP2
00000b60: SWAP1
00000b61: SWAP2
00000b62: ADD
00000b63: PUSH1 0x40
00000b65: ADD
00000b66: SWAP3
00000b67: SWAP2
00000b68: POP
00000b69: POP
00000b6a: JUMP
00000b6b: INVALID
00000b6c: LOG2
00000b6d: PUSH5 0x6970667358
00000b73: UNKNOWN(0x22)
00000b74: SLT
00000b75: KECCAK256
00000b76: RETURNDATASIZE
00000b77: UNKNOWN(0x28)
00000b78: UNKNOWN(0x26)
00000b79: UNKNOWN(0x28)
00000b7a: ADDMOD
00000b7b: MLOAD
00000b7c: UNKNOWN(0x28)
00000b7d: UNKNOWN(0x26)
00000b7e: MCOPY
00000b7f: UNKNOWN(0xD8)
00000b80: UNKNOWN(0xB3)
00000b81: UNKNOWN(0xDF)
00000b82: ORIGIN
00000b83: UNKNOWN(0xD2)
00000b84: EXP
00000b85: SHL
00000b86: UNKNOWN(0x4E)
00000b87: UNKNOWN(0xC2)
00000b88: UNKNOWN(0xFC)
00000b89: UNKNOWN(0xE9)
00000b8a: DUP12
00000b8b: UNKNOWN(0xEC)
00000b8c: UNKNOWN(0xB2)
00000b8d: SHR
00000b8e: UNKNOWN(0xCB)
00000b8f: UNKNOWN(0xD5)
00000b90: EXTCODECOPY
00000b91: UNKNOWN(0x2A)
00000b92: UNKNOWN(0xD6)
00000b93: OR
00000b94: EXTCODECOPY
00000b95: EXP
00000b96: PUSH5 0x736f6c6343
00000b9c: STOP
00000b9d: ADDMOD
00000b9e: MULMOD
00000b9f: STOP
00000ba0: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x9e96a23a",
            "selector": "0x9e96a23a",
            "calldata_variants": [
                "0x9e96a23a",
                "0x9e96a23a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb2a02ff1",
            "selector": "0xb2a02ff1",
            "calldata_variants": [
                "0xb2a02ff1",
                "0xb2a02ff10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4c0f38c2",
            "selector": "0x4c0f38c2",
            "calldata_variants": [
                "0x4c0f38c2",
                "0x4c0f38c20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x512d00d0",
            "selector": "0x512d00d0",
            "calldata_variants": [
                "0x512d00d0",
                "0x512d00d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6d4ce63c",
            "selector": "0x6d4ce63c",
            "calldata_variants": [
                "0x6d4ce63c",
                "0x6d4ce63c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 2946,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x04ae3d35a68731e0402b626278ed47e299c0d3d6af35b3e8486d8f5cc23bf865
call_targets: 0xd9333c858a620712b5b387bc4463173d82c38a61
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x04ae3d35a68731e0402b626278ed47e299c0d3d6af35b3e8486d8f5cc23bf865",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xd9333c858a620712b5b387bc4463173d82c38a61"
    ],
    "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": "0x9e96a23a",
            "selector": "0x9e96a23a",
            "calldata_variants": [
                "0x9e96a23a",
                "0x9e96a23a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb2a02ff1",
            "selector": "0xb2a02ff1",
            "calldata_variants": [
                "0xb2a02ff1",
                "0xb2a02ff10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4c0f38c2",
            "selector": "0x4c0f38c2",
            "calldata_variants": [
                "0x4c0f38c2",
                "0x4c0f38c20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x512d00d0",
            "selector": "0x512d00d0",
            "calldata_variants": [
                "0x512d00d0",
                "0x512d00d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6d4ce63c",
            "selector": "0x6d4ce63c",
            "calldata_variants": [
                "0x6d4ce63c",
                "0x6d4ce63c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2072,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [
        {
            "pc": 2946,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x04ae3d35a68731e0402b626278ed47e299c0d3d6af35b3e8486d8f5cc23bf865
call_targets: 0xd9333c858a620712b5b387bc4463173d82c38a61
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x04ae3d35a68731e0402b626278ed47e299c0d3d6af35b3e8486d8f5cc23bf865",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xd9333c858a620712b5b387bc4463173d82c38a61"
    ],
    "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": "0x9e96a23a",
            "selector": "0x9e96a23a",
            "calldata_variants": [
                "0x9e96a23a",
                "0x9e96a23a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb2a02ff1",
            "selector": "0xb2a02ff1",
            "calldata_variants": [
                "0xb2a02ff1",
                "0xb2a02ff10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x715018a6",
            "selector": "0x715018a6",
            "calldata_variants": [
                "0x715018a6",
                "0x715018a60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4c0f38c2",
            "selector": "0x4c0f38c2",
            "calldata_variants": [
                "0x4c0f38c2",
                "0x4c0f38c20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x512d00d0",
            "selector": "0x512d00d0",
            "calldata_variants": [
                "0x512d00d0",
                "0x512d00d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x6d4ce63c",
            "selector": "0x6d4ce63c",
            "calldata_variants": [
                "0x6d4ce63c",
                "0x6d4ce63c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2072,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": [
        {
            "pc": 2946,
            "type": "tx_origin_used"
        }
    ]
}