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

Analysis Run

b44f82fa-8724-426d-b251-5ea570901c99

complete
Chain ID
1
Address
Block Number
Created
Sun, Jan 4, 2026 2:04 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31520 report.consolidate complete 1 / 1 3 months ago
77747 artifact.fetch complete 1 / 3 2 weeks ago
77748 tool.cast_disasm complete 1 / 3 2 weeks ago
77749 analysis.bundle complete 1 / 3 2 weeks ago
77750 capability.graph complete 1 / 3 2 weeks ago
77751 detector.run complete 1 / 3 2 weeks ago
77752 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
No concrete, exploitable value-extraction path is evident from the runtime bytecode provided.
View stderr
[codex:4361] OpenAI Codex v0.77.0 (research preview)
[codex:4361] --------
[codex:4361] workdir: /tmp/codex-multi-24zhkjdz
[codex:4361] model: gpt-5.2-codex
[codex:4361] provider: openai
[codex:4361] approval: never
[codex:4361] sandbox: read-only
[codex:4361] reasoning effort: xhigh
[codex:4361] reasoning summaries: auto
[codex:4361] session id: 019b86b7-e93f-7152-b5ca-10f33153083e
[codex:4361] --------
[codex:4361] user
[codex:4361] 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:4361] 
[codex:4361] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:4361] 
[codex:4361] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:4361] - Gas inefficiency, code quality, or best practices
[codex:4361] - Theoretical vulnerabilities without a clear extraction path
[codex:4361] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:4361] - Issues requiring social engineering or off-chain coordination
[codex:4361] 
[codex:4361] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:4361] - CALL/DELEGATECALL with controllable destination or calldata
[codex:4361] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:4361] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:4361] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:4361] - External calls before state updates (reentrancy)
[codex:4361] - SELFDESTRUCT with controllable beneficiary
[codex:4361] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:4361] 
[codex:4361] For each finding, you MUST explain:
[codex:4361] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:4361] 2. The concrete sequence of transactions to extract value
[codex:4361] 3. Why you believe this is exploitable (not just suspicious)
[codex:4361] 
[codex:4361] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:4361] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:4361] 
[codex:4361] Output MUST be valid JSON matching the provided schema.
[codex:4361] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:4361] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:4361] mcp startup: no servers
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:4361] exec
[codex:4361] /bin/bash -lc ls in /tmp/codex-multi-24zhkjdz succeeded in 5ms:
[codex:4361] BYTECODE_BUNDLE.txt
[codex:4361] codex-output-schema.json
[codex:4361] exec
[codex:4361] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-24zhkjdz succeeded in 5ms:
[codex:4361] Runtime bytecode bundle for best-effort auditing.
[codex:4361] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:4361] 
[codex:4361] FILE: runtime_bytecode.hex
[codex:4361] 0x606060405236156100da5760e060020a600035046313af40358114610145578063186ef9621461016757806331962cdc14610189578063365a86fc146101ab5780634162169f146101bd57806348c981e2146101cf5780634dfc3db61461020f57806361bc221a146102505780636637b882146102595780636c0e29601461027b5780638da5cb5b146104795780638f2b29a71461048b5780639137c1a714610602578063b199efb514610624578063b826c4fd14610636578063d1c3c84a1461063f578063d2f0ad9214610651578063fc340716146106bf575b6107236002546040805160e060020a630e7082030281529051600092600160a060020a031691630e708203916004828101926020929190829003018187876161da5a03f1156100025750506040515133600160a060020a039081169116149050610737575060015b90565b610861600435600054600160a060020a03908116339091161461089257610002565b610861600435600054600160a060020a0390811633909116146108a757610002565b610861600435600054600160a060020a0390811633909116146108bc57610002565b610863600154600160a060020a031681565b610863600254600160a060020a031681565b610861600435600054600160a060020a0390811633909116148015906102055750600154600160a060020a039081163390911614155b156108d157610002565b61088060008054600160a060020a0390811633909116148015906102435750600154600160a060020a039081163390911614155b156108fa57506001610142565b61088060055481565b610861600435600054600160a060020a0390811633909116146109e857610002565b6108805b6000600060006000600060006000600060006000600260009054906101000a9004600160a060020a0316600160a060020a0316630e7082036040518160e060020a0281526004018090506020604051808303816000876161da5a03f1156100025750505060405180519060200150985088600160a060020a03163130600160a060020a03163101975088600160a060020a031663d2cc718f6040518160e060020a0281526004018090506020604051808303816000876161da5a03f11561000257505060408051805160025460035460e060020a6381f03fcb028452600160a060020a0390811660048501529351919b5090921692506381f03fcb916024828101926020929190829003018187876161da5a03f11561000257505060408051805160025460e060020a6318160ddd0283529251909950600160a060020a039290921692506318160ddd916004828101926020929190829003018187876161da5a03f11561000257505060408051805160025460035460e060020a6370a08231028452600160a060020a039081166004850152935191995090921692506370a08231916024828101926020929190829003018187876161da5a03f115610002575050506040518051906020015093508784860202925088600160a060020a03163188880103840291508585029050808210156109fd57610a05565b610863600054600160a060020a031681565b61088060043560006000600060006000600260009054906101000a9004600160a060020a0316600160a060020a0316630e7082036040518160e060020a0281526004018090506020604051808303816000876161da5a03f1156100025750505060405180519060200150935083600160a060020a031663d2cc718f6040518160e060020a0281526004018090506020604051808303816000876161da5a03f11561000257505060408051600254815160035460e060020a6381f03fcb028452600160a060020a0390811660048501529351909750921692506381f03fcb916024808301926020929190829003018187876161da5a03f11561000257505060408051805160025460e060020a6318160ddd0283529251909550600160a060020a039290921692506318160ddd916004828101926020929190829003018187876161da5a03f115610002575050506040518051906020015090508581038183020486820387850204039450845084945050505050919050565b610861600435600054600160a060020a039081163390911614610a1157610002565b610863600354600160a060020a031681565b61088060065481565b610863600454600160a060020a031681565b6108806004355b6040805160025460035460e060020a6370a08231028352600160a060020a039081166004840152925160009384939216916370a08231916024828101926020929190829003018187876161da5a03f115610002575050604051519093046001019392505050565b61086160006000600060006000600060006000600060009054906101000a9004600160a060020a0316600160a060020a031633600160a060020a0316141580156107195750600154600160a060020a039081163390911614155b15610cbc57610002565b604080519115158252519081900360200190f35b600654600554600019909101901115610803576040805160025460035460e060020a6370a0823102835230600160a060020a03908116600485015293519184169363a9059cbb9391169160019185916370a082319160248082019260209290919082900301816000876161da5a03f11561000257505060408051805160e060020a63a9059cbb028252600482019590955260001994909401602485015251604480850194602094509192509082900301816000876161da5a03f115610002575060019250610142915050565b6005805460010190556040805160025460e160020a63664d71fb0282529151600160a060020a03929092169163cc9ae3f69160048181019260209290919082900301816000876161da5a03f115610002575060019250610142915050565b005b60408051600160a060020a03929092168252519081900360200190f35b60408051918252519081900360200190f35b60008054600160a060020a0319168217905550565b60048054600160a060020a0319168217905550565b60018054600160a060020a0319168217905550565b604051600160a060020a0382811691309091163190600081818185876185025a03f15050505050565b600254600160a060020a03166000141561091657506002610142565b600354600160a060020a03166000141561093257506003610142565b600454600160a060020a03166000141561094e57506004610142565b600354604080517f86c9b536000000000000000000000000000000000000000000000000000000008152905130600160a060020a039081169316916386c9b53691600482810192602092919082900301816000876161da5a03f11561000257505060405151600160a060020a031690911490506109cd57506005610142565b30600160a060020a0316316000141561014257506006610142565b60028054600160a060020a0319168217905550565b808203830499505b50505050505050505090565b60038054600160a060020a0319168217905550565b6006819055600354604080517fd0679d34000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152938b04602482018190529151919750919092169163d0679d349160448181019260209290919082900301816000876161da5a03f11561000257505060408051600160055530600160a060020a031631815290517f7027eecbd2a688fc1fa281702b311ed7168571514adfd17014a55d828cb4338292509081900360200190a1604051600160a060020a0389811691309091163190600081818185876185025a03f15050604080517fd2cc718f000000000000000000000000000000000000000000000000000000008152905163d2cc718f9250600482810192602092919082900301816000876161da5a03f11561000257505060408051805160025460e060020a6370a08231028352600160a060020a038a81166004850152935191975090921692506370a0823191602482810192602092919082900301816000876161da5a03f11561000257505060408051805160025460e060020a6381f03fcb028352600160a060020a038a81166004850152935191965090921692506381f03fcb91602482810192602092919082900301816000876161da5a03f11561000257505060408051805160025460e160020a63664d71fb0283529251909450600160a060020a0392909216925063cc9ae3f691600482810192602092919082900301816000876161da5a03f115610002575050604080516002546004805460e060020a63a9059cbb028452600160a060020a03908116918401919091526001602484015292519216925063a9059cbb91604482810192602092919082900301816000876161da5a03f115610002575050505b5050505050505050565b6002546040805160e060020a630e7082030281529051600160a060020a0390921691630e7082039160048181019260209290919082900301816000876161da5a03f115610002575050604051519850610d15905061027f565b60408051600160a060020a038b1631815290519198507f07cf7e805770612a8b2ee8e0bcbba8aa908df5f85fbc4f9e2ef384cf75315038919081900360200190a187600160a060020a03163130600160a060020a0316310195508660001480610d7e5750856000145b15610db1576040517f30090d86c52e12fbc1213c1ecf7e193d6ce4a5c838c8c41d06c1a9daea8a2cec90600090a1610cb2565b309450610a268761065856
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing bytecode for vulnerabilities**
[codex:4361] 
[codex:4361] I'm examining the runtime bytecode to identify function selectors, offsets, and access control patterns, focusing on whether any function allows unauthorized token or ETH transfers. Since no source or external tools are available, I'll manually parse opcodes and scan for critical operations like SELFDESTRUCT or unguarded external calls, aiming to decide if there's a concrete exploit or not.
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re, binascii
[codex:4361] from pathlib import Path
[codex:4361] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:4361] # extract hex string after 0x
[codex:4361] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:4361] hexstr=m.group(1)
[codex:4361] print('length', len(hexstr)//2)
[codex:4361] # search for opcode 0xff (selfdestruct)
[codex:4361] bs=binascii.unhexlify(hexstr)
[codex:4361] print('selfdestruct', bs.find(b'\\xff'))
[codex:4361] # count occurrences of opcode ff
[codex:4361] print('count ff', bs.count(b'\\xff'))
[codex:4361] # find indexes of CALL (0xf1), DELEGATECALL (0xf4)
[codex:4361] print('count f1', bs.count(b'\\xf1'), 'count f4', bs.count(b'\\xf4'), 'count f2', bs.count(b'\\xf2'))
[codex:4361] # find count of CALLCODE? etc
[codex:4361] print('count f0', bs.count(b'\\xf0'))
[codex:4361] # print indices of f4 if any
[codex:4361] indices=[i for i,b in enumerate(bs) if b==0xf4]
[codex:4361] print('f4 indices', indices[:10])
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 26ms:
[codex:4361] length 3517
[codex:4361] selfdestruct -1
[codex:4361] count ff 0
[codex:4361] count f1 24 count f4 0 count f2 0
[codex:4361] count f0 7
[codex:4361] f4 indices []
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing contract opcodes for security risks**
[codex:4361] 
[codex:4361] I'm focusing on the contract's bytecode to confirm the absence of selfdestruct and delegatecall and to check how CALL operations are used, especially with value sent to arbitrary addresses. To dig deeper, I'll write a Python disassembler to decode opcodes with offsets, helping me inspect individual functions and identify any unprotected or risky external calls. This way, I can better understand potential vulnerabilities related to token transfers or arbitrary calls.
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re, binascii
[codex:4361] from pathlib import Path
[codex:4361] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # opcode table
[codex:4361] opnames={
[codex:4361] 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:4361] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:4361] 0x20:'SHA3',
[codex:4361] 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:4361] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:4361] 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:4361] 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:4361] 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:4361] 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:4361] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:4361] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:4361] }
[codex:4361] 
[codex:4361] # disassemble into list of (pc, op, arg)
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     if op in opnames:
[codex:4361]         name=opnames[op]
[codex:4361]     else:
[codex:4361]         name='OP%02x'%op
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1, name, arg))
[codex:4361] 
[codex:4361] # Helper to show around an offset
[codex:4361] 
[codex:4361] def show(start, count=20):
[codex:4361]     for (pc, name, arg) in ops:
[codex:4361]         if pc>=start:
[codex:4361]             for (pc2,name2,arg2) in ops[ops.index((pc,name,arg)) : ops.index((pc,name,arg))+count]:
[codex:4361]                 if arg2 is None:
[codex:4361]                     print(f\"{pc2:04x}: {name2}\")
[codex:4361]                 else:
[codex:4361]                     print(f\"{pc2:04x}: {name2} 0x{arg2.hex()}\")
[codex:4361]             break
[codex:4361] 
[codex:4361] # Let's locate JUMPDESTs and function entry offsets
[codex:4361] jumpdests=[pc for pc,name,arg in ops if name=='JUMPDEST']
[codex:4361] print('jumpdests count', len(jumpdests))
[codex:4361] print('first 30 jumpdests', [hex(x) for x in jumpdests[:30]])
[codex:4361] 
[codex:4361] # print table of function selectors to dests by scanning dispatch pattern
[codex:4361] # naive: find sequence PUSH4 <selector> EQ PUSH2 <dest> JUMPI
[codex:4361] sel_map=[]
[codex:4361] for i in range(len(ops)-3):
[codex:4361]     pc,name,arg=ops[i]
[codex:4361]     if name=='PUSH4' and ops[i+1][1]=='EQ' and ops[i+2][1].startswith('PUSH') and ops[i+3][1]=='JUMPI':
[codex:4361]         dest=int.from_bytes(ops[i+2][2],'big')
[codex:4361]         sel=ops[i][2].hex()
[codex:4361]         sel_map.append((sel,dest,pc))
[codex:4361] print('selectors', len(sel_map))
[codex:4361] for sel,dest,pc in sel_map:
[codex:4361]     print(sel, hex(dest))
[codex:4361] 
[codex:4361] # show around some function entry to inspect
[codex:4361] for sel,dest,_ in sel_map:
[codex:4361]     if dest in jumpdests:
[codex:4361]         pass
[codex:4361] 
[codex:4361] # Example: show around 0x479, 0x602, 0x624, 0x636, 0x63f, 0x651, 0x6bf, 0x723
[codex:4361] for off in [0x145,0x167,0x189,0x1ab,0x1bd,0x1cf,0x20f,0x250,0x259,0x27b,0x479,0x48b,0x602,0x624,0x636,0x63f,0x651,0x6bf,0x723]:
[codex:4361]     print('\\n== around',hex(off))
[codex:4361]     show(off, 25)
[codex:4361] 
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 30ms:
[codex:4361] jumpdests count 50
[codex:4361] first 30 jumpdests ['0xda', '0x142', '0x145', '0x167', '0x189', '0x1ab', '0x1bd', '0x1cf', '0x205', '0x20f', '0x243', '0x250', '0x259', '0x27b', '0x27f', '0x479', '0x48b', '0x602', '0x624', '0x636', '0x63f', '0x651', '0x658', '0x6bf', '0x719', '0x723', '0x737', '0x803', '0x861', '0x863']
[codex:4361] selectors 17
[codex:4361] 186ef962 0x167
[codex:4361] 31962cdc 0x189
[codex:4361] 365a86fc 0x1ab
[codex:4361] 4162169f 0x1bd
[codex:4361] 48c981e2 0x1cf
[codex:4361] 4dfc3db6 0x20f
[codex:4361] 61bc221a 0x250
[codex:4361] 6637b882 0x259
[codex:4361] 6c0e2960 0x27b
[codex:4361] 8da5cb5b 0x479
[codex:4361] 8f2b29a7 0x48b
[codex:4361] 9137c1a7 0x602
[codex:4361] b199efb5 0x624
[codex:4361] b826c4fd 0x636
[codex:4361] d1c3c84a 0x63f
[codex:4361] d2f0ad92 0x651
[codex:4361] fc340716 0x6bf
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Expanding function disassembly**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # opcode table
[codex:4361] opnames={
[codex:4361] 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:4361] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:4361] 0x20:'SHA3',
[codex:4361] 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:4361] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:4361] 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:4361] 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:4361] 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:4361] 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:4361] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:4361] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:4361] }
[codex:4361] 
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op, f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] # Build map pc->index
[codex:4361] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:4361] 
[codex:4361] def show_range(start, end):
[codex:4361]     # show ops with pc between start and end inclusive
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] # show around 0x737 to 0x900
[codex:4361] print('== 0x737-0x900')
[codex:4361] show_range(0x737,0x900)
[codex:4361] 
[codex:4361] # show around 0x880-0xb00
[codex:4361] print('== 0x880-0xb00')
[codex:4361] show_range(0x880,0xb00)
[codex:4361] 
[codex:4361] # show around 0xa11 to 0xb50
[codex:4361] print('== 0xa11-0xb50')
[codex:4361] show_range(0xa11,0xb50)
[codex:4361] 
[codex:4361] # show around 0xc00-0xd50
[codex:4361] print('== 0xc00-0xd50')
[codex:4361] show_range(0xc00,0xd50)
[codex:4361] 
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 30ms:
[codex:4361] == 0x737-0x900
[codex:4361] 0737: JUMPDEST
[codex:4361] 0739: PUSH1 0x06
[codex:4361] 073a: SLOAD
[codex:4361] 073c: PUSH1 0x05
[codex:4361] 073d: SLOAD
[codex:4361] 073f: PUSH1 0x00
[codex:4361] 0740: NOT
[codex:4361] 0741: SWAP1
[codex:4361] 0742: SWAP2
[codex:4361] 0743: ADD
[codex:4361] 0744: SWAP1
[codex:4361] 0745: GT
[codex:4361] 0746: ISZERO
[codex:4361] 0749: PUSH2 0x0803
[codex:4361] 074a: JUMPI
[codex:4361] 074c: PUSH1 0x40
[codex:4361] 074d: DUP1
[codex:4361] 074e: MLOAD
[codex:4361] 0750: PUSH1 0x02
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing function selectors and entries**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # disassemble minimal
[codex:4361] opnames={
[codex:4361] 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:4361] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:4361] 0x20:'SHA3',
[codex:4361] 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:4361] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:4361] 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:4361] 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:4361] 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:4361] 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:4361] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:4361] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:4361] }
[codex:4361] 
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op,f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] 
[codex:4361] def show_range(start,end):
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] print('== 0x100-0x170')
[codex:4361] show_range(0x100,0x170)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 31ms:
[codex:4361] == 0x100-0x170
[codex:4361] 0100: SWAP2
[codex:4361] 0105: PUSH4 0x0e708203
[codex:4361] 0106: SWAP2
[codex:4361] 0108: PUSH1 0x04
[codex:4361] 0109: DUP3
[codex:4361] 010a: DUP2
[codex:4361] 010b: ADD
[codex:4361] 010c: SWAP3
[codex:4361] 010e: PUSH1 0x20
[codex:4361] 010f: SWAP3
[codex:4361] 0110: SWAP2
[codex:4361] 0111: SWAP1
[codex:4361] 0112: DUP3
[codex:4361] 0113: SWAP1
[codex:4361] 0114: SUB
[codex:4361] 0115: ADD
[codex:4361] 0116: DUP2
[codex:4361] 0117: DUP8
[codex:4361] 0118: DUP8
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing function 13af4035 dispatch**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # simple disasm
[codex:4361] opnames={
[codex:4361] 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:4361] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:4361] 0x20:'SHA3',
[codex:4361] 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:4361] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:4361] 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:4361] 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:4361] 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:4361] 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:4361] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:4361] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:4361] }
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op,f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] def show_range(start,end):
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] print('== 0x000-0x120')
[codex:4361] show_range(0x0,0x120)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 32ms:
[codex:4361] == 0x000-0x120
[codex:4361] 0001: PUSH1 0x60
[codex:4361] 0003: PUSH1 0x40
[codex:4361] 0004: MSTORE
[codex:4361] 0005: CALLDATASIZE
[codex:4361] 0006: ISZERO
[codex:4361] 0009: PUSH2 0x00da
[codex:4361] 000a: JUMPI
[codex:4361] 000c: PUSH1 0xe0
[codex:4361] 000e: PUSH1 0x02
[codex:4361] 000f: EXP
[codex:4361] 0011: PUSH1 0x00
[codex:4361] 0012: CALLDATALOAD
[codex:4361] 0013: DIV
[codex:4361] 0018: PUSH4 0x13af4035
[codex:4361] 0019: DUP2
[codex:4361] 001a: EQ
[codex:4361] 001d: PUSH2 0x0145
[codex:4361] 001e: JUMPI
[codex:4361] 001f: DUP1
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing function access and ownership checks**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # disassemble same as before
[codex:4361] opnames={
[codex:4361] 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:4361] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:4361] 0x20:'SHA3',
[codex:4361] 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:4361] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:4361] 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:4361] 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:4361] 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:4361] 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:4361] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:4361] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:4361] }
[codex:4361] 
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op,f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] 
[codex:4361] def show_range(start,end):
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] print('== 0x1cf-0x210')
[codex:4361] show_range(0x1cf,0x210)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 43ms:
[codex:4361] == 0x1cf-0x210
[codex:4361] 01cf: JUMPDEST
[codex:4361] 01d2: PUSH2 0x0861
[codex:4361] 01d4: PUSH1 0x04
[codex:4361] 01d5: CALLDATALOAD
[codex:4361] 01d7: PUSH1 0x00
[codex:4361] 01d8: SLOAD
[codex:4361] 01da: PUSH1 0x01
[codex:4361] 01dc: PUSH1 0xa0
[codex:4361] 01de: PUSH1 0x02
[codex:4361] 01df: EXP
[codex:4361] 01e0: SUB
[codex:4361] 01e1: SWAP1
[codex:4361] 01e2: DUP2
[codex:4361] 01e3: AND
[codex:4361] 01e4: CALLER
[codex:4361] 01e5: SWAP1
[codex:4361] 01e6: SWAP2
[codex:4361] 01e7: AND
[codex:4361] 01e8: EQ
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing access control logic and ETH withdrawal**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # disassemble minimal
[codex:4361] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',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',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',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',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op,f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] def show_range(start,end):
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] print('== 0x20f-0x250')
[codex:4361] show_range(0x20f,0x250)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 29ms:
[codex:4361] == 0x20f-0x250
[codex:4361] 020f: JUMPDEST
[codex:4361] 0212: PUSH2 0x0880
[codex:4361] 0214: PUSH1 0x00
[codex:4361] 0215: DUP1
[codex:4361] 0216: SLOAD
[codex:4361] 0218: PUSH1 0x01
[codex:4361] 021a: PUSH1 0xa0
[codex:4361] 021c: PUSH1 0x02
[codex:4361] 021d: EXP
[codex:4361] 021e: SUB
[codex:4361] 021f: SWAP1
[codex:4361] 0220: DUP2
[codex:4361] 0221: AND
[codex:4361] 0222: CALLER
[codex:4361] 0223: SWAP1
[codex:4361] 0224: SWAP2
[codex:4361] 0225: AND
[codex:4361] 0226: EQ
[codex:4361] 0227: DUP1
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing function roles and access controls**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # disassemble minimal
[codex:4361] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',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',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',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',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op,f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] def show_range(start,end):
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] print('== 0x6bf-0x723')
[codex:4361] show_range(0x6bf,0x723)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 29ms:
[codex:4361] == 0x6bf-0x723
[codex:4361] 06bf: JUMPDEST
[codex:4361] 06c2: PUSH2 0x0861
[codex:4361] 06c4: PUSH1 0x00
[codex:4361] 06c6: PUSH1 0x00
[codex:4361] 06c8: PUSH1 0x00
[codex:4361] 06ca: PUSH1 0x00
[codex:4361] 06cc: PUSH1 0x00
[codex:4361] 06ce: PUSH1 0x00
[codex:4361] 06d0: PUSH1 0x00
[codex:4361] 06d2: PUSH1 0x00
[codex:4361] 06d4: PUSH1 0x00
[codex:4361] 06d6: PUSH1 0x00
[codex:4361] 06d7: SWAP1
[codex:4361] 06d8: SLOAD
[codex:4361] 06d9: SWAP1
[codex:4361] 06dc: PUSH2 0x0100
[codex:4361] 06dd: EXP
[codex:4361] 06de: SWAP1
[codex:4361] 06df: DIV
[codex:4361] 
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing contract access control and token transfers**
[codex:4361] 
[codex:4361] I'm exploring whether any publicly accessible function can transfer tokens or ETH to arbitrary callers without proper access checks. The complex fallback uses an external call to verify caller ownership, restricting transfers mostly to authorized addresses. I'll keep checking if any call to `transfer` or ETH send lacks such protection, focusing on call data usage and transfer recipients to reveal potential exploit paths.
[codex:4361] thinking
[codex:4361] **Verifying restricted storage slot updates and transfer recipients**
[codex:4361] 
[codex:4361] I'm carefully checking how storage slots like slot4 and slot6 are set, confirming all setters require owner access. I'm also tracing token transfer recipients to ensure no unprivileged caller can redirect funds to themselves. This involves analyzing calls around key opcodes and making sure no hidden pathways allow unauthorized token or ETH transfers.
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # search for push2 0x0a26 (opcode 0x61)
[codex:4361] pattern=b'\\x61\\x0a\\x26'
[codex:4361] print('count', code.count(pattern))
[codex:4361] # list positions
[codex:4361] positions=[i for i in range(len(code)-2) if code[i:i+3]==pattern]
[codex:4361] print('positions', positions)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 27ms:
[codex:4361] count 1
[codex:4361] positions [3509]
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing jump destination references**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # disassemble
[codex:4361] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',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',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',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',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op,f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] 
[codex:4361] def show_range(start,end):
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] print('== 0xd15-0xe00')
[codex:4361] show_range(0x0d15,0x0e00)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 30ms:
[codex:4361] == 0xd15-0xe00
[codex:4361] 0d15: JUMPDEST
[codex:4361] 0d17: PUSH1 0x40
[codex:4361] 0d18: DUP1
[codex:4361] 0d19: MLOAD
[codex:4361] 0d1b: PUSH1 0x01
[codex:4361] 0d1d: PUSH1 0xa0
[codex:4361] 0d1f: PUSH1 0x02
[codex:4361] 0d20: EXP
[codex:4361] 0d21: SUB
[codex:4361] 0d22: DUP12
[codex:4361] 0d23: AND
[codex:4361] 0d24: BALANCE
[codex:4361] 0d25: DUP2
[codex:4361] 0d26: MSTORE
[codex:4361] 0d27: SWAP1
[codex:4361] 0d28: MLOAD
[codex:4361] 0d29: SWAP2
[codex:4361] 0d2a: SWAP9
[codex:4361] 0d2b: POP
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing token transfer and fallback protections**
[codex:4361] exec
[codex:4361] /bin/bash -lc "python - <<'PY'
[codex:4361] import re,binascii
[codex:4361] from pathlib import Path
[codex:4361] hexstr=re.search(r'0x([0-9a-fA-F]+)', Path('BYTECODE_BUNDLE.txt').read_text()).group(1)
[codex:4361] code=binascii.unhexlify(hexstr)
[codex:4361] # disassemble minimal
[codex:4361] opnames={0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',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',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',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',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',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',0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:4361] 
[codex:4361] ops=[]
[codex:4361] pc=0
[codex:4361] while pc<len(code):
[codex:4361]     op=code[pc]
[codex:4361]     name=opnames.get(op,f'OP{op:02x}')
[codex:4361]     pc+=1
[codex:4361]     arg=None
[codex:4361]     if 0x60<=op<=0x7f:
[codex:4361]         n=op-0x5f
[codex:4361]         arg=code[pc:pc+n]
[codex:4361]         pc+=n
[codex:4361]     ops.append((pc-1,name,arg))
[codex:4361] 
[codex:4361] 
[codex:4361] def show_range(start,end):
[codex:4361]     for pc,name,arg in ops:
[codex:4361]         if start<=pc<=end:
[codex:4361]             if arg is None:
[codex:4361]                 print(f\"{pc:04x}: {name}\")
[codex:4361]             else:
[codex:4361]                 print(f\"{pc:04x}: {name} 0x{arg.hex()}\")
[codex:4361] 
[codex:4361] print('== 0x27b-0x3a0')
[codex:4361] show_range(0x27b,0x3a0)
[codex:4361] PY" in /tmp/codex-multi-24zhkjdz succeeded in 31ms:
[codex:4361] == 0x27b-0x3a0
[codex:4361] 027b: JUMPDEST
[codex:4361] 027e: PUSH2 0x0880
[codex:4361] 027f: JUMPDEST
[codex:4361] 0281: PUSH1 0x00
[codex:4361] 0283: PUSH1 0x00
[codex:4361] 0285: PUSH1 0x00
[codex:4361] 0287: PUSH1 0x00
[codex:4361] 0289: PUSH1 0x00
[codex:4361] 028b: PUSH1 0x00
[codex:4361] 028d: PUSH1 0x00
[codex:4361] 028f: PUSH1 0x00
[codex:4361] 0291: PUSH1 0x00
[codex:4361] 0293: PUSH1 0x00
[codex:4361] 0295: PUSH1 0x02
[codex:4361] 0297: PUSH1 0x00
[codex:4361] 0298: SWAP1
[codex:4361] 0299: SLOAD
[codex:4361] 029a: SWAP1
[codex:4361] 029d: PUSH2 0x0100
[codex:4361] 
[codex:4361] thinking
[codex:4361] **Analyzing potential external call risks**
[codex:4361] 
[codex:4361] I'm carefully examining the function's external calls to see if they could cause unintended side effects or token losses, especially through reentrancy or unauthorized transfers. After reviewing access controls and fallback behaviors, I find no exploitable or profit-driven vulnerabilities. I’ll output a clean JSON indicating no findings, ensuring it matches the required schema and instruction constraints.
[codex:4361] codex
[codex:4361] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path is evident from the runtime bytecode provided.","findings":[]}
[codex:4361] tokens used
[codex:4361] 90,323
[codex:4361] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path is evident from the runtime bytecode provided.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-04T02:04:04.191878+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction path is evident from the runtime bytecode provided.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction path is evident from the runtime bytecode provided.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
24
EXT*/BALANCE
10
Total opcodes
2383
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x00da
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x13af4035
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x0145
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x186ef962
00000025: EQ
00000026: PUSH2 0x0167
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x31962cdc
00000030: EQ
00000031: PUSH2 0x0189
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0x365a86fc
0000003b: EQ
0000003c: PUSH2 0x01ab
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x4162169f
00000046: EQ
00000047: PUSH2 0x01bd
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x48c981e2
00000051: EQ
00000052: PUSH2 0x01cf
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0x4dfc3db6
0000005c: EQ
0000005d: PUSH2 0x020f
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0x61bc221a
00000067: EQ
00000068: PUSH2 0x0250
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0x6637b882
00000072: EQ
00000073: PUSH2 0x0259
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0x6c0e2960
0000007d: EQ
0000007e: PUSH2 0x027b
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0x8da5cb5b
00000088: EQ
00000089: PUSH2 0x0479
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0x8f2b29a7
00000093: EQ
00000094: PUSH2 0x048b
00000097: JUMPI
00000098: DUP1
00000099: PUSH4 0x9137c1a7
0000009e: EQ
0000009f: PUSH2 0x0602
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0xb199efb5
000000a9: EQ
000000aa: PUSH2 0x0624
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0xb826c4fd
000000b4: EQ
000000b5: PUSH2 0x0636
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0xd1c3c84a
000000bf: EQ
000000c0: PUSH2 0x063f
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0xd2f0ad92
000000ca: EQ
000000cb: PUSH2 0x0651
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0xfc340716
000000d5: EQ
000000d6: PUSH2 0x06bf
000000d9: JUMPI
000000da: JUMPDEST
000000db: PUSH2 0x0723
000000de: PUSH1 0x02
000000e0: SLOAD
000000e1: PUSH1 0x40
000000e3: DUP1
000000e4: MLOAD
000000e5: PUSH1 0xe0
000000e7: PUSH1 0x02
000000e9: EXP
000000ea: PUSH4 0x0e708203
000000ef: MUL
000000f0: DUP2
000000f1: MSTORE
000000f2: SWAP1
000000f3: MLOAD
000000f4: PUSH1 0x00
000000f6: SWAP3
000000f7: PUSH1 0x01
000000f9: PUSH1 0xa0
000000fb: PUSH1 0x02
000000fd: EXP
000000fe: SUB
000000ff: AND
00000100: SWAP2
00000101: PUSH4 0x0e708203
00000106: SWAP2
00000107: PUSH1 0x04
00000109: DUP3
0000010a: DUP2
0000010b: ADD
0000010c: SWAP3
0000010d: PUSH1 0x20
0000010f: SWAP3
00000110: SWAP2
00000111: SWAP1
00000112: DUP3
00000113: SWAP1
00000114: SUB
00000115: ADD
00000116: DUP2
00000117: DUP8
00000118: DUP8
00000119: PUSH2 0x61da
0000011c: GAS
0000011d: SUB
0000011e: CALL
0000011f: ISZERO
00000120: PUSH2 0x0002
00000123: JUMPI
00000124: POP
00000125: POP
00000126: PUSH1 0x40
00000128: MLOAD
00000129: MLOAD
0000012a: CALLER
0000012b: PUSH1 0x01
0000012d: PUSH1 0xa0
0000012f: PUSH1 0x02
00000131: EXP
00000132: SUB
00000133: SWAP1
00000134: DUP2
00000135: AND
00000136: SWAP2
00000137: AND
00000138: EQ
00000139: SWAP1
0000013a: POP
0000013b: PUSH2 0x0737
0000013e: JUMPI
0000013f: POP
00000140: PUSH1 0x01
00000142: JUMPDEST
00000143: SWAP1
00000144: JUMP
00000145: JUMPDEST
00000146: PUSH2 0x0861
00000149: PUSH1 0x04
0000014b: CALLDATALOAD
0000014c: PUSH1 0x00
0000014e: SLOAD
0000014f: PUSH1 0x01
00000151: PUSH1 0xa0
00000153: PUSH1 0x02
00000155: EXP
00000156: SUB
00000157: SWAP1
00000158: DUP2
00000159: AND
0000015a: CALLER
0000015b: SWAP1
0000015c: SWAP2
0000015d: AND
0000015e: EQ
0000015f: PUSH2 0x0892
00000162: JUMPI
00000163: PUSH2 0x0002
00000166: JUMP
00000167: JUMPDEST
00000168: PUSH2 0x0861
0000016b: PUSH1 0x04
0000016d: CALLDATALOAD
0000016e: PUSH1 0x00
00000170: SLOAD
00000171: PUSH1 0x01
00000173: PUSH1 0xa0
00000175: PUSH1 0x02
00000177: EXP
00000178: SUB
00000179: SWAP1
0000017a: DUP2
0000017b: AND
0000017c: CALLER
0000017d: SWAP1
0000017e: SWAP2
0000017f: AND
00000180: EQ
00000181: PUSH2 0x08a7
00000184: JUMPI
00000185: PUSH2 0x0002
00000188: JUMP
00000189: JUMPDEST
0000018a: PUSH2 0x0861
0000018d: PUSH1 0x04
0000018f: CALLDATALOAD
00000190: PUSH1 0x00
00000192: SLOAD
00000193: PUSH1 0x01
00000195: PUSH1 0xa0
00000197: PUSH1 0x02
00000199: EXP
0000019a: SUB
0000019b: SWAP1
0000019c: DUP2
0000019d: AND
0000019e: CALLER
0000019f: SWAP1
000001a0: SWAP2
000001a1: AND
000001a2: EQ
000001a3: PUSH2 0x08bc
000001a6: JUMPI
000001a7: PUSH2 0x0002
000001aa: JUMP
000001ab: JUMPDEST
000001ac: PUSH2 0x0863
000001af: PUSH1 0x01
000001b1: SLOAD
000001b2: PUSH1 0x01
000001b4: PUSH1 0xa0
000001b6: PUSH1 0x02
000001b8: EXP
000001b9: SUB
000001ba: AND
000001bb: DUP2
000001bc: JUMP
000001bd: JUMPDEST
000001be: PUSH2 0x0863
000001c1: PUSH1 0x02
000001c3: SLOAD
000001c4: PUSH1 0x01
000001c6: PUSH1 0xa0
000001c8: PUSH1 0x02
000001ca: EXP
000001cb: SUB
000001cc: AND
000001cd: DUP2
000001ce: JUMP
000001cf: JUMPDEST
000001d0: PUSH2 0x0861
000001d3: PUSH1 0x04
000001d5: CALLDATALOAD
000001d6: PUSH1 0x00
000001d8: SLOAD
000001d9: PUSH1 0x01
000001db: PUSH1 0xa0
000001dd: PUSH1 0x02
000001df: EXP
000001e0: SUB
000001e1: SWAP1
000001e2: DUP2
000001e3: AND
000001e4: CALLER
000001e5: SWAP1
000001e6: SWAP2
000001e7: AND
000001e8: EQ
000001e9: DUP1
000001ea: ISZERO
000001eb: SWAP1
000001ec: PUSH2 0x0205
000001ef: JUMPI
000001f0: POP
000001f1: PUSH1 0x01
000001f3: SLOAD
000001f4: PUSH1 0x01
000001f6: PUSH1 0xa0
000001f8: PUSH1 0x02
000001fa: EXP
000001fb: SUB
000001fc: SWAP1
000001fd: DUP2
000001fe: AND
000001ff: CALLER
00000200: SWAP1
00000201: SWAP2
00000202: AND
00000203: EQ
00000204: ISZERO
00000205: JUMPDEST
00000206: ISZERO
00000207: PUSH2 0x08d1
0000020a: JUMPI
0000020b: PUSH2 0x0002
0000020e: JUMP
0000020f: JUMPDEST
00000210: PUSH2 0x0880
00000213: PUSH1 0x00
00000215: DUP1
00000216: SLOAD
00000217: PUSH1 0x01
00000219: PUSH1 0xa0
0000021b: PUSH1 0x02
0000021d: EXP
0000021e: SUB
0000021f: SWAP1
00000220: DUP2
00000221: AND
00000222: CALLER
00000223: SWAP1
00000224: SWAP2
00000225: AND
00000226: EQ
00000227: DUP1
00000228: ISZERO
00000229: SWAP1
0000022a: PUSH2 0x0243
0000022d: JUMPI
0000022e: POP
0000022f: PUSH1 0x01
00000231: SLOAD
00000232: PUSH1 0x01
00000234: PUSH1 0xa0
00000236: PUSH1 0x02
00000238: EXP
00000239: SUB
0000023a: SWAP1
0000023b: DUP2
0000023c: AND
0000023d: CALLER
0000023e: SWAP1
0000023f: SWAP2
00000240: AND
00000241: EQ
00000242: ISZERO
00000243: JUMPDEST
00000244: ISZERO
00000245: PUSH2 0x08fa
00000248: JUMPI
00000249: POP
0000024a: PUSH1 0x01
0000024c: PUSH2 0x0142
0000024f: JUMP
00000250: JUMPDEST
00000251: PUSH2 0x0880
00000254: PUSH1 0x05
00000256: SLOAD
00000257: DUP2
00000258: JUMP
00000259: JUMPDEST
0000025a: PUSH2 0x0861
0000025d: PUSH1 0x04
0000025f: CALLDATALOAD
00000260: PUSH1 0x00
00000262: SLOAD
00000263: PUSH1 0x01
00000265: PUSH1 0xa0
00000267: PUSH1 0x02
00000269: EXP
0000026a: SUB
0000026b: SWAP1
0000026c: DUP2
0000026d: AND
0000026e: CALLER
0000026f: SWAP1
00000270: SWAP2
00000271: AND
00000272: EQ
00000273: PUSH2 0x09e8
00000276: JUMPI
00000277: PUSH2 0x0002
0000027a: JUMP
0000027b: JUMPDEST
0000027c: PUSH2 0x0880
0000027f: JUMPDEST
00000280: PUSH1 0x00
00000282: PUSH1 0x00
00000284: PUSH1 0x00
00000286: PUSH1 0x00
00000288: PUSH1 0x00
0000028a: PUSH1 0x00
0000028c: PUSH1 0x00
0000028e: PUSH1 0x00
00000290: PUSH1 0x00
00000292: PUSH1 0x00
00000294: PUSH1 0x02
00000296: PUSH1 0x00
00000298: SWAP1
00000299: SLOAD
0000029a: SWAP1
0000029b: PUSH2 0x0100
0000029e: EXP
0000029f: SWAP1
000002a0: DIV
000002a1: PUSH1 0x01
000002a3: PUSH1 0xa0
000002a5: PUSH1 0x02
000002a7: EXP
000002a8: SUB
000002a9: AND
000002aa: PUSH1 0x01
000002ac: PUSH1 0xa0
000002ae: PUSH1 0x02
000002b0: EXP
000002b1: SUB
000002b2: AND
000002b3: PUSH4 0x0e708203
000002b8: PUSH1 0x40
000002ba: MLOAD
000002bb: DUP2
000002bc: PUSH1 0xe0
000002be: PUSH1 0x02
000002c0: EXP
000002c1: MUL
000002c2: DUP2
000002c3: MSTORE
000002c4: PUSH1 0x04
000002c6: ADD
000002c7: DUP1
000002c8: SWAP1
000002c9: POP
000002ca: PUSH1 0x20
000002cc: PUSH1 0x40
000002ce: MLOAD
000002cf: DUP1
000002d0: DUP4
000002d1: SUB
000002d2: DUP2
000002d3: PUSH1 0x00
000002d5: DUP8
000002d6: PUSH2 0x61da
000002d9: GAS
000002da: SUB
000002db: CALL
000002dc: ISZERO
000002dd: PUSH2 0x0002
000002e0: JUMPI
000002e1: POP
000002e2: POP
000002e3: POP
000002e4: PUSH1 0x40
000002e6: MLOAD
000002e7: DUP1
000002e8: MLOAD
000002e9: SWAP1
000002ea: PUSH1 0x20
000002ec: ADD
000002ed: POP
000002ee: SWAP9
000002ef: POP
000002f0: DUP9
000002f1: PUSH1 0x01
000002f3: PUSH1 0xa0
000002f5: PUSH1 0x02
000002f7: EXP
000002f8: SUB
000002f9: AND
000002fa: BALANCE
000002fb: ADDRESS
000002fc: PUSH1 0x01
000002fe: PUSH1 0xa0
00000300: PUSH1 0x02
00000302: EXP
00000303: SUB
00000304: AND
00000305: BALANCE
00000306: ADD
00000307: SWAP8
00000308: POP
00000309: DUP9
0000030a: PUSH1 0x01
0000030c: PUSH1 0xa0
0000030e: PUSH1 0x02
00000310: EXP
00000311: SUB
00000312: AND
00000313: PUSH4 0xd2cc718f
00000318: PUSH1 0x40
0000031a: MLOAD
0000031b: DUP2
0000031c: PUSH1 0xe0
0000031e: PUSH1 0x02
00000320: EXP
00000321: MUL
00000322: DUP2
00000323: MSTORE
00000324: PUSH1 0x04
00000326: ADD
00000327: DUP1
00000328: SWAP1
00000329: POP
0000032a: PUSH1 0x20
0000032c: PUSH1 0x40
0000032e: MLOAD
0000032f: DUP1
00000330: DUP4
00000331: SUB
00000332: DUP2
00000333: PUSH1 0x00
00000335: DUP8
00000336: PUSH2 0x61da
00000339: GAS
0000033a: SUB
0000033b: CALL
0000033c: ISZERO
0000033d: PUSH2 0x0002
00000340: JUMPI
00000341: POP
00000342: POP
00000343: PUSH1 0x40
00000345: DUP1
00000346: MLOAD
00000347: DUP1
00000348: MLOAD
00000349: PUSH1 0x02
0000034b: SLOAD
0000034c: PUSH1 0x03
0000034e: SLOAD
0000034f: PUSH1 0xe0
00000351: PUSH1 0x02
00000353: EXP
00000354: PUSH4 0x81f03fcb
00000359: MUL
0000035a: DUP5
0000035b: MSTORE
0000035c: PUSH1 0x01
0000035e: PUSH1 0xa0
00000360: PUSH1 0x02
00000362: EXP
00000363: SUB
00000364: SWAP1
00000365: DUP2
00000366: AND
00000367: PUSH1 0x04
00000369: DUP6
0000036a: ADD
0000036b: MSTORE
0000036c: SWAP4
0000036d: MLOAD
0000036e: SWAP2
0000036f: SWAP12
00000370: POP
00000371: SWAP1
00000372: SWAP3
00000373: AND
00000374: SWAP3
00000375: POP
00000376: PUSH4 0x81f03fcb
0000037b: SWAP2
0000037c: PUSH1 0x24
0000037e: DUP3
0000037f: DUP2
00000380: ADD
00000381: SWAP3
00000382: PUSH1 0x20
00000384: SWAP3
00000385: SWAP2
00000386: SWAP1
00000387: DUP3
00000388: SWAP1
00000389: SUB
0000038a: ADD
0000038b: DUP2
0000038c: DUP8
0000038d: DUP8
0000038e: PUSH2 0x61da
00000391: GAS
00000392: SUB
00000393: CALL
00000394: ISZERO
00000395: PUSH2 0x0002
00000398: JUMPI
00000399: POP
0000039a: POP
0000039b: PUSH1 0x40
0000039d: DUP1
0000039e: MLOAD
0000039f: DUP1
000003a0: MLOAD
000003a1: PUSH1 0x02
000003a3: SLOAD
000003a4: PUSH1 0xe0
000003a6: PUSH1 0x02
000003a8: EXP
000003a9: PUSH4 0x18160ddd
000003ae: MUL
000003af: DUP4
000003b0: MSTORE
000003b1: SWAP3
000003b2: MLOAD
000003b3: SWAP1
000003b4: SWAP10
000003b5: POP
000003b6: PUSH1 0x01
000003b8: PUSH1 0xa0
000003ba: PUSH1 0x02
000003bc: EXP
000003bd: SUB
000003be: SWAP3
000003bf: SWAP1
000003c0: SWAP3
000003c1: AND
000003c2: SWAP3
000003c3: POP
000003c4: PUSH4 0x18160ddd
000003c9: SWAP2
000003ca: PUSH1 0x04
000003cc: DUP3
000003cd: DUP2
000003ce: ADD
000003cf: SWAP3
000003d0: PUSH1 0x20
000003d2: SWAP3
000003d3: SWAP2
000003d4: SWAP1
000003d5: DUP3
000003d6: SWAP1
000003d7: SUB
000003d8: ADD
000003d9: DUP2
000003da: DUP8
000003db: DUP8
000003dc: PUSH2 0x61da
000003df: GAS
000003e0: SUB
000003e1: CALL
000003e2: ISZERO
000003e3: PUSH2 0x0002
000003e6: JUMPI
000003e7: POP
000003e8: POP
000003e9: PUSH1 0x40
000003eb: DUP1
000003ec: MLOAD
000003ed: DUP1
000003ee: MLOAD
000003ef: PUSH1 0x02
000003f1: SLOAD
000003f2: PUSH1 0x03
000003f4: SLOAD
000003f5: PUSH1 0xe0
000003f7: PUSH1 0x02
000003f9: EXP
000003fa: PUSH4 0x70a08231
000003ff: MUL
00000400: DUP5
00000401: MSTORE
00000402: PUSH1 0x01
00000404: PUSH1 0xa0
00000406: PUSH1 0x02
00000408: EXP
00000409: SUB
0000040a: SWAP1
0000040b: DUP2
0000040c: AND
0000040d: PUSH1 0x04
0000040f: DUP6
00000410: ADD
00000411: MSTORE
00000412: SWAP4
00000413: MLOAD
00000414: SWAP2
00000415: SWAP10
00000416: POP
00000417: SWAP1
00000418: SWAP3
00000419: AND
0000041a: SWAP3
0000041b: POP
0000041c: PUSH4 0x70a08231
00000421: SWAP2
00000422: PUSH1 0x24
00000424: DUP3
00000425: DUP2
00000426: ADD
00000427: SWAP3
00000428: PUSH1 0x20
0000042a: SWAP3
0000042b: SWAP2
0000042c: SWAP1
0000042d: DUP3
0000042e: SWAP1
0000042f: SUB
00000430: ADD
00000431: DUP2
00000432: DUP8
00000433: DUP8
00000434: PUSH2 0x61da
00000437: GAS
00000438: SUB
00000439: CALL
0000043a: ISZERO
0000043b: PUSH2 0x0002
0000043e: JUMPI
0000043f: POP
00000440: POP
00000441: POP
00000442: PUSH1 0x40
00000444: MLOAD
00000445: DUP1
00000446: MLOAD
00000447: SWAP1
00000448: PUSH1 0x20
0000044a: ADD
0000044b: POP
0000044c: SWAP4
0000044d: POP
0000044e: DUP8
0000044f: DUP5
00000450: DUP7
00000451: MUL
00000452: MUL
00000453: SWAP3
00000454: POP
00000455: DUP9
00000456: PUSH1 0x01
00000458: PUSH1 0xa0
0000045a: PUSH1 0x02
0000045c: EXP
0000045d: SUB
0000045e: AND
0000045f: BALANCE
00000460: DUP9
00000461: DUP9
00000462: ADD
00000463: SUB
00000464: DUP5
00000465: MUL
00000466: SWAP2
00000467: POP
00000468: DUP6
00000469: DUP6
0000046a: MUL
0000046b: SWAP1
0000046c: POP
0000046d: DUP1
0000046e: DUP3
0000046f: LT
00000470: ISZERO
00000471: PUSH2 0x09fd
00000474: JUMPI
00000475: PUSH2 0x0a05
00000478: JUMP
00000479: JUMPDEST
0000047a: PUSH2 0x0863
0000047d: PUSH1 0x00
0000047f: SLOAD
00000480: PUSH1 0x01
00000482: PUSH1 0xa0
00000484: PUSH1 0x02
00000486: EXP
00000487: SUB
00000488: AND
00000489: DUP2
0000048a: JUMP
0000048b: JUMPDEST
0000048c: PUSH2 0x0880
0000048f: PUSH1 0x04
00000491: CALLDATALOAD
00000492: PUSH1 0x00
00000494: PUSH1 0x00
00000496: PUSH1 0x00
00000498: PUSH1 0x00
0000049a: PUSH1 0x00
0000049c: PUSH1 0x02
0000049e: PUSH1 0x00
000004a0: SWAP1
000004a1: SLOAD
000004a2: SWAP1
000004a3: PUSH2 0x0100
000004a6: EXP
000004a7: SWAP1
000004a8: DIV
000004a9: PUSH1 0x01
000004ab: PUSH1 0xa0
000004ad: PUSH1 0x02
000004af: EXP
000004b0: SUB
000004b1: AND
000004b2: PUSH1 0x01
000004b4: PUSH1 0xa0
000004b6: PUSH1 0x02
000004b8: EXP
000004b9: SUB
000004ba: AND
000004bb: PUSH4 0x0e708203
000004c0: PUSH1 0x40
000004c2: MLOAD
000004c3: DUP2
000004c4: PUSH1 0xe0
000004c6: PUSH1 0x02
000004c8: EXP
000004c9: MUL
000004ca: DUP2
000004cb: MSTORE
000004cc: PUSH1 0x04
000004ce: ADD
000004cf: DUP1
000004d0: SWAP1
000004d1: POP
000004d2: PUSH1 0x20
000004d4: PUSH1 0x40
000004d6: MLOAD
000004d7: DUP1
000004d8: DUP4
000004d9: SUB
000004da: DUP2
000004db: PUSH1 0x00
000004dd: DUP8
000004de: PUSH2 0x61da
000004e1: GAS
000004e2: SUB
000004e3: CALL
000004e4: ISZERO
000004e5: PUSH2 0x0002
000004e8: JUMPI
000004e9: POP
000004ea: POP
000004eb: POP
000004ec: PUSH1 0x40
000004ee: MLOAD
000004ef: DUP1
000004f0: MLOAD
000004f1: SWAP1
000004f2: PUSH1 0x20
000004f4: ADD
000004f5: POP
000004f6: SWAP4
000004f7: POP
000004f8: DUP4
000004f9: PUSH1 0x01
000004fb: PUSH1 0xa0
000004fd: PUSH1 0x02
000004ff: EXP
00000500: SUB
00000501: AND
00000502: PUSH4 0xd2cc718f
00000507: PUSH1 0x40
00000509: MLOAD
0000050a: DUP2
0000050b: PUSH1 0xe0
0000050d: PUSH1 0x02
0000050f: EXP
00000510: MUL
00000511: DUP2
00000512: MSTORE
00000513: PUSH1 0x04
00000515: ADD
00000516: DUP1
00000517: SWAP1
00000518: POP
00000519: PUSH1 0x20
0000051b: PUSH1 0x40
0000051d: MLOAD
0000051e: DUP1
0000051f: DUP4
00000520: SUB
00000521: DUP2
00000522: PUSH1 0x00
00000524: DUP8
00000525: PUSH2 0x61da
00000528: GAS
00000529: SUB
0000052a: CALL
0000052b: ISZERO
0000052c: PUSH2 0x0002
0000052f: JUMPI
00000530: POP
00000531: POP
00000532: PUSH1 0x40
00000534: DUP1
00000535: MLOAD
00000536: PUSH1 0x02
00000538: SLOAD
00000539: DUP2
0000053a: MLOAD
0000053b: PUSH1 0x03
0000053d: SLOAD
0000053e: PUSH1 0xe0
00000540: PUSH1 0x02
00000542: EXP
00000543: PUSH4 0x81f03fcb
00000548: MUL
00000549: DUP5
0000054a: MSTORE
0000054b: PUSH1 0x01
0000054d: PUSH1 0xa0
0000054f: PUSH1 0x02
00000551: EXP
00000552: SUB
00000553: SWAP1
00000554: DUP2
00000555: AND
00000556: PUSH1 0x04
00000558: DUP6
00000559: ADD
0000055a: MSTORE
0000055b: SWAP4
0000055c: MLOAD
0000055d: SWAP1
0000055e: SWAP8
0000055f: POP
00000560: SWAP3
00000561: AND
00000562: SWAP3
00000563: POP
00000564: PUSH4 0x81f03fcb
00000569: SWAP2
0000056a: PUSH1 0x24
0000056c: DUP1
0000056d: DUP4
0000056e: ADD
0000056f: SWAP3
00000570: PUSH1 0x20
00000572: SWAP3
00000573: SWAP2
00000574: SWAP1
00000575: DUP3
00000576: SWAP1
00000577: SUB
00000578: ADD
00000579: DUP2
0000057a: DUP8
0000057b: DUP8
0000057c: PUSH2 0x61da
0000057f: GAS
00000580: SUB
00000581: CALL
00000582: ISZERO
00000583: PUSH2 0x0002
00000586: JUMPI
00000587: POP
00000588: POP
00000589: PUSH1 0x40
0000058b: DUP1
0000058c: MLOAD
0000058d: DUP1
0000058e: MLOAD
0000058f: PUSH1 0x02
00000591: SLOAD
00000592: PUSH1 0xe0
00000594: PUSH1 0x02
00000596: EXP
00000597: PUSH4 0x18160ddd
0000059c: MUL
0000059d: DUP4
0000059e: MSTORE
0000059f: SWAP3
000005a0: MLOAD
000005a1: SWAP1
000005a2: SWAP6
000005a3: POP
000005a4: PUSH1 0x01
000005a6: PUSH1 0xa0
000005a8: PUSH1 0x02
000005aa: EXP
000005ab: SUB
000005ac: SWAP3
000005ad: SWAP1
000005ae: SWAP3
000005af: AND
000005b0: SWAP3
000005b1: POP
000005b2: PUSH4 0x18160ddd
000005b7: SWAP2
000005b8: PUSH1 0x04
000005ba: DUP3
000005bb: DUP2
000005bc: ADD
000005bd: SWAP3
000005be: PUSH1 0x20
000005c0: SWAP3
000005c1: SWAP2
000005c2: SWAP1
000005c3: DUP3
000005c4: SWAP1
000005c5: SUB
000005c6: ADD
000005c7: DUP2
000005c8: DUP8
000005c9: DUP8
000005ca: PUSH2 0x61da
000005cd: GAS
000005ce: SUB
000005cf: CALL
000005d0: ISZERO
000005d1: PUSH2 0x0002
000005d4: JUMPI
000005d5: POP
000005d6: POP
000005d7: POP
000005d8: PUSH1 0x40
000005da: MLOAD
000005db: DUP1
000005dc: MLOAD
000005dd: SWAP1
000005de: PUSH1 0x20
000005e0: ADD
000005e1: POP
000005e2: SWAP1
000005e3: POP
000005e4: DUP6
000005e5: DUP2
000005e6: SUB
000005e7: DUP2
000005e8: DUP4
000005e9: MUL
000005ea: DIV
000005eb: DUP7
000005ec: DUP3
000005ed: SUB
000005ee: DUP8
000005ef: DUP6
000005f0: MUL
000005f1: DIV
000005f2: SUB
000005f3: SWAP5
000005f4: POP
000005f5: DUP5
000005f6: POP
000005f7: DUP5
000005f8: SWAP5
000005f9: POP
000005fa: POP
000005fb: POP
000005fc: POP
000005fd: POP
000005fe: SWAP2
000005ff: SWAP1
00000600: POP
00000601: JUMP
00000602: JUMPDEST
00000603: PUSH2 0x0861
00000606: PUSH1 0x04
00000608: CALLDATALOAD
00000609: PUSH1 0x00
0000060b: SLOAD
0000060c: PUSH1 0x01
0000060e: PUSH1 0xa0
00000610: PUSH1 0x02
00000612: EXP
00000613: SUB
00000614: SWAP1
00000615: DUP2
00000616: AND
00000617: CALLER
00000618: SWAP1
00000619: SWAP2
0000061a: AND
0000061b: EQ
0000061c: PUSH2 0x0a11
0000061f: JUMPI
00000620: PUSH2 0x0002
00000623: JUMP
00000624: JUMPDEST
00000625: PUSH2 0x0863
00000628: PUSH1 0x03
0000062a: SLOAD
0000062b: PUSH1 0x01
0000062d: PUSH1 0xa0
0000062f: PUSH1 0x02
00000631: EXP
00000632: SUB
00000633: AND
00000634: DUP2
00000635: JUMP
00000636: JUMPDEST
00000637: PUSH2 0x0880
0000063a: PUSH1 0x06
0000063c: SLOAD
0000063d: DUP2
0000063e: JUMP
0000063f: JUMPDEST
00000640: PUSH2 0x0863
00000643: PUSH1 0x04
00000645: SLOAD
00000646: PUSH1 0x01
00000648: PUSH1 0xa0
0000064a: PUSH1 0x02
0000064c: EXP
0000064d: SUB
0000064e: AND
0000064f: DUP2
00000650: JUMP
00000651: JUMPDEST
00000652: PUSH2 0x0880
00000655: PUSH1 0x04
00000657: CALLDATALOAD
00000658: JUMPDEST
00000659: PUSH1 0x40
0000065b: DUP1
0000065c: MLOAD
0000065d: PUSH1 0x02
0000065f: SLOAD
00000660: PUSH1 0x03
00000662: SLOAD
00000663: PUSH1 0xe0
00000665: PUSH1 0x02
00000667: EXP
00000668: PUSH4 0x70a08231
0000066d: MUL
0000066e: DUP4
0000066f: MSTORE
00000670: PUSH1 0x01
00000672: PUSH1 0xa0
00000674: PUSH1 0x02
00000676: EXP
00000677: SUB
00000678: SWAP1
00000679: DUP2
0000067a: AND
0000067b: PUSH1 0x04
0000067d: DUP5
0000067e: ADD
0000067f: MSTORE
00000680: SWAP3
00000681: MLOAD
00000682: PUSH1 0x00
00000684: SWAP4
00000685: DUP5
00000686: SWAP4
00000687: SWAP3
00000688: AND
00000689: SWAP2
0000068a: PUSH4 0x70a08231
0000068f: SWAP2
00000690: PUSH1 0x24
00000692: DUP3
00000693: DUP2
00000694: ADD
00000695: SWAP3
00000696: PUSH1 0x20
00000698: SWAP3
00000699: SWAP2
0000069a: SWAP1
0000069b: DUP3
0000069c: SWAP1
0000069d: SUB
0000069e: ADD
0000069f: DUP2
000006a0: DUP8
000006a1: DUP8
000006a2: PUSH2 0x61da
000006a5: GAS
000006a6: SUB
000006a7: CALL
000006a8: ISZERO
000006a9: PUSH2 0x0002
000006ac: JUMPI
000006ad: POP
000006ae: POP
000006af: PUSH1 0x40
000006b1: MLOAD
000006b2: MLOAD
000006b3: SWAP1
000006b4: SWAP4
000006b5: DIV
000006b6: PUSH1 0x01
000006b8: ADD
000006b9: SWAP4
000006ba: SWAP3
000006bb: POP
000006bc: POP
000006bd: POP
000006be: JUMP
000006bf: JUMPDEST
000006c0: PUSH2 0x0861
000006c3: PUSH1 0x00
000006c5: PUSH1 0x00
000006c7: PUSH1 0x00
000006c9: PUSH1 0x00
000006cb: PUSH1 0x00
000006cd: PUSH1 0x00
000006cf: PUSH1 0x00
000006d1: PUSH1 0x00
000006d3: PUSH1 0x00
000006d5: PUSH1 0x00
000006d7: SWAP1
000006d8: SLOAD
000006d9: SWAP1
000006da: PUSH2 0x0100
000006dd: EXP
000006de: SWAP1
000006df: DIV
000006e0: PUSH1 0x01
000006e2: PUSH1 0xa0
000006e4: PUSH1 0x02
000006e6: EXP
000006e7: SUB
000006e8: AND
000006e9: PUSH1 0x01
000006eb: PUSH1 0xa0
000006ed: PUSH1 0x02
000006ef: EXP
000006f0: SUB
000006f1: AND
000006f2: CALLER
000006f3: PUSH1 0x01
000006f5: PUSH1 0xa0
000006f7: PUSH1 0x02
000006f9: EXP
000006fa: SUB
000006fb: AND
000006fc: EQ
000006fd: ISZERO
000006fe: DUP1
000006ff: ISZERO
00000700: PUSH2 0x0719
00000703: JUMPI
00000704: POP
00000705: PUSH1 0x01
00000707: SLOAD
00000708: PUSH1 0x01
0000070a: PUSH1 0xa0
0000070c: PUSH1 0x02
0000070e: EXP
0000070f: SUB
00000710: SWAP1
00000711: DUP2
00000712: AND
00000713: CALLER
00000714: SWAP1
00000715: SWAP2
00000716: AND
00000717: EQ
00000718: ISZERO
00000719: JUMPDEST
0000071a: ISZERO
0000071b: PUSH2 0x0cbc
0000071e: JUMPI
0000071f: PUSH2 0x0002
00000722: JUMP
00000723: JUMPDEST
00000724: PUSH1 0x40
00000726: DUP1
00000727: MLOAD
00000728: SWAP2
00000729: ISZERO
0000072a: ISZERO
0000072b: DUP3
0000072c: MSTORE
0000072d: MLOAD
0000072e: SWAP1
0000072f: DUP2
00000730: SWAP1
00000731: SUB
00000732: PUSH1 0x20
00000734: ADD
00000735: SWAP1
00000736: RETURN
00000737: JUMPDEST
00000738: PUSH1 0x06
0000073a: SLOAD
0000073b: PUSH1 0x05
0000073d: SLOAD
0000073e: PUSH1 0x00
00000740: NOT
00000741: SWAP1
00000742: SWAP2
00000743: ADD
00000744: SWAP1
00000745: GT
00000746: ISZERO
00000747: PUSH2 0x0803
0000074a: JUMPI
0000074b: PUSH1 0x40
0000074d: DUP1
0000074e: MLOAD
0000074f: PUSH1 0x02
00000751: SLOAD
00000752: PUSH1 0x03
00000754: SLOAD
00000755: PUSH1 0xe0
00000757: PUSH1 0x02
00000759: EXP
0000075a: PUSH4 0x70a08231
0000075f: MUL
00000760: DUP4
00000761: MSTORE
00000762: ADDRESS
00000763: PUSH1 0x01
00000765: PUSH1 0xa0
00000767: PUSH1 0x02
00000769: EXP
0000076a: SUB
0000076b: SWAP1
0000076c: DUP2
0000076d: AND
0000076e: PUSH1 0x04
00000770: DUP6
00000771: ADD
00000772: MSTORE
00000773: SWAP4
00000774: MLOAD
00000775: SWAP2
00000776: DUP5
00000777: AND
00000778: SWAP4
00000779: PUSH4 0xa9059cbb
0000077e: SWAP4
0000077f: SWAP2
00000780: AND
00000781: SWAP2
00000782: PUSH1 0x01
00000784: SWAP2
00000785: DUP6
00000786: SWAP2
00000787: PUSH4 0x70a08231
0000078c: SWAP2
0000078d: PUSH1 0x24
0000078f: DUP1
00000790: DUP3
00000791: ADD
00000792: SWAP3
00000793: PUSH1 0x20
00000795: SWAP3
00000796: SWAP1
00000797: SWAP2
00000798: SWAP1
00000799: DUP3
0000079a: SWAP1
0000079b: SUB
0000079c: ADD
0000079d: DUP2
0000079e: PUSH1 0x00
000007a0: DUP8
000007a1: PUSH2 0x61da
000007a4: GAS
000007a5: SUB
000007a6: CALL
000007a7: ISZERO
000007a8: PUSH2 0x0002
000007ab: JUMPI
000007ac: POP
000007ad: POP
000007ae: PUSH1 0x40
000007b0: DUP1
000007b1: MLOAD
000007b2: DUP1
000007b3: MLOAD
000007b4: PUSH1 0xe0
000007b6: PUSH1 0x02
000007b8: EXP
000007b9: PUSH4 0xa9059cbb
000007be: MUL
000007bf: DUP3
000007c0: MSTORE
000007c1: PUSH1 0x04
000007c3: DUP3
000007c4: ADD
000007c5: SWAP6
000007c6: SWAP1
000007c7: SWAP6
000007c8: MSTORE
000007c9: PUSH1 0x00
000007cb: NOT
000007cc: SWAP5
000007cd: SWAP1
000007ce: SWAP5
000007cf: ADD
000007d0: PUSH1 0x24
000007d2: DUP6
000007d3: ADD
000007d4: MSTORE
000007d5: MLOAD
000007d6: PUSH1 0x44
000007d8: DUP1
000007d9: DUP6
000007da: ADD
000007db: SWAP5
000007dc: PUSH1 0x20
000007de: SWAP5
000007df: POP
000007e0: SWAP2
000007e1: SWAP3
000007e2: POP
000007e3: SWAP1
000007e4: DUP3
000007e5: SWAP1
000007e6: SUB
000007e7: ADD
000007e8: DUP2
000007e9: PUSH1 0x00
000007eb: DUP8
000007ec: PUSH2 0x61da
000007ef: GAS
000007f0: SUB
000007f1: CALL
000007f2: ISZERO
000007f3: PUSH2 0x0002
000007f6: JUMPI
000007f7: POP
000007f8: PUSH1 0x01
000007fa: SWAP3
000007fb: POP
000007fc: PUSH2 0x0142
000007ff: SWAP2
00000800: POP
00000801: POP
00000802: JUMP
00000803: JUMPDEST
00000804: PUSH1 0x05
00000806: DUP1
00000807: SLOAD
00000808: PUSH1 0x01
0000080a: ADD
0000080b: SWAP1
0000080c: SSTORE
0000080d: PUSH1 0x40
0000080f: DUP1
00000810: MLOAD
00000811: PUSH1 0x02
00000813: SLOAD
00000814: PUSH1 0xe1
00000816: PUSH1 0x02
00000818: EXP
00000819: PUSH4 0x664d71fb
0000081e: MUL
0000081f: DUP3
00000820: MSTORE
00000821: SWAP2
00000822: MLOAD
00000823: PUSH1 0x01
00000825: PUSH1 0xa0
00000827: PUSH1 0x02
00000829: EXP
0000082a: SUB
0000082b: SWAP3
0000082c: SWAP1
0000082d: SWAP3
0000082e: AND
0000082f: SWAP2
00000830: PUSH4 0xcc9ae3f6
00000835: SWAP2
00000836: PUSH1 0x04
00000838: DUP2
00000839: DUP2
0000083a: ADD
0000083b: SWAP3
0000083c: PUSH1 0x20
0000083e: SWAP3
0000083f: SWAP1
00000840: SWAP2
00000841: SWAP1
00000842: DUP3
00000843: SWAP1
00000844: SUB
00000845: ADD
00000846: DUP2
00000847: PUSH1 0x00
00000849: DUP8
0000084a: PUSH2 0x61da
0000084d: GAS
0000084e: SUB
0000084f: CALL
00000850: ISZERO
00000851: PUSH2 0x0002
00000854: JUMPI
00000855: POP
00000856: PUSH1 0x01
00000858: SWAP3
00000859: POP
0000085a: PUSH2 0x0142
0000085d: SWAP2
0000085e: POP
0000085f: POP
00000860: JUMP
00000861: JUMPDEST
00000862: STOP
00000863: JUMPDEST
00000864: PUSH1 0x40
00000866: DUP1
00000867: MLOAD
00000868: PUSH1 0x01
0000086a: PUSH1 0xa0
0000086c: PUSH1 0x02
0000086e: EXP
0000086f: SUB
00000870: SWAP3
00000871: SWAP1
00000872: SWAP3
00000873: AND
00000874: DUP3
00000875: MSTORE
00000876: MLOAD
00000877: SWAP1
00000878: DUP2
00000879: SWAP1
0000087a: SUB
0000087b: PUSH1 0x20
0000087d: ADD
0000087e: SWAP1
0000087f: RETURN
00000880: JUMPDEST
00000881: PUSH1 0x40
00000883: DUP1
00000884: MLOAD
00000885: SWAP2
00000886: DUP3
00000887: MSTORE
00000888: MLOAD
00000889: SWAP1
0000088a: DUP2
0000088b: SWAP1
0000088c: SUB
0000088d: PUSH1 0x20
0000088f: ADD
00000890: SWAP1
00000891: RETURN
00000892: JUMPDEST
00000893: PUSH1 0x00
00000895: DUP1
00000896: SLOAD
00000897: PUSH1 0x01
00000899: PUSH1 0xa0
0000089b: PUSH1 0x02
0000089d: EXP
0000089e: SUB
0000089f: NOT
000008a0: AND
000008a1: DUP3
000008a2: OR
000008a3: SWAP1
000008a4: SSTORE
000008a5: POP
000008a6: JUMP
000008a7: JUMPDEST
000008a8: PUSH1 0x04
000008aa: DUP1
000008ab: SLOAD
000008ac: PUSH1 0x01
000008ae: PUSH1 0xa0
000008b0: PUSH1 0x02
000008b2: EXP
000008b3: SUB
000008b4: NOT
000008b5: AND
000008b6: DUP3
000008b7: OR
000008b8: SWAP1
000008b9: SSTORE
000008ba: POP
000008bb: JUMP
000008bc: JUMPDEST
000008bd: PUSH1 0x01
000008bf: DUP1
000008c0: SLOAD
000008c1: PUSH1 0x01
000008c3: PUSH1 0xa0
000008c5: PUSH1 0x02
000008c7: EXP
000008c8: SUB
000008c9: NOT
000008ca: AND
000008cb: DUP3
000008cc: OR
000008cd: SWAP1
000008ce: SSTORE
000008cf: POP
000008d0: JUMP
000008d1: JUMPDEST
000008d2: PUSH1 0x40
000008d4: MLOAD
000008d5: PUSH1 0x01
000008d7: PUSH1 0xa0
000008d9: PUSH1 0x02
000008db: EXP
000008dc: SUB
000008dd: DUP3
000008de: DUP2
000008df: AND
000008e0: SWAP2
000008e1: ADDRESS
000008e2: SWAP1
000008e3: SWAP2
000008e4: AND
000008e5: BALANCE
000008e6: SWAP1
000008e7: PUSH1 0x00
000008e9: DUP2
000008ea: DUP2
000008eb: DUP2
000008ec: DUP6
000008ed: DUP8
000008ee: PUSH2 0x8502
000008f1: GAS
000008f2: SUB
000008f3: CALL
000008f4: POP
000008f5: POP
000008f6: POP
000008f7: POP
000008f8: POP
000008f9: JUMP
000008fa: JUMPDEST
000008fb: PUSH1 0x02
000008fd: SLOAD
000008fe: PUSH1 0x01
00000900: PUSH1 0xa0
00000902: PUSH1 0x02
00000904: EXP
00000905: SUB
00000906: AND
00000907: PUSH1 0x00
00000909: EQ
0000090a: ISZERO
0000090b: PUSH2 0x0916
0000090e: JUMPI
0000090f: POP
00000910: PUSH1 0x02
00000912: PUSH2 0x0142
00000915: JUMP
00000916: JUMPDEST
00000917: PUSH1 0x03
00000919: SLOAD
0000091a: PUSH1 0x01
0000091c: PUSH1 0xa0
0000091e: PUSH1 0x02
00000920: EXP
00000921: SUB
00000922: AND
00000923: PUSH1 0x00
00000925: EQ
00000926: ISZERO
00000927: PUSH2 0x0932
0000092a: JUMPI
0000092b: POP
0000092c: PUSH1 0x03
0000092e: PUSH2 0x0142
00000931: JUMP
00000932: JUMPDEST
00000933: PUSH1 0x04
00000935: SLOAD
00000936: PUSH1 0x01
00000938: PUSH1 0xa0
0000093a: PUSH1 0x02
0000093c: EXP
0000093d: SUB
0000093e: AND
0000093f: PUSH1 0x00
00000941: EQ
00000942: ISZERO
00000943: PUSH2 0x094e
00000946: JUMPI
00000947: POP
00000948: PUSH1 0x04
0000094a: PUSH2 0x0142
0000094d: JUMP
0000094e: JUMPDEST
0000094f: PUSH1 0x03
00000951: SLOAD
00000952: PUSH1 0x40
00000954: DUP1
00000955: MLOAD
00000956: PUSH32 0x86c9b53600000000000000000000000000000000000000000000000000000000
00000977: DUP2
00000978: MSTORE
00000979: SWAP1
0000097a: MLOAD
0000097b: ADDRESS
0000097c: PUSH1 0x01
0000097e: PUSH1 0xa0
00000980: PUSH1 0x02
00000982: EXP
00000983: SUB
00000984: SWAP1
00000985: DUP2
00000986: AND
00000987: SWAP4
00000988: AND
00000989: SWAP2
0000098a: PUSH4 0x86c9b536
0000098f: SWAP2
00000990: PUSH1 0x04
00000992: DUP3
00000993: DUP2
00000994: ADD
00000995: SWAP3
00000996: PUSH1 0x20
00000998: SWAP3
00000999: SWAP2
0000099a: SWAP1
0000099b: DUP3
0000099c: SWAP1
0000099d: SUB
0000099e: ADD
0000099f: DUP2
000009a0: PUSH1 0x00
000009a2: DUP8
000009a3: PUSH2 0x61da
000009a6: GAS
000009a7: SUB
000009a8: CALL
000009a9: ISZERO
000009aa: PUSH2 0x0002
000009ad: JUMPI
000009ae: POP
000009af: POP
000009b0: PUSH1 0x40
000009b2: MLOAD
000009b3: MLOAD
000009b4: PUSH1 0x01
000009b6: PUSH1 0xa0
000009b8: PUSH1 0x02
000009ba: EXP
000009bb: SUB
000009bc: AND
000009bd: SWAP1
000009be: SWAP2
000009bf: EQ
000009c0: SWAP1
000009c1: POP
000009c2: PUSH2 0x09cd
000009c5: JUMPI
000009c6: POP
000009c7: PUSH1 0x05
000009c9: PUSH2 0x0142
000009cc: JUMP
000009cd: JUMPDEST
000009ce: ADDRESS
000009cf: PUSH1 0x01
000009d1: PUSH1 0xa0
000009d3: PUSH1 0x02
000009d5: EXP
000009d6: SUB
000009d7: AND
000009d8: BALANCE
000009d9: PUSH1 0x00
000009db: EQ
000009dc: ISZERO
000009dd: PUSH2 0x0142
000009e0: JUMPI
000009e1: POP
000009e2: PUSH1 0x06
000009e4: PUSH2 0x0142
000009e7: JUMP
000009e8: JUMPDEST
000009e9: PUSH1 0x02
000009eb: DUP1
000009ec: SLOAD
000009ed: PUSH1 0x01
000009ef: PUSH1 0xa0
000009f1: PUSH1 0x02
000009f3: EXP
000009f4: SUB
000009f5: NOT
000009f6: AND
000009f7: DUP3
000009f8: OR
000009f9: SWAP1
000009fa: SSTORE
000009fb: POP
000009fc: JUMP
000009fd: JUMPDEST
000009fe: DUP1
000009ff: DUP3
00000a00: SUB
00000a01: DUP4
00000a02: DIV
00000a03: SWAP10
00000a04: POP
00000a05: JUMPDEST
00000a06: POP
00000a07: POP
00000a08: POP
00000a09: POP
00000a0a: POP
00000a0b: POP
00000a0c: POP
00000a0d: POP
00000a0e: POP
00000a0f: SWAP1
00000a10: JUMP
00000a11: JUMPDEST
00000a12: PUSH1 0x03
00000a14: DUP1
00000a15: SLOAD
00000a16: PUSH1 0x01
00000a18: PUSH1 0xa0
00000a1a: PUSH1 0x02
00000a1c: EXP
00000a1d: SUB
00000a1e: NOT
00000a1f: AND
00000a20: DUP3
00000a21: OR
00000a22: SWAP1
00000a23: SSTORE
00000a24: POP
00000a25: JUMP
00000a26: JUMPDEST
00000a27: PUSH1 0x06
00000a29: DUP2
00000a2a: SWAP1
00000a2b: SSTORE
00000a2c: PUSH1 0x03
00000a2e: SLOAD
00000a2f: PUSH1 0x40
00000a31: DUP1
00000a32: MLOAD
00000a33: PUSH32 0xd0679d3400000000000000000000000000000000000000000000000000000000
00000a54: DUP2
00000a55: MSTORE
00000a56: PUSH1 0x01
00000a58: PUSH1 0xa0
00000a5a: PUSH1 0x02
00000a5c: EXP
00000a5d: SUB
00000a5e: DUP10
00000a5f: DUP2
00000a60: AND
00000a61: PUSH1 0x04
00000a63: DUP4
00000a64: ADD
00000a65: MSTORE
00000a66: SWAP4
00000a67: DUP12
00000a68: DIV
00000a69: PUSH1 0x24
00000a6b: DUP3
00000a6c: ADD
00000a6d: DUP2
00000a6e: SWAP1
00000a6f: MSTORE
00000a70: SWAP2
00000a71: MLOAD
00000a72: SWAP2
00000a73: SWAP8
00000a74: POP
00000a75: SWAP2
00000a76: SWAP1
00000a77: SWAP3
00000a78: AND
00000a79: SWAP2
00000a7a: PUSH4 0xd0679d34
00000a7f: SWAP2
00000a80: PUSH1 0x44
00000a82: DUP2
00000a83: DUP2
00000a84: ADD
00000a85: SWAP3
00000a86: PUSH1 0x20
00000a88: SWAP3
00000a89: SWAP1
00000a8a: SWAP2
00000a8b: SWAP1
00000a8c: DUP3
00000a8d: SWAP1
00000a8e: SUB
00000a8f: ADD
00000a90: DUP2
00000a91: PUSH1 0x00
00000a93: DUP8
00000a94: PUSH2 0x61da
00000a97: GAS
00000a98: SUB
00000a99: CALL
00000a9a: ISZERO
00000a9b: PUSH2 0x0002
00000a9e: JUMPI
00000a9f: POP
00000aa0: POP
00000aa1: PUSH1 0x40
00000aa3: DUP1
00000aa4: MLOAD
00000aa5: PUSH1 0x01
00000aa7: PUSH1 0x05
00000aa9: SSTORE
00000aaa: ADDRESS
00000aab: PUSH1 0x01
00000aad: PUSH1 0xa0
00000aaf: PUSH1 0x02
00000ab1: EXP
00000ab2: SUB
00000ab3: AND
00000ab4: BALANCE
00000ab5: DUP2
00000ab6: MSTORE
00000ab7: SWAP1
00000ab8: MLOAD
00000ab9: PUSH32 0x7027eecbd2a688fc1fa281702b311ed7168571514adfd17014a55d828cb43382
00000ada: SWAP3
00000adb: POP
00000adc: SWAP1
00000add: DUP2
00000ade: SWAP1
00000adf: SUB
00000ae0: PUSH1 0x20
00000ae2: ADD
00000ae3: SWAP1
00000ae4: LOG1
00000ae5: PUSH1 0x40
00000ae7: MLOAD
00000ae8: PUSH1 0x01
00000aea: PUSH1 0xa0
00000aec: PUSH1 0x02
00000aee: EXP
00000aef: SUB
00000af0: DUP10
00000af1: DUP2
00000af2: AND
00000af3: SWAP2
00000af4: ADDRESS
00000af5: SWAP1
00000af6: SWAP2
00000af7: AND
00000af8: BALANCE
00000af9: SWAP1
00000afa: PUSH1 0x00
00000afc: DUP2
00000afd: DUP2
00000afe: DUP2
00000aff: DUP6
00000b00: DUP8
00000b01: PUSH2 0x8502
00000b04: GAS
00000b05: SUB
00000b06: CALL
00000b07: POP
00000b08: POP
00000b09: PUSH1 0x40
00000b0b: DUP1
00000b0c: MLOAD
00000b0d: PUSH32 0xd2cc718f00000000000000000000000000000000000000000000000000000000
00000b2e: DUP2
00000b2f: MSTORE
00000b30: SWAP1
00000b31: MLOAD
00000b32: PUSH4 0xd2cc718f
00000b37: SWAP3
00000b38: POP
00000b39: PUSH1 0x04
00000b3b: DUP3
00000b3c: DUP2
00000b3d: ADD
00000b3e: SWAP3
00000b3f: PUSH1 0x20
00000b41: SWAP3
00000b42: SWAP2
00000b43: SWAP1
00000b44: DUP3
00000b45: SWAP1
00000b46: SUB
00000b47: ADD
00000b48: DUP2
00000b49: PUSH1 0x00
00000b4b: DUP8
00000b4c: PUSH2 0x61da
00000b4f: GAS
00000b50: SUB
00000b51: CALL
00000b52: ISZERO
00000b53: PUSH2 0x0002
00000b56: JUMPI
00000b57: POP
00000b58: POP
00000b59: PUSH1 0x40
00000b5b: DUP1
00000b5c: MLOAD
00000b5d: DUP1
00000b5e: MLOAD
00000b5f: PUSH1 0x02
00000b61: SLOAD
00000b62: PUSH1 0xe0
00000b64: PUSH1 0x02
00000b66: EXP
00000b67: PUSH4 0x70a08231
00000b6c: MUL
00000b6d: DUP4
00000b6e: MSTORE
00000b6f: PUSH1 0x01
00000b71: PUSH1 0xa0
00000b73: PUSH1 0x02
00000b75: EXP
00000b76: SUB
00000b77: DUP11
00000b78: DUP2
00000b79: AND
00000b7a: PUSH1 0x04
00000b7c: DUP6
00000b7d: ADD
00000b7e: MSTORE
00000b7f: SWAP4
00000b80: MLOAD
00000b81: SWAP2
00000b82: SWAP8
00000b83: POP
00000b84: SWAP1
00000b85: SWAP3
00000b86: AND
00000b87: SWAP3
00000b88: POP
00000b89: PUSH4 0x70a08231
00000b8e: SWAP2
00000b8f: PUSH1 0x24
00000b91: DUP3
00000b92: DUP2
00000b93: ADD
00000b94: SWAP3
00000b95: PUSH1 0x20
00000b97: SWAP3
00000b98: SWAP2
00000b99: SWAP1
00000b9a: DUP3
00000b9b: SWAP1
00000b9c: SUB
00000b9d: ADD
00000b9e: DUP2
00000b9f: PUSH1 0x00
00000ba1: DUP8
00000ba2: PUSH2 0x61da
00000ba5: GAS
00000ba6: SUB
00000ba7: CALL
00000ba8: ISZERO
00000ba9: PUSH2 0x0002
00000bac: JUMPI
00000bad: POP
00000bae: POP
00000baf: PUSH1 0x40
00000bb1: DUP1
00000bb2: MLOAD
00000bb3: DUP1
00000bb4: MLOAD
00000bb5: PUSH1 0x02
00000bb7: SLOAD
00000bb8: PUSH1 0xe0
00000bba: PUSH1 0x02
00000bbc: EXP
00000bbd: PUSH4 0x81f03fcb
00000bc2: MUL
00000bc3: DUP4
00000bc4: MSTORE
00000bc5: PUSH1 0x01
00000bc7: PUSH1 0xa0
00000bc9: PUSH1 0x02
00000bcb: EXP
00000bcc: SUB
00000bcd: DUP11
00000bce: DUP2
00000bcf: AND
00000bd0: PUSH1 0x04
00000bd2: DUP6
00000bd3: ADD
00000bd4: MSTORE
00000bd5: SWAP4
00000bd6: MLOAD
00000bd7: SWAP2
00000bd8: SWAP7
00000bd9: POP
00000bda: SWAP1
00000bdb: SWAP3
00000bdc: AND
00000bdd: SWAP3
00000bde: POP
00000bdf: PUSH4 0x81f03fcb
00000be4: SWAP2
00000be5: PUSH1 0x24
00000be7: DUP3
00000be8: DUP2
00000be9: ADD
00000bea: SWAP3
00000beb: PUSH1 0x20
00000bed: SWAP3
00000bee: SWAP2
00000bef: SWAP1
00000bf0: DUP3
00000bf1: SWAP1
00000bf2: SUB
00000bf3: ADD
00000bf4: DUP2
00000bf5: PUSH1 0x00
00000bf7: DUP8
00000bf8: PUSH2 0x61da
00000bfb: GAS
00000bfc: SUB
00000bfd: CALL
00000bfe: ISZERO
00000bff: PUSH2 0x0002
00000c02: JUMPI
00000c03: POP
00000c04: POP
00000c05: PUSH1 0x40
00000c07: DUP1
00000c08: MLOAD
00000c09: DUP1
00000c0a: MLOAD
00000c0b: PUSH1 0x02
00000c0d: SLOAD
00000c0e: PUSH1 0xe1
00000c10: PUSH1 0x02
00000c12: EXP
00000c13: PUSH4 0x664d71fb
00000c18: MUL
00000c19: DUP4
00000c1a: MSTORE
00000c1b: SWAP3
00000c1c: MLOAD
00000c1d: SWAP1
00000c1e: SWAP5
00000c1f: POP
00000c20: PUSH1 0x01
00000c22: PUSH1 0xa0
00000c24: PUSH1 0x02
00000c26: EXP
00000c27: SUB
00000c28: SWAP3
00000c29: SWAP1
00000c2a: SWAP3
00000c2b: AND
00000c2c: SWAP3
00000c2d: POP
00000c2e: PUSH4 0xcc9ae3f6
00000c33: SWAP2
00000c34: PUSH1 0x04
00000c36: DUP3
00000c37: DUP2
00000c38: ADD
00000c39: SWAP3
00000c3a: PUSH1 0x20
00000c3c: SWAP3
00000c3d: SWAP2
00000c3e: SWAP1
00000c3f: DUP3
00000c40: SWAP1
00000c41: SUB
00000c42: ADD
00000c43: DUP2
00000c44: PUSH1 0x00
00000c46: DUP8
00000c47: PUSH2 0x61da
00000c4a: GAS
00000c4b: SUB
00000c4c: CALL
00000c4d: ISZERO
00000c4e: PUSH2 0x0002
00000c51: JUMPI
00000c52: POP
00000c53: POP
00000c54: PUSH1 0x40
00000c56: DUP1
00000c57: MLOAD
00000c58: PUSH1 0x02
00000c5a: SLOAD
00000c5b: PUSH1 0x04
00000c5d: DUP1
00000c5e: SLOAD
00000c5f: PUSH1 0xe0
00000c61: PUSH1 0x02
00000c63: EXP
00000c64: PUSH4 0xa9059cbb
00000c69: MUL
00000c6a: DUP5
00000c6b: MSTORE
00000c6c: PUSH1 0x01
00000c6e: PUSH1 0xa0
00000c70: PUSH1 0x02
00000c72: EXP
00000c73: SUB
00000c74: SWAP1
00000c75: DUP2
00000c76: AND
00000c77: SWAP2
00000c78: DUP5
00000c79: ADD
00000c7a: SWAP2
00000c7b: SWAP1
00000c7c: SWAP2
00000c7d: MSTORE
00000c7e: PUSH1 0x01
00000c80: PUSH1 0x24
00000c82: DUP5
00000c83: ADD
00000c84: MSTORE
00000c85: SWAP3
00000c86: MLOAD
00000c87: SWAP3
00000c88: AND
00000c89: SWAP3
00000c8a: POP
00000c8b: PUSH4 0xa9059cbb
00000c90: SWAP2
00000c91: PUSH1 0x44
00000c93: DUP3
00000c94: DUP2
00000c95: ADD
00000c96: SWAP3
00000c97: PUSH1 0x20
00000c99: SWAP3
00000c9a: SWAP2
00000c9b: SWAP1
00000c9c: DUP3
00000c9d: SWAP1
00000c9e: SUB
00000c9f: ADD
00000ca0: DUP2
00000ca1: PUSH1 0x00
00000ca3: DUP8
00000ca4: PUSH2 0x61da
00000ca7: GAS
00000ca8: SUB
00000ca9: CALL
00000caa: ISZERO
00000cab: PUSH2 0x0002
00000cae: JUMPI
00000caf: POP
00000cb0: POP
00000cb1: POP
00000cb2: JUMPDEST
00000cb3: POP
00000cb4: POP
00000cb5: POP
00000cb6: POP
00000cb7: POP
00000cb8: POP
00000cb9: POP
00000cba: POP
00000cbb: JUMP
00000cbc: JUMPDEST
00000cbd: PUSH1 0x02
00000cbf: SLOAD
00000cc0: PUSH1 0x40
00000cc2: DUP1
00000cc3: MLOAD
00000cc4: PUSH1 0xe0
00000cc6: PUSH1 0x02
00000cc8: EXP
00000cc9: PUSH4 0x0e708203
00000cce: MUL
00000ccf: DUP2
00000cd0: MSTORE
00000cd1: SWAP1
00000cd2: MLOAD
00000cd3: PUSH1 0x01
00000cd5: PUSH1 0xa0
00000cd7: PUSH1 0x02
00000cd9: EXP
00000cda: SUB
00000cdb: SWAP1
00000cdc: SWAP3
00000cdd: AND
00000cde: SWAP2
00000cdf: PUSH4 0x0e708203
00000ce4: SWAP2
00000ce5: PUSH1 0x04
00000ce7: DUP2
00000ce8: DUP2
00000ce9: ADD
00000cea: SWAP3
00000ceb: PUSH1 0x20
00000ced: SWAP3
00000cee: SWAP1
00000cef: SWAP2
00000cf0: SWAP1
00000cf1: DUP3
00000cf2: SWAP1
00000cf3: SUB
00000cf4: ADD
00000cf5: DUP2
00000cf6: PUSH1 0x00
00000cf8: DUP8
00000cf9: PUSH2 0x61da
00000cfc: GAS
00000cfd: SUB
00000cfe: CALL
00000cff: ISZERO
00000d00: PUSH2 0x0002
00000d03: JUMPI
00000d04: POP
00000d05: POP
00000d06: PUSH1 0x40
00000d08: MLOAD
00000d09: MLOAD
00000d0a: SWAP9
00000d0b: POP
00000d0c: PUSH2 0x0d15
00000d0f: SWAP1
00000d10: POP
00000d11: PUSH2 0x027f
00000d14: JUMP
00000d15: JUMPDEST
00000d16: PUSH1 0x40
00000d18: DUP1
00000d19: MLOAD
00000d1a: PUSH1 0x01
00000d1c: PUSH1 0xa0
00000d1e: PUSH1 0x02
00000d20: EXP
00000d21: SUB
00000d22: DUP12
00000d23: AND
00000d24: BALANCE
00000d25: DUP2
00000d26: MSTORE
00000d27: SWAP1
00000d28: MLOAD
00000d29: SWAP2
00000d2a: SWAP9
00000d2b: POP
00000d2c: PUSH32 0x07cf7e805770612a8b2ee8e0bcbba8aa908df5f85fbc4f9e2ef384cf75315038
00000d4d: SWAP2
00000d4e: SWAP1
00000d4f: DUP2
00000d50: SWAP1
00000d51: SUB
00000d52: PUSH1 0x20
00000d54: ADD
00000d55: SWAP1
00000d56: LOG1
00000d57: DUP8
00000d58: PUSH1 0x01
00000d5a: PUSH1 0xa0
00000d5c: PUSH1 0x02
00000d5e: EXP
00000d5f: SUB
00000d60: AND
00000d61: BALANCE
00000d62: ADDRESS
00000d63: PUSH1 0x01
00000d65: PUSH1 0xa0
00000d67: PUSH1 0x02
00000d69: EXP
00000d6a: SUB
00000d6b: AND
00000d6c: BALANCE
00000d6d: ADD
00000d6e: SWAP6
00000d6f: POP
00000d70: DUP7
00000d71: PUSH1 0x00
00000d73: EQ
00000d74: DUP1
00000d75: PUSH2 0x0d7e
00000d78: JUMPI
00000d79: POP
00000d7a: DUP6
00000d7b: PUSH1 0x00
00000d7d: EQ
00000d7e: JUMPDEST
00000d7f: ISZERO
00000d80: PUSH2 0x0db1
00000d83: JUMPI
00000d84: PUSH1 0x40
00000d86: MLOAD
00000d87: PUSH32 0x30090d86c52e12fbc1213c1ecf7e193d6ce4a5c838c8c41d06c1a9daea8a2cec
00000da8: SWAP1
00000da9: PUSH1 0x00
00000dab: SWAP1
00000dac: LOG1
00000dad: PUSH2 0x0cb2
00000db0: JUMP
00000db1: JUMPDEST
00000db2: ADDRESS
00000db3: SWAP5
00000db4: POP
00000db5: PUSH2 0x0a26
00000db8: DUP8
00000db9: PUSH2 0x0658
00000dbc: JUMP

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xc86c76b3c561b4c24cd124e592997aecd9fe3ab20bbef1373564f45a8676b779
call_targets: 0x6e715ab4f598eacf0016b9b35ef33e4141844ccc
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc86c76b3c561b4c24cd124e592997aecd9fe3ab20bbef1373564f45a8676b779",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x6e715ab4f598eacf0016b9b35ef33e4141844ccc"
    ],
    "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": "0x13af4035",
            "selector": "0x13af4035",
            "calldata_variants": [
                "0x13af4035",
                "0x13af40350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x186ef962",
            "selector": "0x186ef962",
            "calldata_variants": [
                "0x186ef962",
                "0x186ef9620000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x31962cdc",
            "selector": "0x31962cdc",
            "calldata_variants": [
                "0x31962cdc",
                "0x31962cdc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x365a86fc",
            "selector": "0x365a86fc",
            "calldata_variants": [
                "0x365a86fc",
                "0x365a86fc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4162169f",
            "selector": "0x4162169f",
            "calldata_variants": [
                "0x4162169f",
                "0x4162169f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x48c981e2",
            "selector": "0x48c981e2",
            "calldata_variants": [
                "0x48c981e2",
                "0x48c981e20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4dfc3db6",
            "selector": "0x4dfc3db6",
            "calldata_variants": [
                "0x4dfc3db6",
                "0x4dfc3db60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x61bc221a",
            "selector": "0x61bc221a",
            "calldata_variants": [
                "0x61bc221a",
                "0x61bc221a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 286,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 827,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 915,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 24,
    "guards_detected": [],
    "untrusted_call_count": 22
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xc86c76b3c561b4c24cd124e592997aecd9fe3ab20bbef1373564f45a8676b779
call_targets: 0x6e715ab4f598eacf0016b9b35ef33e4141844ccc
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc86c76b3c561b4c24cd124e592997aecd9fe3ab20bbef1373564f45a8676b779",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x6e715ab4f598eacf0016b9b35ef33e4141844ccc"
    ],
    "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": "0x13af4035",
            "selector": "0x13af4035",
            "calldata_variants": [
                "0x13af4035",
                "0x13af40350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x186ef962",
            "selector": "0x186ef962",
            "calldata_variants": [
                "0x186ef962",
                "0x186ef9620000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x31962cdc",
            "selector": "0x31962cdc",
            "calldata_variants": [
                "0x31962cdc",
                "0x31962cdc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x365a86fc",
            "selector": "0x365a86fc",
            "calldata_variants": [
                "0x365a86fc",
                "0x365a86fc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4162169f",
            "selector": "0x4162169f",
            "calldata_variants": [
                "0x4162169f",
                "0x4162169f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x48c981e2",
            "selector": "0x48c981e2",
            "calldata_variants": [
                "0x48c981e2",
                "0x48c981e20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4dfc3db6",
            "selector": "0x4dfc3db6",
            "calldata_variants": [
                "0x4dfc3db6",
                "0x4dfc3db60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x61bc221a",
            "selector": "0x61bc221a",
            "calldata_variants": [
                "0x61bc221a",
                "0x61bc221a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 286,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 827,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 915,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 22,
    "guards_detected": []
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 10
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 24
}