b44f82fa-8724-426d-b251-5ea570901c99
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 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 |
No slither job recorded yet.
[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":[]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 24
}
|