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

Analysis Run

770c1a79-9ebc-4db0-b715-3962cf4e2451

complete
Chain ID
1
Address
Block Number
Created
Mon, Jan 5, 2026 6:14 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
SELFDESTRUCT present
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
31705 report.consolidate complete 1 / 1 3 months ago
95653 artifact.fetch complete 1 / 3 1 week ago
95654 tool.cast_disasm complete 1 / 3 1 week ago
95655 analysis.bundle complete 1 / 3 1 week ago
95656 capability.graph complete 1 / 3 1 week ago
95657 detector.run complete 1 / 3 1 week ago
95658 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
No concrete, exploitable profit path is evident from the bytecode alone; value-moving paths are owner-gated or depend on external token/contract behavior without a clearly attacker-controllable beneficiary.
View stderr
[codex:636718] OpenAI Codex v0.77.0 (research preview)
[codex:636718] --------
[codex:636718] workdir: /tmp/codex-multi-rvh9byiy
[codex:636718] model: gpt-5.2-codex
[codex:636718] provider: openai
[codex:636718] approval: never
[codex:636718] sandbox: read-only
[codex:636718] reasoning effort: xhigh
[codex:636718] reasoning summaries: auto
[codex:636718] session id: 019b8cbf-038f-7963-80e8-9403a366cd4e
[codex:636718] --------
[codex:636718] user
[codex:636718] 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:636718] 
[codex:636718] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:636718] 
[codex:636718] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:636718] - Gas inefficiency, code quality, or best practices
[codex:636718] - Theoretical vulnerabilities without a clear extraction path
[codex:636718] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:636718] - Issues requiring social engineering or off-chain coordination
[codex:636718] 
[codex:636718] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:636718] - CALL/DELEGATECALL with controllable destination or calldata
[codex:636718] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:636718] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:636718] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:636718] - External calls before state updates (reentrancy)
[codex:636718] - SELFDESTRUCT with controllable beneficiary
[codex:636718] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:636718] 
[codex:636718] For each finding, you MUST explain:
[codex:636718] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:636718] 2. The concrete sequence of transactions to extract value
[codex:636718] 3. Why you believe this is exploitable (not just suspicious)
[codex:636718] 
[codex:636718] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:636718] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:636718] 
[codex:636718] Output MUST be valid JSON matching the provided schema.
[codex:636718] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:636718] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:636718] mcp startup: no servers
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Preparing to read instructions**
[codex:636718] exec
[codex:636718] /bin/bash -lc ls in /tmp/codex-multi-rvh9byiy succeeded in 5ms:
[codex:636718] BYTECODE_BUNDLE.txt
[codex:636718] codex-output-schema.json
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Reading file**
[codex:636718] exec
[codex:636718] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-rvh9byiy succeeded in 5ms:
[codex:636718] Runtime bytecode bundle for best-effort auditing.
[codex:636718] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:636718] 
[codex:636718] FILE: runtime_bytecode.hex
[codex:636718] 0x6080604052600436106100ab5760003560e01c80638da5cb5b116100645780638da5cb5b1461018b57806396e80821146101b65780639dc29fac146101df578063bebbf4d01461021c578063f2fde38b14610259578063f3fef3a314610282576100b2565b80631b66cb00146100b75780633edca44a146100e057806341c0e1b51461010957806344004cc1146101205780636f307dc314610149578063715018a614610174576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100de60048036038101906100d9919061118e565b6102ab565b005b3480156100ec57600080fd5b50610107600480360381019061010291906111f3565b61039e565b005b34801561011557600080fd5b5061011e6105ce565b005b34801561012c57600080fd5b506101476004803603810190610142919061126a565b61062b565b005b34801561015557600080fd5b5061015e61087c565b60405161016b9190611538565b60405180910390f35b34801561018057600080fd5b506101896108a6565b005b34801561019757600080fd5b506101a0610a13565b6040516101ad9190611538565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d891906111f3565b610a3c565b005b3480156101eb57600080fd5b50610206600480360381019061020191906112b9565b610d4f565b6040516102139190611649565b60405180910390f35b34801561022857600080fd5b50610243600480360381019061023e9190611347565b610d5b565b60405161025091906116e4565b60405180910390f35b34801561026557600080fd5b50610280600480360381019061027b919061118e565b610d67565b005b34801561028e57600080fd5b506102a960048036038101906102a491906111b7565b610f59565b005b6102b361111d565b73ffffffffffffffffffffffffffffffffffffffff166102d1610a13565b73ffffffffffffffffffffffffffffffffffffffff161461035a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e87736b7a87899490ece95443e979ca9485cbe7e715226040518363ffffffff1660e01b81526004016103ef92919061156e565b60206040518083038186803b15801561040757600080fd5b505afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043f919061131e565b905060008573ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b815260040161047c9190611538565b60206040518083038186803b15801561049457600080fd5b505afa1580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc919061131e565b90508282101580156104de5750828110155b61051d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610514906116c4565b60405180910390fd5b60008190508183101561052e578290505b736b7a87899490ece95443e979ca9485cbe7e7152273ffffffffffffffffffffffffffffffffffffffff16638d7d3eea8930308568056bc75e2d63100000600060386040518863ffffffff1660e01b81526004016105929796959493929190611597565b600060405180830381600087803b1580156105ac57600080fd5b505af11580156105c0573d6000803e3d6000fd5b505050505050505050505050565b6105d6610a13565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561062957610611610a13565b73ffffffffffffffffffffffffffffffffffffffff16ff5b565b61063361111d565b73ffffffffffffffffffffffffffffffffffffffff16610651610a13565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000839050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107199190611553565b60206040518083038186803b15801561073157600080fd5b505afa158015610745573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610769919061131e565b10156107aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a190611664565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016107e5929190611620565b602060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083791906112f5565b610876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086d906116a4565b60405180910390fd5b50505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108ae61111d565b73ffffffffffffffffffffffffffffffffffffffff166108cc610a13565b73ffffffffffffffffffffffffffffffffffffffff1614610955576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e87736b7a87899490ece95443e979ca9485cbe7e715226040518363ffffffff1660e01b8152600401610a8d92919061156e565b60206040518083038186803b158015610aa557600080fd5b505afa158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add919061131e565b905060008573ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610b1a9190611538565b60206040518083038186803b158015610b3257600080fd5b505afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a919061131e565b9050828210158015610b7c5750828110155b610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb2906116c4565b60405180910390fd5b600081905081831015610bcc578290505b736b7a87899490ece95443e979ca9485cbe7e7152273ffffffffffffffffffffffffffffffffffffffff16638d7d3eea8930308568056bc75e2d63100000600060386040518863ffffffff1660e01b8152600401610c309796959493929190611597565b600060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610cbd91906116e4565b600060405180830381600087803b158015610cd757600080fd5b505af1158015610ceb573d6000803e3d6000fd5b505050506000858281610cfa57fe5b0490504173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d43573d6000803e3d6000fd5b50505050505050505050565b60006001905092915050565b60006001905092915050565b610d6f61111d565b73ffffffffffffffffffffffffffffffffffffffff16610d8d610a13565b73ffffffffffffffffffffffffffffffffffffffff1614610e16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118406026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f6161111d565b73ffffffffffffffffffffffffffffffffffffffff16610f7f610a13565b73ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f90611684565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16318111156110d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c990611664565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611118573d6000803e3d6000fd5b505050565b600033905090565b600081359050611134816117e3565b92915050565b600081359050611149816117fa565b92915050565b60008151905061115e81611811565b92915050565b60008135905061117381611828565b92915050565b60008151905061118881611828565b92915050565b6000602082840312156111a057600080fd5b60006111ae84828501611125565b91505092915050565b600080604083850312156111ca57600080fd5b60006111d88582860161113a565b92505060206111e985828601611164565b9150509250929050565b600080600080600060a0868803121561120b57600080fd5b600061121988828901611125565b955050602061122a88828901611125565b945050604061123b88828901611125565b935050606061124c88828901611164565b925050608061125d88828901611164565b9150509295509295909350565b60008060006060848603121561127f57600080fd5b600061128d86828701611125565b935050602061129e86828701611125565b92505060406112af86828701611164565b9150509250925092565b600080604083850312156112cc57600080fd5b60006112da85828601611125565b92505060206112eb85828601611164565b9150509250929050565b60006020828403121561130757600080fd5b60006113158482850161114f565b91505092915050565b60006020828403121561133057600080fd5b600061133e84828501611179565b91505092915050565b6000806040838503121561135a57600080fd5b600061136885828601611164565b925050602061137985828601611125565b9150509250929050565b61138c81611777565b82525050565b61139b81611710565b82525050565b6113aa81611734565b82525050565b6113b981611789565b82525050565b6113c88161179b565b82525050565b6113d7816117ad565b82525050565b60006113ea6034836116ff565b91507f596f752061726520747279696e6720746f207769746864726177206d6f72652060008301527f66756e6473207468616e20617661696c61626c650000000000000000000000006020830152604082019050919050565b6000611450601c836116ff565b91507f7472616e7366657220746f20746865207a65726f2061646472657373000000006000830152602082019050919050565b7f3078000000000000000000000000000000000000000000000000000000000000815250565b60006114b66010836116ff565b91507f4661696c206f6e207472616e73666572000000000000000000000000000000006000830152602082019050919050565b60006114f66007836116ff565b91507f6572726f722031000000000000000000000000000000000000000000000000006000830152602082019050919050565b61153281611760565b82525050565b600060208201905061154d6000830184611392565b92915050565b60006020820190506115686000830184611383565b92915050565b60006040820190506115836000830185611392565b6115906020830184611392565b9392505050565b6000610120820190506115ad600083018a611392565b6115ba6020830189611383565b6115c76040830188611383565b6115d46060830187611529565b6115e160808301866113bf565b6115ee60a08301856113b0565b6115fa60c08301611483565b61160660e08301611483565b6116146101008301846113ce565b98975050505050505050565b60006040820190506116356000830185611392565b6116426020830184611529565b9392505050565b600060208201905061165e60008301846113a1565b92915050565b6000602082019050818103600083015261167d816113dd565b9050919050565b6000602082019050818103600083015261169d81611443565b9050919050565b600060208201905081810360008301526116bd816114a9565b9050919050565b600060208201905081810360008301526116dd816114e9565b9050919050565b60006020820190506116f96000830184611529565b92915050565b600082825260208201905092915050565b600061171b82611740565b9050919050565b600061172d82611740565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611782826117bf565b9050919050565b60006117948261176a565b9050919050565b60006117a682611760565b9050919050565b60006117b882611760565b9050919050565b60006117ca826117d1565b9050919050565b60006117dc82611740565b9050919050565b6117ec81611710565b81146117f757600080fd5b50565b61180381611722565b811461180e57600080fd5b50565b61181a81611734565b811461182557600080fd5b50565b61183181611760565b811461183c57600080fd5b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220021ae2dd97eb8eb70fdcb7f4378c3e7a6ccda654f1ae0b1a06fcf4b820aa127c64736f6c63430007060033
[codex:636718] 
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Interpreting bytecode for security analysis**
[codex:636718] 
[codex:636718] I'm carefully mapping functions and storage slots from the runtime bytecode, focusing on ownership controls and token interactions to spot any exploitable paths to profit. I’m correlating function selectors with their likely roles, especially token transfers and ownership changes, to check if any unprotected calls might allow unauthorized fund withdrawals or manipulations. This detailed dissection aims to confirm if there’s a concrete exploit or just standard Ownable plus token logic.
[codex:636718] thinking
[codex:636718] **Planning bytecode disassembler script**
[codex:636718] 
[codex:636718] I’m preparing to write a Python script to disassemble the bytecode so I can better understand tricky function calls, especially around 0x39e. Since the environment is read-only, I’ll run the script in-memory to decode opcodes and annotate jumps. This will help me annotate and analyze the complex instruction flow and arguments more precisely.
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:636718] # extract runtime hex after 0x
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] if not m:
[codex:636718]     print('no hex')
[codex:636718]     raise SystemExit
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # opcode table
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] # disassemble into list of (pc, op, imm_bytes)
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60 <= op <= 0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] # helper to print range
[codex:636718] 
[codex:636718] def print_range(start, end):
[codex:636718]     for pc,name,imm in ops:
[codex:636718]         if start <= pc < end:
[codex:636718]             if imm:
[codex:636718]                 print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]             else:
[codex:636718]                 print(f\"{pc:04x}: {name}\")
[codex:636718] 
[codex:636718] # function entry PCs from dispatcher
[codex:636718] print('code size', len(code))
[codex:636718] # print around 0x39e function
[codex:636718] print('\\n-- around 0x039e --')
[codex:636718] print_range(0x0390,0x0600)
[codex:636718] 
[codex:636718] print('\\n-- around 0x062b --')
[codex:636718] print_range(0x0620,0x0880)
[codex:636718] 
[codex:636718] print('\\n-- around 0x0a3c --')
[codex:636718] print_range(0x0a30,0x0d70)
[codex:636718] 
[codex:636718] print('\\n-- around 0x0f59 --')
[codex:636718] print_range(0x0f50,0x111d)
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 39ms:
[codex:636718] code size 6299
[codex:636718] 
[codex:636718] -- around 0x039e --
[codex:636718] 0396: AND
[codex:636718] 0397: MUL
[codex:636718] 0398: OR
[codex:636718] 0399: SWAP1
[codex:636718] 039a: SSTORE
[codex:636718] 039b: POP
[codex:636718] 039c: POP
[codex:636718] 039d: JUMP
[codex:636718] 039e: JUMPDEST
[codex:636718] 039f: PUSH1 0x00
[codex:636718] 03a1: DUP5
[codex:636718] 03a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 03b7: AND
[codex:636718] 03b8: PUSH4 0xdd62ed3e
[codex:636718] 03bd: DUP8
[codex:636718] 03be: PUSH20 0x6b7a87899490ece95443e979ca9485cbe7e71522
[codex:636718] 03d3: PUSH1 0x40
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing function call and stack setup**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:636718] import re
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # opcode table for disassembly
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] # print dispatcher segment
[codex:636718] start=0x00b0
[codex:636718] end=0x0120
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 31ms:
[codex:636718] 00b0: JUMPI
[codex:636718] 00b1: STOP
[codex:636718] 00b2: JUMPDEST
[codex:636718] 00b3: PUSH1 0x00
[codex:636718] 00b5: DUP1
[codex:636718] 00b6: REVERT
[codex:636718] 00b7: JUMPDEST
[codex:636718] 00b8: CALLVALUE
[codex:636718] 00b9: DUP1
[codex:636718] 00ba: ISZERO
[codex:636718] 00bb: PUSH2 0x00c3
[codex:636718] 00be: JUMPI
[codex:636718] 00bf: PUSH1 0x00
[codex:636718] 00c1: DUP1
[codex:636718] 00c2: REVERT
[codex:636718] 00c3: JUMPDEST
[codex:636718] 00c4: POP
[codex:636718] 00c5: PUSH2 0x00de
[codex:636718] 00c8: PUSH1 0x04
[codex:636718] 00ca: DUP1
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing stack behavior around decoder**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x11f3
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x11e0
[codex:636718] end=0x1220
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 37ms:
[codex:636718] 11e1: DUP6
[codex:636718] 11e2: DUP3
[codex:636718] 11e3: DUP7
[codex:636718] 11e4: ADD
[codex:636718] 11e5: PUSH2 0x1164
[codex:636718] 11e8: JUMP
[codex:636718] 11e9: JUMPDEST
[codex:636718] 11ea: SWAP2
[codex:636718] 11eb: POP
[codex:636718] 11ec: POP
[codex:636718] 11ed: SWAP3
[codex:636718] 11ee: POP
[codex:636718] 11ef: SWAP3
[codex:636718] 11f0: SWAP1
[codex:636718] 11f1: POP
[codex:636718] 11f2: JUMP
[codex:636718] 11f3: JUMPDEST
[codex:636718] 11f4: PUSH1 0x00
[codex:636718] 11f6: DUP1
[codex:636718] 11f7: PUSH1 0x00
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Continuing to examine decoder**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x1218
[codex:636718] end=0x1280
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 32ms:
[codex:636718] 1218: JUMP
[codex:636718] 1219: JUMPDEST
[codex:636718] 121a: SWAP6
[codex:636718] 121b: POP
[codex:636718] 121c: POP
[codex:636718] 121d: PUSH1 0x20
[codex:636718] 121f: PUSH2 0x122a
[codex:636718] 1222: DUP9
[codex:636718] 1223: DUP3
[codex:636718] 1224: DUP10
[codex:636718] 1225: ADD
[codex:636718] 1226: PUSH2 0x1125
[codex:636718] 1229: JUMP
[codex:636718] 122a: JUMPDEST
[codex:636718] 122b: SWAP5
[codex:636718] 122c: POP
[codex:636718] 122d: POP
[codex:636718] 122e: PUSH1 0x40
[codex:636718] 1230: PUSH2 0x123b
[codex:636718] 1233: DUP9
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing ABI decoding and function parameters**
[codex:636718] 
[codex:636718] I'm digging into the ABI decoder at 0x11f3, which seems designed to decode five parameters, likely addresses and uints. By tracking stack operations and patterns like DUP5 and calldata preparation, I'm trying to map which function arguments correspond to which call parameters, especially around function 0x39e. I want to understand how parameters relate to external calls—this will help assess if unauthorized token or ETH transfers might be possible. To do this precisely, I'll write a symbolic stack interpreter to track argument usage through the code, focusing especially on call building and the helper at 0x1597 that likely encodes multiple arguments. This deep stack and memory analysis should reveal data flows critical for spotting potential vulnerabilities.
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x1597
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x1580
[codex:636718] end=0x15e0
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 32ms:
[codex:636718] 1582: JUMP
[codex:636718] 1583: JUMPDEST
[codex:636718] 1584: PUSH2 0x1590
[codex:636718] 1587: PUSH1 0x20
[codex:636718] 1589: DUP4
[codex:636718] 158a: ADD
[codex:636718] 158b: DUP5
[codex:636718] 158c: PUSH2 0x1392
[codex:636718] 158f: JUMP
[codex:636718] 1590: JUMPDEST
[codex:636718] 1591: SWAP4
[codex:636718] 1592: SWAP3
[codex:636718] 1593: POP
[codex:636718] 1594: POP
[codex:636718] 1595: POP
[codex:636718] 1596: JUMP
[codex:636718] 1597: JUMPDEST
[codex:636718] 1598: PUSH1 0x00
[codex:636718] 159a: PUSH2 0x0120
[codex:636718] 159d: DUP3
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Continuing analysis**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x15d0 onwards
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x15d0
[codex:636718] end=0x1610
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 31ms:
[codex:636718] 15d0: PUSH2 0x1529
[codex:636718] 15d3: JUMP
[codex:636718] 15d4: JUMPDEST
[codex:636718] 15d5: PUSH2 0x15e1
[codex:636718] 15d8: PUSH1 0x80
[codex:636718] 15da: DUP4
[codex:636718] 15db: ADD
[codex:636718] 15dc: DUP7
[codex:636718] 15dd: PUSH2 0x13bf
[codex:636718] 15e0: JUMP
[codex:636718] 15e1: JUMPDEST
[codex:636718] 15e2: PUSH2 0x15ee
[codex:636718] 15e5: PUSH1 0xa0
[codex:636718] 15e7: DUP4
[codex:636718] 15e8: ADD
[codex:636718] 15e9: DUP6
[codex:636718] 15ea: PUSH2 0x13b0
[codex:636718] 15ed: JUMP
[codex:636718] 15ee: JUMPDEST
[codex:636718] 15ef: PUSH2 0x15fa
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Continuing exploration**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x1606
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x1606
[codex:636718] end=0x1640
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 34ms:
[codex:636718] 1606: JUMPDEST
[codex:636718] 1607: PUSH2 0x1614
[codex:636718] 160a: PUSH2 0x0100
[codex:636718] 160d: DUP4
[codex:636718] 160e: ADD
[codex:636718] 160f: DUP5
[codex:636718] 1610: PUSH2 0x13ce
[codex:636718] 1613: JUMP
[codex:636718] 1614: JUMPDEST
[codex:636718] 1615: SWAP9
[codex:636718] 1616: SWAP8
[codex:636718] 1617: POP
[codex:636718] 1618: POP
[codex:636718] 1619: POP
[codex:636718] 161a: POP
[codex:636718] 161b: POP
[codex:636718] 161c: POP
[codex:636718] 161d: POP
[codex:636718] 161e: POP
[codex:636718] 161f: JUMP
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing function argument encoding and call patterns**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x08f0
[codex:636718] end=0x0910
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 36ms:
[codex:636718] 090c: DUP2
[codex:636718] 090d: MSTORE
[codex:636718] 090e: PUSH1 0x04
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Investigating code around 0x08fc**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x08fc
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] # find 0x08fc
[codex:636718] for i,(pc,name,imm) in enumerate(ops):
[codex:636718]     if pc==0x08fc:
[codex:636718]         start=i-10
[codex:636718]         end=i+20
[codex:636718]         for pc,name,imm in ops[start:end]:
[codex:636718]             if imm:
[codex:636718]                 print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]             else:
[codex:636718]                 print(f\"{pc:04x}: {name}\")
[codex:636718]         break
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 33ms:
[codex:636718] 
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Inspecting opcode presence at specific address**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x08e0-0x0920
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x08e0
[codex:636718] end=0x0920
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 34ms:
[codex:636718] 08e2: AND
[codex:636718] 08e3: EQ
[codex:636718] 08e4: PUSH2 0x0955
[codex:636718] 08e7: JUMPI
[codex:636718] 08e8: PUSH1 0x40
[codex:636718] 08ea: MLOAD
[codex:636718] 08eb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:636718] 090c: DUP2
[codex:636718] 090d: MSTORE
[codex:636718] 090e: PUSH1 0x04
[codex:636718] 0910: ADD
[codex:636718] 0911: DUP1
[codex:636718] 0912: DUP1
[codex:636718] 0913: PUSH1 0x20
[codex:636718] 0915: ADD
[codex:636718] 0916: DUP3
[codex:636718] 0917: DUP2
[codex:636718] 0918: SUB
[codex:636718] 0919: DUP3
[codex:636718] 091a: MSTORE
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing jump destination at 0x08fc**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # find opcode at 0x08fc
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] # decode op at pc 0x08fc
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=None
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     if pc0==0x08fc:
[codex:636718]         print(pc0, name, imm.hex() if imm else '')
[codex:636718]         break
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 31ms:
[codex:636718] 
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Investigating missing opcode at specific address**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # find any JUMPDEST near 0x08fc
[codex:636718] opnames={
[codex:636718]     0x5b:'JUMPDEST'
[codex:636718] }
[codex:636718] 
[codex:636718] pc=0
[codex:636718] locs=[]
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     if op==0x5b:
[codex:636718]         if 0x08e0 <= pc0 <= 0x0910:
[codex:636718]             locs.append(pc0)
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         pc+=n
[codex:636718] 
[codex:636718] print(locs)
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 29ms:
[codex:636718] []
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing gas stipend usage and potential exploits**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x05d0-0x0630
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x05d0
[codex:636718] end=0x0630
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 32ms:
[codex:636718] 05d2: PUSH2 0x0a13
[codex:636718] 05d5: JUMP
[codex:636718] 05d6: JUMPDEST
[codex:636718] 05d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 05ec: AND
[codex:636718] 05ed: CALLER
[codex:636718] 05ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 0603: AND
[codex:636718] 0604: EQ
[codex:636718] 0605: ISZERO
[codex:636718] 0606: PUSH2 0x0629
[codex:636718] 0609: JUMPI
[codex:636718] 060a: PUSH2 0x0611
[codex:636718] 060d: PUSH2 0x0a13
[codex:636718] 0610: JUMP
[codex:636718] 0611: JUMPDEST
[codex:636718] 0612: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 0627: AND
[codex:636718] 0628: SELFDESTRUCT
[codex:636718] 0629: JUMPDEST
[codex:636718] 
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing function call and owner checks**
[codex:636718] thinking
[codex:636718] **Tracing argument order via stack simulation**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0xd67
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x0d67
[codex:636718] end=0x0ea0
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 36ms:
[codex:636718] 0d67: JUMPDEST
[codex:636718] 0d68: PUSH2 0x0d6f
[codex:636718] 0d6b: PUSH2 0x111d
[codex:636718] 0d6e: JUMP
[codex:636718] 0d6f: JUMPDEST
[codex:636718] 0d70: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 0d85: AND
[codex:636718] 0d86: PUSH2 0x0d8d
[codex:636718] 0d89: PUSH2 0x0a13
[codex:636718] 0d8c: JUMP
[codex:636718] 0d8d: JUMPDEST
[codex:636718] 0d8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 0da3: AND
[codex:636718] 0da4: EQ
[codex:636718] 0da5: PUSH2 0x0e16
[codex:636718] 0da8: JUMPI
[codex:636718] 0da9: PUSH1 0x40
[codex:636718] 0dab: MLOAD
[codex:636718] 0dac: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
[codex:636718] 0dcd: DUP2
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Tracking argument usage**
[codex:636718] exec
[codex:636718] /bin/bash -lc "python - <<'PY'
[codex:636718] import re
[codex:636718] from pathlib import Path
[codex:636718] hexdata=Path('BYTECODE_BUNDLE.txt').read_text();
[codex:636718] m=re.search(r'0x([0-9a-fA-F]+)', hexdata)
[codex:636718] code=bytes.fromhex(m.group(1))
[codex:636718] # disassemble around 0x0e9c-0xee0
[codex:636718] opnames={
[codex:636718]     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:636718]     0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',
[codex:636718]     0x20:'SHA3',
[codex:636718]     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:636718]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:636718]     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:636718]     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:636718]     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:636718]     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:636718]     0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:636718]     0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:636718] }
[codex:636718] 
[codex:636718] ops=[]
[codex:636718] pc=0
[codex:636718] while pc < len(code):
[codex:636718]     op=code[pc]
[codex:636718]     name=opnames.get(op, f'OP_{op:02x}')
[codex:636718]     pc0=pc
[codex:636718]     pc+=1
[codex:636718]     imm=b''
[codex:636718]     if 0x60<=op<=0x7f:
[codex:636718]         n=op-0x5f
[codex:636718]         imm=code[pc:pc+n]
[codex:636718]         pc+=n
[codex:636718]     ops.append((pc0,name,imm))
[codex:636718] 
[codex:636718] start=0x0e9c
[codex:636718] end=0x0f50
[codex:636718] for pc,name,imm in ops:
[codex:636718]     if start<=pc<end:
[codex:636718]         if imm:
[codex:636718]             print(f\"{pc:04x}: {name} 0x{imm.hex()}\")
[codex:636718]         else:
[codex:636718]             print(f\"{pc:04x}: {name}\")
[codex:636718] PY" in /tmp/codex-multi-rvh9byiy succeeded in 34ms:
[codex:636718] 0e9c: JUMPDEST
[codex:636718] 0e9d: DUP1
[codex:636718] 0e9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 0eb3: AND
[codex:636718] 0eb4: PUSH1 0x00
[codex:636718] 0eb6: DUP1
[codex:636718] 0eb7: SLOAD
[codex:636718] 0eb8: SWAP1
[codex:636718] 0eb9: PUSH2 0x0100
[codex:636718] 0ebc: EXP
[codex:636718] 0ebd: SWAP1
[codex:636718] 0ebe: DIV
[codex:636718] 0ebf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 0ed4: AND
[codex:636718] 0ed5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
[codex:636718] 0eea: AND
[codex:636718] 0eeb: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
[codex:636718] 0f0c: PUSH1 0x40
[codex:636718] 0f0e: MLOAD
[codex:636718] 0f0f: PUSH1 0x40
[codex:636718] 
[codex:636718] 
[codex:636718] thinking
[codex:636718] **Analyzing EVM stack argument order**
[codex:636718] thinking
[codex:636718] **Concluding exploit analysis with no findings**
[codex:636718] 
[codex:636718] I'll summarize that no clear exploit path emerges from the bytecode alone, as key value transfers are owner-protected or involve external calls without direct control by callers, and uncertainties remain around external token functions preventing firm conclusions.
[codex:636718] codex
[codex:636718] {"no_findings":true,"summary":"No concrete, exploitable profit path is evident from the bytecode alone; value-moving paths are owner-gated or depend on external token/contract behavior without a clearly attacker-controllable beneficiary.","findings":[]}
[codex:636718] tokens used
[codex:636718] 150,052
[codex:636718] {"no_findings":true,"summary":"No concrete, exploitable profit path is evident from the bytecode alone; value-moving paths are owner-gated or depend on external token/contract behavior without a clearly attacker-controllable beneficiary.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-05T06:14:06.238018+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable profit path is evident from the bytecode alone; value-moving paths are owner-gated or depend on external token/contract behavior without a clearly attacker-controllable beneficiary.",
    "raw_final": {
        "summary": "No concrete, exploitable profit path is evident from the bytecode alone; value-moving paths are owner-gated or depend on external token/contract behavior without a clearly attacker-controllable beneficiary.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
1
CREATE2
0
CALL-family (heavy)
11
EXT*/BALANCE
10
Total opcodes
3254
Flags
delegatecall_present selfdestruct_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00ab
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8da5cb5b
00000019: GT
0000001a: PUSH2 0x0064
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x8da5cb5b
00000024: EQ
00000025: PUSH2 0x018b
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x96e80821
0000002f: EQ
00000030: PUSH2 0x01b6
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0x9dc29fac
0000003a: EQ
0000003b: PUSH2 0x01df
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xbebbf4d0
00000045: EQ
00000046: PUSH2 0x021c
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2fde38b
00000050: EQ
00000051: PUSH2 0x0259
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf3fef3a3
0000005b: EQ
0000005c: PUSH2 0x0282
0000005f: JUMPI
00000060: PUSH2 0x00b2
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x1b66cb00
0000006b: EQ
0000006c: PUSH2 0x00b7
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x3edca44a
00000076: EQ
00000077: PUSH2 0x00e0
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x41c0e1b5
00000081: EQ
00000082: PUSH2 0x0109
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x44004cc1
0000008c: EQ
0000008d: PUSH2 0x0120
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0x6f307dc3
00000097: EQ
00000098: PUSH2 0x0149
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0x715018a6
000000a2: EQ
000000a3: PUSH2 0x0174
000000a6: JUMPI
000000a7: PUSH2 0x00b2
000000aa: JUMP
000000ab: JUMPDEST
000000ac: CALLDATASIZE
000000ad: PUSH2 0x00b2
000000b0: JUMPI
000000b1: STOP
000000b2: JUMPDEST
000000b3: PUSH1 0x00
000000b5: DUP1
000000b6: REVERT
000000b7: JUMPDEST
000000b8: CALLVALUE
000000b9: DUP1
000000ba: ISZERO
000000bb: PUSH2 0x00c3
000000be: JUMPI
000000bf: PUSH1 0x00
000000c1: DUP1
000000c2: REVERT
000000c3: JUMPDEST
000000c4: POP
000000c5: PUSH2 0x00de
000000c8: PUSH1 0x04
000000ca: DUP1
000000cb: CALLDATASIZE
000000cc: SUB
000000cd: DUP2
000000ce: ADD
000000cf: SWAP1
000000d0: PUSH2 0x00d9
000000d3: SWAP2
000000d4: SWAP1
000000d5: PUSH2 0x118e
000000d8: JUMP
000000d9: JUMPDEST
000000da: PUSH2 0x02ab
000000dd: JUMP
000000de: JUMPDEST
000000df: STOP
000000e0: JUMPDEST
000000e1: CALLVALUE
000000e2: DUP1
000000e3: ISZERO
000000e4: PUSH2 0x00ec
000000e7: JUMPI
000000e8: PUSH1 0x00
000000ea: DUP1
000000eb: REVERT
000000ec: JUMPDEST
000000ed: POP
000000ee: PUSH2 0x0107
000000f1: PUSH1 0x04
000000f3: DUP1
000000f4: CALLDATASIZE
000000f5: SUB
000000f6: DUP2
000000f7: ADD
000000f8: SWAP1
000000f9: PUSH2 0x0102
000000fc: SWAP2
000000fd: SWAP1
000000fe: PUSH2 0x11f3
00000101: JUMP
00000102: JUMPDEST
00000103: PUSH2 0x039e
00000106: JUMP
00000107: JUMPDEST
00000108: STOP
00000109: JUMPDEST
0000010a: CALLVALUE
0000010b: DUP1
0000010c: ISZERO
0000010d: PUSH2 0x0115
00000110: JUMPI
00000111: PUSH1 0x00
00000113: DUP1
00000114: REVERT
00000115: JUMPDEST
00000116: POP
00000117: PUSH2 0x011e
0000011a: PUSH2 0x05ce
0000011d: JUMP
0000011e: JUMPDEST
0000011f: STOP
00000120: JUMPDEST
00000121: CALLVALUE
00000122: DUP1
00000123: ISZERO
00000124: PUSH2 0x012c
00000127: JUMPI
00000128: PUSH1 0x00
0000012a: DUP1
0000012b: REVERT
0000012c: JUMPDEST
0000012d: POP
0000012e: PUSH2 0x0147
00000131: PUSH1 0x04
00000133: DUP1
00000134: CALLDATASIZE
00000135: SUB
00000136: DUP2
00000137: ADD
00000138: SWAP1
00000139: PUSH2 0x0142
0000013c: SWAP2
0000013d: SWAP1
0000013e: PUSH2 0x126a
00000141: JUMP
00000142: JUMPDEST
00000143: PUSH2 0x062b
00000146: JUMP
00000147: JUMPDEST
00000148: STOP
00000149: JUMPDEST
0000014a: CALLVALUE
0000014b: DUP1
0000014c: ISZERO
0000014d: PUSH2 0x0155
00000150: JUMPI
00000151: PUSH1 0x00
00000153: DUP1
00000154: REVERT
00000155: JUMPDEST
00000156: POP
00000157: PUSH2 0x015e
0000015a: PUSH2 0x087c
0000015d: JUMP
0000015e: JUMPDEST
0000015f: PUSH1 0x40
00000161: MLOAD
00000162: PUSH2 0x016b
00000165: SWAP2
00000166: SWAP1
00000167: PUSH2 0x1538
0000016a: JUMP
0000016b: JUMPDEST
0000016c: PUSH1 0x40
0000016e: MLOAD
0000016f: DUP1
00000170: SWAP2
00000171: SUB
00000172: SWAP1
00000173: RETURN
00000174: JUMPDEST
00000175: CALLVALUE
00000176: DUP1
00000177: ISZERO
00000178: PUSH2 0x0180
0000017b: JUMPI
0000017c: PUSH1 0x00
0000017e: DUP1
0000017f: REVERT
00000180: JUMPDEST
00000181: POP
00000182: PUSH2 0x0189
00000185: PUSH2 0x08a6
00000188: JUMP
00000189: JUMPDEST
0000018a: STOP
0000018b: JUMPDEST
0000018c: CALLVALUE
0000018d: DUP1
0000018e: ISZERO
0000018f: PUSH2 0x0197
00000192: JUMPI
00000193: PUSH1 0x00
00000195: DUP1
00000196: REVERT
00000197: JUMPDEST
00000198: POP
00000199: PUSH2 0x01a0
0000019c: PUSH2 0x0a13
0000019f: JUMP
000001a0: JUMPDEST
000001a1: PUSH1 0x40
000001a3: MLOAD
000001a4: PUSH2 0x01ad
000001a7: SWAP2
000001a8: SWAP1
000001a9: PUSH2 0x1538
000001ac: JUMP
000001ad: JUMPDEST
000001ae: PUSH1 0x40
000001b0: MLOAD
000001b1: DUP1
000001b2: SWAP2
000001b3: SUB
000001b4: SWAP1
000001b5: RETURN
000001b6: JUMPDEST
000001b7: CALLVALUE
000001b8: DUP1
000001b9: ISZERO
000001ba: PUSH2 0x01c2
000001bd: JUMPI
000001be: PUSH1 0x00
000001c0: DUP1
000001c1: REVERT
000001c2: JUMPDEST
000001c3: POP
000001c4: PUSH2 0x01dd
000001c7: PUSH1 0x04
000001c9: DUP1
000001ca: CALLDATASIZE
000001cb: SUB
000001cc: DUP2
000001cd: ADD
000001ce: SWAP1
000001cf: PUSH2 0x01d8
000001d2: SWAP2
000001d3: SWAP1
000001d4: PUSH2 0x11f3
000001d7: JUMP
000001d8: JUMPDEST
000001d9: PUSH2 0x0a3c
000001dc: JUMP
000001dd: JUMPDEST
000001de: STOP
000001df: JUMPDEST
000001e0: CALLVALUE
000001e1: DUP1
000001e2: ISZERO
000001e3: PUSH2 0x01eb
000001e6: JUMPI
000001e7: PUSH1 0x00
000001e9: DUP1
000001ea: REVERT
000001eb: JUMPDEST
000001ec: POP
000001ed: PUSH2 0x0206
000001f0: PUSH1 0x04
000001f2: DUP1
000001f3: CALLDATASIZE
000001f4: SUB
000001f5: DUP2
000001f6: ADD
000001f7: SWAP1
000001f8: PUSH2 0x0201
000001fb: SWAP2
000001fc: SWAP1
000001fd: PUSH2 0x12b9
00000200: JUMP
00000201: JUMPDEST
00000202: PUSH2 0x0d4f
00000205: JUMP
00000206: JUMPDEST
00000207: PUSH1 0x40
00000209: MLOAD
0000020a: PUSH2 0x0213
0000020d: SWAP2
0000020e: SWAP1
0000020f: PUSH2 0x1649
00000212: JUMP
00000213: JUMPDEST
00000214: PUSH1 0x40
00000216: MLOAD
00000217: DUP1
00000218: SWAP2
00000219: SUB
0000021a: SWAP1
0000021b: RETURN
0000021c: JUMPDEST
0000021d: CALLVALUE
0000021e: DUP1
0000021f: ISZERO
00000220: PUSH2 0x0228
00000223: JUMPI
00000224: PUSH1 0x00
00000226: DUP1
00000227: REVERT
00000228: JUMPDEST
00000229: POP
0000022a: PUSH2 0x0243
0000022d: PUSH1 0x04
0000022f: DUP1
00000230: CALLDATASIZE
00000231: SUB
00000232: DUP2
00000233: ADD
00000234: SWAP1
00000235: PUSH2 0x023e
00000238: SWAP2
00000239: SWAP1
0000023a: PUSH2 0x1347
0000023d: JUMP
0000023e: JUMPDEST
0000023f: PUSH2 0x0d5b
00000242: JUMP
00000243: JUMPDEST
00000244: PUSH1 0x40
00000246: MLOAD
00000247: PUSH2 0x0250
0000024a: SWAP2
0000024b: SWAP1
0000024c: PUSH2 0x16e4
0000024f: JUMP
00000250: JUMPDEST
00000251: PUSH1 0x40
00000253: MLOAD
00000254: DUP1
00000255: SWAP2
00000256: SUB
00000257: SWAP1
00000258: RETURN
00000259: JUMPDEST
0000025a: CALLVALUE
0000025b: DUP1
0000025c: ISZERO
0000025d: PUSH2 0x0265
00000260: JUMPI
00000261: PUSH1 0x00
00000263: DUP1
00000264: REVERT
00000265: JUMPDEST
00000266: POP
00000267: PUSH2 0x0280
0000026a: PUSH1 0x04
0000026c: DUP1
0000026d: CALLDATASIZE
0000026e: SUB
0000026f: DUP2
00000270: ADD
00000271: SWAP1
00000272: PUSH2 0x027b
00000275: SWAP2
00000276: SWAP1
00000277: PUSH2 0x118e
0000027a: JUMP
0000027b: JUMPDEST
0000027c: PUSH2 0x0d67
0000027f: JUMP
00000280: JUMPDEST
00000281: STOP
00000282: JUMPDEST
00000283: CALLVALUE
00000284: DUP1
00000285: ISZERO
00000286: PUSH2 0x028e
00000289: JUMPI
0000028a: PUSH1 0x00
0000028c: DUP1
0000028d: REVERT
0000028e: JUMPDEST
0000028f: POP
00000290: PUSH2 0x02a9
00000293: PUSH1 0x04
00000295: DUP1
00000296: CALLDATASIZE
00000297: SUB
00000298: DUP2
00000299: ADD
0000029a: SWAP1
0000029b: PUSH2 0x02a4
0000029e: SWAP2
0000029f: SWAP1
000002a0: PUSH2 0x11b7
000002a3: JUMP
000002a4: JUMPDEST
000002a5: PUSH2 0x0f59
000002a8: JUMP
000002a9: JUMPDEST
000002aa: STOP
000002ab: JUMPDEST
000002ac: PUSH2 0x02b3
000002af: PUSH2 0x111d
000002b2: JUMP
000002b3: JUMPDEST
000002b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002c9: AND
000002ca: PUSH2 0x02d1
000002cd: PUSH2 0x0a13
000002d0: JUMP
000002d1: JUMPDEST
000002d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002e7: AND
000002e8: EQ
000002e9: PUSH2 0x035a
000002ec: JUMPI
000002ed: PUSH1 0x40
000002ef: MLOAD
000002f0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000311: DUP2
00000312: MSTORE
00000313: PUSH1 0x04
00000315: ADD
00000316: DUP1
00000317: DUP1
00000318: PUSH1 0x20
0000031a: ADD
0000031b: DUP3
0000031c: DUP2
0000031d: SUB
0000031e: DUP3
0000031f: MSTORE
00000320: PUSH1 0x20
00000322: DUP2
00000323: MSTORE
00000324: PUSH1 0x20
00000326: ADD
00000327: DUP1
00000328: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000349: DUP2
0000034a: MSTORE
0000034b: POP
0000034c: PUSH1 0x20
0000034e: ADD
0000034f: SWAP2
00000350: POP
00000351: POP
00000352: PUSH1 0x40
00000354: MLOAD
00000355: DUP1
00000356: SWAP2
00000357: SUB
00000358: SWAP1
00000359: REVERT
0000035a: JUMPDEST
0000035b: DUP1
0000035c: PUSH1 0x01
0000035e: PUSH1 0x00
00000360: PUSH2 0x0100
00000363: EXP
00000364: DUP2
00000365: SLOAD
00000366: DUP2
00000367: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000037c: MUL
0000037d: NOT
0000037e: AND
0000037f: SWAP1
00000380: DUP4
00000381: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000396: AND
00000397: MUL
00000398: OR
00000399: SWAP1
0000039a: SSTORE
0000039b: POP
0000039c: POP
0000039d: JUMP
0000039e: JUMPDEST
0000039f: PUSH1 0x00
000003a1: DUP5
000003a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003b7: AND
000003b8: PUSH4 0xdd62ed3e
000003bd: DUP8
000003be: PUSH20 0x6b7a87899490ece95443e979ca9485cbe7e71522
000003d3: PUSH1 0x40
000003d5: MLOAD
000003d6: DUP4
000003d7: PUSH4 0xffffffff
000003dc: AND
000003dd: PUSH1 0xe0
000003df: SHL
000003e0: DUP2
000003e1: MSTORE
000003e2: PUSH1 0x04
000003e4: ADD
000003e5: PUSH2 0x03ef
000003e8: SWAP3
000003e9: SWAP2
000003ea: SWAP1
000003eb: PUSH2 0x156e
000003ee: JUMP
000003ef: JUMPDEST
000003f0: PUSH1 0x20
000003f2: PUSH1 0x40
000003f4: MLOAD
000003f5: DUP1
000003f6: DUP4
000003f7: SUB
000003f8: DUP2
000003f9: DUP7
000003fa: DUP1
000003fb: EXTCODESIZE
000003fc: ISZERO
000003fd: DUP1
000003fe: ISZERO
000003ff: PUSH2 0x0407
00000402: JUMPI
00000403: PUSH1 0x00
00000405: DUP1
00000406: REVERT
00000407: JUMPDEST
00000408: POP
00000409: GAS
0000040a: STATICCALL
0000040b: ISZERO
0000040c: DUP1
0000040d: ISZERO
0000040e: PUSH2 0x041b
00000411: JUMPI
00000412: RETURNDATASIZE
00000413: PUSH1 0x00
00000415: DUP1
00000416: RETURNDATACOPY
00000417: RETURNDATASIZE
00000418: PUSH1 0x00
0000041a: REVERT
0000041b: JUMPDEST
0000041c: POP
0000041d: POP
0000041e: POP
0000041f: POP
00000420: PUSH1 0x40
00000422: MLOAD
00000423: RETURNDATASIZE
00000424: PUSH1 0x1f
00000426: NOT
00000427: PUSH1 0x1f
00000429: DUP3
0000042a: ADD
0000042b: AND
0000042c: DUP3
0000042d: ADD
0000042e: DUP1
0000042f: PUSH1 0x40
00000431: MSTORE
00000432: POP
00000433: DUP2
00000434: ADD
00000435: SWAP1
00000436: PUSH2 0x043f
00000439: SWAP2
0000043a: SWAP1
0000043b: PUSH2 0x131e
0000043e: JUMP
0000043f: JUMPDEST
00000440: SWAP1
00000441: POP
00000442: PUSH1 0x00
00000444: DUP6
00000445: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000045a: AND
0000045b: PUSH4 0x70a08231
00000460: DUP9
00000461: PUSH1 0x40
00000463: MLOAD
00000464: DUP3
00000465: PUSH4 0xffffffff
0000046a: AND
0000046b: PUSH1 0xe0
0000046d: SHL
0000046e: DUP2
0000046f: MSTORE
00000470: PUSH1 0x04
00000472: ADD
00000473: PUSH2 0x047c
00000476: SWAP2
00000477: SWAP1
00000478: PUSH2 0x1538
0000047b: JUMP
0000047c: JUMPDEST
0000047d: PUSH1 0x20
0000047f: PUSH1 0x40
00000481: MLOAD
00000482: DUP1
00000483: DUP4
00000484: SUB
00000485: DUP2
00000486: DUP7
00000487: DUP1
00000488: EXTCODESIZE
00000489: ISZERO
0000048a: DUP1
0000048b: ISZERO
0000048c: PUSH2 0x0494
0000048f: JUMPI
00000490: PUSH1 0x00
00000492: DUP1
00000493: REVERT
00000494: JUMPDEST
00000495: POP
00000496: GAS
00000497: STATICCALL
00000498: ISZERO
00000499: DUP1
0000049a: ISZERO
0000049b: PUSH2 0x04a8
0000049e: JUMPI
0000049f: RETURNDATASIZE
000004a0: PUSH1 0x00
000004a2: DUP1
000004a3: RETURNDATACOPY
000004a4: RETURNDATASIZE
000004a5: PUSH1 0x00
000004a7: REVERT
000004a8: JUMPDEST
000004a9: POP
000004aa: POP
000004ab: POP
000004ac: POP
000004ad: PUSH1 0x40
000004af: MLOAD
000004b0: RETURNDATASIZE
000004b1: PUSH1 0x1f
000004b3: NOT
000004b4: PUSH1 0x1f
000004b6: DUP3
000004b7: ADD
000004b8: AND
000004b9: DUP3
000004ba: ADD
000004bb: DUP1
000004bc: PUSH1 0x40
000004be: MSTORE
000004bf: POP
000004c0: DUP2
000004c1: ADD
000004c2: SWAP1
000004c3: PUSH2 0x04cc
000004c6: SWAP2
000004c7: SWAP1
000004c8: PUSH2 0x131e
000004cb: JUMP
000004cc: JUMPDEST
000004cd: SWAP1
000004ce: POP
000004cf: DUP3
000004d0: DUP3
000004d1: LT
000004d2: ISZERO
000004d3: DUP1
000004d4: ISZERO
000004d5: PUSH2 0x04de
000004d8: JUMPI
000004d9: POP
000004da: DUP3
000004db: DUP2
000004dc: LT
000004dd: ISZERO
000004de: JUMPDEST
000004df: PUSH2 0x051d
000004e2: JUMPI
000004e3: PUSH1 0x40
000004e5: MLOAD
000004e6: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000507: DUP2
00000508: MSTORE
00000509: PUSH1 0x04
0000050b: ADD
0000050c: PUSH2 0x0514
0000050f: SWAP1
00000510: PUSH2 0x16c4
00000513: JUMP
00000514: JUMPDEST
00000515: PUSH1 0x40
00000517: MLOAD
00000518: DUP1
00000519: SWAP2
0000051a: SUB
0000051b: SWAP1
0000051c: REVERT
0000051d: JUMPDEST
0000051e: PUSH1 0x00
00000520: DUP2
00000521: SWAP1
00000522: POP
00000523: DUP2
00000524: DUP4
00000525: LT
00000526: ISZERO
00000527: PUSH2 0x052e
0000052a: JUMPI
0000052b: DUP3
0000052c: SWAP1
0000052d: POP
0000052e: JUMPDEST
0000052f: PUSH20 0x6b7a87899490ece95443e979ca9485cbe7e71522
00000544: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000559: AND
0000055a: PUSH4 0x8d7d3eea
0000055f: DUP10
00000560: ADDRESS
00000561: ADDRESS
00000562: DUP6
00000563: PUSH9 0x056bc75e2d63100000
0000056d: PUSH1 0x00
0000056f: PUSH1 0x38
00000571: PUSH1 0x40
00000573: MLOAD
00000574: DUP9
00000575: PUSH4 0xffffffff
0000057a: AND
0000057b: PUSH1 0xe0
0000057d: SHL
0000057e: DUP2
0000057f: MSTORE
00000580: PUSH1 0x04
00000582: ADD
00000583: PUSH2 0x0592
00000586: SWAP8
00000587: SWAP7
00000588: SWAP6
00000589: SWAP5
0000058a: SWAP4
0000058b: SWAP3
0000058c: SWAP2
0000058d: SWAP1
0000058e: PUSH2 0x1597
00000591: JUMP
00000592: JUMPDEST
00000593: PUSH1 0x00
00000595: PUSH1 0x40
00000597: MLOAD
00000598: DUP1
00000599: DUP4
0000059a: SUB
0000059b: DUP2
0000059c: PUSH1 0x00
0000059e: DUP8
0000059f: DUP1
000005a0: EXTCODESIZE
000005a1: ISZERO
000005a2: DUP1
000005a3: ISZERO
000005a4: PUSH2 0x05ac
000005a7: JUMPI
000005a8: PUSH1 0x00
000005aa: DUP1
000005ab: REVERT
000005ac: JUMPDEST
000005ad: POP
000005ae: GAS
000005af: CALL
000005b0: ISZERO
000005b1: DUP1
000005b2: ISZERO
000005b3: PUSH2 0x05c0
000005b6: JUMPI
000005b7: RETURNDATASIZE
000005b8: PUSH1 0x00
000005ba: DUP1
000005bb: RETURNDATACOPY
000005bc: RETURNDATASIZE
000005bd: PUSH1 0x00
000005bf: REVERT
000005c0: JUMPDEST
000005c1: POP
000005c2: POP
000005c3: POP
000005c4: POP
000005c5: POP
000005c6: POP
000005c7: POP
000005c8: POP
000005c9: POP
000005ca: POP
000005cb: POP
000005cc: POP
000005cd: JUMP
000005ce: JUMPDEST
000005cf: PUSH2 0x05d6
000005d2: PUSH2 0x0a13
000005d5: JUMP
000005d6: JUMPDEST
000005d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005ec: AND
000005ed: CALLER
000005ee: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000603: AND
00000604: EQ
00000605: ISZERO
00000606: PUSH2 0x0629
00000609: JUMPI
0000060a: PUSH2 0x0611
0000060d: PUSH2 0x0a13
00000610: JUMP
00000611: JUMPDEST
00000612: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000627: AND
00000628: SELFDESTRUCT
00000629: JUMPDEST
0000062a: JUMP
0000062b: JUMPDEST
0000062c: PUSH2 0x0633
0000062f: PUSH2 0x111d
00000632: JUMP
00000633: JUMPDEST
00000634: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000649: AND
0000064a: PUSH2 0x0651
0000064d: PUSH2 0x0a13
00000650: JUMP
00000651: JUMPDEST
00000652: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000667: AND
00000668: EQ
00000669: PUSH2 0x06da
0000066c: JUMPI
0000066d: PUSH1 0x40
0000066f: MLOAD
00000670: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000691: DUP2
00000692: MSTORE
00000693: PUSH1 0x04
00000695: ADD
00000696: DUP1
00000697: DUP1
00000698: PUSH1 0x20
0000069a: ADD
0000069b: DUP3
0000069c: DUP2
0000069d: SUB
0000069e: DUP3
0000069f: MSTORE
000006a0: PUSH1 0x20
000006a2: DUP2
000006a3: MSTORE
000006a4: PUSH1 0x20
000006a6: ADD
000006a7: DUP1
000006a8: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
000006c9: DUP2
000006ca: MSTORE
000006cb: POP
000006cc: PUSH1 0x20
000006ce: ADD
000006cf: SWAP2
000006d0: POP
000006d1: POP
000006d2: PUSH1 0x40
000006d4: MLOAD
000006d5: DUP1
000006d6: SWAP2
000006d7: SUB
000006d8: SWAP1
000006d9: REVERT
000006da: JUMPDEST
000006db: PUSH1 0x00
000006dd: DUP4
000006de: SWAP1
000006df: POP
000006e0: DUP2
000006e1: DUP2
000006e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006f7: AND
000006f8: PUSH4 0x70a08231
000006fd: ADDRESS
000006fe: PUSH1 0x40
00000700: MLOAD
00000701: DUP3
00000702: PUSH4 0xffffffff
00000707: AND
00000708: PUSH1 0xe0
0000070a: SHL
0000070b: DUP2
0000070c: MSTORE
0000070d: PUSH1 0x04
0000070f: ADD
00000710: PUSH2 0x0719
00000713: SWAP2
00000714: SWAP1
00000715: PUSH2 0x1553
00000718: JUMP
00000719: JUMPDEST
0000071a: PUSH1 0x20
0000071c: PUSH1 0x40
0000071e: MLOAD
0000071f: DUP1
00000720: DUP4
00000721: SUB
00000722: DUP2
00000723: DUP7
00000724: DUP1
00000725: EXTCODESIZE
00000726: ISZERO
00000727: DUP1
00000728: ISZERO
00000729: PUSH2 0x0731
0000072c: JUMPI
0000072d: PUSH1 0x00
0000072f: DUP1
00000730: REVERT
00000731: JUMPDEST
00000732: POP
00000733: GAS
00000734: STATICCALL
00000735: ISZERO
00000736: DUP1
00000737: ISZERO
00000738: PUSH2 0x0745
0000073b: JUMPI
0000073c: RETURNDATASIZE
0000073d: PUSH1 0x00
0000073f: DUP1
00000740: RETURNDATACOPY
00000741: RETURNDATASIZE
00000742: PUSH1 0x00
00000744: REVERT
00000745: JUMPDEST
00000746: POP
00000747: POP
00000748: POP
00000749: POP
0000074a: PUSH1 0x40
0000074c: MLOAD
0000074d: RETURNDATASIZE
0000074e: PUSH1 0x1f
00000750: NOT
00000751: PUSH1 0x1f
00000753: DUP3
00000754: ADD
00000755: AND
00000756: DUP3
00000757: ADD
00000758: DUP1
00000759: PUSH1 0x40
0000075b: MSTORE
0000075c: POP
0000075d: DUP2
0000075e: ADD
0000075f: SWAP1
00000760: PUSH2 0x0769
00000763: SWAP2
00000764: SWAP1
00000765: PUSH2 0x131e
00000768: JUMP
00000769: JUMPDEST
0000076a: LT
0000076b: ISZERO
0000076c: PUSH2 0x07aa
0000076f: JUMPI
00000770: PUSH1 0x40
00000772: MLOAD
00000773: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000794: DUP2
00000795: MSTORE
00000796: PUSH1 0x04
00000798: ADD
00000799: PUSH2 0x07a1
0000079c: SWAP1
0000079d: PUSH2 0x1664
000007a0: JUMP
000007a1: JUMPDEST
000007a2: PUSH1 0x40
000007a4: MLOAD
000007a5: DUP1
000007a6: SWAP2
000007a7: SUB
000007a8: SWAP1
000007a9: REVERT
000007aa: JUMPDEST
000007ab: DUP1
000007ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007c1: AND
000007c2: PUSH4 0xa9059cbb
000007c7: DUP5
000007c8: DUP5
000007c9: PUSH1 0x40
000007cb: MLOAD
000007cc: DUP4
000007cd: PUSH4 0xffffffff
000007d2: AND
000007d3: PUSH1 0xe0
000007d5: SHL
000007d6: DUP2
000007d7: MSTORE
000007d8: PUSH1 0x04
000007da: ADD
000007db: PUSH2 0x07e5
000007de: SWAP3
000007df: SWAP2
000007e0: SWAP1
000007e1: PUSH2 0x1620
000007e4: JUMP
000007e5: JUMPDEST
000007e6: PUSH1 0x20
000007e8: PUSH1 0x40
000007ea: MLOAD
000007eb: DUP1
000007ec: DUP4
000007ed: SUB
000007ee: DUP2
000007ef: PUSH1 0x00
000007f1: DUP8
000007f2: DUP1
000007f3: EXTCODESIZE
000007f4: ISZERO
000007f5: DUP1
000007f6: ISZERO
000007f7: PUSH2 0x07ff
000007fa: JUMPI
000007fb: PUSH1 0x00
000007fd: DUP1
000007fe: REVERT
000007ff: JUMPDEST
00000800: POP
00000801: GAS
00000802: CALL
00000803: ISZERO
00000804: DUP1
00000805: ISZERO
00000806: PUSH2 0x0813
00000809: JUMPI
0000080a: RETURNDATASIZE
0000080b: PUSH1 0x00
0000080d: DUP1
0000080e: RETURNDATACOPY
0000080f: RETURNDATASIZE
00000810: PUSH1 0x00
00000812: REVERT
00000813: JUMPDEST
00000814: POP
00000815: POP
00000816: POP
00000817: POP
00000818: PUSH1 0x40
0000081a: MLOAD
0000081b: RETURNDATASIZE
0000081c: PUSH1 0x1f
0000081e: NOT
0000081f: PUSH1 0x1f
00000821: DUP3
00000822: ADD
00000823: AND
00000824: DUP3
00000825: ADD
00000826: DUP1
00000827: PUSH1 0x40
00000829: MSTORE
0000082a: POP
0000082b: DUP2
0000082c: ADD
0000082d: SWAP1
0000082e: PUSH2 0x0837
00000831: SWAP2
00000832: SWAP1
00000833: PUSH2 0x12f5
00000836: JUMP
00000837: JUMPDEST
00000838: PUSH2 0x0876
0000083b: JUMPI
0000083c: PUSH1 0x40
0000083e: MLOAD
0000083f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000860: DUP2
00000861: MSTORE
00000862: PUSH1 0x04
00000864: ADD
00000865: PUSH2 0x086d
00000868: SWAP1
00000869: PUSH2 0x16a4
0000086c: JUMP
0000086d: JUMPDEST
0000086e: PUSH1 0x40
00000870: MLOAD
00000871: DUP1
00000872: SWAP2
00000873: SUB
00000874: SWAP1
00000875: REVERT
00000876: JUMPDEST
00000877: POP
00000878: POP
00000879: POP
0000087a: POP
0000087b: JUMP
0000087c: JUMPDEST
0000087d: PUSH1 0x00
0000087f: PUSH1 0x01
00000881: PUSH1 0x00
00000883: SWAP1
00000884: SLOAD
00000885: SWAP1
00000886: PUSH2 0x0100
00000889: EXP
0000088a: SWAP1
0000088b: DIV
0000088c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008a1: AND
000008a2: SWAP1
000008a3: POP
000008a4: SWAP1
000008a5: JUMP
000008a6: JUMPDEST
000008a7: PUSH2 0x08ae
000008aa: PUSH2 0x111d
000008ad: JUMP
000008ae: JUMPDEST
000008af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008c4: AND
000008c5: PUSH2 0x08cc
000008c8: PUSH2 0x0a13
000008cb: JUMP
000008cc: JUMPDEST
000008cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008e2: AND
000008e3: EQ
000008e4: PUSH2 0x0955
000008e7: JUMPI
000008e8: PUSH1 0x40
000008ea: MLOAD
000008eb: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
0000090c: DUP2
0000090d: MSTORE
0000090e: PUSH1 0x04
00000910: ADD
00000911: DUP1
00000912: DUP1
00000913: PUSH1 0x20
00000915: ADD
00000916: DUP3
00000917: DUP2
00000918: SUB
00000919: DUP3
0000091a: MSTORE
0000091b: PUSH1 0x20
0000091d: DUP2
0000091e: MSTORE
0000091f: PUSH1 0x20
00000921: ADD
00000922: DUP1
00000923: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000944: DUP2
00000945: MSTORE
00000946: POP
00000947: PUSH1 0x20
00000949: ADD
0000094a: SWAP2
0000094b: POP
0000094c: POP
0000094d: PUSH1 0x40
0000094f: MLOAD
00000950: DUP1
00000951: SWAP2
00000952: SUB
00000953: SWAP1
00000954: REVERT
00000955: JUMPDEST
00000956: PUSH1 0x00
00000958: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000096d: AND
0000096e: PUSH1 0x00
00000970: DUP1
00000971: SLOAD
00000972: SWAP1
00000973: PUSH2 0x0100
00000976: EXP
00000977: SWAP1
00000978: DIV
00000979: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000098e: AND
0000098f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009a4: AND
000009a5: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
000009c6: PUSH1 0x40
000009c8: MLOAD
000009c9: PUSH1 0x40
000009cb: MLOAD
000009cc: DUP1
000009cd: SWAP2
000009ce: SUB
000009cf: SWAP1
000009d0: LOG3
000009d1: PUSH1 0x00
000009d3: DUP1
000009d4: PUSH1 0x00
000009d6: PUSH2 0x0100
000009d9: EXP
000009da: DUP2
000009db: SLOAD
000009dc: DUP2
000009dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009f2: MUL
000009f3: NOT
000009f4: AND
000009f5: SWAP1
000009f6: DUP4
000009f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a0c: AND
00000a0d: MUL
00000a0e: OR
00000a0f: SWAP1
00000a10: SSTORE
00000a11: POP
00000a12: JUMP
00000a13: JUMPDEST
00000a14: PUSH1 0x00
00000a16: DUP1
00000a17: PUSH1 0x00
00000a19: SWAP1
00000a1a: SLOAD
00000a1b: SWAP1
00000a1c: PUSH2 0x0100
00000a1f: EXP
00000a20: SWAP1
00000a21: DIV
00000a22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a37: AND
00000a38: SWAP1
00000a39: POP
00000a3a: SWAP1
00000a3b: JUMP
00000a3c: JUMPDEST
00000a3d: PUSH1 0x00
00000a3f: DUP5
00000a40: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a55: AND
00000a56: PUSH4 0xdd62ed3e
00000a5b: DUP8
00000a5c: PUSH20 0x6b7a87899490ece95443e979ca9485cbe7e71522
00000a71: PUSH1 0x40
00000a73: MLOAD
00000a74: DUP4
00000a75: PUSH4 0xffffffff
00000a7a: AND
00000a7b: PUSH1 0xe0
00000a7d: SHL
00000a7e: DUP2
00000a7f: MSTORE
00000a80: PUSH1 0x04
00000a82: ADD
00000a83: PUSH2 0x0a8d
00000a86: SWAP3
00000a87: SWAP2
00000a88: SWAP1
00000a89: PUSH2 0x156e
00000a8c: JUMP
00000a8d: JUMPDEST
00000a8e: PUSH1 0x20
00000a90: PUSH1 0x40
00000a92: MLOAD
00000a93: DUP1
00000a94: DUP4
00000a95: SUB
00000a96: DUP2
00000a97: DUP7
00000a98: DUP1
00000a99: EXTCODESIZE
00000a9a: ISZERO
00000a9b: DUP1
00000a9c: ISZERO
00000a9d: PUSH2 0x0aa5
00000aa0: JUMPI
00000aa1: PUSH1 0x00
00000aa3: DUP1
00000aa4: REVERT
00000aa5: JUMPDEST
00000aa6: POP
00000aa7: GAS
00000aa8: STATICCALL
00000aa9: ISZERO
00000aaa: DUP1
00000aab: ISZERO
00000aac: PUSH2 0x0ab9
00000aaf: JUMPI
00000ab0: RETURNDATASIZE
00000ab1: PUSH1 0x00
00000ab3: DUP1
00000ab4: RETURNDATACOPY
00000ab5: RETURNDATASIZE
00000ab6: PUSH1 0x00
00000ab8: REVERT
00000ab9: JUMPDEST
00000aba: POP
00000abb: POP
00000abc: POP
00000abd: POP
00000abe: PUSH1 0x40
00000ac0: MLOAD
00000ac1: RETURNDATASIZE
00000ac2: PUSH1 0x1f
00000ac4: NOT
00000ac5: PUSH1 0x1f
00000ac7: DUP3
00000ac8: ADD
00000ac9: AND
00000aca: DUP3
00000acb: ADD
00000acc: DUP1
00000acd: PUSH1 0x40
00000acf: MSTORE
00000ad0: POP
00000ad1: DUP2
00000ad2: ADD
00000ad3: SWAP1
00000ad4: PUSH2 0x0add
00000ad7: SWAP2
00000ad8: SWAP1
00000ad9: PUSH2 0x131e
00000adc: JUMP
00000add: JUMPDEST
00000ade: SWAP1
00000adf: POP
00000ae0: PUSH1 0x00
00000ae2: DUP6
00000ae3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000af8: AND
00000af9: PUSH4 0x70a08231
00000afe: DUP9
00000aff: PUSH1 0x40
00000b01: MLOAD
00000b02: DUP3
00000b03: PUSH4 0xffffffff
00000b08: AND
00000b09: PUSH1 0xe0
00000b0b: SHL
00000b0c: DUP2
00000b0d: MSTORE
00000b0e: PUSH1 0x04
00000b10: ADD
00000b11: PUSH2 0x0b1a
00000b14: SWAP2
00000b15: SWAP1
00000b16: PUSH2 0x1538
00000b19: JUMP
00000b1a: JUMPDEST
00000b1b: PUSH1 0x20
00000b1d: PUSH1 0x40
00000b1f: MLOAD
00000b20: DUP1
00000b21: DUP4
00000b22: SUB
00000b23: DUP2
00000b24: DUP7
00000b25: DUP1
00000b26: EXTCODESIZE
00000b27: ISZERO
00000b28: DUP1
00000b29: ISZERO
00000b2a: PUSH2 0x0b32
00000b2d: JUMPI
00000b2e: PUSH1 0x00
00000b30: DUP1
00000b31: REVERT
00000b32: JUMPDEST
00000b33: POP
00000b34: GAS
00000b35: STATICCALL
00000b36: ISZERO
00000b37: DUP1
00000b38: ISZERO
00000b39: PUSH2 0x0b46
00000b3c: JUMPI
00000b3d: RETURNDATASIZE
00000b3e: PUSH1 0x00
00000b40: DUP1
00000b41: RETURNDATACOPY
00000b42: RETURNDATASIZE
00000b43: PUSH1 0x00
00000b45: REVERT
00000b46: JUMPDEST
00000b47: POP
00000b48: POP
00000b49: POP
00000b4a: POP
00000b4b: PUSH1 0x40
00000b4d: MLOAD
00000b4e: RETURNDATASIZE
00000b4f: PUSH1 0x1f
00000b51: NOT
00000b52: PUSH1 0x1f
00000b54: DUP3
00000b55: ADD
00000b56: AND
00000b57: DUP3
00000b58: ADD
00000b59: DUP1
00000b5a: PUSH1 0x40
00000b5c: MSTORE
00000b5d: POP
00000b5e: DUP2
00000b5f: ADD
00000b60: SWAP1
00000b61: PUSH2 0x0b6a
00000b64: SWAP2
00000b65: SWAP1
00000b66: PUSH2 0x131e
00000b69: JUMP
00000b6a: JUMPDEST
00000b6b: SWAP1
00000b6c: POP
00000b6d: DUP3
00000b6e: DUP3
00000b6f: LT
00000b70: ISZERO
00000b71: DUP1
00000b72: ISZERO
00000b73: PUSH2 0x0b7c
00000b76: JUMPI
00000b77: POP
00000b78: DUP3
00000b79: DUP2
00000b7a: LT
00000b7b: ISZERO
00000b7c: JUMPDEST
00000b7d: PUSH2 0x0bbb
00000b80: JUMPI
00000b81: PUSH1 0x40
00000b83: MLOAD
00000b84: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000ba5: DUP2
00000ba6: MSTORE
00000ba7: PUSH1 0x04
00000ba9: ADD
00000baa: PUSH2 0x0bb2
00000bad: SWAP1
00000bae: PUSH2 0x16c4
00000bb1: JUMP
00000bb2: JUMPDEST
00000bb3: PUSH1 0x40
00000bb5: MLOAD
00000bb6: DUP1
00000bb7: SWAP2
00000bb8: SUB
00000bb9: SWAP1
00000bba: REVERT
00000bbb: JUMPDEST
00000bbc: PUSH1 0x00
00000bbe: DUP2
00000bbf: SWAP1
00000bc0: POP
00000bc1: DUP2
00000bc2: DUP4
00000bc3: LT
00000bc4: ISZERO
00000bc5: PUSH2 0x0bcc
00000bc8: JUMPI
00000bc9: DUP3
00000bca: SWAP1
00000bcb: POP
00000bcc: JUMPDEST
00000bcd: PUSH20 0x6b7a87899490ece95443e979ca9485cbe7e71522
00000be2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bf7: AND
00000bf8: PUSH4 0x8d7d3eea
00000bfd: DUP10
00000bfe: ADDRESS
00000bff: ADDRESS
00000c00: DUP6
00000c01: PUSH9 0x056bc75e2d63100000
00000c0b: PUSH1 0x00
00000c0d: PUSH1 0x38
00000c0f: PUSH1 0x40
00000c11: MLOAD
00000c12: DUP9
00000c13: PUSH4 0xffffffff
00000c18: AND
00000c19: PUSH1 0xe0
00000c1b: SHL
00000c1c: DUP2
00000c1d: MSTORE
00000c1e: PUSH1 0x04
00000c20: ADD
00000c21: PUSH2 0x0c30
00000c24: SWAP8
00000c25: SWAP7
00000c26: SWAP6
00000c27: SWAP5
00000c28: SWAP4
00000c29: SWAP3
00000c2a: SWAP2
00000c2b: SWAP1
00000c2c: PUSH2 0x1597
00000c2f: JUMP
00000c30: JUMPDEST
00000c31: PUSH1 0x00
00000c33: PUSH1 0x40
00000c35: MLOAD
00000c36: DUP1
00000c37: DUP4
00000c38: SUB
00000c39: DUP2
00000c3a: PUSH1 0x00
00000c3c: DUP8
00000c3d: DUP1
00000c3e: EXTCODESIZE
00000c3f: ISZERO
00000c40: DUP1
00000c41: ISZERO
00000c42: PUSH2 0x0c4a
00000c45: JUMPI
00000c46: PUSH1 0x00
00000c48: DUP1
00000c49: REVERT
00000c4a: JUMPDEST
00000c4b: POP
00000c4c: GAS
00000c4d: CALL
00000c4e: ISZERO
00000c4f: DUP1
00000c50: ISZERO
00000c51: PUSH2 0x0c5e
00000c54: JUMPI
00000c55: RETURNDATASIZE
00000c56: PUSH1 0x00
00000c58: DUP1
00000c59: RETURNDATACOPY
00000c5a: RETURNDATASIZE
00000c5b: PUSH1 0x00
00000c5d: REVERT
00000c5e: JUMPDEST
00000c5f: POP
00000c60: POP
00000c61: POP
00000c62: POP
00000c63: PUSH1 0x01
00000c65: PUSH1 0x00
00000c67: SWAP1
00000c68: SLOAD
00000c69: SWAP1
00000c6a: PUSH2 0x0100
00000c6d: EXP
00000c6e: SWAP1
00000c6f: DIV
00000c70: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c85: AND
00000c86: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c9b: AND
00000c9c: PUSH4 0x2e1a7d4d
00000ca1: DUP3
00000ca2: PUSH1 0x40
00000ca4: MLOAD
00000ca5: DUP3
00000ca6: PUSH4 0xffffffff
00000cab: AND
00000cac: PUSH1 0xe0
00000cae: SHL
00000caf: DUP2
00000cb0: MSTORE
00000cb1: PUSH1 0x04
00000cb3: ADD
00000cb4: PUSH2 0x0cbd
00000cb7: SWAP2
00000cb8: SWAP1
00000cb9: PUSH2 0x16e4
00000cbc: JUMP
00000cbd: JUMPDEST
00000cbe: PUSH1 0x00
00000cc0: PUSH1 0x40
00000cc2: MLOAD
00000cc3: DUP1
00000cc4: DUP4
00000cc5: SUB
00000cc6: DUP2
00000cc7: PUSH1 0x00
00000cc9: DUP8
00000cca: DUP1
00000ccb: EXTCODESIZE
00000ccc: ISZERO
00000ccd: DUP1
00000cce: ISZERO
00000ccf: PUSH2 0x0cd7
00000cd2: JUMPI
00000cd3: PUSH1 0x00
00000cd5: DUP1
00000cd6: REVERT
00000cd7: JUMPDEST
00000cd8: POP
00000cd9: GAS
00000cda: CALL
00000cdb: ISZERO
00000cdc: DUP1
00000cdd: ISZERO
00000cde: PUSH2 0x0ceb
00000ce1: JUMPI
00000ce2: RETURNDATASIZE
00000ce3: PUSH1 0x00
00000ce5: DUP1
00000ce6: RETURNDATACOPY
00000ce7: RETURNDATASIZE
00000ce8: PUSH1 0x00
00000cea: REVERT
00000ceb: JUMPDEST
00000cec: POP
00000ced: POP
00000cee: POP
00000cef: POP
00000cf0: PUSH1 0x00
00000cf2: DUP6
00000cf3: DUP3
00000cf4: DUP2
00000cf5: PUSH2 0x0cfa
00000cf8: JUMPI
00000cf9: INVALID
00000cfa: JUMPDEST
00000cfb: DIV
00000cfc: SWAP1
00000cfd: POP
00000cfe: COINBASE
00000cff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d14: AND
00000d15: PUSH2 0x08fc
00000d18: DUP3
00000d19: SWAP1
00000d1a: DUP2
00000d1b: ISZERO
00000d1c: MUL
00000d1d: SWAP1
00000d1e: PUSH1 0x40
00000d20: MLOAD
00000d21: PUSH1 0x00
00000d23: PUSH1 0x40
00000d25: MLOAD
00000d26: DUP1
00000d27: DUP4
00000d28: SUB
00000d29: DUP2
00000d2a: DUP6
00000d2b: DUP9
00000d2c: DUP9
00000d2d: CALL
00000d2e: SWAP4
00000d2f: POP
00000d30: POP
00000d31: POP
00000d32: POP
00000d33: ISZERO
00000d34: DUP1
00000d35: ISZERO
00000d36: PUSH2 0x0d43
00000d39: JUMPI
00000d3a: RETURNDATASIZE
00000d3b: PUSH1 0x00
00000d3d: DUP1
00000d3e: RETURNDATACOPY
00000d3f: RETURNDATASIZE
00000d40: PUSH1 0x00
00000d42: REVERT
00000d43: JUMPDEST
00000d44: POP
00000d45: POP
00000d46: POP
00000d47: POP
00000d48: POP
00000d49: POP
00000d4a: POP
00000d4b: POP
00000d4c: POP
00000d4d: POP
00000d4e: JUMP
00000d4f: JUMPDEST
00000d50: PUSH1 0x00
00000d52: PUSH1 0x01
00000d54: SWAP1
00000d55: POP
00000d56: SWAP3
00000d57: SWAP2
00000d58: POP
00000d59: POP
00000d5a: JUMP
00000d5b: JUMPDEST
00000d5c: PUSH1 0x00
00000d5e: PUSH1 0x01
00000d60: SWAP1
00000d61: POP
00000d62: SWAP3
00000d63: SWAP2
00000d64: POP
00000d65: POP
00000d66: JUMP
00000d67: JUMPDEST
00000d68: PUSH2 0x0d6f
00000d6b: PUSH2 0x111d
00000d6e: JUMP
00000d6f: JUMPDEST
00000d70: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d85: AND
00000d86: PUSH2 0x0d8d
00000d89: PUSH2 0x0a13
00000d8c: JUMP
00000d8d: JUMPDEST
00000d8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000da3: AND
00000da4: EQ
00000da5: PUSH2 0x0e16
00000da8: JUMPI
00000da9: PUSH1 0x40
00000dab: MLOAD
00000dac: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000dcd: DUP2
00000dce: MSTORE
00000dcf: PUSH1 0x04
00000dd1: ADD
00000dd2: DUP1
00000dd3: DUP1
00000dd4: PUSH1 0x20
00000dd6: ADD
00000dd7: DUP3
00000dd8: DUP2
00000dd9: SUB
00000dda: DUP3
00000ddb: MSTORE
00000ddc: PUSH1 0x20
00000dde: DUP2
00000ddf: MSTORE
00000de0: PUSH1 0x20
00000de2: ADD
00000de3: DUP1
00000de4: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000e05: DUP2
00000e06: MSTORE
00000e07: POP
00000e08: PUSH1 0x20
00000e0a: ADD
00000e0b: SWAP2
00000e0c: POP
00000e0d: POP
00000e0e: PUSH1 0x40
00000e10: MLOAD
00000e11: DUP1
00000e12: SWAP2
00000e13: SUB
00000e14: SWAP1
00000e15: REVERT
00000e16: JUMPDEST
00000e17: PUSH1 0x00
00000e19: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e2e: AND
00000e2f: DUP2
00000e30: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e45: AND
00000e46: EQ
00000e47: ISZERO
00000e48: PUSH2 0x0e9c
00000e4b: JUMPI
00000e4c: PUSH1 0x40
00000e4e: MLOAD
00000e4f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000e70: DUP2
00000e71: MSTORE
00000e72: PUSH1 0x04
00000e74: ADD
00000e75: DUP1
00000e76: DUP1
00000e77: PUSH1 0x20
00000e79: ADD
00000e7a: DUP3
00000e7b: DUP2
00000e7c: SUB
00000e7d: DUP3
00000e7e: MSTORE
00000e7f: PUSH1 0x26
00000e81: DUP2
00000e82: MSTORE
00000e83: PUSH1 0x20
00000e85: ADD
00000e86: DUP1
00000e87: PUSH2 0x1840
00000e8a: PUSH1 0x26
00000e8c: SWAP2
00000e8d: CODECOPY
00000e8e: PUSH1 0x40
00000e90: ADD
00000e91: SWAP2
00000e92: POP
00000e93: POP
00000e94: PUSH1 0x40
00000e96: MLOAD
00000e97: DUP1
00000e98: SWAP2
00000e99: SUB
00000e9a: SWAP1
00000e9b: REVERT
00000e9c: JUMPDEST
00000e9d: DUP1
00000e9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eb3: AND
00000eb4: PUSH1 0x00
00000eb6: DUP1
00000eb7: SLOAD
00000eb8: SWAP1
00000eb9: PUSH2 0x0100
00000ebc: EXP
00000ebd: SWAP1
00000ebe: DIV
00000ebf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ed4: AND
00000ed5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000eea: AND
00000eeb: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000f0c: PUSH1 0x40
00000f0e: MLOAD
00000f0f: PUSH1 0x40
00000f11: MLOAD
00000f12: DUP1
00000f13: SWAP2
00000f14: SUB
00000f15: SWAP1
00000f16: LOG3
00000f17: DUP1
00000f18: PUSH1 0x00
00000f1a: DUP1
00000f1b: PUSH2 0x0100
00000f1e: EXP
00000f1f: DUP2
00000f20: SLOAD
00000f21: DUP2
00000f22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f37: MUL
00000f38: NOT
00000f39: AND
00000f3a: SWAP1
00000f3b: DUP4
00000f3c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f51: AND
00000f52: MUL
00000f53: OR
00000f54: SWAP1
00000f55: SSTORE
00000f56: POP
00000f57: POP
00000f58: JUMP
00000f59: JUMPDEST
00000f5a: PUSH2 0x0f61
00000f5d: PUSH2 0x111d
00000f60: JUMP
00000f61: JUMPDEST
00000f62: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f77: AND
00000f78: PUSH2 0x0f7f
00000f7b: PUSH2 0x0a13
00000f7e: JUMP
00000f7f: JUMPDEST
00000f80: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f95: AND
00000f96: EQ
00000f97: PUSH2 0x1008
00000f9a: JUMPI
00000f9b: PUSH1 0x40
00000f9d: MLOAD
00000f9e: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00000fbf: DUP2
00000fc0: MSTORE
00000fc1: PUSH1 0x04
00000fc3: ADD
00000fc4: DUP1
00000fc5: DUP1
00000fc6: PUSH1 0x20
00000fc8: ADD
00000fc9: DUP3
00000fca: DUP2
00000fcb: SUB
00000fcc: DUP3
00000fcd: MSTORE
00000fce: PUSH1 0x20
00000fd0: DUP2
00000fd1: MSTORE
00000fd2: PUSH1 0x20
00000fd4: ADD
00000fd5: DUP1
00000fd6: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00000ff7: DUP2
00000ff8: MSTORE
00000ff9: POP
00000ffa: PUSH1 0x20
00000ffc: ADD
00000ffd: SWAP2
00000ffe: POP
00000fff: POP
00001000: PUSH1 0x40
00001002: MLOAD
00001003: DUP1
00001004: SWAP2
00001005: SUB
00001006: SWAP1
00001007: REVERT
00001008: JUMPDEST
00001009: PUSH1 0x00
0000100b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001020: AND
00001021: DUP3
00001022: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001037: AND
00001038: EQ
00001039: ISZERO
0000103a: PUSH2 0x1078
0000103d: JUMPI
0000103e: PUSH1 0x40
00001040: MLOAD
00001041: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
00001062: DUP2
00001063: MSTORE
00001064: PUSH1 0x04
00001066: ADD
00001067: PUSH2 0x106f
0000106a: SWAP1
0000106b: PUSH2 0x1684
0000106e: JUMP
0000106f: JUMPDEST
00001070: PUSH1 0x40
00001072: MLOAD
00001073: DUP1
00001074: SWAP2
00001075: SUB
00001076: SWAP1
00001077: REVERT
00001078: JUMPDEST
00001079: ADDRESS
0000107a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000108f: AND
00001090: BALANCE
00001091: DUP2
00001092: GT
00001093: ISZERO
00001094: PUSH2 0x10d2
00001097: JUMPI
00001098: PUSH1 0x40
0000109a: MLOAD
0000109b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000
000010bc: DUP2
000010bd: MSTORE
000010be: PUSH1 0x04
000010c0: ADD
000010c1: PUSH2 0x10c9
000010c4: SWAP1
000010c5: PUSH2 0x1664
000010c8: JUMP
000010c9: JUMPDEST
000010ca: PUSH1 0x40
000010cc: MLOAD
000010cd: DUP1
000010ce: SWAP2
000010cf: SUB
000010d0: SWAP1
000010d1: REVERT
000010d2: JUMPDEST
000010d3: DUP2
000010d4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000010e9: AND
000010ea: PUSH2 0x08fc
000010ed: DUP3
000010ee: SWAP1
000010ef: DUP2
000010f0: ISZERO
000010f1: MUL
000010f2: SWAP1
000010f3: PUSH1 0x40
000010f5: MLOAD
000010f6: PUSH1 0x00
000010f8: PUSH1 0x40
000010fa: MLOAD
000010fb: DUP1
000010fc: DUP4
000010fd: SUB
000010fe: DUP2
000010ff: DUP6
00001100: DUP9
00001101: DUP9
00001102: CALL
00001103: SWAP4
00001104: POP
00001105: POP
00001106: POP
00001107: POP
00001108: ISZERO
00001109: DUP1
0000110a: ISZERO
0000110b: PUSH2 0x1118
0000110e: JUMPI
0000110f: RETURNDATASIZE
00001110: PUSH1 0x00
00001112: DUP1
00001113: RETURNDATACOPY
00001114: RETURNDATASIZE
00001115: PUSH1 0x00
00001117: REVERT
00001118: JUMPDEST
00001119: POP
0000111a: POP
0000111b: POP
0000111c: JUMP
0000111d: JUMPDEST
0000111e: PUSH1 0x00
00001120: CALLER
00001121: SWAP1
00001122: POP
00001123: SWAP1
00001124: JUMP
00001125: JUMPDEST
00001126: PUSH1 0x00
00001128: DUP2
00001129: CALLDATALOAD
0000112a: SWAP1
0000112b: POP
0000112c: PUSH2 0x1134
0000112f: DUP2
00001130: PUSH2 0x17e3
00001133: JUMP
00001134: JUMPDEST
00001135: SWAP3
00001136: SWAP2
00001137: POP
00001138: POP
00001139: JUMP
0000113a: JUMPDEST
0000113b: PUSH1 0x00
0000113d: DUP2
0000113e: CALLDATALOAD
0000113f: SWAP1
00001140: POP
00001141: PUSH2 0x1149
00001144: DUP2
00001145: PUSH2 0x17fa
00001148: JUMP
00001149: JUMPDEST
0000114a: SWAP3
0000114b: SWAP2
0000114c: POP
0000114d: POP
0000114e: JUMP
0000114f: JUMPDEST
00001150: PUSH1 0x00
00001152: DUP2
00001153: MLOAD
00001154: SWAP1
00001155: POP
00001156: PUSH2 0x115e
00001159: DUP2
0000115a: PUSH2 0x1811
0000115d: JUMP
0000115e: JUMPDEST
0000115f: SWAP3
00001160: SWAP2
00001161: POP
00001162: POP
00001163: JUMP
00001164: JUMPDEST
00001165: PUSH1 0x00
00001167: DUP2
00001168: CALLDATALOAD
00001169: SWAP1
0000116a: POP
0000116b: PUSH2 0x1173
0000116e: DUP2
0000116f: PUSH2 0x1828
00001172: JUMP
00001173: JUMPDEST
00001174: SWAP3
00001175: SWAP2
00001176: POP
00001177: POP
00001178: JUMP
00001179: JUMPDEST
0000117a: PUSH1 0x00
0000117c: DUP2
0000117d: MLOAD
0000117e: SWAP1
0000117f: POP
00001180: PUSH2 0x1188
00001183: DUP2
00001184: PUSH2 0x1828
00001187: JUMP
00001188: JUMPDEST
00001189: SWAP3
0000118a: SWAP2
0000118b: POP
0000118c: POP
0000118d: JUMP
0000118e: JUMPDEST
0000118f: PUSH1 0x00
00001191: PUSH1 0x20
00001193: DUP3
00001194: DUP5
00001195: SUB
00001196: SLT
00001197: ISZERO
00001198: PUSH2 0x11a0
0000119b: JUMPI
0000119c: PUSH1 0x00
0000119e: DUP1
0000119f: REVERT
000011a0: JUMPDEST
000011a1: PUSH1 0x00
000011a3: PUSH2 0x11ae
000011a6: DUP5
000011a7: DUP3
000011a8: DUP6
000011a9: ADD
000011aa: PUSH2 0x1125
000011ad: JUMP
000011ae: JUMPDEST
000011af: SWAP2
000011b0: POP
000011b1: POP
000011b2: SWAP3
000011b3: SWAP2
000011b4: POP
000011b5: POP
000011b6: JUMP
000011b7: JUMPDEST
000011b8: PUSH1 0x00
000011ba: DUP1
000011bb: PUSH1 0x40
000011bd: DUP4
000011be: DUP6
000011bf: SUB
000011c0: SLT
000011c1: ISZERO
000011c2: PUSH2 0x11ca
000011c5: JUMPI
000011c6: PUSH1 0x00
000011c8: DUP1
000011c9: REVERT
000011ca: JUMPDEST
000011cb: PUSH1 0x00
000011cd: PUSH2 0x11d8
000011d0: DUP6
000011d1: DUP3
000011d2: DUP7
000011d3: ADD
000011d4: PUSH2 0x113a
000011d7: JUMP
000011d8: JUMPDEST
000011d9: SWAP3
000011da: POP
000011db: POP
000011dc: PUSH1 0x20
000011de: PUSH2 0x11e9
000011e1: DUP6
000011e2: DUP3
000011e3: DUP7
000011e4: ADD
000011e5: PUSH2 0x1164
000011e8: JUMP
000011e9: JUMPDEST
000011ea: SWAP2
000011eb: POP
000011ec: POP
000011ed: SWAP3
000011ee: POP
000011ef: SWAP3
000011f0: SWAP1
000011f1: POP
000011f2: JUMP
000011f3: JUMPDEST
000011f4: PUSH1 0x00
000011f6: DUP1
000011f7: PUSH1 0x00
000011f9: DUP1
000011fa: PUSH1 0x00
000011fc: PUSH1 0xa0
000011fe: DUP7
000011ff: DUP9
00001200: SUB
00001201: SLT
00001202: ISZERO
00001203: PUSH2 0x120b
00001206: JUMPI
00001207: PUSH1 0x00
00001209: DUP1
0000120a: REVERT
0000120b: JUMPDEST
0000120c: PUSH1 0x00
0000120e: PUSH2 0x1219
00001211: DUP9
00001212: DUP3
00001213: DUP10
00001214: ADD
00001215: PUSH2 0x1125
00001218: JUMP
00001219: JUMPDEST
0000121a: SWAP6
0000121b: POP
0000121c: POP
0000121d: PUSH1 0x20
0000121f: PUSH2 0x122a
00001222: DUP9
00001223: DUP3
00001224: DUP10
00001225: ADD
00001226: PUSH2 0x1125
00001229: JUMP
0000122a: JUMPDEST
0000122b: SWAP5
0000122c: POP
0000122d: POP
0000122e: PUSH1 0x40
00001230: PUSH2 0x123b
00001233: DUP9
00001234: DUP3
00001235: DUP10
00001236: ADD
00001237: PUSH2 0x1125
0000123a: JUMP
0000123b: JUMPDEST
0000123c: SWAP4
0000123d: POP
0000123e: POP
0000123f: PUSH1 0x60
00001241: PUSH2 0x124c
00001244: DUP9
00001245: DUP3
00001246: DUP10
00001247: ADD
00001248: PUSH2 0x1164
0000124b: JUMP
0000124c: JUMPDEST
0000124d: SWAP3
0000124e: POP
0000124f: POP
00001250: PUSH1 0x80
00001252: PUSH2 0x125d
00001255: DUP9
00001256: DUP3
00001257: DUP10
00001258: ADD
00001259: PUSH2 0x1164
0000125c: JUMP
0000125d: JUMPDEST
0000125e: SWAP2
0000125f: POP
00001260: POP
00001261: SWAP3
00001262: SWAP6
00001263: POP
00001264: SWAP3
00001265: SWAP6
00001266: SWAP1
00001267: SWAP4
00001268: POP
00001269: JUMP
0000126a: JUMPDEST
0000126b: PUSH1 0x00
0000126d: DUP1
0000126e: PUSH1 0x00
00001270: PUSH1 0x60
00001272: DUP5
00001273: DUP7
00001274: SUB
00001275: SLT
00001276: ISZERO
00001277: PUSH2 0x127f
0000127a: JUMPI
0000127b: PUSH1 0x00
0000127d: DUP1
0000127e: REVERT
0000127f: JUMPDEST
00001280: PUSH1 0x00
00001282: PUSH2 0x128d
00001285: DUP7
00001286: DUP3
00001287: DUP8
00001288: ADD
00001289: PUSH2 0x1125
0000128c: JUMP
0000128d: JUMPDEST
0000128e: SWAP4
0000128f: POP
00001290: POP
00001291: PUSH1 0x20
00001293: PUSH2 0x129e
00001296: DUP7
00001297: DUP3
00001298: DUP8
00001299: ADD
0000129a: PUSH2 0x1125
0000129d: JUMP
0000129e: JUMPDEST
0000129f: SWAP3
000012a0: POP
000012a1: POP
000012a2: PUSH1 0x40
000012a4: PUSH2 0x12af
000012a7: DUP7
000012a8: DUP3
000012a9: DUP8
000012aa: ADD
000012ab: PUSH2 0x1164
000012ae: JUMP
000012af: JUMPDEST
000012b0: SWAP2
000012b1: POP
000012b2: POP
000012b3: SWAP3
000012b4: POP
000012b5: SWAP3
000012b6: POP
000012b7: SWAP3
000012b8: JUMP
000012b9: JUMPDEST
000012ba: PUSH1 0x00
000012bc: DUP1
000012bd: PUSH1 0x40
000012bf: DUP4
000012c0: DUP6
000012c1: SUB
000012c2: SLT
000012c3: ISZERO
000012c4: PUSH2 0x12cc
000012c7: JUMPI
000012c8: PUSH1 0x00
000012ca: DUP1
000012cb: REVERT
000012cc: JUMPDEST
000012cd: PUSH1 0x00
000012cf: PUSH2 0x12da
000012d2: DUP6
000012d3: DUP3
000012d4: DUP7
000012d5: ADD
000012d6: PUSH2 0x1125
000012d9: JUMP
000012da: JUMPDEST
000012db: SWAP3
000012dc: POP
000012dd: POP
000012de: PUSH1 0x20
000012e0: PUSH2 0x12eb
000012e3: DUP6
000012e4: DUP3
000012e5: DUP7
000012e6: ADD
000012e7: PUSH2 0x1164
000012ea: JUMP
000012eb: JUMPDEST
000012ec: SWAP2
000012ed: POP
000012ee: POP
000012ef: SWAP3
000012f0: POP
000012f1: SWAP3
000012f2: SWAP1
000012f3: POP
000012f4: JUMP
000012f5: JUMPDEST
000012f6: PUSH1 0x00
000012f8: PUSH1 0x20
000012fa: DUP3
000012fb: DUP5
000012fc: SUB
000012fd: SLT
000012fe: ISZERO
000012ff: PUSH2 0x1307
00001302: JUMPI
00001303: PUSH1 0x00
00001305: DUP1
00001306: REVERT
00001307: JUMPDEST
00001308: PUSH1 0x00
0000130a: PUSH2 0x1315
0000130d: DUP5
0000130e: DUP3
0000130f: DUP6
00001310: ADD
00001311: PUSH2 0x114f
00001314: JUMP
00001315: JUMPDEST
00001316: SWAP2
00001317: POP
00001318: POP
00001319: SWAP3
0000131a: SWAP2
0000131b: POP
0000131c: POP
0000131d: JUMP
0000131e: JUMPDEST
0000131f: PUSH1 0x00
00001321: PUSH1 0x20
00001323: DUP3
00001324: DUP5
00001325: SUB
00001326: SLT
00001327: ISZERO
00001328: PUSH2 0x1330
0000132b: JUMPI
0000132c: PUSH1 0x00
0000132e: DUP1
0000132f: REVERT
00001330: JUMPDEST
00001331: PUSH1 0x00
00001333: PUSH2 0x133e
00001336: DUP5
00001337: DUP3
00001338: DUP6
00001339: ADD
0000133a: PUSH2 0x1179
0000133d: JUMP
0000133e: JUMPDEST
0000133f: SWAP2
00001340: POP
00001341: POP
00001342: SWAP3
00001343: SWAP2
00001344: POP
00001345: POP
00001346: JUMP
00001347: JUMPDEST
00001348: PUSH1 0x00
0000134a: DUP1
0000134b: PUSH1 0x40
0000134d: DUP4
0000134e: DUP6
0000134f: SUB
00001350: SLT
00001351: ISZERO
00001352: PUSH2 0x135a
00001355: JUMPI
00001356: PUSH1 0x00
00001358: DUP1
00001359: REVERT
0000135a: JUMPDEST
0000135b: PUSH1 0x00
0000135d: PUSH2 0x1368
00001360: DUP6
00001361: DUP3
00001362: DUP7
00001363: ADD
00001364: PUSH2 0x1164
00001367: JUMP
00001368: JUMPDEST
00001369: SWAP3
0000136a: POP
0000136b: POP
0000136c: PUSH1 0x20
0000136e: PUSH2 0x1379
00001371: DUP6
00001372: DUP3
00001373: DUP7
00001374: ADD
00001375: PUSH2 0x1125
00001378: JUMP
00001379: JUMPDEST
0000137a: SWAP2
0000137b: POP
0000137c: POP
0000137d: SWAP3
0000137e: POP
0000137f: SWAP3
00001380: SWAP1
00001381: POP
00001382: JUMP
00001383: JUMPDEST
00001384: PUSH2 0x138c
00001387: DUP2
00001388: PUSH2 0x1777
0000138b: JUMP
0000138c: JUMPDEST
0000138d: DUP3
0000138e: MSTORE
0000138f: POP
00001390: POP
00001391: JUMP
00001392: JUMPDEST
00001393: PUSH2 0x139b
00001396: DUP2
00001397: PUSH2 0x1710
0000139a: JUMP
0000139b: JUMPDEST
0000139c: DUP3
0000139d: MSTORE
0000139e: POP
0000139f: POP
000013a0: JUMP
000013a1: JUMPDEST
000013a2: PUSH2 0x13aa
000013a5: DUP2
000013a6: PUSH2 0x1734
000013a9: JUMP
000013aa: JUMPDEST
000013ab: DUP3
000013ac: MSTORE
000013ad: POP
000013ae: POP
000013af: JUMP
000013b0: JUMPDEST
000013b1: PUSH2 0x13b9
000013b4: DUP2
000013b5: PUSH2 0x1789
000013b8: JUMP
000013b9: JUMPDEST
000013ba: DUP3
000013bb: MSTORE
000013bc: POP
000013bd: POP
000013be: JUMP
000013bf: JUMPDEST
000013c0: PUSH2 0x13c8
000013c3: DUP2
000013c4: PUSH2 0x179b
000013c7: JUMP
000013c8: JUMPDEST
000013c9: DUP3
000013ca: MSTORE
000013cb: POP
000013cc: POP
000013cd: JUMP
000013ce: JUMPDEST
000013cf: PUSH2 0x13d7
000013d2: DUP2
000013d3: PUSH2 0x17ad
000013d6: JUMP
000013d7: JUMPDEST
000013d8: DUP3
000013d9: MSTORE
000013da: POP
000013db: POP
000013dc: JUMP
000013dd: JUMPDEST
000013de: PUSH1 0x00
000013e0: PUSH2 0x13ea
000013e3: PUSH1 0x34
000013e5: DUP4
000013e6: PUSH2 0x16ff
000013e9: JUMP
000013ea: JUMPDEST
000013eb: SWAP2
000013ec: POP
000013ed: PUSH32 0x596f752061726520747279696e6720746f207769746864726177206d6f726520
0000140e: PUSH1 0x00
00001410: DUP4
00001411: ADD
00001412: MSTORE
00001413: PUSH32 0x66756e6473207468616e20617661696c61626c65000000000000000000000000
00001434: PUSH1 0x20
00001436: DUP4
00001437: ADD
00001438: MSTORE
00001439: PUSH1 0x40
0000143b: DUP3
0000143c: ADD
0000143d: SWAP1
0000143e: POP
0000143f: SWAP2
00001440: SWAP1
00001441: POP
00001442: JUMP
00001443: JUMPDEST
00001444: PUSH1 0x00
00001446: PUSH2 0x1450
00001449: PUSH1 0x1c
0000144b: DUP4
0000144c: PUSH2 0x16ff
0000144f: JUMP
00001450: JUMPDEST
00001451: SWAP2
00001452: POP
00001453: PUSH32 0x7472616e7366657220746f20746865207a65726f206164647265737300000000
00001474: PUSH1 0x00
00001476: DUP4
00001477: ADD
00001478: MSTORE
00001479: PUSH1 0x20
0000147b: DUP3
0000147c: ADD
0000147d: SWAP1
0000147e: POP
0000147f: SWAP2
00001480: SWAP1
00001481: POP
00001482: JUMP
00001483: JUMPDEST
00001484: PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000
000014a5: DUP2
000014a6: MSTORE
000014a7: POP
000014a8: JUMP
000014a9: JUMPDEST
000014aa: PUSH1 0x00
000014ac: PUSH2 0x14b6
000014af: PUSH1 0x10
000014b1: DUP4
000014b2: PUSH2 0x16ff
000014b5: JUMP
000014b6: JUMPDEST
000014b7: SWAP2
000014b8: POP
000014b9: PUSH32 0x4661696c206f6e207472616e7366657200000000000000000000000000000000
000014da: PUSH1 0x00
000014dc: DUP4
000014dd: ADD
000014de: MSTORE
000014df: PUSH1 0x20
000014e1: DUP3
000014e2: ADD
000014e3: SWAP1
000014e4: POP
000014e5: SWAP2
000014e6: SWAP1
000014e7: POP
000014e8: JUMP
000014e9: JUMPDEST
000014ea: PUSH1 0x00
000014ec: PUSH2 0x14f6
000014ef: PUSH1 0x07
000014f1: DUP4
000014f2: PUSH2 0x16ff
000014f5: JUMP
000014f6: JUMPDEST
000014f7: SWAP2
000014f8: POP
000014f9: PUSH32 0x6572726f72203100000000000000000000000000000000000000000000000000
0000151a: PUSH1 0x00
0000151c: DUP4
0000151d: ADD
0000151e: MSTORE
0000151f: PUSH1 0x20
00001521: DUP3
00001522: ADD
00001523: SWAP1
00001524: POP
00001525: SWAP2
00001526: SWAP1
00001527: POP
00001528: JUMP
00001529: JUMPDEST
0000152a: PUSH2 0x1532
0000152d: DUP2
0000152e: PUSH2 0x1760
00001531: JUMP
00001532: JUMPDEST
00001533: DUP3
00001534: MSTORE
00001535: POP
00001536: POP
00001537: JUMP
00001538: JUMPDEST
00001539: PUSH1 0x00
0000153b: PUSH1 0x20
0000153d: DUP3
0000153e: ADD
0000153f: SWAP1
00001540: POP
00001541: PUSH2 0x154d
00001544: PUSH1 0x00
00001546: DUP4
00001547: ADD
00001548: DUP5
00001549: PUSH2 0x1392
0000154c: JUMP
0000154d: JUMPDEST
0000154e: SWAP3
0000154f: SWAP2
00001550: POP
00001551: POP
00001552: JUMP
00001553: JUMPDEST
00001554: PUSH1 0x00
00001556: PUSH1 0x20
00001558: DUP3
00001559: ADD
0000155a: SWAP1
0000155b: POP
0000155c: PUSH2 0x1568
0000155f: PUSH1 0x00
00001561: DUP4
00001562: ADD
00001563: DUP5
00001564: PUSH2 0x1383
00001567: JUMP
00001568: JUMPDEST
00001569: SWAP3
0000156a: SWAP2
0000156b: POP
0000156c: POP
0000156d: JUMP
0000156e: JUMPDEST
0000156f: PUSH1 0x00
00001571: PUSH1 0x40
00001573: DUP3
00001574: ADD
00001575: SWAP1
00001576: POP
00001577: PUSH2 0x1583
0000157a: PUSH1 0x00
0000157c: DUP4
0000157d: ADD
0000157e: DUP6
0000157f: PUSH2 0x1392
00001582: JUMP
00001583: JUMPDEST
00001584: PUSH2 0x1590
00001587: PUSH1 0x20
00001589: DUP4
0000158a: ADD
0000158b: DUP5
0000158c: PUSH2 0x1392
0000158f: JUMP
00001590: JUMPDEST
00001591: SWAP4
00001592: SWAP3
00001593: POP
00001594: POP
00001595: POP
00001596: JUMP
00001597: JUMPDEST
00001598: PUSH1 0x00
0000159a: PUSH2 0x0120
0000159d: DUP3
0000159e: ADD
0000159f: SWAP1
000015a0: POP
000015a1: PUSH2 0x15ad
000015a4: PUSH1 0x00
000015a6: DUP4
000015a7: ADD
000015a8: DUP11
000015a9: PUSH2 0x1392
000015ac: JUMP
000015ad: JUMPDEST
000015ae: PUSH2 0x15ba
000015b1: PUSH1 0x20
000015b3: DUP4
000015b4: ADD
000015b5: DUP10
000015b6: PUSH2 0x1383
000015b9: JUMP
000015ba: JUMPDEST
000015bb: PUSH2 0x15c7
000015be: PUSH1 0x40
000015c0: DUP4
000015c1: ADD
000015c2: DUP9
000015c3: PUSH2 0x1383
000015c6: JUMP
000015c7: JUMPDEST
000015c8: PUSH2 0x15d4
000015cb: PUSH1 0x60
000015cd: DUP4
000015ce: ADD
000015cf: DUP8
000015d0: PUSH2 0x1529
000015d3: JUMP
000015d4: JUMPDEST
000015d5: PUSH2 0x15e1
000015d8: PUSH1 0x80
000015da: DUP4
000015db: ADD
000015dc: DUP7
000015dd: PUSH2 0x13bf
000015e0: JUMP
000015e1: JUMPDEST
000015e2: PUSH2 0x15ee
000015e5: PUSH1 0xa0
000015e7: DUP4
000015e8: ADD
000015e9: DUP6
000015ea: PUSH2 0x13b0
000015ed: JUMP
000015ee: JUMPDEST
000015ef: PUSH2 0x15fa
000015f2: PUSH1 0xc0
000015f4: DUP4
000015f5: ADD
000015f6: PUSH2 0x1483
000015f9: JUMP
000015fa: JUMPDEST
000015fb: PUSH2 0x1606
000015fe: PUSH1 0xe0
00001600: DUP4
00001601: ADD
00001602: PUSH2 0x1483
00001605: JUMP
00001606: JUMPDEST
00001607: PUSH2 0x1614
0000160a: PUSH2 0x0100
0000160d: DUP4
0000160e: ADD
0000160f: DUP5
00001610: PUSH2 0x13ce
00001613: JUMP
00001614: JUMPDEST
00001615: SWAP9
00001616: SWAP8
00001617: POP
00001618: POP
00001619: POP
0000161a: POP
0000161b: POP
0000161c: POP
0000161d: POP
0000161e: POP
0000161f: JUMP
00001620: JUMPDEST
00001621: PUSH1 0x00
00001623: PUSH1 0x40
00001625: DUP3
00001626: ADD
00001627: SWAP1
00001628: POP
00001629: PUSH2 0x1635
0000162c: PUSH1 0x00
0000162e: DUP4
0000162f: ADD
00001630: DUP6
00001631: PUSH2 0x1392
00001634: JUMP
00001635: JUMPDEST
00001636: PUSH2 0x1642
00001639: PUSH1 0x20
0000163b: DUP4
0000163c: ADD
0000163d: DUP5
0000163e: PUSH2 0x1529
00001641: JUMP
00001642: JUMPDEST
00001643: SWAP4
00001644: SWAP3
00001645: POP
00001646: POP
00001647: POP
00001648: JUMP
00001649: JUMPDEST
0000164a: PUSH1 0x00
0000164c: PUSH1 0x20
0000164e: DUP3
0000164f: ADD
00001650: SWAP1
00001651: POP
00001652: PUSH2 0x165e
00001655: PUSH1 0x00
00001657: DUP4
00001658: ADD
00001659: DUP5
0000165a: PUSH2 0x13a1
0000165d: JUMP
0000165e: JUMPDEST
0000165f: SWAP3
00001660: SWAP2
00001661: POP
00001662: POP
00001663: JUMP
00001664: JUMPDEST
00001665: PUSH1 0x00
00001667: PUSH1 0x20
00001669: DUP3
0000166a: ADD
0000166b: SWAP1
0000166c: POP
0000166d: DUP2
0000166e: DUP2
0000166f: SUB
00001670: PUSH1 0x00
00001672: DUP4
00001673: ADD
00001674: MSTORE
00001675: PUSH2 0x167d
00001678: DUP2
00001679: PUSH2 0x13dd
0000167c: JUMP
0000167d: JUMPDEST
0000167e: SWAP1
0000167f: POP
00001680: SWAP2
00001681: SWAP1
00001682: POP
00001683: JUMP
00001684: JUMPDEST
00001685: PUSH1 0x00
00001687: PUSH1 0x20
00001689: DUP3
0000168a: ADD
0000168b: SWAP1
0000168c: POP
0000168d: DUP2
0000168e: DUP2
0000168f: SUB
00001690: PUSH1 0x00
00001692: DUP4
00001693: ADD
00001694: MSTORE
00001695: PUSH2 0x169d
00001698: DUP2
00001699: PUSH2 0x1443
0000169c: JUMP
0000169d: JUMPDEST
0000169e: SWAP1
0000169f: POP
000016a0: SWAP2
000016a1: SWAP1
000016a2: POP
000016a3: JUMP
000016a4: JUMPDEST
000016a5: PUSH1 0x00
000016a7: PUSH1 0x20
000016a9: DUP3
000016aa: ADD
000016ab: SWAP1
000016ac: POP
000016ad: DUP2
000016ae: DUP2
000016af: SUB
000016b0: PUSH1 0x00
000016b2: DUP4
000016b3: ADD
000016b4: MSTORE
000016b5: PUSH2 0x16bd
000016b8: DUP2
000016b9: PUSH2 0x14a9
000016bc: JUMP
000016bd: JUMPDEST
000016be: SWAP1
000016bf: POP
000016c0: SWAP2
000016c1: SWAP1
000016c2: POP
000016c3: JUMP
000016c4: JUMPDEST
000016c5: PUSH1 0x00
000016c7: PUSH1 0x20
000016c9: DUP3
000016ca: ADD
000016cb: SWAP1
000016cc: POP
000016cd: DUP2
000016ce: DUP2
000016cf: SUB
000016d0: PUSH1 0x00
000016d2: DUP4
000016d3: ADD
000016d4: MSTORE
000016d5: PUSH2 0x16dd
000016d8: DUP2
000016d9: PUSH2 0x14e9
000016dc: JUMP
000016dd: JUMPDEST
000016de: SWAP1
000016df: POP
000016e0: SWAP2
000016e1: SWAP1
000016e2: POP
000016e3: JUMP
000016e4: JUMPDEST
000016e5: PUSH1 0x00
000016e7: PUSH1 0x20
000016e9: DUP3
000016ea: ADD
000016eb: SWAP1
000016ec: POP
000016ed: PUSH2 0x16f9
000016f0: PUSH1 0x00
000016f2: DUP4
000016f3: ADD
000016f4: DUP5
000016f5: PUSH2 0x1529
000016f8: JUMP
000016f9: JUMPDEST
000016fa: SWAP3
000016fb: SWAP2
000016fc: POP
000016fd: POP
000016fe: JUMP
000016ff: JUMPDEST
00001700: PUSH1 0x00
00001702: DUP3
00001703: DUP3
00001704: MSTORE
00001705: PUSH1 0x20
00001707: DUP3
00001708: ADD
00001709: SWAP1
0000170a: POP
0000170b: SWAP3
0000170c: SWAP2
0000170d: POP
0000170e: POP
0000170f: JUMP
00001710: JUMPDEST
00001711: PUSH1 0x00
00001713: PUSH2 0x171b
00001716: DUP3
00001717: PUSH2 0x1740
0000171a: JUMP
0000171b: JUMPDEST
0000171c: SWAP1
0000171d: POP
0000171e: SWAP2
0000171f: SWAP1
00001720: POP
00001721: JUMP
00001722: JUMPDEST
00001723: PUSH1 0x00
00001725: PUSH2 0x172d
00001728: DUP3
00001729: PUSH2 0x1740
0000172c: JUMP
0000172d: JUMPDEST
0000172e: SWAP1
0000172f: POP
00001730: SWAP2
00001731: SWAP1
00001732: POP
00001733: JUMP
00001734: JUMPDEST
00001735: PUSH1 0x00
00001737: DUP2
00001738: ISZERO
00001739: ISZERO
0000173a: SWAP1
0000173b: POP
0000173c: SWAP2
0000173d: SWAP1
0000173e: POP
0000173f: JUMP
00001740: JUMPDEST
00001741: PUSH1 0x00
00001743: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001758: DUP3
00001759: AND
0000175a: SWAP1
0000175b: POP
0000175c: SWAP2
0000175d: SWAP1
0000175e: POP
0000175f: JUMP
00001760: JUMPDEST
00001761: PUSH1 0x00
00001763: DUP2
00001764: SWAP1
00001765: POP
00001766: SWAP2
00001767: SWAP1
00001768: POP
00001769: JUMP
0000176a: JUMPDEST
0000176b: PUSH1 0x00
0000176d: PUSH1 0xff
0000176f: DUP3
00001770: AND
00001771: SWAP1
00001772: POP
00001773: SWAP2
00001774: SWAP1
00001775: POP
00001776: JUMP
00001777: JUMPDEST
00001778: PUSH1 0x00
0000177a: PUSH2 0x1782
0000177d: DUP3
0000177e: PUSH2 0x17bf
00001781: JUMP
00001782: JUMPDEST
00001783: SWAP1
00001784: POP
00001785: SWAP2
00001786: SWAP1
00001787: POP
00001788: JUMP
00001789: JUMPDEST
0000178a: PUSH1 0x00
0000178c: PUSH2 0x1794
0000178f: DUP3
00001790: PUSH2 0x176a
00001793: JUMP
00001794: JUMPDEST
00001795: SWAP1
00001796: POP
00001797: SWAP2
00001798: SWAP1
00001799: POP
0000179a: JUMP
0000179b: JUMPDEST
0000179c: PUSH1 0x00
0000179e: PUSH2 0x17a6
000017a1: DUP3
000017a2: PUSH2 0x1760
000017a5: JUMP
000017a6: JUMPDEST
000017a7: SWAP1
000017a8: POP
000017a9: SWAP2
000017aa: SWAP1
000017ab: POP
000017ac: JUMP
000017ad: JUMPDEST
000017ae: PUSH1 0x00
000017b0: PUSH2 0x17b8
000017b3: DUP3
000017b4: PUSH2 0x1760
000017b7: JUMP
000017b8: JUMPDEST
000017b9: SWAP1
000017ba: POP
000017bb: SWAP2
000017bc: SWAP1
000017bd: POP
000017be: JUMP
000017bf: JUMPDEST
000017c0: PUSH1 0x00
000017c2: PUSH2 0x17ca
000017c5: DUP3
000017c6: PUSH2 0x17d1
000017c9: JUMP
000017ca: JUMPDEST
000017cb: SWAP1
000017cc: POP
000017cd: SWAP2
000017ce: SWAP1
000017cf: POP
000017d0: JUMP
000017d1: JUMPDEST
000017d2: PUSH1 0x00
000017d4: PUSH2 0x17dc
000017d7: DUP3
000017d8: PUSH2 0x1740
000017db: JUMP
000017dc: JUMPDEST
000017dd: SWAP1
000017de: POP
000017df: SWAP2
000017e0: SWAP1
000017e1: POP
000017e2: JUMP
000017e3: JUMPDEST
000017e4: PUSH2 0x17ec
000017e7: DUP2
000017e8: PUSH2 0x1710
000017eb: JUMP
000017ec: JUMPDEST
000017ed: DUP2
000017ee: EQ
000017ef: PUSH2 0x17f7
000017f2: JUMPI
000017f3: PUSH1 0x00
000017f5: DUP1
000017f6: REVERT
000017f7: JUMPDEST
000017f8: POP
000017f9: JUMP
000017fa: JUMPDEST
000017fb: PUSH2 0x1803
000017fe: DUP2
000017ff: PUSH2 0x1722
00001802: JUMP
00001803: JUMPDEST
00001804: DUP2
00001805: EQ
00001806: PUSH2 0x180e
00001809: JUMPI
0000180a: PUSH1 0x00
0000180c: DUP1
0000180d: REVERT
0000180e: JUMPDEST
0000180f: POP
00001810: JUMP
00001811: JUMPDEST
00001812: PUSH2 0x181a
00001815: DUP2
00001816: PUSH2 0x1734
00001819: JUMP
0000181a: JUMPDEST
0000181b: DUP2
0000181c: EQ
0000181d: PUSH2 0x1825
00001820: JUMPI
00001821: PUSH1 0x00
00001823: DUP1
00001824: REVERT
00001825: JUMPDEST
00001826: POP
00001827: JUMP
00001828: JUMPDEST
00001829: PUSH2 0x1831
0000182c: DUP2
0000182d: PUSH2 0x1760
00001830: JUMP
00001831: JUMPDEST
00001832: DUP2
00001833: EQ
00001834: PUSH2 0x183c
00001837: JUMPI
00001838: PUSH1 0x00
0000183a: DUP1
0000183b: REVERT
0000183c: JUMPDEST
0000183d: POP
0000183e: JUMP
0000183f: INVALID
00001840: UNKNOWN(0x4F)
00001841: PUSH24 0x6e61626c653a206e6577206f776e65722069732074686520
0000185a: PUSH27 0x65726f2061646472657373a2646970667358221220021ae2dd97eb
00001876: DUP15
00001877: UNKNOWN(0xB7)
00001878: UNKNOWN(0x0F)
00001879: UNKNOWN(0xDC)
0000187a: UNKNOWN(0xB7)
0000187b: DELEGATECALL
0000187c: CALLDATACOPY
0000187d: DUP13
0000187e: RETURNDATACOPY
0000187f: PUSH27 0x6ccda654f1ae0b1a06fcf4b820aa127c64736f6c63430007060033

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 1
}
high upgradeability detector Untrusted DELEGATECALL target reachable 55 no no
view
trace_id: 0x399d654e5816107636b4f443430e1e98104fb76cdde07bf7b8508cb01a430b2e
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 144,
    "trace_id": "0x399d654e5816107636b4f443430e1e98104fb76cdde07bf7b8508cb01a430b2e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96e80821",
            "selector": "0x96e80821",
            "calldata_variants": [
                "0x96e80821",
                "0x96e808210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9dc29fac",
            "selector": "0x9dc29fac",
            "calldata_variants": [
                "0x9dc29fac",
                "0x9dc29fac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbebbf4d0",
            "selector": "0xbebbf4d0",
            "calldata_variants": [
                "0xbebbf4d0",
                "0xbebbf4d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3fef3a3",
            "selector": "0xf3fef3a3",
            "calldata_variants": [
                "0xf3fef3a3",
                "0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1b66cb00",
            "selector": "0x1b66cb00",
            "calldata_variants": [
                "0x1b66cb00",
                "0x1b66cb000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3edca44a",
            "selector": "0x3edca44a",
            "calldata_variants": [
                "0x3edca44a",
                "0x3edca44a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 6267,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [
        {
            "pc": 1517,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "delegatecall_count": 1,
    "untrusted_delegatecall_count": 1
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
medium other detector SELFDESTRUCT reachable 45 no no
view
trace_id: 0x55c383409252045799b049dff5fe3a2e4d87e2a82ba124fc5131f4fd58dd5e94
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 24,
    "trace_id": "0x55c383409252045799b049dff5fe3a2e4d87e2a82ba124fc5131f4fd58dd5e94",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96e80821",
            "selector": "0x96e80821",
            "calldata_variants": [
                "0x96e80821",
                "0x96e808210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9dc29fac",
            "selector": "0x9dc29fac",
            "calldata_variants": [
                "0x9dc29fac",
                "0x9dc29fac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbebbf4d0",
            "selector": "0xbebbf4d0",
            "calldata_variants": [
                "0xbebbf4d0",
                "0xbebbf4d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3fef3a3",
            "selector": "0xf3fef3a3",
            "calldata_variants": [
                "0xf3fef3a3",
                "0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1b66cb00",
            "selector": "0x1b66cb00",
            "calldata_variants": [
                "0x1b66cb00",
                "0x1b66cb000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3edca44a",
            "selector": "0x3edca44a",
            "calldata_variants": [
                "0x3edca44a",
                "0x3edca44a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 1517,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "selfdestruct_count": 1
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x79eb0e359f43ce4dd831f8cdfb8658acee2c79b6f3b60db1c3d77ce8c0d841b5
call_targets: 0x620e59769085f69d2712a53aa0436821218e1068
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x79eb0e359f43ce4dd831f8cdfb8658acee2c79b6f3b60db1c3d77ce8c0d841b5",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x620e59769085f69d2712a53aa0436821218e1068"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96e80821",
            "selector": "0x96e80821",
            "calldata_variants": [
                "0x96e80821",
                "0x96e808210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9dc29fac",
            "selector": "0x9dc29fac",
            "calldata_variants": [
                "0x9dc29fac",
                "0x9dc29fac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbebbf4d0",
            "selector": "0xbebbf4d0",
            "calldata_variants": [
                "0xbebbf4d0",
                "0xbebbf4d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3fef3a3",
            "selector": "0xf3fef3a3",
            "calldata_variants": [
                "0xf3fef3a3",
                "0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1b66cb00",
            "selector": "0x1b66cb00",
            "calldata_variants": [
                "0x1b66cb00",
                "0x1b66cb000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3edca44a",
            "selector": "0x3edca44a",
            "calldata_variants": [
                "0x3edca44a",
                "0x3edca44a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1455,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2050,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3149,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [
        {
            "pc": 1517,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 6
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x79eb0e359f43ce4dd831f8cdfb8658acee2c79b6f3b60db1c3d77ce8c0d841b5
call_targets: 0x620e59769085f69d2712a53aa0436821218e1068
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x79eb0e359f43ce4dd831f8cdfb8658acee2c79b6f3b60db1c3d77ce8c0d841b5",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x620e59769085f69d2712a53aa0436821218e1068"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96e80821",
            "selector": "0x96e80821",
            "calldata_variants": [
                "0x96e80821",
                "0x96e808210000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x9dc29fac",
            "selector": "0x9dc29fac",
            "calldata_variants": [
                "0x9dc29fac",
                "0x9dc29fac0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xbebbf4d0",
            "selector": "0xbebbf4d0",
            "calldata_variants": [
                "0xbebbf4d0",
                "0xbebbf4d00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf3fef3a3",
            "selector": "0xf3fef3a3",
            "calldata_variants": [
                "0xf3fef3a3",
                "0xf3fef3a30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1b66cb00",
            "selector": "0x1b66cb00",
            "calldata_variants": [
                "0x1b66cb00",
                "0x1b66cb000000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3edca44a",
            "selector": "0x3edca44a",
            "calldata_variants": [
                "0x3edca44a",
                "0x3edca44a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1455,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2050,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3149,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": [
        {
            "pc": 1517,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 10
}