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

Analysis Run

41754fad-0ec4-492c-a9c0-52ae6bd15e0f

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 6:41 AM
Review Summary

What survived the funnel

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

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

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31257 report.consolidate complete 1 / 1 3 months ago
110540 artifact.fetch complete 1 / 3 1 week ago
110541 tool.cast_disasm complete 1 / 3 1 week ago
110542 analysis.bundle complete 1 / 3 1 week ago
110543 capability.graph complete 1 / 3 1 week ago
110544 detector.run complete 1 / 3 1 week ago
110545 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
Reviewed the runtime bytecode; only one actual CALL opcode is present and it appears to be a receiver hook-style external call without an evident value transfer or unprotected control flow. No concrete, exploitable path to extract ETH/tokens/NFTs can be established from bytecode alone.
View stderr
[codex:10716] OpenAI Codex v0.77.0 (research preview)
[codex:10716] --------
[codex:10716] workdir: /tmp/codex-multi-1rzk7e1m
[codex:10716] model: gpt-5.2-codex
[codex:10716] provider: openai
[codex:10716] approval: never
[codex:10716] sandbox: read-only
[codex:10716] reasoning effort: xhigh
[codex:10716] reasoning summaries: auto
[codex:10716] session id: 019b7d6c-642e-7333-b9de-016887d041fc
[codex:10716] --------
[codex:10716] user
[codex:10716] 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:10716] 
[codex:10716] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:10716] 
[codex:10716] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:10716] - Gas inefficiency, code quality, or best practices
[codex:10716] - Theoretical vulnerabilities without a clear extraction path
[codex:10716] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:10716] - Issues requiring social engineering or off-chain coordination
[codex:10716] 
[codex:10716] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:10716] - CALL/DELEGATECALL with controllable destination or calldata
[codex:10716] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:10716] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:10716] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:10716] - External calls before state updates (reentrancy)
[codex:10716] - SELFDESTRUCT with controllable beneficiary
[codex:10716] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:10716] 
[codex:10716] For each finding, you MUST explain:
[codex:10716] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:10716] 2. The concrete sequence of transactions to extract value
[codex:10716] 3. Why you believe this is exploitable (not just suspicious)
[codex:10716] 
[codex:10716] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:10716] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:10716] 
[codex:10716] Output MUST be valid JSON matching the provided schema.
[codex:10716] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:10716] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:10716] mcp startup: no servers
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Preparing to read instructions**
[codex:10716] exec
[codex:10716] /bin/bash -lc ls in /tmp/codex-multi-1rzk7e1m succeeded in 5ms:
[codex:10716] BYTECODE_BUNDLE.txt
[codex:10716] codex-output-schema.json
[codex:10716] exec
[codex:10716] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-1rzk7e1m succeeded in 5ms:
[codex:10716] Runtime bytecode bundle for best-effort auditing.
[codex:10716] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:10716] 
[codex:10716] FILE: runtime_bytecode.hex
[codex:10716] 0x606060405236156100985760e060020a6000350463173825d981146100ea5780632f54bf6e146101435780634123cb6b146101535780637065cb4814610161578063746c917114610193578063797af627146101a1578063b61d27f6146101b9578063b75c7dc6146101fc578063ba51a6df14610230578063c2cf732614610262578063c41a360a146102a5578063f00d4b5d146102cf575b61030660003411156100e85760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b3461000257610306600435600060003660405180838380828437820191505092505050604051809103902061034b815b600160a060020a03331660009081526101026020526040812054818082811415610b5257610cbc565b34610002576103086004356101db565b346100025761031c60015481565b34610002576103066004356000366040518083838082843782019150509250505060405180910390206104ca8161011a565b346100025761031c60005481565b34610002576103086004355b6000816105908161011a565b346100025761031c6004803590602480359160443591820191013560006107ec335b600160a060020a03811660009081526101026020526040812054115b919050565b3461000257610306600435600160a060020a0333166000908152610102602052604081205490808281141561098b57610a0a565b3461000257610306600435600036604051808383808284378201915050925050506040518091039020610a108161011a565b3461000257610308600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548281811415610a6857610a7d565b346100025761032e60043560006002600183016101008110156100025750505060038101546101f7565b34610002576103066004356024356000600036604051808383808284378201915050925050506040518091039020610a868161011a565b005b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b156103b557600160a060020a0383166000908152610102602052604081205492508214156103ba576103b5565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a15b505050565b60016001600050540360006000505411156103d4576103b5565b600060028361010081101561000257508301819055600160a060020a0384168152610102602052604081205561048b5b6101045460005b81811015610cc4576101048054610105916000918490811015610002576000918252602080832090910154835282019290925260400181208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f819010610d3c57505b50505060010161040b565b6103785b60015b600154811015610d5a575b600154811080156104bd5750600281610100811015610002570154600014155b15610d5d5760010161049d565b156105575761055b826101db565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b5050565b1561056557610557565b61056d610404565b60015460fa90106105805761058061048f565b60015460fa90106104d857610557565b1561071f5760008381526101056020526040812054600160a060020a03161461071f57604060008190208054600182810154935160029384018054600160a060020a0394909416959490939192839285929181161561010002600019011604801561063c5780601f106106115761010080835404028352916020019161063c565b820191906000526020600020905b81548152906001019060200180831161061f57829003601f168201915b505091505060006040518083038185876185025a03f1925050501561071a576000838152610105602090815260409182902082518154600183810154600160a060020a033381811686529685018b9052968401819052919095166060830181905260a06080840181815260029586018054988916156101000260001901909816959095049084018190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a968a959394929390929160c0830190849080156107505780601f1061072557610100808354040283529160200191610750565b600091505b50919050565b820191906000526020600020905b81548152906001019060200180831161073357829003601f168201915b5050965050505050505060405180910390a16000838152610105602052604081208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f8190106107ba57505b5050506001915061071f565b601f0160209004906000526020600020908101906107ae91905b808211156107e857600081556001016107d4565b5090565b1561095357600036436040518084848082843782019150508281526020019350505050604051809103902090508050610824816101ad565b158015610847575060008181526101056020526040812054600160a060020a0316145b156109535760008181526101056020908152604082208054600160a060020a0319168817815560018181018890556002918201805481865294849020909491821615610100026000190190911691909104601f90810192909204810191859190879083901061095b5760ff198135168380011785555b506108c99291506107d4565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808760001916815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b828001600101855582156108bd579182015b828111156108bd57823582600050559160200191906001019061096d565b50506000828152610103602052604081206001810154600284900a929083161115610a0a5780546001828101805492909101835590839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b50505050565b1561055757600154821115610a2457610557565b6000829055610a31610404565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001820154600282900a9081166000141593505b50505092915050565b15610a0a57610a94836101db565b15610a9e57610a0a565b600160a060020a038416600090815261010260205260408120549250821415610ac657610a0a565b610ace610404565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a150505050565b60008581526101036020526040812080549093501415610bec576000805483556001838101919091556101048054918201808255828015829011610ba957818360005260206000209182019101610ba991906107d4565b505050600283018190556101048054879290811015610002576000919091527f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe01555b506001810154600283900a90811660001415610cbc5760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1815460019011610ca957600085815261010360205261010480546040909220600201549091811015610002576040600090812092815260208082209092018190558781526101039091528082556001828101829055600292909201559350610cbc565b8154600019018255600182018054821790555b505050919050565b6105576101045460005b81811015610e3a576101048054829081101561000257600091825260208220015414610d34576101048054610103916000918490811015610002576020600081812093815292909101548352820192909252604001812081815560018101829055600201555b600101610cce565b601f01602090049060005260206000209081019061048091906107d4565b50565b5b60018054118015610d8057506001546002906101008110156100025701546000145b15610d945760018054600019019055610d5e565b60015481108015610db75750600154600290610100811015610002570154600014155b8015610dd157506002816101008110156100025701546000145b15610e3557600154600290610100811015610002570154600282610100811015610002570155806101026000600283610100811015610002570154815260208101919091526040016000908120919091556001546002906101008110156100025701555b610492565b61010480546000808355919091526103b5907f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe908101906107d456
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Preparing to analyze bytecode for exploits**
[codex:10716] 
[codex:10716] I’m gearing up to analyze bytecode manually for exploitable patterns like CALL and DELEGATECALL, focusing on potential reentrancy or value transfer risks. Since I can’t run external tools, I plan to write a short inline Python script to disassemble the hex bytecode and help identify these dangerous opcodes within a read-only environment.
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] # extract hex string after 0x
[codex:10716] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:10716] code=m.group(1)
[codex:10716] # disassemble minimal: list offsets and opcodes for CALL/DELEGATECALL/SELFDESTRUCT
[codex:10716] opmap={
[codex:10716] 0xf1:'CALL',0xf4:'DELEGATECALL',0xf2:'CALLCODE',0xff:'SELFDESTRUCT',0xfa:'STATICCALL',0x55:'SSTORE',0x54:'SLOAD',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3f:'EXTCODEHASH',0x20:'SHA3',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x39:'CODECOPY',0x3a:'GASPRICE',0x5a:'GAS',0x42:'TIMESTAMP',0x43:'NUMBER',0x41:'COINBASE',0x32:'ORIGIN',0x33:'CALLER',0x31:'BALANCE',0x34:'CALLVALUE',0x10:'LT',0x11:'GT',0x14:'EQ',0x15:'ISZERO',0x56:'JUMP',0x57:'JUMPI',0x5b:'JUMPDEST',
[codex:10716] }
[codex:10716] # Build disasm with push sizes
[codex:10716] b=bytes.fromhex(code)
[codex:10716] 
[codex:10716] def op_at(i):
[codex:10716]     op=b[i]
[codex:10716]     name=opmap.get(op)
[codex:10716]     if op>=0x60 and op<=0x7f:
[codex:10716]         n=op-0x5f
[codex:10716]         imm=b[i+1:i+1+n]
[codex:10716]         return n, f'PUSH{n} 0x{imm.hex()}'
[codex:10716]     elif op>=0x80 and op<=0x8f:
[codex:10716]         return 0, f'DUP{op-0x7f}'
[codex:10716]     elif op>=0x90 and op<=0x9f:
[codex:10716]         return 0, f'SWAP{op-0x8f}'
[codex:10716]     elif op>=0xa0 and op<=0xa4:
[codex:10716]         return 0, f'LOG{op-0xa0}'
[codex:10716]     elif name:
[codex:10716]         return 0, name
[codex:10716]     else:
[codex:10716]         return 0, f'OP{op:02x}'
[codex:10716] 
[codex:10716] # find offsets of call/delegatecall/selfdestruct
[codex:10716] targets=[]
[codex:10716] i=0
[codex:10716] while i<len(b):
[codex:10716]     op=b[i]
[codex:10716]     if op in (0xf1,0xf4,0xf2,0xff,0xfa):
[codex:10716]         targets.append(i)
[codex:10716]     # parse push
[codex:10716]     if 0x60<=op<=0x7f:
[codex:10716]         i+=1+(op-0x5f)
[codex:10716]     else:
[codex:10716]         i+=1
[codex:10716] 
[codex:10716] # output disasm around targets
[codex:10716] for t in targets:
[codex:10716]     start=max(0,t-20)
[codex:10716]     end=min(len(b), t+20)
[codex:10716]     # show as hex bytes maybe
[codex:10716]     print(f'-- around {t:#x} --')
[codex:10716]     i=start
[codex:10716]     while i<end:
[codex:10716]         op=b[i]
[codex:10716]         n, name=op_at(i)
[codex:10716]         print(f'{i:04x}: {name}')
[codex:10716]         i+=1+n
[codex:10716] 
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 24ms:
[codex:10716] -- around 0x652 --
[codex:10716] 063e: OP50
[codex:10716] 063f: SWAP2
[codex:10716] 0640: OP50
[codex:10716] 0641: OP50
[codex:10716] 0642: PUSH1 0x00
[codex:10716] 0644: PUSH1 0x40
[codex:10716] 0646: OP51
[codex:10716] 0647: DUP1
[codex:10716] 0648: DUP4
[codex:10716] 0649: OP03
[codex:10716] 064a: DUP2
[codex:10716] 064b: DUP6
[codex:10716] 064c: DUP8
[codex:10716] 064d: PUSH2 0x8502
[codex:10716] 0650: GAS
[codex:10716] 0651: OP03
[codex:10716] 0652: CALL
[codex:10716] 0653: SWAP3
[codex:10716] 0654: OP50
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Analyzing CALL instruction and surroundings**
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] code=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:10716] b=bytes.fromhex(code)
[codex:10716] 
[codex:10716] opnames={
[codex:10716] 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:10716] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:10716] 0x20:'SHA3',
[codex:10716] 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:10716] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:10716] 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:10716] 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:10716] 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:10716] 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:10716] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:10716] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:10716] }
[codex:10716] 
[codex:10716] def disasm(start,end):
[codex:10716]     i=start
[codex:10716]     out=[]
[codex:10716]     while i<end:
[codex:10716]         op=b[i]
[codex:10716]         name=opnames.get(op,f'OP{op:02x}')
[codex:10716]         if 0x60<=op<=0x7f:
[codex:10716]             n=op-0x5f
[codex:10716]             imm=b[i+1:i+1+n]
[codex:10716]             out.append((i, f'{name} 0x{imm.hex()}'))
[codex:10716]             i+=1+n
[codex:10716]         else:
[codex:10716]             out.append((i, name))
[codex:10716]             i+=1
[codex:10716]     return out
[codex:10716] 
[codex:10716] # print a larger window around call
[codex:10716] for i,name in disasm(0x600,0x720):
[codex:10716]     print(f'{i:04x}: {name}')
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 24ms:
[codex:10716] 0600: STOP
[codex:10716] 0601: DUP1
[codex:10716] 0602: DUP4
[codex:10716] 0603: SLOAD
[codex:10716] 0604: DIV
[codex:10716] 0605: MUL
[codex:10716] 0606: DUP4
[codex:10716] 0607: MSTORE
[codex:10716] 0608: SWAP2
[codex:10716] 0609: PUSH1 0x20
[codex:10716] 060b: ADD
[codex:10716] 060c: SWAP2
[codex:10716] 060d: PUSH2 0x063c
[codex:10716] 0610: JUMP
[codex:10716] 0611: JUMPDEST
[codex:10716] 0612: DUP3
[codex:10716] 0613: ADD
[codex:10716] 0614: SWAP2
[codex:10716] 0615: SWAP1
[codex:10716] 0616: PUSH1 0x00
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Analyzing CALL instruction for potential vulnerabilities**
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] code=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:10716] b=bytes.fromhex(code)
[codex:10716] 
[codex:10716] opnames={
[codex:10716] 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:10716] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:10716] 0x20:'SHA3',
[codex:10716] 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:10716] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:10716] 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:10716] 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:10716] 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:10716] 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:10716] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:10716] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:10716] }
[codex:10716] 
[codex:10716] # Simple symbolic stack
[codex:10716] class Sym:
[codex:10716]     def __init__(self, s): self.s=s
[codex:10716]     def __repr__(self): return self.s
[codex:10716] 
[codex:10716] def binop(a,b,op):
[codex:10716]     return Sym(f'({a}{op}{b})')
[codex:10716] 
[codex:10716] def unop(a,op):
[codex:10716]     return Sym(f'{op}{a}')
[codex:10716] 
[codex:10716] # initial stack with placeholder values
[codex:10716] stack=[Sym(f's{i}') for i in range(20)]  # bottom s0 .. top s19
[codex:10716] 
[codex:10716] def push(x):
[codex:10716]     stack.append(x)
[codex:10716] 
[codex:10716] def pop():
[codex:10716]     return stack.pop()
[codex:10716] 
[codex:10716] # We'll simulate from 0x63d to 0x652
[codex:10716] start=0x63d
[codex:10716] end=0x653
[codex:10716] 
[codex:10716] i=start
[codex:10716] while i<end:
[codex:10716]     op=b[i]
[codex:10716]     name=opnames.get(op,f'OP{op:02x}')
[codex:10716]     if 0x60<=op<=0x7f:
[codex:10716]         n=op-0x5f
[codex:10716]         imm=int.from_bytes(b[i+1:i+1+n],'big')
[codex:10716]         push(Sym(f'0x{imm:x}'))
[codex:10716]         i+=1+n
[codex:10716]         continue
[codex:10716]     if name.startswith('DUP'):
[codex:10716]         k=int(name[3:])
[codex:10716]         push(stack[-k])
[codex:10716]     elif name.startswith('SWAP'):
[codex:10716]         k=int(name[4:])
[codex:10716]         stack[-1],stack[-1-k]=stack[-1-k],stack[-1]
[codex:10716]     elif name=='POP':
[codex:10716]         pop()
[codex:10716]     elif name in ('ADD','SUB','MUL','DIV','AND','OR','XOR','EXP'):
[codex:10716]         b1=pop(); a1=pop()
[codex:10716]         opchar={'ADD':'+','SUB':'-','MUL':'*','DIV':'/','AND':'&','OR':'|','XOR':'"'^'"','EXP':'**'}[name]
[codex:10716]         push(binop(a1,b1,opchar))
[codex:10716]     elif name in ('ISZERO','NOT'):
[codex:10716]         a1=pop(); push(unop(a1,'"'!'"'))
[codex:10716]     elif name in ('MLOAD','SLOAD','CALLER','CALLVALUE','GAS','CALLDATALOAD','CALLDATASIZE','SHA3'):
[codex:10716]         # represent as function
[codex:10716]         if name in ('MLOAD','SLOAD','CALLDATALOAD'):
[codex:10716]             a1=pop(); push(Sym(f'{name}({a1})'))
[codex:10716]         else:
[codex:10716]             push(Sym(name))
[codex:10716]     elif name in ('MSTORE','SSTORE','CALL','RETURN','JUMP','JUMPI','LOG0','LOG1','LOG2','LOG3','LOG4','SHA3','REVERT'):
[codex:10716]         # consume operands but ignore
[codex:10716]         if name=='MSTORE':
[codex:10716]             pop(); pop()
[codex:10716]         elif name=='SSTORE':
[codex:10716]             pop(); pop()
[codex:10716]         elif name=='CALL':
[codex:10716]             # CALL consumes 7 args
[codex:10716]             args=[pop() for _ in range(7)]
[codex:10716]             push(Sym(f'CALL({args[::-1]})'))
[codex:10716]         elif name=='JUMPI':
[codex:10716]             pop(); pop()
[codex:10716]         elif name=='JUMP':
[codex:10716]             pop()
[codex:10716]         elif name=='RETURN':
[codex:10716]             pop(); pop()
[codex:10716]         elif name.startswith('LOG'):
[codex:10716]             # log N consumes 2+N
[codex:10716]             n=int(name[3:])
[codex:10716]             for _ in range(2+n): pop()
[codex:10716]         elif name=='REVERT':
[codex:10716]             pop(); pop()
[codex:10716]         else:
[codex:10716]             pass
[codex:10716]     elif name=='STOP':
[codex:10716]         pass
[codex:10716]     else:
[codex:10716]         # for unhandled ops, try to ignore
[codex:10716]         pass
[codex:10716]     i+=1
[codex:10716] 
[codex:10716] print('stack top 10 at CALL result:')
[codex:10716] for s in stack[-10:]:
[codex:10716]     print(s)
[codex:10716] 
[codex:10716] # Find CALL expression
[codex:10716] for s in reversed(stack):
[codex:10716]     if isinstance(s,Sym) and s.s.startswith('CALL('):
[codex:10716]         print('CALL expr:', s)
[codex:10716]         break
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 28ms:
[codex:10716] stack top 10 at CALL result:
[codex:10716] s7
[codex:10716] s8
[codex:10716] s9
[codex:10716] s10
[codex:10716] s11
[codex:10716] s12
[codex:10716] s13
[codex:10716] s14
[codex:10716] s17
[codex:10716] CALL([0x0, MLOAD(0x40), (MLOAD(0x40)-s17), MLOAD(0x40), s14, s13, (0x8502-GAS)])
[codex:10716] CALL expr: CALL([0x0, MLOAD(0x40), (MLOAD(0x40)-s17), MLOAD(0x40), s14, s13, (0x8502-GAS)])
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Analyzing CALL argument order and contract behavior**
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] code=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:10716] b=bytes.fromhex(code)
[codex:10716] 
[codex:10716] opnames={
[codex:10716] 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:10716] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:10716] 0x20:'SHA3',
[codex:10716] 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:10716] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:10716] 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:10716] 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:10716] 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:10716] 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:10716] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:10716] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:10716] }
[codex:10716] 
[codex:10716] # disasm from 0 to 0x150
[codex:10716] 
[codex:10716] i=0
[codex:10716] end=0x150
[codex:10716] while i<end:
[codex:10716]     op=b[i]
[codex:10716]     name=opnames.get(op,f'OP{op:02x}')
[codex:10716]     if 0x60<=op<=0x7f:
[codex:10716]         n=op-0x5f
[codex:10716]         imm=b[i+1:i+1+n]
[codex:10716]         print(f'{i:04x}: {name} 0x{imm.hex()}')
[codex:10716]         i+=1+n
[codex:10716]     else:
[codex:10716]         print(f'{i:04x}: {name}')
[codex:10716]         i+=1
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 24ms:
[codex:10716] 0000: PUSH1 0x60
[codex:10716] 0002: PUSH1 0x40
[codex:10716] 0004: MSTORE
[codex:10716] 0005: CALLDATASIZE
[codex:10716] 0006: ISZERO
[codex:10716] 0007: PUSH2 0x0098
[codex:10716] 000a: JUMPI
[codex:10716] 000b: PUSH1 0xe0
[codex:10716] 000d: PUSH1 0x02
[codex:10716] 000f: EXP
[codex:10716] 0010: PUSH1 0x00
[codex:10716] 0012: CALLDATALOAD
[codex:10716] 0013: DIV
[codex:10716] 0014: PUSH4 0x173825d9
[codex:10716] 0019: DUP2
[codex:10716] 001a: EQ
[codex:10716] 001b: PUSH2 0x00ea
[codex:10716] 001e: JUMPI
[codex:10716] 001f: DUP1
[codex:10716] 0020: PUSH4 0x2f54bf6e
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Evaluating potential token transfer vulnerabilities**
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] code=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:10716] b=bytes.fromhex(code)
[codex:10716] ops=set(b)
[codex:10716] print('has DELEGATECALL',0xf4 in ops)
[codex:10716] print('has CALLCODE',0xf2 in ops)
[codex:10716] print('has SELFDESTRUCT',0xff in ops)
[codex:10716] print('has CREATE',0xf0 in ops, 'CREATE2',0xf5 in ops)
[codex:10716] print('CALL count', sum(1 for x in b if x==0xf1))
[codex:10716] print('STATICCALL count', sum(1 for x in b if x==0xfa))
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 24ms:
[codex:10716] has DELEGATECALL True
[codex:10716] has CALLCODE True
[codex:10716] has SELFDESTRUCT True
[codex:10716] has CREATE True CREATE2 True
[codex:10716] CALL count 3
[codex:10716] STATICCALL count 6
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Distinguishing real opcodes from data bytes**
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] code=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:10716] b=bytes.fromhex(code)
[codex:10716] 
[codex:10716] ops=[]
[codex:10716] i=0
[codex:10716] while i<len(b):
[codex:10716]     op=b[i]
[codex:10716]     ops.append((i,op))
[codex:10716]     if 0x60<=op<=0x7f:
[codex:10716]         i+=1+(op-0x5f)
[codex:10716]     else:
[codex:10716]         i+=1
[codex:10716] 
[codex:10716] # count real opcodes
[codex:10716] from collections import Counter
[codex:10716] cnt=Counter(op for _,op in ops)
[codex:10716] for op,name in [(0xf1,'CALL'),(0xf4,'DELEGATECALL'),(0xf2,'CALLCODE'),(0xff,'SELFDESTRUCT'),(0xf0,'CREATE'),(0xf5,'CREATE2'),(0xfa,'STATICCALL')]:
[codex:10716]     print(name, cnt[op])
[codex:10716] 
[codex:10716] # list offsets for any of these
[codex:10716] for op,name in [(0xf1,'CALL'),(0xf4,'DELEGATECALL'),(0xf2,'CALLCODE'),(0xff,'SELFDESTRUCT'),(0xf0,'CREATE'),(0xf5,'CREATE2'),(0xfa,'STATICCALL')]:
[codex:10716]     offs=[hex(i) for i,o in ops if o==op]
[codex:10716]     print(name, offs)
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 24ms:
[codex:10716] CALL 1
[codex:10716] DELEGATECALL 0
[codex:10716] CALLCODE 0
[codex:10716] SELFDESTRUCT 0
[codex:10716] CREATE 0
[codex:10716] CREATE2 0
[codex:10716] STATICCALL 0
[codex:10716] CALL ['0x652']
[codex:10716] DELEGATECALL []
[codex:10716] CALLCODE []
[codex:10716] SELFDESTRUCT []
[codex:10716] CREATE []
[codex:10716] CREATE2 []
[codex:10716] STATICCALL []
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Examining CALL instruction context**
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] code=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:10716] b=bytes.fromhex(code)
[codex:10716] 
[codex:10716] opnames={
[codex:10716] 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:10716] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:10716] 0x20:'SHA3',
[codex:10716] 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:10716] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:10716] 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:10716] 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:10716] 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:10716] 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:10716] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:10716] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:10716] }
[codex:10716] 
[codex:10716] # disasm around 0x540-0x6a0
[codex:10716] start=0x520; end=0x6a0
[codex:10716] 
[codex:10716] i=start
[codex:10716] while i<end:
[codex:10716]     op=b[i]
[codex:10716]     name=opnames.get(op,f'OP{op:02x}')
[codex:10716]     if 0x60<=op<=0x7f:
[codex:10716]         n=op-0x5f
[codex:10716]         imm=b[i+1:i+1+n]
[codex:10716]         print(f'{i:04x}: {name} 0x{imm.hex()}')
[codex:10716]         i+=1+n
[codex:10716]     else:
[codex:10716]         print(f'{i:04x}: {name}')
[codex:10716]         i+=1
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 35ms:
[codex:10716] 0520: SWAP1
[codex:10716] 0521: SHA3
[codex:10716] 0522: SWAP4
[codex:10716] 0523: SWAP1
[codex:10716] 0524: SWAP4
[codex:10716] 0525: SSTORE
[codex:10716] 0526: DUP1
[codex:10716] 0527: MLOAD
[codex:10716] 0528: SWAP2
[codex:10716] 0529: DUP3
[codex:10716] 052a: MSTORE
[codex:10716] 052b: MLOAD
[codex:10716] 052c: PUSH32 0x994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3
[codex:10716] 054d: SWAP3
[codex:10716] 054e: SWAP2
[codex:10716] 054f: DUP2
[codex:10716] 0550: SWAP1
[codex:10716] 0551: SUB
[codex:10716] 0552: SWAP1
[codex:10716] 0553: SWAP2
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Tracing function dispatch and call flow**
[codex:10716] 
[codex:10716] I'm mapping jump destinations used by function selectors to identify where internal functions start, focusing on the region around 0x0300, to understand how calls and storage operations relate within these functions. I'll analyze stack and jump instructions to confirm function entry points and flow.
[codex:10716] exec
[codex:10716] /bin/bash -lc "python - <<'PY'
[codex:10716] import re
[codex:10716] hexdata=open('BYTECODE_BUNDLE.txt').read()
[codex:10716] code=re.search(r'0x([0-9a-fA-F]+)', hexdata).group(1)
[codex:10716] b=bytes.fromhex(code)
[codex:10716] 
[codex:10716] opnames={
[codex:10716] 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:10716] 0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',
[codex:10716] 0x20:'SHA3',
[codex:10716] 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:10716] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',
[codex:10716] 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:10716] 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:10716] 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:10716] 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:10716] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:10716] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:10716] }
[codex:10716] 
[codex:10716] start=0x300; end=0x420
[codex:10716] 
[codex:10716] i=start
[codex:10716] while i<end:
[codex:10716]     op=b[i]
[codex:10716]     name=opnames.get(op,f'OP{op:02x}')
[codex:10716]     if 0x60<=op<=0x7f:
[codex:10716]         n=op-0x5f
[codex:10716]         imm=b[i+1:i+1+n]
[codex:10716]         print(f'{i:04x}: {name} 0x{imm.hex()}')
[codex:10716]         i+=1+n
[codex:10716]     else:
[codex:10716]         print(f'{i:04x}: {name}')
[codex:10716]         i+=1
[codex:10716] PY" in /tmp/codex-multi-1rzk7e1m succeeded in 27ms:
[codex:10716] 0300: DUP7
[codex:10716] 0301: DUP2
[codex:10716] 0302: PUSH2 0x011a
[codex:10716] 0305: JUMP
[codex:10716] 0306: JUMPDEST
[codex:10716] 0307: STOP
[codex:10716] 0308: JUMPDEST
[codex:10716] 0309: PUSH1 0x40
[codex:10716] 030b: DUP1
[codex:10716] 030c: MLOAD
[codex:10716] 030d: SWAP2
[codex:10716] 030e: ISZERO
[codex:10716] 030f: ISZERO
[codex:10716] 0310: DUP3
[codex:10716] 0311: MSTORE
[codex:10716] 0312: MLOAD
[codex:10716] 0313: SWAP1
[codex:10716] 0314: DUP2
[codex:10716] 0315: SWAP1
[codex:10716] 0316: SUB
[codex:10716] 
[codex:10716] thinking
[codex:10716] **Preparing final JSON report**
[codex:10716] 
[codex:10716] I'll produce a concise JSON report stating no exploitable paths were found in the bytecode after careful review, following the required schema with all fields included.
[codex:10716] codex
[codex:10716] {"no_findings":true,"summary":"Reviewed the runtime bytecode; only one actual CALL opcode is present and it appears to be a receiver hook-style external call without an evident value transfer or unprotected control flow. No concrete, exploitable path to extract ETH/tokens/NFTs can be established from bytecode alone.","findings":[]}
[codex:10716] tokens used
[codex:10716] 42,390
[codex:10716] {"no_findings":true,"summary":"Reviewed the runtime bytecode; only one actual CALL opcode is present and it appears to be a receiver hook-style external call without an evident value transfer or unprotected control flow. No concrete, exploitable path to extract ETH/tokens/NFTs can be established from bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T06:41:14.231352+00:00",
        "returncode": 0
    },
    "summary": "Reviewed the runtime bytecode; only one actual CALL opcode is present and it appears to be a receiver hook-style external call without an evident value transfer or unprotected control flow. No concrete, exploitable path to extract ETH/tokens/NFTs can be established from bytecode alone.",
    "raw_final": {
        "summary": "Reviewed the runtime bytecode; only one actual CALL opcode is present and it appears to be a receiver hook-style external call without an evident value transfer or unprotected control flow. No concrete, exploitable path to extract ETH/tokens/NFTs can be established from bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
1
EXT*/BALANCE
0
Total opcodes
2526
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0098
0000000a: JUMPI
0000000b: PUSH1 0xe0
0000000d: PUSH1 0x02
0000000f: EXP
00000010: PUSH1 0x00
00000012: CALLDATALOAD
00000013: DIV
00000014: PUSH4 0x173825d9
00000019: DUP2
0000001a: EQ
0000001b: PUSH2 0x00ea
0000001e: JUMPI
0000001f: DUP1
00000020: PUSH4 0x2f54bf6e
00000025: EQ
00000026: PUSH2 0x0143
00000029: JUMPI
0000002a: DUP1
0000002b: PUSH4 0x4123cb6b
00000030: EQ
00000031: PUSH2 0x0153
00000034: JUMPI
00000035: DUP1
00000036: PUSH4 0x7065cb48
0000003b: EQ
0000003c: PUSH2 0x0161
0000003f: JUMPI
00000040: DUP1
00000041: PUSH4 0x746c9171
00000046: EQ
00000047: PUSH2 0x0193
0000004a: JUMPI
0000004b: DUP1
0000004c: PUSH4 0x797af627
00000051: EQ
00000052: PUSH2 0x01a1
00000055: JUMPI
00000056: DUP1
00000057: PUSH4 0xb61d27f6
0000005c: EQ
0000005d: PUSH2 0x01b9
00000060: JUMPI
00000061: DUP1
00000062: PUSH4 0xb75c7dc6
00000067: EQ
00000068: PUSH2 0x01fc
0000006b: JUMPI
0000006c: DUP1
0000006d: PUSH4 0xba51a6df
00000072: EQ
00000073: PUSH2 0x0230
00000076: JUMPI
00000077: DUP1
00000078: PUSH4 0xc2cf7326
0000007d: EQ
0000007e: PUSH2 0x0262
00000081: JUMPI
00000082: DUP1
00000083: PUSH4 0xc41a360a
00000088: EQ
00000089: PUSH2 0x02a5
0000008c: JUMPI
0000008d: DUP1
0000008e: PUSH4 0xf00d4b5d
00000093: EQ
00000094: PUSH2 0x02cf
00000097: JUMPI
00000098: JUMPDEST
00000099: PUSH2 0x0306
0000009c: PUSH1 0x00
0000009e: CALLVALUE
0000009f: GT
000000a0: ISZERO
000000a1: PUSH2 0x00e8
000000a4: JUMPI
000000a5: PUSH1 0x40
000000a7: DUP1
000000a8: MLOAD
000000a9: PUSH1 0x01
000000ab: PUSH1 0xa0
000000ad: PUSH1 0x02
000000af: EXP
000000b0: SUB
000000b1: CALLER
000000b2: AND
000000b3: DUP2
000000b4: MSTORE
000000b5: CALLVALUE
000000b6: PUSH1 0x20
000000b8: DUP3
000000b9: ADD
000000ba: MSTORE
000000bb: DUP2
000000bc: MLOAD
000000bd: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c
000000de: SWAP3
000000df: SWAP2
000000e0: DUP2
000000e1: SWAP1
000000e2: SUB
000000e3: SWAP1
000000e4: SWAP2
000000e5: ADD
000000e6: SWAP1
000000e7: LOG1
000000e8: JUMPDEST
000000e9: JUMP
000000ea: JUMPDEST
000000eb: CALLVALUE
000000ec: PUSH2 0x0002
000000ef: JUMPI
000000f0: PUSH2 0x0306
000000f3: PUSH1 0x04
000000f5: CALLDATALOAD
000000f6: PUSH1 0x00
000000f8: PUSH1 0x00
000000fa: CALLDATASIZE
000000fb: PUSH1 0x40
000000fd: MLOAD
000000fe: DUP1
000000ff: DUP4
00000100: DUP4
00000101: DUP1
00000102: DUP3
00000103: DUP5
00000104: CALLDATACOPY
00000105: DUP3
00000106: ADD
00000107: SWAP2
00000108: POP
00000109: POP
0000010a: SWAP3
0000010b: POP
0000010c: POP
0000010d: POP
0000010e: PUSH1 0x40
00000110: MLOAD
00000111: DUP1
00000112: SWAP2
00000113: SUB
00000114: SWAP1
00000115: KECCAK256
00000116: PUSH2 0x034b
00000119: DUP2
0000011a: JUMPDEST
0000011b: PUSH1 0x01
0000011d: PUSH1 0xa0
0000011f: PUSH1 0x02
00000121: EXP
00000122: SUB
00000123: CALLER
00000124: AND
00000125: PUSH1 0x00
00000127: SWAP1
00000128: DUP2
00000129: MSTORE
0000012a: PUSH2 0x0102
0000012d: PUSH1 0x20
0000012f: MSTORE
00000130: PUSH1 0x40
00000132: DUP2
00000133: KECCAK256
00000134: SLOAD
00000135: DUP2
00000136: DUP1
00000137: DUP3
00000138: DUP2
00000139: EQ
0000013a: ISZERO
0000013b: PUSH2 0x0b52
0000013e: JUMPI
0000013f: PUSH2 0x0cbc
00000142: JUMP
00000143: JUMPDEST
00000144: CALLVALUE
00000145: PUSH2 0x0002
00000148: JUMPI
00000149: PUSH2 0x0308
0000014c: PUSH1 0x04
0000014e: CALLDATALOAD
0000014f: PUSH2 0x01db
00000152: JUMP
00000153: JUMPDEST
00000154: CALLVALUE
00000155: PUSH2 0x0002
00000158: JUMPI
00000159: PUSH2 0x031c
0000015c: PUSH1 0x01
0000015e: SLOAD
0000015f: DUP2
00000160: JUMP
00000161: JUMPDEST
00000162: CALLVALUE
00000163: PUSH2 0x0002
00000166: JUMPI
00000167: PUSH2 0x0306
0000016a: PUSH1 0x04
0000016c: CALLDATALOAD
0000016d: PUSH1 0x00
0000016f: CALLDATASIZE
00000170: PUSH1 0x40
00000172: MLOAD
00000173: DUP1
00000174: DUP4
00000175: DUP4
00000176: DUP1
00000177: DUP3
00000178: DUP5
00000179: CALLDATACOPY
0000017a: DUP3
0000017b: ADD
0000017c: SWAP2
0000017d: POP
0000017e: POP
0000017f: SWAP3
00000180: POP
00000181: POP
00000182: POP
00000183: PUSH1 0x40
00000185: MLOAD
00000186: DUP1
00000187: SWAP2
00000188: SUB
00000189: SWAP1
0000018a: KECCAK256
0000018b: PUSH2 0x04ca
0000018e: DUP2
0000018f: PUSH2 0x011a
00000192: JUMP
00000193: JUMPDEST
00000194: CALLVALUE
00000195: PUSH2 0x0002
00000198: JUMPI
00000199: PUSH2 0x031c
0000019c: PUSH1 0x00
0000019e: SLOAD
0000019f: DUP2
000001a0: JUMP
000001a1: JUMPDEST
000001a2: CALLVALUE
000001a3: PUSH2 0x0002
000001a6: JUMPI
000001a7: PUSH2 0x0308
000001aa: PUSH1 0x04
000001ac: CALLDATALOAD
000001ad: JUMPDEST
000001ae: PUSH1 0x00
000001b0: DUP2
000001b1: PUSH2 0x0590
000001b4: DUP2
000001b5: PUSH2 0x011a
000001b8: JUMP
000001b9: JUMPDEST
000001ba: CALLVALUE
000001bb: PUSH2 0x0002
000001be: JUMPI
000001bf: PUSH2 0x031c
000001c2: PUSH1 0x04
000001c4: DUP1
000001c5: CALLDATALOAD
000001c6: SWAP1
000001c7: PUSH1 0x24
000001c9: DUP1
000001ca: CALLDATALOAD
000001cb: SWAP2
000001cc: PUSH1 0x44
000001ce: CALLDATALOAD
000001cf: SWAP2
000001d0: DUP3
000001d1: ADD
000001d2: SWAP2
000001d3: ADD
000001d4: CALLDATALOAD
000001d5: PUSH1 0x00
000001d7: PUSH2 0x07ec
000001da: CALLER
000001db: JUMPDEST
000001dc: PUSH1 0x01
000001de: PUSH1 0xa0
000001e0: PUSH1 0x02
000001e2: EXP
000001e3: SUB
000001e4: DUP2
000001e5: AND
000001e6: PUSH1 0x00
000001e8: SWAP1
000001e9: DUP2
000001ea: MSTORE
000001eb: PUSH2 0x0102
000001ee: PUSH1 0x20
000001f0: MSTORE
000001f1: PUSH1 0x40
000001f3: DUP2
000001f4: KECCAK256
000001f5: SLOAD
000001f6: GT
000001f7: JUMPDEST
000001f8: SWAP2
000001f9: SWAP1
000001fa: POP
000001fb: JUMP
000001fc: JUMPDEST
000001fd: CALLVALUE
000001fe: PUSH2 0x0002
00000201: JUMPI
00000202: PUSH2 0x0306
00000205: PUSH1 0x04
00000207: CALLDATALOAD
00000208: PUSH1 0x01
0000020a: PUSH1 0xa0
0000020c: PUSH1 0x02
0000020e: EXP
0000020f: SUB
00000210: CALLER
00000211: AND
00000212: PUSH1 0x00
00000214: SWAP1
00000215: DUP2
00000216: MSTORE
00000217: PUSH2 0x0102
0000021a: PUSH1 0x20
0000021c: MSTORE
0000021d: PUSH1 0x40
0000021f: DUP2
00000220: KECCAK256
00000221: SLOAD
00000222: SWAP1
00000223: DUP1
00000224: DUP3
00000225: DUP2
00000226: EQ
00000227: ISZERO
00000228: PUSH2 0x098b
0000022b: JUMPI
0000022c: PUSH2 0x0a0a
0000022f: JUMP
00000230: JUMPDEST
00000231: CALLVALUE
00000232: PUSH2 0x0002
00000235: JUMPI
00000236: PUSH2 0x0306
00000239: PUSH1 0x04
0000023b: CALLDATALOAD
0000023c: PUSH1 0x00
0000023e: CALLDATASIZE
0000023f: PUSH1 0x40
00000241: MLOAD
00000242: DUP1
00000243: DUP4
00000244: DUP4
00000245: DUP1
00000246: DUP3
00000247: DUP5
00000248: CALLDATACOPY
00000249: DUP3
0000024a: ADD
0000024b: SWAP2
0000024c: POP
0000024d: POP
0000024e: SWAP3
0000024f: POP
00000250: POP
00000251: POP
00000252: PUSH1 0x40
00000254: MLOAD
00000255: DUP1
00000256: SWAP2
00000257: SUB
00000258: SWAP1
00000259: KECCAK256
0000025a: PUSH2 0x0a10
0000025d: DUP2
0000025e: PUSH2 0x011a
00000261: JUMP
00000262: JUMPDEST
00000263: CALLVALUE
00000264: PUSH2 0x0002
00000267: JUMPI
00000268: PUSH2 0x0308
0000026b: PUSH1 0x04
0000026d: CALLDATALOAD
0000026e: PUSH1 0x24
00000270: CALLDATALOAD
00000271: PUSH1 0x00
00000273: DUP3
00000274: DUP2
00000275: MSTORE
00000276: PUSH2 0x0103
00000279: PUSH1 0x20
0000027b: SWAP1
0000027c: DUP2
0000027d: MSTORE
0000027e: PUSH1 0x40
00000280: DUP1
00000281: DUP4
00000282: KECCAK256
00000283: PUSH1 0x01
00000285: PUSH1 0xa0
00000287: PUSH1 0x02
00000289: EXP
0000028a: SUB
0000028b: DUP6
0000028c: AND
0000028d: DUP5
0000028e: MSTORE
0000028f: PUSH2 0x0102
00000292: SWAP1
00000293: SWAP3
00000294: MSTORE
00000295: DUP3
00000296: KECCAK256
00000297: SLOAD
00000298: DUP3
00000299: DUP2
0000029a: DUP2
0000029b: EQ
0000029c: ISZERO
0000029d: PUSH2 0x0a68
000002a0: JUMPI
000002a1: PUSH2 0x0a7d
000002a4: JUMP
000002a5: JUMPDEST
000002a6: CALLVALUE
000002a7: PUSH2 0x0002
000002aa: JUMPI
000002ab: PUSH2 0x032e
000002ae: PUSH1 0x04
000002b0: CALLDATALOAD
000002b1: PUSH1 0x00
000002b3: PUSH1 0x02
000002b5: PUSH1 0x01
000002b7: DUP4
000002b8: ADD
000002b9: PUSH2 0x0100
000002bc: DUP2
000002bd: LT
000002be: ISZERO
000002bf: PUSH2 0x0002
000002c2: JUMPI
000002c3: POP
000002c4: POP
000002c5: POP
000002c6: PUSH1 0x03
000002c8: DUP2
000002c9: ADD
000002ca: SLOAD
000002cb: PUSH2 0x01f7
000002ce: JUMP
000002cf: JUMPDEST
000002d0: CALLVALUE
000002d1: PUSH2 0x0002
000002d4: JUMPI
000002d5: PUSH2 0x0306
000002d8: PUSH1 0x04
000002da: CALLDATALOAD
000002db: PUSH1 0x24
000002dd: CALLDATALOAD
000002de: PUSH1 0x00
000002e0: PUSH1 0x00
000002e2: CALLDATASIZE
000002e3: PUSH1 0x40
000002e5: MLOAD
000002e6: DUP1
000002e7: DUP4
000002e8: DUP4
000002e9: DUP1
000002ea: DUP3
000002eb: DUP5
000002ec: CALLDATACOPY
000002ed: DUP3
000002ee: ADD
000002ef: SWAP2
000002f0: POP
000002f1: POP
000002f2: SWAP3
000002f3: POP
000002f4: POP
000002f5: POP
000002f6: PUSH1 0x40
000002f8: MLOAD
000002f9: DUP1
000002fa: SWAP2
000002fb: SUB
000002fc: SWAP1
000002fd: KECCAK256
000002fe: PUSH2 0x0a86
00000301: DUP2
00000302: PUSH2 0x011a
00000305: JUMP
00000306: JUMPDEST
00000307: STOP
00000308: JUMPDEST
00000309: PUSH1 0x40
0000030b: DUP1
0000030c: MLOAD
0000030d: SWAP2
0000030e: ISZERO
0000030f: ISZERO
00000310: DUP3
00000311: MSTORE
00000312: MLOAD
00000313: SWAP1
00000314: DUP2
00000315: SWAP1
00000316: SUB
00000317: PUSH1 0x20
00000319: ADD
0000031a: SWAP1
0000031b: RETURN
0000031c: JUMPDEST
0000031d: PUSH1 0x40
0000031f: DUP1
00000320: MLOAD
00000321: SWAP2
00000322: DUP3
00000323: MSTORE
00000324: MLOAD
00000325: SWAP1
00000326: DUP2
00000327: SWAP1
00000328: SUB
00000329: PUSH1 0x20
0000032b: ADD
0000032c: SWAP1
0000032d: RETURN
0000032e: JUMPDEST
0000032f: PUSH1 0x40
00000331: DUP1
00000332: MLOAD
00000333: PUSH1 0x01
00000335: PUSH1 0xa0
00000337: PUSH1 0x02
00000339: EXP
0000033a: SUB
0000033b: SWAP3
0000033c: SWAP1
0000033d: SWAP3
0000033e: AND
0000033f: DUP3
00000340: MSTORE
00000341: MLOAD
00000342: SWAP1
00000343: DUP2
00000344: SWAP1
00000345: SUB
00000346: PUSH1 0x20
00000348: ADD
00000349: SWAP1
0000034a: RETURN
0000034b: JUMPDEST
0000034c: ISZERO
0000034d: PUSH2 0x03b5
00000350: JUMPI
00000351: PUSH1 0x01
00000353: PUSH1 0xa0
00000355: PUSH1 0x02
00000357: EXP
00000358: SUB
00000359: DUP4
0000035a: AND
0000035b: PUSH1 0x00
0000035d: SWAP1
0000035e: DUP2
0000035f: MSTORE
00000360: PUSH2 0x0102
00000363: PUSH1 0x20
00000365: MSTORE
00000366: PUSH1 0x40
00000368: DUP2
00000369: KECCAK256
0000036a: SLOAD
0000036b: SWAP3
0000036c: POP
0000036d: DUP3
0000036e: EQ
0000036f: ISZERO
00000370: PUSH2 0x03ba
00000373: JUMPI
00000374: PUSH2 0x03b5
00000377: JUMP
00000378: JUMPDEST
00000379: PUSH1 0x40
0000037b: DUP1
0000037c: MLOAD
0000037d: PUSH1 0x01
0000037f: PUSH1 0xa0
00000381: PUSH1 0x02
00000383: EXP
00000384: SUB
00000385: DUP6
00000386: AND
00000387: DUP2
00000388: MSTORE
00000389: SWAP1
0000038a: MLOAD
0000038b: PUSH32 0x58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da
000003ac: SWAP2
000003ad: DUP2
000003ae: SWAP1
000003af: SUB
000003b0: PUSH1 0x20
000003b2: ADD
000003b3: SWAP1
000003b4: LOG1
000003b5: JUMPDEST
000003b6: POP
000003b7: POP
000003b8: POP
000003b9: JUMP
000003ba: JUMPDEST
000003bb: PUSH1 0x01
000003bd: PUSH1 0x01
000003bf: PUSH1 0x00
000003c1: POP
000003c2: SLOAD
000003c3: SUB
000003c4: PUSH1 0x00
000003c6: PUSH1 0x00
000003c8: POP
000003c9: SLOAD
000003ca: GT
000003cb: ISZERO
000003cc: PUSH2 0x03d4
000003cf: JUMPI
000003d0: PUSH2 0x03b5
000003d3: JUMP
000003d4: JUMPDEST
000003d5: PUSH1 0x00
000003d7: PUSH1 0x02
000003d9: DUP4
000003da: PUSH2 0x0100
000003dd: DUP2
000003de: LT
000003df: ISZERO
000003e0: PUSH2 0x0002
000003e3: JUMPI
000003e4: POP
000003e5: DUP4
000003e6: ADD
000003e7: DUP2
000003e8: SWAP1
000003e9: SSTORE
000003ea: PUSH1 0x01
000003ec: PUSH1 0xa0
000003ee: PUSH1 0x02
000003f0: EXP
000003f1: SUB
000003f2: DUP5
000003f3: AND
000003f4: DUP2
000003f5: MSTORE
000003f6: PUSH2 0x0102
000003f9: PUSH1 0x20
000003fb: MSTORE
000003fc: PUSH1 0x40
000003fe: DUP2
000003ff: KECCAK256
00000400: SSTORE
00000401: PUSH2 0x048b
00000404: JUMPDEST
00000405: PUSH2 0x0104
00000408: SLOAD
00000409: PUSH1 0x00
0000040b: JUMPDEST
0000040c: DUP2
0000040d: DUP2
0000040e: LT
0000040f: ISZERO
00000410: PUSH2 0x0cc4
00000413: JUMPI
00000414: PUSH2 0x0104
00000417: DUP1
00000418: SLOAD
00000419: PUSH2 0x0105
0000041c: SWAP2
0000041d: PUSH1 0x00
0000041f: SWAP2
00000420: DUP5
00000421: SWAP1
00000422: DUP2
00000423: LT
00000424: ISZERO
00000425: PUSH2 0x0002
00000428: JUMPI
00000429: PUSH1 0x00
0000042b: SWAP2
0000042c: DUP3
0000042d: MSTORE
0000042e: PUSH1 0x20
00000430: DUP1
00000431: DUP4
00000432: KECCAK256
00000433: SWAP1
00000434: SWAP2
00000435: ADD
00000436: SLOAD
00000437: DUP4
00000438: MSTORE
00000439: DUP3
0000043a: ADD
0000043b: SWAP3
0000043c: SWAP1
0000043d: SWAP3
0000043e: MSTORE
0000043f: PUSH1 0x40
00000441: ADD
00000442: DUP2
00000443: KECCAK256
00000444: DUP1
00000445: SLOAD
00000446: PUSH1 0x01
00000448: PUSH1 0xa0
0000044a: PUSH1 0x02
0000044c: EXP
0000044d: SUB
0000044e: NOT
0000044f: AND
00000450: DUP2
00000451: SSTORE
00000452: PUSH1 0x01
00000454: DUP2
00000455: DUP2
00000456: ADD
00000457: DUP4
00000458: SWAP1
00000459: SSTORE
0000045a: PUSH1 0x02
0000045c: DUP3
0000045d: DUP2
0000045e: ADD
0000045f: DUP1
00000460: SLOAD
00000461: DUP6
00000462: DUP3
00000463: SSTORE
00000464: SWAP4
00000465: SWAP5
00000466: SWAP4
00000467: SWAP1
00000468: SWAP3
00000469: DUP2
0000046a: AND
0000046b: ISZERO
0000046c: PUSH2 0x0100
0000046f: MUL
00000470: PUSH1 0x00
00000472: NOT
00000473: ADD
00000474: AND
00000475: DIV
00000476: PUSH1 0x1f
00000478: DUP2
00000479: SWAP1
0000047a: LT
0000047b: PUSH2 0x0d3c
0000047e: JUMPI
0000047f: POP
00000480: JUMPDEST
00000481: POP
00000482: POP
00000483: POP
00000484: PUSH1 0x01
00000486: ADD
00000487: PUSH2 0x040b
0000048a: JUMP
0000048b: JUMPDEST
0000048c: PUSH2 0x0378
0000048f: JUMPDEST
00000490: PUSH1 0x01
00000492: JUMPDEST
00000493: PUSH1 0x01
00000495: SLOAD
00000496: DUP2
00000497: LT
00000498: ISZERO
00000499: PUSH2 0x0d5a
0000049c: JUMPI
0000049d: JUMPDEST
0000049e: PUSH1 0x01
000004a0: SLOAD
000004a1: DUP2
000004a2: LT
000004a3: DUP1
000004a4: ISZERO
000004a5: PUSH2 0x04bd
000004a8: JUMPI
000004a9: POP
000004aa: PUSH1 0x02
000004ac: DUP2
000004ad: PUSH2 0x0100
000004b0: DUP2
000004b1: LT
000004b2: ISZERO
000004b3: PUSH2 0x0002
000004b6: JUMPI
000004b7: ADD
000004b8: SLOAD
000004b9: PUSH1 0x00
000004bb: EQ
000004bc: ISZERO
000004bd: JUMPDEST
000004be: ISZERO
000004bf: PUSH2 0x0d5d
000004c2: JUMPI
000004c3: PUSH1 0x01
000004c5: ADD
000004c6: PUSH2 0x049d
000004c9: JUMP
000004ca: JUMPDEST
000004cb: ISZERO
000004cc: PUSH2 0x0557
000004cf: JUMPI
000004d0: PUSH2 0x055b
000004d3: DUP3
000004d4: PUSH2 0x01db
000004d7: JUMP
000004d8: JUMPDEST
000004d9: PUSH1 0x01
000004db: DUP1
000004dc: SLOAD
000004dd: DUP2
000004de: ADD
000004df: SWAP1
000004e0: DUP2
000004e1: SWAP1
000004e2: SSTORE
000004e3: PUSH1 0x01
000004e5: PUSH1 0xa0
000004e7: PUSH1 0x02
000004e9: EXP
000004ea: SUB
000004eb: DUP4
000004ec: AND
000004ed: SWAP1
000004ee: PUSH1 0x02
000004f0: SWAP1
000004f1: PUSH2 0x0100
000004f4: DUP2
000004f5: LT
000004f6: ISZERO
000004f7: PUSH2 0x0002
000004fa: JUMPI
000004fb: SWAP1
000004fc: SWAP1
000004fd: ADD
000004fe: PUSH1 0x00
00000500: POP
00000501: SSTORE
00000502: PUSH1 0x01
00000504: SLOAD
00000505: PUSH1 0x01
00000507: PUSH1 0xa0
00000509: PUSH1 0x02
0000050b: EXP
0000050c: SUB
0000050d: DUP4
0000050e: AND
0000050f: PUSH1 0x00
00000511: DUP2
00000512: DUP2
00000513: MSTORE
00000514: PUSH2 0x0102
00000517: PUSH1 0x20
00000519: SWAP1
0000051a: DUP2
0000051b: MSTORE
0000051c: PUSH1 0x40
0000051e: SWAP2
0000051f: DUP3
00000520: SWAP1
00000521: KECCAK256
00000522: SWAP4
00000523: SWAP1
00000524: SWAP4
00000525: SSTORE
00000526: DUP1
00000527: MLOAD
00000528: SWAP2
00000529: DUP3
0000052a: MSTORE
0000052b: MLOAD
0000052c: PUSH32 0x994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3
0000054d: SWAP3
0000054e: SWAP2
0000054f: DUP2
00000550: SWAP1
00000551: SUB
00000552: SWAP1
00000553: SWAP2
00000554: ADD
00000555: SWAP1
00000556: LOG1
00000557: JUMPDEST
00000558: POP
00000559: POP
0000055a: JUMP
0000055b: JUMPDEST
0000055c: ISZERO
0000055d: PUSH2 0x0565
00000560: JUMPI
00000561: PUSH2 0x0557
00000564: JUMP
00000565: JUMPDEST
00000566: PUSH2 0x056d
00000569: PUSH2 0x0404
0000056c: JUMP
0000056d: JUMPDEST
0000056e: PUSH1 0x01
00000570: SLOAD
00000571: PUSH1 0xfa
00000573: SWAP1
00000574: LT
00000575: PUSH2 0x0580
00000578: JUMPI
00000579: PUSH2 0x0580
0000057c: PUSH2 0x048f
0000057f: JUMP
00000580: JUMPDEST
00000581: PUSH1 0x01
00000583: SLOAD
00000584: PUSH1 0xfa
00000586: SWAP1
00000587: LT
00000588: PUSH2 0x04d8
0000058b: JUMPI
0000058c: PUSH2 0x0557
0000058f: JUMP
00000590: JUMPDEST
00000591: ISZERO
00000592: PUSH2 0x071f
00000595: JUMPI
00000596: PUSH1 0x00
00000598: DUP4
00000599: DUP2
0000059a: MSTORE
0000059b: PUSH2 0x0105
0000059e: PUSH1 0x20
000005a0: MSTORE
000005a1: PUSH1 0x40
000005a3: DUP2
000005a4: KECCAK256
000005a5: SLOAD
000005a6: PUSH1 0x01
000005a8: PUSH1 0xa0
000005aa: PUSH1 0x02
000005ac: EXP
000005ad: SUB
000005ae: AND
000005af: EQ
000005b0: PUSH2 0x071f
000005b3: JUMPI
000005b4: PUSH1 0x40
000005b6: PUSH1 0x00
000005b8: DUP2
000005b9: SWAP1
000005ba: KECCAK256
000005bb: DUP1
000005bc: SLOAD
000005bd: PUSH1 0x01
000005bf: DUP3
000005c0: DUP2
000005c1: ADD
000005c2: SLOAD
000005c3: SWAP4
000005c4: MLOAD
000005c5: PUSH1 0x02
000005c7: SWAP4
000005c8: DUP5
000005c9: ADD
000005ca: DUP1
000005cb: SLOAD
000005cc: PUSH1 0x01
000005ce: PUSH1 0xa0
000005d0: PUSH1 0x02
000005d2: EXP
000005d3: SUB
000005d4: SWAP5
000005d5: SWAP1
000005d6: SWAP5
000005d7: AND
000005d8: SWAP6
000005d9: SWAP5
000005da: SWAP1
000005db: SWAP4
000005dc: SWAP2
000005dd: SWAP3
000005de: DUP4
000005df: SWAP3
000005e0: DUP6
000005e1: SWAP3
000005e2: SWAP2
000005e3: DUP2
000005e4: AND
000005e5: ISZERO
000005e6: PUSH2 0x0100
000005e9: MUL
000005ea: PUSH1 0x00
000005ec: NOT
000005ed: ADD
000005ee: AND
000005ef: DIV
000005f0: DUP1
000005f1: ISZERO
000005f2: PUSH2 0x063c
000005f5: JUMPI
000005f6: DUP1
000005f7: PUSH1 0x1f
000005f9: LT
000005fa: PUSH2 0x0611
000005fd: JUMPI
000005fe: PUSH2 0x0100
00000601: DUP1
00000602: DUP4
00000603: SLOAD
00000604: DIV
00000605: MUL
00000606: DUP4
00000607: MSTORE
00000608: SWAP2
00000609: PUSH1 0x20
0000060b: ADD
0000060c: SWAP2
0000060d: PUSH2 0x063c
00000610: JUMP
00000611: JUMPDEST
00000612: DUP3
00000613: ADD
00000614: SWAP2
00000615: SWAP1
00000616: PUSH1 0x00
00000618: MSTORE
00000619: PUSH1 0x20
0000061b: PUSH1 0x00
0000061d: KECCAK256
0000061e: SWAP1
0000061f: JUMPDEST
00000620: DUP2
00000621: SLOAD
00000622: DUP2
00000623: MSTORE
00000624: SWAP1
00000625: PUSH1 0x01
00000627: ADD
00000628: SWAP1
00000629: PUSH1 0x20
0000062b: ADD
0000062c: DUP1
0000062d: DUP4
0000062e: GT
0000062f: PUSH2 0x061f
00000632: JUMPI
00000633: DUP3
00000634: SWAP1
00000635: SUB
00000636: PUSH1 0x1f
00000638: AND
00000639: DUP3
0000063a: ADD
0000063b: SWAP2
0000063c: JUMPDEST
0000063d: POP
0000063e: POP
0000063f: SWAP2
00000640: POP
00000641: POP
00000642: PUSH1 0x00
00000644: PUSH1 0x40
00000646: MLOAD
00000647: DUP1
00000648: DUP4
00000649: SUB
0000064a: DUP2
0000064b: DUP6
0000064c: DUP8
0000064d: PUSH2 0x8502
00000650: GAS
00000651: SUB
00000652: CALL
00000653: SWAP3
00000654: POP
00000655: POP
00000656: POP
00000657: ISZERO
00000658: PUSH2 0x071a
0000065b: JUMPI
0000065c: PUSH1 0x00
0000065e: DUP4
0000065f: DUP2
00000660: MSTORE
00000661: PUSH2 0x0105
00000664: PUSH1 0x20
00000666: SWAP1
00000667: DUP2
00000668: MSTORE
00000669: PUSH1 0x40
0000066b: SWAP2
0000066c: DUP3
0000066d: SWAP1
0000066e: KECCAK256
0000066f: DUP3
00000670: MLOAD
00000671: DUP2
00000672: SLOAD
00000673: PUSH1 0x01
00000675: DUP4
00000676: DUP2
00000677: ADD
00000678: SLOAD
00000679: PUSH1 0x01
0000067b: PUSH1 0xa0
0000067d: PUSH1 0x02
0000067f: EXP
00000680: SUB
00000681: CALLER
00000682: DUP2
00000683: DUP2
00000684: AND
00000685: DUP7
00000686: MSTORE
00000687: SWAP7
00000688: DUP6
00000689: ADD
0000068a: DUP12
0000068b: SWAP1
0000068c: MSTORE
0000068d: SWAP7
0000068e: DUP5
0000068f: ADD
00000690: DUP2
00000691: SWAP1
00000692: MSTORE
00000693: SWAP2
00000694: SWAP1
00000695: SWAP6
00000696: AND
00000697: PUSH1 0x60
00000699: DUP4
0000069a: ADD
0000069b: DUP2
0000069c: SWAP1
0000069d: MSTORE
0000069e: PUSH1 0xa0
000006a0: PUSH1 0x80
000006a2: DUP5
000006a3: ADD
000006a4: DUP2
000006a5: DUP2
000006a6: MSTORE
000006a7: PUSH1 0x02
000006a9: SWAP6
000006aa: DUP7
000006ab: ADD
000006ac: DUP1
000006ad: SLOAD
000006ae: SWAP9
000006af: DUP10
000006b0: AND
000006b1: ISZERO
000006b2: PUSH2 0x0100
000006b5: MUL
000006b6: PUSH1 0x00
000006b8: NOT
000006b9: ADD
000006ba: SWAP1
000006bb: SWAP9
000006bc: AND
000006bd: SWAP6
000006be: SWAP1
000006bf: SWAP6
000006c0: DIV
000006c1: SWAP1
000006c2: DUP5
000006c3: ADD
000006c4: DUP2
000006c5: SWAP1
000006c6: MSTORE
000006c7: PUSH32 0xe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a
000006e8: SWAP7
000006e9: DUP11
000006ea: SWAP6
000006eb: SWAP4
000006ec: SWAP5
000006ed: SWAP3
000006ee: SWAP4
000006ef: SWAP1
000006f0: SWAP3
000006f1: SWAP2
000006f2: PUSH1 0xc0
000006f4: DUP4
000006f5: ADD
000006f6: SWAP1
000006f7: DUP5
000006f8: SWAP1
000006f9: DUP1
000006fa: ISZERO
000006fb: PUSH2 0x0750
000006fe: JUMPI
000006ff: DUP1
00000700: PUSH1 0x1f
00000702: LT
00000703: PUSH2 0x0725
00000706: JUMPI
00000707: PUSH2 0x0100
0000070a: DUP1
0000070b: DUP4
0000070c: SLOAD
0000070d: DIV
0000070e: MUL
0000070f: DUP4
00000710: MSTORE
00000711: SWAP2
00000712: PUSH1 0x20
00000714: ADD
00000715: SWAP2
00000716: PUSH2 0x0750
00000719: JUMP
0000071a: JUMPDEST
0000071b: PUSH1 0x00
0000071d: SWAP2
0000071e: POP
0000071f: JUMPDEST
00000720: POP
00000721: SWAP2
00000722: SWAP1
00000723: POP
00000724: JUMP
00000725: JUMPDEST
00000726: DUP3
00000727: ADD
00000728: SWAP2
00000729: SWAP1
0000072a: PUSH1 0x00
0000072c: MSTORE
0000072d: PUSH1 0x20
0000072f: PUSH1 0x00
00000731: KECCAK256
00000732: SWAP1
00000733: JUMPDEST
00000734: DUP2
00000735: SLOAD
00000736: DUP2
00000737: MSTORE
00000738: SWAP1
00000739: PUSH1 0x01
0000073b: ADD
0000073c: SWAP1
0000073d: PUSH1 0x20
0000073f: ADD
00000740: DUP1
00000741: DUP4
00000742: GT
00000743: PUSH2 0x0733
00000746: JUMPI
00000747: DUP3
00000748: SWAP1
00000749: SUB
0000074a: PUSH1 0x1f
0000074c: AND
0000074d: DUP3
0000074e: ADD
0000074f: SWAP2
00000750: JUMPDEST
00000751: POP
00000752: POP
00000753: SWAP7
00000754: POP
00000755: POP
00000756: POP
00000757: POP
00000758: POP
00000759: POP
0000075a: POP
0000075b: PUSH1 0x40
0000075d: MLOAD
0000075e: DUP1
0000075f: SWAP2
00000760: SUB
00000761: SWAP1
00000762: LOG1
00000763: PUSH1 0x00
00000765: DUP4
00000766: DUP2
00000767: MSTORE
00000768: PUSH2 0x0105
0000076b: PUSH1 0x20
0000076d: MSTORE
0000076e: PUSH1 0x40
00000770: DUP2
00000771: KECCAK256
00000772: DUP1
00000773: SLOAD
00000774: PUSH1 0x01
00000776: PUSH1 0xa0
00000778: PUSH1 0x02
0000077a: EXP
0000077b: SUB
0000077c: NOT
0000077d: AND
0000077e: DUP2
0000077f: SSTORE
00000780: PUSH1 0x01
00000782: DUP2
00000783: DUP2
00000784: ADD
00000785: DUP4
00000786: SWAP1
00000787: SSTORE
00000788: PUSH1 0x02
0000078a: DUP3
0000078b: DUP2
0000078c: ADD
0000078d: DUP1
0000078e: SLOAD
0000078f: DUP6
00000790: DUP3
00000791: SSTORE
00000792: SWAP4
00000793: SWAP5
00000794: SWAP4
00000795: SWAP1
00000796: SWAP3
00000797: DUP2
00000798: AND
00000799: ISZERO
0000079a: PUSH2 0x0100
0000079d: MUL
0000079e: PUSH1 0x00
000007a0: NOT
000007a1: ADD
000007a2: AND
000007a3: DIV
000007a4: PUSH1 0x1f
000007a6: DUP2
000007a7: SWAP1
000007a8: LT
000007a9: PUSH2 0x07ba
000007ac: JUMPI
000007ad: POP
000007ae: JUMPDEST
000007af: POP
000007b0: POP
000007b1: POP
000007b2: PUSH1 0x01
000007b4: SWAP2
000007b5: POP
000007b6: PUSH2 0x071f
000007b9: JUMP
000007ba: JUMPDEST
000007bb: PUSH1 0x1f
000007bd: ADD
000007be: PUSH1 0x20
000007c0: SWAP1
000007c1: DIV
000007c2: SWAP1
000007c3: PUSH1 0x00
000007c5: MSTORE
000007c6: PUSH1 0x20
000007c8: PUSH1 0x00
000007ca: KECCAK256
000007cb: SWAP1
000007cc: DUP2
000007cd: ADD
000007ce: SWAP1
000007cf: PUSH2 0x07ae
000007d2: SWAP2
000007d3: SWAP1
000007d4: JUMPDEST
000007d5: DUP1
000007d6: DUP3
000007d7: GT
000007d8: ISZERO
000007d9: PUSH2 0x07e8
000007dc: JUMPI
000007dd: PUSH1 0x00
000007df: DUP2
000007e0: SSTORE
000007e1: PUSH1 0x01
000007e3: ADD
000007e4: PUSH2 0x07d4
000007e7: JUMP
000007e8: JUMPDEST
000007e9: POP
000007ea: SWAP1
000007eb: JUMP
000007ec: JUMPDEST
000007ed: ISZERO
000007ee: PUSH2 0x0953
000007f1: JUMPI
000007f2: PUSH1 0x00
000007f4: CALLDATASIZE
000007f5: NUMBER
000007f6: PUSH1 0x40
000007f8: MLOAD
000007f9: DUP1
000007fa: DUP5
000007fb: DUP5
000007fc: DUP1
000007fd: DUP3
000007fe: DUP5
000007ff: CALLDATACOPY
00000800: DUP3
00000801: ADD
00000802: SWAP2
00000803: POP
00000804: POP
00000805: DUP3
00000806: DUP2
00000807: MSTORE
00000808: PUSH1 0x20
0000080a: ADD
0000080b: SWAP4
0000080c: POP
0000080d: POP
0000080e: POP
0000080f: POP
00000810: PUSH1 0x40
00000812: MLOAD
00000813: DUP1
00000814: SWAP2
00000815: SUB
00000816: SWAP1
00000817: KECCAK256
00000818: SWAP1
00000819: POP
0000081a: DUP1
0000081b: POP
0000081c: PUSH2 0x0824
0000081f: DUP2
00000820: PUSH2 0x01ad
00000823: JUMP
00000824: JUMPDEST
00000825: ISZERO
00000826: DUP1
00000827: ISZERO
00000828: PUSH2 0x0847
0000082b: JUMPI
0000082c: POP
0000082d: PUSH1 0x00
0000082f: DUP2
00000830: DUP2
00000831: MSTORE
00000832: PUSH2 0x0105
00000835: PUSH1 0x20
00000837: MSTORE
00000838: PUSH1 0x40
0000083a: DUP2
0000083b: KECCAK256
0000083c: SLOAD
0000083d: PUSH1 0x01
0000083f: PUSH1 0xa0
00000841: PUSH1 0x02
00000843: EXP
00000844: SUB
00000845: AND
00000846: EQ
00000847: JUMPDEST
00000848: ISZERO
00000849: PUSH2 0x0953
0000084c: JUMPI
0000084d: PUSH1 0x00
0000084f: DUP2
00000850: DUP2
00000851: MSTORE
00000852: PUSH2 0x0105
00000855: PUSH1 0x20
00000857: SWAP1
00000858: DUP2
00000859: MSTORE
0000085a: PUSH1 0x40
0000085c: DUP3
0000085d: KECCAK256
0000085e: DUP1
0000085f: SLOAD
00000860: PUSH1 0x01
00000862: PUSH1 0xa0
00000864: PUSH1 0x02
00000866: EXP
00000867: SUB
00000868: NOT
00000869: AND
0000086a: DUP9
0000086b: OR
0000086c: DUP2
0000086d: SSTORE
0000086e: PUSH1 0x01
00000870: DUP2
00000871: DUP2
00000872: ADD
00000873: DUP9
00000874: SWAP1
00000875: SSTORE
00000876: PUSH1 0x02
00000878: SWAP2
00000879: DUP3
0000087a: ADD
0000087b: DUP1
0000087c: SLOAD
0000087d: DUP2
0000087e: DUP7
0000087f: MSTORE
00000880: SWAP5
00000881: DUP5
00000882: SWAP1
00000883: KECCAK256
00000884: SWAP1
00000885: SWAP5
00000886: SWAP2
00000887: DUP3
00000888: AND
00000889: ISZERO
0000088a: PUSH2 0x0100
0000088d: MUL
0000088e: PUSH1 0x00
00000890: NOT
00000891: ADD
00000892: SWAP1
00000893: SWAP2
00000894: AND
00000895: SWAP2
00000896: SWAP1
00000897: SWAP2
00000898: DIV
00000899: PUSH1 0x1f
0000089b: SWAP1
0000089c: DUP2
0000089d: ADD
0000089e: SWAP3
0000089f: SWAP1
000008a0: SWAP3
000008a1: DIV
000008a2: DUP2
000008a3: ADD
000008a4: SWAP2
000008a5: DUP6
000008a6: SWAP2
000008a7: SWAP1
000008a8: DUP8
000008a9: SWAP1
000008aa: DUP4
000008ab: SWAP1
000008ac: LT
000008ad: PUSH2 0x095b
000008b0: JUMPI
000008b1: PUSH1 0xff
000008b3: NOT
000008b4: DUP2
000008b5: CALLDATALOAD
000008b6: AND
000008b7: DUP4
000008b8: DUP1
000008b9: ADD
000008ba: OR
000008bb: DUP6
000008bc: SSTORE
000008bd: JUMPDEST
000008be: POP
000008bf: PUSH2 0x08c9
000008c2: SWAP3
000008c3: SWAP2
000008c4: POP
000008c5: PUSH2 0x07d4
000008c8: JUMP
000008c9: JUMPDEST
000008ca: POP
000008cb: POP
000008cc: PUSH32 0x1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32
000008ed: DUP2
000008ee: CALLER
000008ef: DUP7
000008f0: DUP9
000008f1: DUP8
000008f2: DUP8
000008f3: PUSH1 0x40
000008f5: MLOAD
000008f6: DUP1
000008f7: DUP8
000008f8: PUSH1 0x00
000008fa: NOT
000008fb: AND
000008fc: DUP2
000008fd: MSTORE
000008fe: PUSH1 0x20
00000900: ADD
00000901: DUP7
00000902: PUSH1 0x01
00000904: PUSH1 0xa0
00000906: PUSH1 0x02
00000908: EXP
00000909: SUB
0000090a: AND
0000090b: DUP2
0000090c: MSTORE
0000090d: PUSH1 0x20
0000090f: ADD
00000910: DUP6
00000911: DUP2
00000912: MSTORE
00000913: PUSH1 0x20
00000915: ADD
00000916: DUP5
00000917: PUSH1 0x01
00000919: PUSH1 0xa0
0000091b: PUSH1 0x02
0000091d: EXP
0000091e: SUB
0000091f: AND
00000920: DUP2
00000921: MSTORE
00000922: PUSH1 0x20
00000924: ADD
00000925: DUP1
00000926: PUSH1 0x20
00000928: ADD
00000929: DUP3
0000092a: DUP2
0000092b: SUB
0000092c: DUP3
0000092d: MSTORE
0000092e: DUP5
0000092f: DUP5
00000930: DUP3
00000931: DUP2
00000932: DUP2
00000933: MSTORE
00000934: PUSH1 0x20
00000936: ADD
00000937: SWAP3
00000938: POP
00000939: DUP1
0000093a: DUP3
0000093b: DUP5
0000093c: CALLDATACOPY
0000093d: DUP3
0000093e: ADD
0000093f: SWAP2
00000940: POP
00000941: POP
00000942: SWAP8
00000943: POP
00000944: POP
00000945: POP
00000946: POP
00000947: POP
00000948: POP
00000949: POP
0000094a: POP
0000094b: PUSH1 0x40
0000094d: MLOAD
0000094e: DUP1
0000094f: SWAP2
00000950: SUB
00000951: SWAP1
00000952: LOG1
00000953: JUMPDEST
00000954: SWAP5
00000955: SWAP4
00000956: POP
00000957: POP
00000958: POP
00000959: POP
0000095a: JUMP
0000095b: JUMPDEST
0000095c: DUP3
0000095d: DUP1
0000095e: ADD
0000095f: PUSH1 0x01
00000961: ADD
00000962: DUP6
00000963: SSTORE
00000964: DUP3
00000965: ISZERO
00000966: PUSH2 0x08bd
00000969: JUMPI
0000096a: SWAP2
0000096b: DUP3
0000096c: ADD
0000096d: JUMPDEST
0000096e: DUP3
0000096f: DUP2
00000970: GT
00000971: ISZERO
00000972: PUSH2 0x08bd
00000975: JUMPI
00000976: DUP3
00000977: CALLDATALOAD
00000978: DUP3
00000979: PUSH1 0x00
0000097b: POP
0000097c: SSTORE
0000097d: SWAP2
0000097e: PUSH1 0x20
00000980: ADD
00000981: SWAP2
00000982: SWAP1
00000983: PUSH1 0x01
00000985: ADD
00000986: SWAP1
00000987: PUSH2 0x096d
0000098a: JUMP
0000098b: JUMPDEST
0000098c: POP
0000098d: POP
0000098e: PUSH1 0x00
00000990: DUP3
00000991: DUP2
00000992: MSTORE
00000993: PUSH2 0x0103
00000996: PUSH1 0x20
00000998: MSTORE
00000999: PUSH1 0x40
0000099b: DUP2
0000099c: KECCAK256
0000099d: PUSH1 0x01
0000099f: DUP2
000009a0: ADD
000009a1: SLOAD
000009a2: PUSH1 0x02
000009a4: DUP5
000009a5: SWAP1
000009a6: EXP
000009a7: SWAP3
000009a8: SWAP1
000009a9: DUP4
000009aa: AND
000009ab: GT
000009ac: ISZERO
000009ad: PUSH2 0x0a0a
000009b0: JUMPI
000009b1: DUP1
000009b2: SLOAD
000009b3: PUSH1 0x01
000009b5: DUP3
000009b6: DUP2
000009b7: ADD
000009b8: DUP1
000009b9: SLOAD
000009ba: SWAP3
000009bb: SWAP1
000009bc: SWAP2
000009bd: ADD
000009be: DUP4
000009bf: SSTORE
000009c0: SWAP1
000009c1: DUP4
000009c2: SWAP1
000009c3: SUB
000009c4: SWAP1
000009c5: SSTORE
000009c6: PUSH1 0x40
000009c8: DUP1
000009c9: MLOAD
000009ca: PUSH1 0x01
000009cc: PUSH1 0xa0
000009ce: PUSH1 0x02
000009d0: EXP
000009d1: SUB
000009d2: CALLER
000009d3: AND
000009d4: DUP2
000009d5: MSTORE
000009d6: PUSH1 0x20
000009d8: DUP2
000009d9: ADD
000009da: DUP7
000009db: SWAP1
000009dc: MSTORE
000009dd: DUP2
000009de: MLOAD
000009df: PUSH32 0xc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b
00000a00: SWAP3
00000a01: SWAP2
00000a02: DUP2
00000a03: SWAP1
00000a04: SUB
00000a05: SWAP1
00000a06: SWAP2
00000a07: ADD
00000a08: SWAP1
00000a09: LOG1
00000a0a: JUMPDEST
00000a0b: POP
00000a0c: POP
00000a0d: POP
00000a0e: POP
00000a0f: JUMP
00000a10: JUMPDEST
00000a11: ISZERO
00000a12: PUSH2 0x0557
00000a15: JUMPI
00000a16: PUSH1 0x01
00000a18: SLOAD
00000a19: DUP3
00000a1a: GT
00000a1b: ISZERO
00000a1c: PUSH2 0x0a24
00000a1f: JUMPI
00000a20: PUSH2 0x0557
00000a23: JUMP
00000a24: JUMPDEST
00000a25: PUSH1 0x00
00000a27: DUP3
00000a28: SWAP1
00000a29: SSTORE
00000a2a: PUSH2 0x0a31
00000a2d: PUSH2 0x0404
00000a30: JUMP
00000a31: JUMPDEST
00000a32: PUSH1 0x40
00000a34: DUP1
00000a35: MLOAD
00000a36: DUP4
00000a37: DUP2
00000a38: MSTORE
00000a39: SWAP1
00000a3a: MLOAD
00000a3b: PUSH32 0xacbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da
00000a5c: SWAP2
00000a5d: DUP2
00000a5e: SWAP1
00000a5f: SUB
00000a60: PUSH1 0x20
00000a62: ADD
00000a63: SWAP1
00000a64: LOG1
00000a65: POP
00000a66: POP
00000a67: JUMP
00000a68: JUMPDEST
00000a69: POP
00000a6a: PUSH1 0x01
00000a6c: DUP3
00000a6d: ADD
00000a6e: SLOAD
00000a6f: PUSH1 0x02
00000a71: DUP3
00000a72: SWAP1
00000a73: EXP
00000a74: SWAP1
00000a75: DUP2
00000a76: AND
00000a77: PUSH1 0x00
00000a79: EQ
00000a7a: ISZERO
00000a7b: SWAP4
00000a7c: POP
00000a7d: JUMPDEST
00000a7e: POP
00000a7f: POP
00000a80: POP
00000a81: SWAP3
00000a82: SWAP2
00000a83: POP
00000a84: POP
00000a85: JUMP
00000a86: JUMPDEST
00000a87: ISZERO
00000a88: PUSH2 0x0a0a
00000a8b: JUMPI
00000a8c: PUSH2 0x0a94
00000a8f: DUP4
00000a90: PUSH2 0x01db
00000a93: JUMP
00000a94: JUMPDEST
00000a95: ISZERO
00000a96: PUSH2 0x0a9e
00000a99: JUMPI
00000a9a: PUSH2 0x0a0a
00000a9d: JUMP
00000a9e: JUMPDEST
00000a9f: PUSH1 0x01
00000aa1: PUSH1 0xa0
00000aa3: PUSH1 0x02
00000aa5: EXP
00000aa6: SUB
00000aa7: DUP5
00000aa8: AND
00000aa9: PUSH1 0x00
00000aab: SWAP1
00000aac: DUP2
00000aad: MSTORE
00000aae: PUSH2 0x0102
00000ab1: PUSH1 0x20
00000ab3: MSTORE
00000ab4: PUSH1 0x40
00000ab6: DUP2
00000ab7: KECCAK256
00000ab8: SLOAD
00000ab9: SWAP3
00000aba: POP
00000abb: DUP3
00000abc: EQ
00000abd: ISZERO
00000abe: PUSH2 0x0ac6
00000ac1: JUMPI
00000ac2: PUSH2 0x0a0a
00000ac5: JUMP
00000ac6: JUMPDEST
00000ac7: PUSH2 0x0ace
00000aca: PUSH2 0x0404
00000acd: JUMP
00000ace: JUMPDEST
00000acf: PUSH1 0x01
00000ad1: PUSH1 0xa0
00000ad3: PUSH1 0x02
00000ad5: EXP
00000ad6: SUB
00000ad7: DUP4
00000ad8: AND
00000ad9: PUSH1 0x02
00000adb: DUP4
00000adc: PUSH2 0x0100
00000adf: DUP2
00000ae0: LT
00000ae1: ISZERO
00000ae2: PUSH2 0x0002
00000ae5: JUMPI
00000ae6: POP
00000ae7: DUP4
00000ae8: ADD
00000ae9: DUP2
00000aea: SWAP1
00000aeb: SSTORE
00000aec: PUSH1 0x01
00000aee: PUSH1 0xa0
00000af0: PUSH1 0x02
00000af2: EXP
00000af3: SUB
00000af4: DUP6
00000af5: AND
00000af6: PUSH1 0x00
00000af8: DUP2
00000af9: DUP2
00000afa: MSTORE
00000afb: PUSH2 0x0102
00000afe: PUSH1 0x20
00000b00: SWAP1
00000b01: DUP2
00000b02: MSTORE
00000b03: PUSH1 0x40
00000b05: DUP1
00000b06: DUP4
00000b07: KECCAK256
00000b08: DUP4
00000b09: SWAP1
00000b0a: SSTORE
00000b0b: DUP5
00000b0c: DUP4
00000b0d: MSTORE
00000b0e: SWAP2
00000b0f: DUP3
00000b10: SWAP1
00000b11: KECCAK256
00000b12: DUP7
00000b13: SWAP1
00000b14: SSTORE
00000b15: DUP2
00000b16: MLOAD
00000b17: SWAP3
00000b18: DUP4
00000b19: MSTORE
00000b1a: DUP3
00000b1b: ADD
00000b1c: SWAP3
00000b1d: SWAP1
00000b1e: SWAP3
00000b1f: MSTORE
00000b20: DUP2
00000b21: MLOAD
00000b22: PUSH32 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c
00000b43: SWAP3
00000b44: SWAP2
00000b45: DUP2
00000b46: SWAP1
00000b47: SUB
00000b48: SWAP1
00000b49: SWAP2
00000b4a: ADD
00000b4b: SWAP1
00000b4c: LOG1
00000b4d: POP
00000b4e: POP
00000b4f: POP
00000b50: POP
00000b51: JUMP
00000b52: JUMPDEST
00000b53: PUSH1 0x00
00000b55: DUP6
00000b56: DUP2
00000b57: MSTORE
00000b58: PUSH2 0x0103
00000b5b: PUSH1 0x20
00000b5d: MSTORE
00000b5e: PUSH1 0x40
00000b60: DUP2
00000b61: KECCAK256
00000b62: DUP1
00000b63: SLOAD
00000b64: SWAP1
00000b65: SWAP4
00000b66: POP
00000b67: EQ
00000b68: ISZERO
00000b69: PUSH2 0x0bec
00000b6c: JUMPI
00000b6d: PUSH1 0x00
00000b6f: DUP1
00000b70: SLOAD
00000b71: DUP4
00000b72: SSTORE
00000b73: PUSH1 0x01
00000b75: DUP4
00000b76: DUP2
00000b77: ADD
00000b78: SWAP2
00000b79: SWAP1
00000b7a: SWAP2
00000b7b: SSTORE
00000b7c: PUSH2 0x0104
00000b7f: DUP1
00000b80: SLOAD
00000b81: SWAP2
00000b82: DUP3
00000b83: ADD
00000b84: DUP1
00000b85: DUP3
00000b86: SSTORE
00000b87: DUP3
00000b88: DUP1
00000b89: ISZERO
00000b8a: DUP3
00000b8b: SWAP1
00000b8c: GT
00000b8d: PUSH2 0x0ba9
00000b90: JUMPI
00000b91: DUP2
00000b92: DUP4
00000b93: PUSH1 0x00
00000b95: MSTORE
00000b96: PUSH1 0x20
00000b98: PUSH1 0x00
00000b9a: KECCAK256
00000b9b: SWAP2
00000b9c: DUP3
00000b9d: ADD
00000b9e: SWAP2
00000b9f: ADD
00000ba0: PUSH2 0x0ba9
00000ba3: SWAP2
00000ba4: SWAP1
00000ba5: PUSH2 0x07d4
00000ba8: JUMP
00000ba9: JUMPDEST
00000baa: POP
00000bab: POP
00000bac: POP
00000bad: PUSH1 0x02
00000baf: DUP4
00000bb0: ADD
00000bb1: DUP2
00000bb2: SWAP1
00000bb3: SSTORE
00000bb4: PUSH2 0x0104
00000bb7: DUP1
00000bb8: SLOAD
00000bb9: DUP8
00000bba: SWAP3
00000bbb: SWAP1
00000bbc: DUP2
00000bbd: LT
00000bbe: ISZERO
00000bbf: PUSH2 0x0002
00000bc2: JUMPI
00000bc3: PUSH1 0x00
00000bc5: SWAP2
00000bc6: SWAP1
00000bc7: SWAP2
00000bc8: MSTORE
00000bc9: PUSH32 0x4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe
00000bea: ADD
00000beb: SSTORE
00000bec: JUMPDEST
00000bed: POP
00000bee: PUSH1 0x01
00000bf0: DUP2
00000bf1: ADD
00000bf2: SLOAD
00000bf3: PUSH1 0x02
00000bf5: DUP4
00000bf6: SWAP1
00000bf7: EXP
00000bf8: SWAP1
00000bf9: DUP2
00000bfa: AND
00000bfb: PUSH1 0x00
00000bfd: EQ
00000bfe: ISZERO
00000bff: PUSH2 0x0cbc
00000c02: JUMPI
00000c03: PUSH1 0x40
00000c05: DUP1
00000c06: MLOAD
00000c07: PUSH1 0x01
00000c09: PUSH1 0xa0
00000c0b: PUSH1 0x02
00000c0d: EXP
00000c0e: SUB
00000c0f: CALLER
00000c10: AND
00000c11: DUP2
00000c12: MSTORE
00000c13: PUSH1 0x20
00000c15: DUP2
00000c16: ADD
00000c17: DUP8
00000c18: SWAP1
00000c19: MSTORE
00000c1a: DUP2
00000c1b: MLOAD
00000c1c: PUSH32 0xe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda
00000c3d: SWAP3
00000c3e: SWAP2
00000c3f: DUP2
00000c40: SWAP1
00000c41: SUB
00000c42: SWAP1
00000c43: SWAP2
00000c44: ADD
00000c45: SWAP1
00000c46: LOG1
00000c47: DUP2
00000c48: SLOAD
00000c49: PUSH1 0x01
00000c4b: SWAP1
00000c4c: GT
00000c4d: PUSH2 0x0ca9
00000c50: JUMPI
00000c51: PUSH1 0x00
00000c53: DUP6
00000c54: DUP2
00000c55: MSTORE
00000c56: PUSH2 0x0103
00000c59: PUSH1 0x20
00000c5b: MSTORE
00000c5c: PUSH2 0x0104
00000c5f: DUP1
00000c60: SLOAD
00000c61: PUSH1 0x40
00000c63: SWAP1
00000c64: SWAP3
00000c65: KECCAK256
00000c66: PUSH1 0x02
00000c68: ADD
00000c69: SLOAD
00000c6a: SWAP1
00000c6b: SWAP2
00000c6c: DUP2
00000c6d: LT
00000c6e: ISZERO
00000c6f: PUSH2 0x0002
00000c72: JUMPI
00000c73: PUSH1 0x40
00000c75: PUSH1 0x00
00000c77: SWAP1
00000c78: DUP2
00000c79: KECCAK256
00000c7a: SWAP3
00000c7b: DUP2
00000c7c: MSTORE
00000c7d: PUSH1 0x20
00000c7f: DUP1
00000c80: DUP3
00000c81: KECCAK256
00000c82: SWAP1
00000c83: SWAP3
00000c84: ADD
00000c85: DUP2
00000c86: SWAP1
00000c87: SSTORE
00000c88: DUP8
00000c89: DUP2
00000c8a: MSTORE
00000c8b: PUSH2 0x0103
00000c8e: SWAP1
00000c8f: SWAP2
00000c90: MSTORE
00000c91: DUP1
00000c92: DUP3
00000c93: SSTORE
00000c94: PUSH1 0x01
00000c96: DUP3
00000c97: DUP2
00000c98: ADD
00000c99: DUP3
00000c9a: SWAP1
00000c9b: SSTORE
00000c9c: PUSH1 0x02
00000c9e: SWAP3
00000c9f: SWAP1
00000ca0: SWAP3
00000ca1: ADD
00000ca2: SSTORE
00000ca3: SWAP4
00000ca4: POP
00000ca5: PUSH2 0x0cbc
00000ca8: JUMP
00000ca9: JUMPDEST
00000caa: DUP2
00000cab: SLOAD
00000cac: PUSH1 0x00
00000cae: NOT
00000caf: ADD
00000cb0: DUP3
00000cb1: SSTORE
00000cb2: PUSH1 0x01
00000cb4: DUP3
00000cb5: ADD
00000cb6: DUP1
00000cb7: SLOAD
00000cb8: DUP3
00000cb9: OR
00000cba: SWAP1
00000cbb: SSTORE
00000cbc: JUMPDEST
00000cbd: POP
00000cbe: POP
00000cbf: POP
00000cc0: SWAP2
00000cc1: SWAP1
00000cc2: POP
00000cc3: JUMP
00000cc4: JUMPDEST
00000cc5: PUSH2 0x0557
00000cc8: PUSH2 0x0104
00000ccb: SLOAD
00000ccc: PUSH1 0x00
00000cce: JUMPDEST
00000ccf: DUP2
00000cd0: DUP2
00000cd1: LT
00000cd2: ISZERO
00000cd3: PUSH2 0x0e3a
00000cd6: JUMPI
00000cd7: PUSH2 0x0104
00000cda: DUP1
00000cdb: SLOAD
00000cdc: DUP3
00000cdd: SWAP1
00000cde: DUP2
00000cdf: LT
00000ce0: ISZERO
00000ce1: PUSH2 0x0002
00000ce4: JUMPI
00000ce5: PUSH1 0x00
00000ce7: SWAP2
00000ce8: DUP3
00000ce9: MSTORE
00000cea: PUSH1 0x20
00000cec: DUP3
00000ced: KECCAK256
00000cee: ADD
00000cef: SLOAD
00000cf0: EQ
00000cf1: PUSH2 0x0d34
00000cf4: JUMPI
00000cf5: PUSH2 0x0104
00000cf8: DUP1
00000cf9: SLOAD
00000cfa: PUSH2 0x0103
00000cfd: SWAP2
00000cfe: PUSH1 0x00
00000d00: SWAP2
00000d01: DUP5
00000d02: SWAP1
00000d03: DUP2
00000d04: LT
00000d05: ISZERO
00000d06: PUSH2 0x0002
00000d09: JUMPI
00000d0a: PUSH1 0x20
00000d0c: PUSH1 0x00
00000d0e: DUP2
00000d0f: DUP2
00000d10: KECCAK256
00000d11: SWAP4
00000d12: DUP2
00000d13: MSTORE
00000d14: SWAP3
00000d15: SWAP1
00000d16: SWAP2
00000d17: ADD
00000d18: SLOAD
00000d19: DUP4
00000d1a: MSTORE
00000d1b: DUP3
00000d1c: ADD
00000d1d: SWAP3
00000d1e: SWAP1
00000d1f: SWAP3
00000d20: MSTORE
00000d21: PUSH1 0x40
00000d23: ADD
00000d24: DUP2
00000d25: KECCAK256
00000d26: DUP2
00000d27: DUP2
00000d28: SSTORE
00000d29: PUSH1 0x01
00000d2b: DUP2
00000d2c: ADD
00000d2d: DUP3
00000d2e: SWAP1
00000d2f: SSTORE
00000d30: PUSH1 0x02
00000d32: ADD
00000d33: SSTORE
00000d34: JUMPDEST
00000d35: PUSH1 0x01
00000d37: ADD
00000d38: PUSH2 0x0cce
00000d3b: JUMP
00000d3c: JUMPDEST
00000d3d: PUSH1 0x1f
00000d3f: ADD
00000d40: PUSH1 0x20
00000d42: SWAP1
00000d43: DIV
00000d44: SWAP1
00000d45: PUSH1 0x00
00000d47: MSTORE
00000d48: PUSH1 0x20
00000d4a: PUSH1 0x00
00000d4c: KECCAK256
00000d4d: SWAP1
00000d4e: DUP2
00000d4f: ADD
00000d50: SWAP1
00000d51: PUSH2 0x0480
00000d54: SWAP2
00000d55: SWAP1
00000d56: PUSH2 0x07d4
00000d59: JUMP
00000d5a: JUMPDEST
00000d5b: POP
00000d5c: JUMP
00000d5d: JUMPDEST
00000d5e: JUMPDEST
00000d5f: PUSH1 0x01
00000d61: DUP1
00000d62: SLOAD
00000d63: GT
00000d64: DUP1
00000d65: ISZERO
00000d66: PUSH2 0x0d80
00000d69: JUMPI
00000d6a: POP
00000d6b: PUSH1 0x01
00000d6d: SLOAD
00000d6e: PUSH1 0x02
00000d70: SWAP1
00000d71: PUSH2 0x0100
00000d74: DUP2
00000d75: LT
00000d76: ISZERO
00000d77: PUSH2 0x0002
00000d7a: JUMPI
00000d7b: ADD
00000d7c: SLOAD
00000d7d: PUSH1 0x00
00000d7f: EQ
00000d80: JUMPDEST
00000d81: ISZERO
00000d82: PUSH2 0x0d94
00000d85: JUMPI
00000d86: PUSH1 0x01
00000d88: DUP1
00000d89: SLOAD
00000d8a: PUSH1 0x00
00000d8c: NOT
00000d8d: ADD
00000d8e: SWAP1
00000d8f: SSTORE
00000d90: PUSH2 0x0d5e
00000d93: JUMP
00000d94: JUMPDEST
00000d95: PUSH1 0x01
00000d97: SLOAD
00000d98: DUP2
00000d99: LT
00000d9a: DUP1
00000d9b: ISZERO
00000d9c: PUSH2 0x0db7
00000d9f: JUMPI
00000da0: POP
00000da1: PUSH1 0x01
00000da3: SLOAD
00000da4: PUSH1 0x02
00000da6: SWAP1
00000da7: PUSH2 0x0100
00000daa: DUP2
00000dab: LT
00000dac: ISZERO
00000dad: PUSH2 0x0002
00000db0: JUMPI
00000db1: ADD
00000db2: SLOAD
00000db3: PUSH1 0x00
00000db5: EQ
00000db6: ISZERO
00000db7: JUMPDEST
00000db8: DUP1
00000db9: ISZERO
00000dba: PUSH2 0x0dd1
00000dbd: JUMPI
00000dbe: POP
00000dbf: PUSH1 0x02
00000dc1: DUP2
00000dc2: PUSH2 0x0100
00000dc5: DUP2
00000dc6: LT
00000dc7: ISZERO
00000dc8: PUSH2 0x0002
00000dcb: JUMPI
00000dcc: ADD
00000dcd: SLOAD
00000dce: PUSH1 0x00
00000dd0: EQ
00000dd1: JUMPDEST
00000dd2: ISZERO
00000dd3: PUSH2 0x0e35
00000dd6: JUMPI
00000dd7: PUSH1 0x01
00000dd9: SLOAD
00000dda: PUSH1 0x02
00000ddc: SWAP1
00000ddd: PUSH2 0x0100
00000de0: DUP2
00000de1: LT
00000de2: ISZERO
00000de3: PUSH2 0x0002
00000de6: JUMPI
00000de7: ADD
00000de8: SLOAD
00000de9: PUSH1 0x02
00000deb: DUP3
00000dec: PUSH2 0x0100
00000def: DUP2
00000df0: LT
00000df1: ISZERO
00000df2: PUSH2 0x0002
00000df5: JUMPI
00000df6: ADD
00000df7: SSTORE
00000df8: DUP1
00000df9: PUSH2 0x0102
00000dfc: PUSH1 0x00
00000dfe: PUSH1 0x02
00000e00: DUP4
00000e01: PUSH2 0x0100
00000e04: DUP2
00000e05: LT
00000e06: ISZERO
00000e07: PUSH2 0x0002
00000e0a: JUMPI
00000e0b: ADD
00000e0c: SLOAD
00000e0d: DUP2
00000e0e: MSTORE
00000e0f: PUSH1 0x20
00000e11: DUP2
00000e12: ADD
00000e13: SWAP2
00000e14: SWAP1
00000e15: SWAP2
00000e16: MSTORE
00000e17: PUSH1 0x40
00000e19: ADD
00000e1a: PUSH1 0x00
00000e1c: SWAP1
00000e1d: DUP2
00000e1e: KECCAK256
00000e1f: SWAP2
00000e20: SWAP1
00000e21: SWAP2
00000e22: SSTORE
00000e23: PUSH1 0x01
00000e25: SLOAD
00000e26: PUSH1 0x02
00000e28: SWAP1
00000e29: PUSH2 0x0100
00000e2c: DUP2
00000e2d: LT
00000e2e: ISZERO
00000e2f: PUSH2 0x0002
00000e32: JUMPI
00000e33: ADD
00000e34: SSTORE
00000e35: JUMPDEST
00000e36: PUSH2 0x0492
00000e39: JUMP
00000e3a: JUMPDEST
00000e3b: PUSH2 0x0104
00000e3e: DUP1
00000e3f: SLOAD
00000e40: PUSH1 0x00
00000e42: DUP1
00000e43: DUP4
00000e44: SSTORE
00000e45: SWAP2
00000e46: SWAP1
00000e47: SWAP2
00000e48: MSTORE
00000e49: PUSH2 0x03b5
00000e4c: SWAP1
00000e4d: PUSH32 0x4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe
00000e6e: SWAP1
00000e6f: DUP2
00000e70: ADD
00000e71: SWAP1
00000e72: PUSH2 0x07d4
00000e75: JUMP

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x917721b6e8c2e708c5c234b5a3c2cc8b916f5a9e333f8ef50245fd205bb3ca71
call_targets: 0x29d38fdf26d64fa799276e6615759d27db1f1fcd
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x917721b6e8c2e708c5c234b5a3c2cc8b916f5a9e333f8ef50245fd205bb3ca71",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x29d38fdf26d64fa799276e6615759d27db1f1fcd"
    ],
    "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": "0x173825d9",
            "selector": "0x173825d9",
            "calldata_variants": [
                "0x173825d9",
                "0x173825d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2f54bf6e",
            "selector": "0x2f54bf6e",
            "calldata_variants": [
                "0x2f54bf6e",
                "0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4123cb6b",
            "selector": "0x4123cb6b",
            "calldata_variants": [
                "0x4123cb6b",
                "0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7065cb48",
            "selector": "0x7065cb48",
            "calldata_variants": [
                "0x7065cb48",
                "0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x746c9171",
            "selector": "0x746c9171",
            "calldata_variants": [
                "0x746c9171",
                "0x746c91710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x797af627",
            "selector": "0x797af627",
            "calldata_variants": [
                "0x797af627",
                "0x797af6270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb61d27f6",
            "selector": "0xb61d27f6",
            "calldata_variants": [
                "0xb61d27f6",
                "0xb61d27f60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb75c7dc6",
            "selector": "0xb75c7dc6",
            "calldata_variants": [
                "0xb75c7dc6",
                "0xb75c7dc60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1618,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [],
    "untrusted_call_count": 1
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x917721b6e8c2e708c5c234b5a3c2cc8b916f5a9e333f8ef50245fd205bb3ca71
call_targets: 0x29d38fdf26d64fa799276e6615759d27db1f1fcd
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x917721b6e8c2e708c5c234b5a3c2cc8b916f5a9e333f8ef50245fd205bb3ca71",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x29d38fdf26d64fa799276e6615759d27db1f1fcd"
    ],
    "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": "0x173825d9",
            "selector": "0x173825d9",
            "calldata_variants": [
                "0x173825d9",
                "0x173825d90000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2f54bf6e",
            "selector": "0x2f54bf6e",
            "calldata_variants": [
                "0x2f54bf6e",
                "0x2f54bf6e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x4123cb6b",
            "selector": "0x4123cb6b",
            "calldata_variants": [
                "0x4123cb6b",
                "0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7065cb48",
            "selector": "0x7065cb48",
            "calldata_variants": [
                "0x7065cb48",
                "0x7065cb480000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x746c9171",
            "selector": "0x746c9171",
            "calldata_variants": [
                "0x746c9171",
                "0x746c91710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x797af627",
            "selector": "0x797af627",
            "calldata_variants": [
                "0x797af627",
                "0x797af6270000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb61d27f6",
            "selector": "0xb61d27f6",
            "calldata_variants": [
                "0xb61d27f6",
                "0xb61d27f60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb75c7dc6",
            "selector": "0xb75c7dc6",
            "calldata_variants": [
                "0xb75c7dc6",
                "0xb75c7dc60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1618,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": []
}