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

Analysis Run

1b4347d7-0929-4c5e-bd6b-daef02bb6d1e

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 7:50 PM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Not yet
Best current signal
ETH value transfer possible
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
31327 report.consolidate complete 1 / 1 3 months ago
110960 artifact.fetch complete 1 / 3 1 week ago
110961 tool.cast_disasm complete 1 / 3 1 week ago
110962 analysis.bundle complete 1 / 3 1 week ago
110963 capability.graph complete 1 / 3 1 week ago
110964 detector.run complete 1 / 3 1 week ago
110965 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.
View stderr
[codex:450780] OpenAI Codex v0.77.0 (research preview)
[codex:450780] --------
[codex:450780] workdir: /tmp/codex-multi-1zyi5_s9
[codex:450780] model: gpt-5.2-codex
[codex:450780] provider: openai
[codex:450780] approval: never
[codex:450780] sandbox: read-only
[codex:450780] reasoning effort: xhigh
[codex:450780] reasoning summaries: auto
[codex:450780] session id: 019b803b-54f9-7d22-9446-3ee0947f6a5b
[codex:450780] --------
[codex:450780] user
[codex:450780] 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:450780] 
[codex:450780] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:450780] 
[codex:450780] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:450780] - Gas inefficiency, code quality, or best practices
[codex:450780] - Theoretical vulnerabilities without a clear extraction path
[codex:450780] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:450780] - Issues requiring social engineering or off-chain coordination
[codex:450780] 
[codex:450780] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:450780] - CALL/DELEGATECALL with controllable destination or calldata
[codex:450780] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:450780] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:450780] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:450780] - External calls before state updates (reentrancy)
[codex:450780] - SELFDESTRUCT with controllable beneficiary
[codex:450780] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:450780] 
[codex:450780] For each finding, you MUST explain:
[codex:450780] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:450780] 2. The concrete sequence of transactions to extract value
[codex:450780] 3. Why you believe this is exploitable (not just suspicious)
[codex:450780] 
[codex:450780] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:450780] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:450780] 
[codex:450780] Output MUST be valid JSON matching the provided schema.
[codex:450780] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:450780] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:450780] mcp startup: no servers
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Reading file contents**
[codex:450780] exec
[codex:450780] /bin/bash -lc ls in /tmp/codex-multi-1zyi5_s9 succeeded in 5ms:
[codex:450780] BYTECODE_BUNDLE.txt
[codex:450780] codex-output-schema.json
[codex:450780] exec
[codex:450780] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-1zyi5_s9 succeeded in 6ms:
[codex:450780] Runtime bytecode bundle for best-effort auditing.
[codex:450780] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:450780] 
[codex:450780] FILE: runtime_bytecode.hex
[codex:450780] 0x6080604052600436106101445760003560e01c80636b2a8f65116100c0578063cf6e448811610074578063efcab17311610059578063efcab1731461067f578063fa558b71146106a9578063fd404b4c1461078857610144565b8063cf6e4488146105c8578063dfd1fb7a146105f257610144565b806396aa7368116100a557806396aa73681461046757806398a89897146104e4578063cb81fecf146105b357610144565b80636b2a8f65146103f6578063801ead1d1461042057610144565b80632e2d726c116101175780633a8343ee116100fc5780633a8343ee1461030c5780633cd18ca0146103365780633f53c36c146103c357610144565b80632e2d726c1461026a578063375b74c3146102f757610144565b806314ae3c091461018057806315b21082146101c6578063233ecf781461020b5780632ca40a331461023e575b6040805133815234602082015281517fa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1929181900390910190a1005b34801561018c57600080fd5b506101aa600480360360208110156101a357600080fd5b503561081e565b604080516001600160a01b039092168252519081900360200190f35b3480156101d257600080fd5b506101f9600480360360208110156101e957600080fd5b50356001600160a01b0316610839565b60408051918252519081900360200190f35b34801561021757600080fd5b506101f96004803603602081101561022e57600080fd5b50356001600160a01b0316610914565b34801561024a57600080fd5b506102686004803603602081101561026157600080fd5b5035610971565b005b34801561027657600080fd5b506102686004803603604081101561028d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156102b857600080fd5b8201836020820111156102ca57600080fd5b803590602001918460208302840111640100000000831117156102ec57600080fd5b509092509050610a46565b34801561030357600080fd5b506101aa610b47565b34801561031857600080fd5b506102686004803603602081101561032f57600080fd5b5035610b56565b34801561034257600080fd5b506102686004803603604081101561035957600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561038457600080fd5b82018360208201111561039657600080fd5b803590602001918460208302840111640100000000831117156103b857600080fd5b509092509050610c21565b3480156103cf57600080fd5b506101f9600480360360208110156103e657600080fd5b50356001600160a01b0316610e27565b34801561040257600080fd5b506102686004803603602081101561041957600080fd5b5035610e84565b34801561042c57600080fd5b506104536004803603602081101561044357600080fd5b50356001600160a01b0316610f5c565b604080519115158252519081900360200190f35b34801561047357600080fd5b506102686004803603602081101561048a57600080fd5b8101906020810181356401000000008111156104a557600080fd5b8201836020820111156104b757600080fd5b803590602001918460208302840111640100000000831117156104d957600080fd5b509092509050610f71565b3480156104f057600080fd5b506102686004803603604081101561050757600080fd5b81019060208101813564010000000081111561052257600080fd5b82018360208201111561053457600080fd5b8035906020019184602083028401116401000000008311171561055657600080fd5b91939092909160208101903564010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b509092509050611054565b3480156105bf57600080fd5b506101f96111c5565b3480156105d457600080fd5b506101aa600480360360208110156105eb57600080fd5b50356111cb565b3480156105fe57600080fd5b506102686004803603604081101561061557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561064057600080fd5b82018360208201111561065257600080fd5b8035906020019184600183028401116401000000008311171561067457600080fd5b5090925090506111e6565b34801561068b57600080fd5b506101aa600480360360208110156106a257600080fd5b503561147f565b3480156106b557600080fd5b50610268600480360360608110156106cc57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156106f757600080fd5b82018360208201111561070957600080fd5b8035906020019184602083028401116401000000008311171561072b57600080fd5b91939092909160208101903564010000000081111561074957600080fd5b82018360208201111561075b57600080fd5b8035906020019184602083028401116401000000008311171561077d57600080fd5b50909250905061149a565b34801561079457600080fd5b50610268600480360360608110156107ab57600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156107df57600080fd5b8201836020820111156107f157600080fd5b8035906020019184600183028401116401000000008311171561081357600080fd5b509092509050611674565b6004602052600090815260409020546001600160a01b031681565b60006001600160a01b038216610885576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b61088d61177c565b60408051602080820183526001600160a01b038087168084526000868152600284528590209351845492166001600160a01b031990921691909117909255825184815233918101919091528083019190915290519192507fd76fc900a7e1a6fcf11d54b7ba943918df6c53a3128140658c389b3da1e997ba919081900360600190a1919050565b60006109216005836117c5565b604080518281523360208201526001600160a01b0385168183015290519192507f80484ea176012d2765209d6a93b423d605ad7bddfdd769252a85b53268f5a845919081900360600190a1919050565b6001546001600160a01b031633146109bf576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006109cc600583611857565b6001600160a01b0381166000818152600360209081526040808320805460ff19169055868352600582529182902080546001600160a01b031916905581518681529081019290925280519293507f18d5ef563b47e3b56210ead4e105d6fe2315717931d4c120135841bc9d6c738392918290030190a15050565b3360009081526003602052604090205460ff16610a99576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b81811015610b41576000838383818110610ab257fe5b905060200201356001600160a01b03169050806001600160a01b031663e00af4a7866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610b1c57600080fd5b505af1158015610b30573d6000803e3d6000fd5b505060019093019250610a9c915050565b50505050565b6001546001600160a01b031681565b6001546001600160a01b03163314610ba4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610bad816118d2565b600180546001600160a01b039283166001600160a01b031991821617825560008481526002602090815260409182902080549093169092559154825185815293169083015280517f9a99272c0f6b7a30ef9e76e684a7cd408bfd4f11a72f36a8e276253c920e442d9281900390910190a150565b3360009081526003602052604090205460ff16610c74576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8260005b82811015610e20576000848483818110610c8e57fe5b905060200201356001600160a01b031690506000836001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610cf857600080fd5b505afa158015610d0c573d6000803e3d6000fd5b505050506040513d6020811015610d2257600080fd5b5051604080517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152306024830152604482018490529151929350908616916323b872dd916064808201926020929091908290030181600087803b158015610d9957600080fd5b505af1158015610dad573d6000803e3d6000fd5b505050506040513d6020811015610dc357600080fd5b5051610e16576040805162461bcd60e51b815260206004820152601260248201527f7472616e7366657246726f6d2066616c73650000000000000000000000000000604482015290519081900360640190fd5b5050600101610c78565b5050505050565b6000610e346004836117c5565b604080518281523360208201526001600160a01b0385168183015290519192507f86347f0dc6401085afc2e65b03928402543790cfec1c26238fb9d5384a0d0150919081900360600190a1919050565b6001546001600160a01b03163314610ed2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6000610edf600483611857565b6001600160a01b0381166000818152600360209081526040808320805460ff19166001179055868352600482529182902080546001600160a01b031916905581518681529081019290925280519293507fd201726f779e2288dca2c25bc8608ac2616c615a445dbc0f8e7bb86101bcb39392918290030190a15050565b60036020526000908152604090205460ff1681565b3360009081526003602052604090205460ff16610fc4576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60005b8181101561104f576000838383818110610fdd57fe5b905060200201356001600160a01b03169050806001600160a01b03166390ec71bd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561102a57600080fd5b505af115801561103e573d6000803e3d6000fd5b505060019093019250610fc7915050565b505050565b3360009081526003602052604090205460ff166110a7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b8281146110fb576040805162461bcd60e51b815260206004820152601160248201527f6d69736d61746368656420617272617973000000000000000000000000000000604482015290519081900360640190fd5b60005b83811015610e2057600085858381811061111457fe5b905060200201356001600160a01b03169050600084848481811061113457fe5b905060200201359050816001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015611176573d6000803e3d6000fd5b50604080516001600160a01b03841681526020810183905281517ff35d7b6a86398c5aabcd316353d6f069dbc1be6fa0ab49d809bfbf6d96f55575929181900390910190a150506001016110fe565b60005481565b6002602052600090815260409020546001600160a01b031681565b3360009081526003602052604090205460ff16611239576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b60006060846001600160a01b03168484604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114611299576040519150601f19603f3d011682016040523d82523d6000602084013e61129e565b606091505b50915091508115611393577f18e614c03fae7d4f0ad0790905bc76b8690e946c477b2b8970403bcad27a9b968585858460405180856001600160a01b03166001600160a01b03168152602001806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015611350578181015183820152602001611338565b50505050905090810190601f16801561137d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1610e20565b7faba0bbd4bfc61304155c867f51e2bc1c6f844c4d852c9bdb15c2cd9c3c8e62748585858460405180856001600160a01b03166001600160a01b03168152602001806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b8381101561143a578181015183820152602001611422565b50505050905090810190601f1680156114675780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15050505050565b6005602052600090815260409020546001600160a01b031681565b3360009081526003602052604090205460ff166114ed576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b828114611541576040805162461bcd60e51b815260206004820152601160248201527f6d69736d61746368656420617272617973000000000000000000000000000000604482015290519081900360640190fd5b8460005b8481101561166b57600086868381811061155b57fe5b905060200201356001600160a01b03169050600085858481811061157b57fe5b905060200201359050836001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156115e457600080fd5b505af11580156115f8573d6000803e3d6000fd5b505050506040513d602081101561160e57600080fd5b5051611661576040805162461bcd60e51b815260206004820152600e60248201527f7472616e736665722066616c7365000000000000000000000000000000000000604482015290519081900360640190fd5b5050600101611545565b50505050505050565b3360009081526003602052604090205460ff166116c7576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b604080517fdfd1fb7a0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830190815260248301938452604483018590529087169263dfd1fb7a92879287928792606401848480828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561175e57600080fd5b505af1158015611772573d6000803e3d6000fd5b5050505050505050565b6000805460010190819055604080516000194301406020808301919091523060601b82840152605480830194909452825180830390940184526074909101909152815191012090565b60006001600160a01b038216611811576040805162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015290519081900360640190fd5b61181961177c565b60408051602080820183526001600160a01b03958616825260008481529690529420935184546001600160a01b031916931692909217909255919050565b600081815260208390526040812080546001600160a01b03166118c1576040805162461bcd60e51b815260206004820152600e60248201527f6e6f2073756368206c6f636b4964000000000000000000000000000000000000604482015290519081900360640190fd5b546001600160a01b03169392505050565b600081815260026020526040812080546001600160a01b031661193c576040805162461bcd60e51b815260206004820152600e60248201527f6e6f2073756368206c6f636b4964000000000000000000000000000000000000604482015290519081900360640190fd5b546001600160a01b03169291505056fea265627a7a723158200f8248edd1960308d40aec2f9c13cb529ca9b8c62a97292427d1c4666470783564736f6c63430005100032
[codex:450780] 
[codex:450780] 
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Decoding bytecode functions and access controls**
[codex:450780] 
[codex:450780] I'm carefully analyzing the bytecode to map function selectors to their logic, inspecting storage slots for ownership and whitelist checks, and pinpointing any token or ETH transfers that might be exploitable. I’m tracking calls with arguments, especially those interacting with mappings and external calls, to verify if access control is enforced thoroughly before value transfers. This close reading helps me find any concrete extraction paths or missing protections.
[codex:450780] thinking
[codex:450780] **Examining token and ETH transfer functions**
[codex:450780] 
[codex:450780] I'm analyzing functions that handle external calls like token transfers or ETH sends, checking if they have proper access control like owner or whitelist restrictions. While some functions for batch token transfers or ETH payments require whitelist, others allow anyone to create locks or deposits without transferring funds. I’m also looking for any missing protection on functions changing owner or whitelist, and any reentrancy risks in ETH transfer loops; so far, all critical operations seem properly restricted.
[codex:450780] thinking
[codex:450780] **Verifying owner initialization and access controls**
[codex:450780] 
[codex:450780] I'm investigating whether the owner slot (slot1) is properly initialized and if there are any unprotected functions that can modify it. I examined the bytecode for storage writes to slot1 and checked functions with owner checks. I’m preparing to run a small Python script to scan the bytecode for any unsafe `sstore` operations that write to slot1 without access control. This should help confirm if ownership can be hijacked or left unset.
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re, textwrap
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text().split('FILE: runtime_bytecode.hex')[1].strip()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] # simple disassembler
[codex:450780] opcodes = {
[codex:450780]     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:450780]     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:450780]     0x20:'SHA3',
[codex:450780]     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:450780]     0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780]     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:450780]     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:450780] }
[codex:450780] for i in range(0x80):
[codex:450780]     opcodes[0x80+i]=f'DUP{i+1}'
[codex:450780]     opcodes[0x90+i]=f'SWAP{i+1}'
[codex:450780] for i in range(0xA0,0xA5):
[codex:450780]     opcodes[i]=f'LOG{i-0xA0}'
[codex:450780] opcodes.update({0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'})
[codex:450780] 
[codex:450780] b = bytes.fromhex(hexstr)
[codex:450780] # disassemble with offsets
[codex:450780] out = []
[codex:450780] pc=0
[codex:450780] while pc < len(b):
[codex:450780]     op = b[pc]
[codex:450780]     name = opcodes.get(op, f'OP{op:02x}')
[codex:450780]     if name.startswith('PUSH'):
[codex:450780]         n = int(name[4:])
[codex:450780]         data = b[pc+1:pc+1+n]
[codex:450780]         out.append((pc, name, data.hex()))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         out.append((pc, name, ''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # print key regions around SSTORE and CALL
[codex:450780] for pc,name,data in out:
[codex:450780]     if name in ('SSTORE','CALL','DELEGATECALL','SELFDESTRUCT'):
[codex:450780]         # show a small window
[codex:450780]         start = max(0, out.index((pc,name,data))-5)
[codex:450780]         end = min(len(out), start+15)
[codex:450780]         print('--- around', hex(pc), name)
[codex:450780]         for j in range(start,end):
[codex:450780]             p,n,d = out[j]
[codex:450780]             if d:
[codex:450780]                 print(f'{p:04x}: {n} {d}')
[codex:450780]             else:
[codex:450780]                 print(f'{p:04x}: {n}')
[codex:450780]         print()
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 39ms:
[codex:450780] --- around 0x8cb SSTORE
[codex:450780] 08c6: DUP17
[codex:450780] 08c7: DUP18
[codex:450780] 08c8: OR
[codex:450780] 08c9: DUP17
[codex:450780] 08ca: DUP19
[codex:450780] 08cb: SSTORE
[codex:450780] 08cc: DUP3
[codex:450780] 08cd: MLOAD
[codex:450780] 08ce: DUP5
[codex:450780] 08cf: DUP2
[codex:450780] 08d0: MSTORE
[codex:450780] 08d1: CALLER
[codex:450780] 08d2: DUP18
[codex:450780] 08d3: DUP2
[codex:450780] 08d4: ADD
[codex:450780] 
[codex:450780] --- around 0x9ef SSTORE
[codex:450780] 09e9: SLOAD
[codex:450780] 09ea: PUSH1 ff
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Mapping CALL instructions to functions**
[codex:450780] 
[codex:450780] I'm considering creating a Python script to parse disassembly, identify function entry points via JUMPDESTs, and map each CALL opcode to its containing function. This should help determine if any CALL sends ETH without protection, by correlating call offsets with function boundaries found in the dispatch table. Let's explore this mapping approach!
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] # decode bytes
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble with offset
[codex:450780] ops = []
[codex:450780] pc=0
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60 <= op <= 0x7f:
[codex:450780]         n = op-0x5f
[codex:450780]         data = b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # map of function entry offsets from dispatcher (PUSH2 <offset> JUMPI). We'll parse first 0x200 bytes.
[codex:450780] entries=set()
[codex:450780] for i,(pc,op,data) in enumerate(ops):
[codex:450780]     # look for PUSH2 <offset> JUMPI pattern early
[codex:450780]     if op==0x61 and i+1<len(ops) and ops[i+1][1]==0x57:
[codex:450780]         off=int.from_bytes(data,'big')
[codex:450780]         if off< len(b):
[codex:450780]             entries.add(off)
[codex:450780] 
[codex:450780] # also include entry for 0x144? maybe fallback? but ok
[codex:450780] entries = sorted(entries)
[codex:450780] print('entries', [hex(e) for e in entries])
[codex:450780] 
[codex:450780] # collect call offsets
[codex:450780] calls=[]
[codex:450780] for pc,op,data in ops:
[codex:450780]     if op in (0xf1,0xf4,0xff):
[codex:450780]         calls.append(pc)
[codex:450780] 
[codex:450780] # assign each call to nearest preceding entry
[codex:450780] entries_sorted=entries
[codex:450780] for c in calls:
[codex:450780]     # find last entry <= c
[codex:450780]     prev = max([e for e in entries_sorted if e<=c], default=None)
[codex:450780]     print(f'CALL at {hex(c)} in function entry {hex(prev) if prev is not None else None}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 35ms:
[codex:450780] entries ['0x59', '0x74', '0xa5', '0xc0', '0xfc', '0x117', '0x144', '0x180', '0x18c', '0x1a3', '0x1c6', '0x1d2', '0x1e9', '0x20b', '0x217', '0x22e', '0x23e', '0x24a', '0x261', '0x26a', '0x276', '0x28d', '0x2b8', '0x2ca', '0x2ec', '0x2f7', '0x303', '0x30c', '0x318', '0x32f', '0x336', '0x342', '0x359', '0x384', '0x396', '0x3b8', '0x3c3', '0x3cf', '0x3e6', '0x3f6', '0x402', '0x419', '0x420', '0x42c', '0x443', '0x467', '0x473', '0x48a', '0x4a5', '0x4b7', '0x4d9', '0x4e4', '0x4f0', '0x507', '0x522', '0x534', '0x556', '0x574', '0x586', '0x5a8', '0x5b3', '0x5bf', '0x5c8', '0x5d4', '0x5eb', '0x5f2', '0x5fe', '0x615', '0x640', '0x652', '0x674', '0x67f', '0x68b', '0x6a2', '0x6a9', '0x6b5', '0x6cc', '0x6f7', '0x709', '0x72b', '0x749', '0x75b', '0x77d', '0x788', '0x794', '0x7ab', '0x7df', '0x7f1', '0x813', '0x885', '0x9bf', '0xa99', '0xab2', '0xb1c', '0xb30', '0xb41', '0xba4', '0xc74', '0xc8e', '0xcf8', '0xd0c', '0xd22', '0xd99', '0xdad', '0xdc3', '0xe16', '0xe20', '0xed2', '0xfc4', '0xfdd', '0x102a', '0x103e', '0x104f', '0x10a7', '0x10fb', '0x1114', '0x1134', '0x1176', '0x1239', '0x1299', '0x1350', '0x137d', '0x1393', '0x143a', '0x1467', '0x14ed', '0x1541', '0x155b', '0x157b', '0x15e4', '0x15f8', '0x160e', '0x1661', '0x166b', '0x16c7', '0x175e', '0x1772', '0x1811', '0x18c1', '0x193c']
[codex:450780] CALL at 0xb1f in function entry 0xb1c
[codex:450780] CALL at 0xd9c in function entry 0xd99
[codex:450780] CALL at 0x102d in function entry 0x102a
[codex:450780] CALL at 0x1160 in function entry 0x1134
[codex:450780] CALL at 0x126a in function entry 0x1239
[codex:450780] CALL at 0x15e7 in function entry 0x15e4
[codex:450780] CALL at 0x1761 in function entry 0x175e
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Mapping function selectors to implementation offsets**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # simple disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60 <= op <= 0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # find pattern DUP1 PUSH4 <sel> EQ PUSH2 <dest> JUMPI
[codex:450780] selectors=[]
[codex:450780] for i in range(len(ops)-5):
[codex:450780]     op1=ops[i][1]; op2=ops[i+1][1]; op3=ops[i+2][1]; op4=ops[i+3][1]; op5=ops[i+4][1]; op6=ops[i+5][1]
[codex:450780]     if op1==0x80 and op2==0x63 and op3==0x14 and op4==0x61 and op5==0x57:
[codex:450780]         sel=ops[i+1][2].hex()
[codex:450780]         dest=int.from_bytes(ops[i+3][2], 'big')
[codex:450780]         selectors.append((sel, dest, ops[i][0]))
[codex:450780] 
[codex:450780] print('selectors:')
[codex:450780] for sel,dest,pc in selectors:
[codex:450780]     print(sel, hex(dest))
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780] selectors:
[codex:450780] efcab173 0x67f
[codex:450780] fa558b71 0x6a9
[codex:450780] fd404b4c 0x788
[codex:450780] cf6e4488 0x5c8
[codex:450780] dfd1fb7a 0x5f2
[codex:450780] 96aa7368 0x467
[codex:450780] 98a89897 0x4e4
[codex:450780] cb81fecf 0x5b3
[codex:450780] 6b2a8f65 0x3f6
[codex:450780] 801ead1d 0x420
[codex:450780] 3a8343ee 0x30c
[codex:450780] 3cd18ca0 0x336
[codex:450780] 3f53c36c 0x3c3
[codex:450780] 2e2d726c 0x26a
[codex:450780] 375b74c3 0x2f7
[codex:450780] 14ae3c09 0x180
[codex:450780] 15b21082 0x1c6
[codex:450780] 233ecf78 0x20b
[codex:450780] 2ca40a33 0x23e
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Mapping external entries to internal functions**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble with names
[codex:450780] opnames={
[codex:450780]     0x00:'STOP',0x01:'ADD',0x02:'MUL',0x03:'SUB',0x04:'DIV',0x05:'SDIV',0x06:'MOD',0x07:'SMOD',0x08:'ADDMOD',0x09:'MULMOD',0x0a:'EXP',0x0b:'SIGNEXTEND',0x10:'LT',0x11:'GT',0x12:'SLT',0x13:'SGT',0x14:'EQ',0x15:'ISZERO',0x16:'AND',0x17:'OR',0x18:'XOR',0x19:'NOT',0x1a:'BYTE',0x1b:'SHL',0x1c:'SHR',0x1d:'SAR',0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0xf1:'CALL',0xf3:'RETURN',0xf4:'DELEGATECALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xfa:'STATICCALL'
[codex:450780] }
[codex:450780] 
[codex:450780] # decode
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60 <= op <= 0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # map pc to index
[codex:450780] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:450780] 
[codex:450780] entries = [0x180,0x1c6,0x20b,0x23e,0x26a,0x2f7,0x30c,0x336,0x3c3,0x3f6,0x420,0x467,0x4e4,0x5b3,0x5c8,0x5f2,0x67f,0x6a9,0x788]
[codex:450780] 
[codex:450780] for entry in entries:
[codex:450780]     i=pc_to_idx.get(entry)
[codex:450780]     if i is None:
[codex:450780]         print('entry not found', hex(entry)); continue
[codex:450780]     print('\\n=== entry', hex(entry))
[codex:450780]     for j in range(i, min(i+40, len(ops))):
[codex:450780]         pc,op,data=ops[j]
[codex:450780]         name = opnames.get(op, f'OP{op:02x}')
[codex:450780]         if op>=0x60 and op<=0x7f:
[codex:450780]             print(f'{pc:04x}: {name} {data.hex()}')
[codex:450780]         else:
[codex:450780]             print(f'{pc:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 32ms:
[codex:450780] 
[codex:450780] === entry 0x180
[codex:450780] 0180: JUMPDEST
[codex:450780] 0181: CALLVALUE
[codex:450780] 0182: OP80
[codex:450780] 0183: ISZERO
[codex:450780] 0184: OP61 018c
[codex:450780] 0187: JUMPI
[codex:450780] 0188: OP60 00
[codex:450780] 018a: OP80
[codex:450780] 018b: REVERT
[codex:450780] 018c: JUMPDEST
[codex:450780] 018d: POP
[codex:450780] 018e: OP61 01aa
[codex:450780] 0191: OP60 04
[codex:450780] 0193: OP80
[codex:450780] 0194: CALLDATASIZE
[codex:450780] 0195: SUB
[codex:450780] 0196: OP60 20
[codex:450780] 0198: OP81
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Mapping function selectors to internal offsets**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] # parse dispatcher pattern for selectors and dests
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60<=op<=0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] selectors=[]
[codex:450780] for i in range(len(ops)-5):
[codex:450780]     if ops[i][1]==0x80 and ops[i+1][1]==0x63 and ops[i+2][1]==0x14 and ops[i+3][1]==0x61 and ops[i+4][1]==0x57:
[codex:450780]         sel=ops[i+1][2].hex()
[codex:450780]         dest=int.from_bytes(ops[i+3][2],'big')
[codex:450780]         selectors.append((sel,dest))
[codex:450780] 
[codex:450780] print('selector -> entry -> internal jump (if any)')
[codex:450780] 
[codex:450780] # find internal jump for each entry: look for last PUSH2 <internal> JUMP before function jump? We can read at entry and find first JUMP to internal code (push2).
[codex:450780] # We'll parse a few ops after entry for push2 and JUMP.
[codex:450780] 
[codex:450780] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:450780] for sel,entry in selectors:
[codex:450780]     idx = pc_to_idx[entry]
[codex:450780]     internal=None
[codex:450780]     for j in range(idx, min(idx+60, len(ops))):
[codex:450780]         # look for PUSH2 <dest> JUMP
[codex:450780]         if ops[j][1]==0x61 and j+1 < len(ops) and ops[j+1][1]==0x56:
[codex:450780]             internal=int.from_bytes(ops[j][2],'big')
[codex:450780]             break
[codex:450780]     print(sel, hex(entry), '->', hex(internal) if internal else None)
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780] selector -> entry -> internal jump (if any)
[codex:450780] efcab173 0x67f -> 0x147f
[codex:450780] fa558b71 0x6a9 -> None
[codex:450780] fd404b4c 0x788 -> None
[codex:450780] cf6e4488 0x5c8 -> 0x11cb
[codex:450780] dfd1fb7a 0x5f2 -> None
[codex:450780] 96aa7368 0x467 -> None
[codex:450780] 98a89897 0x4e4 -> None
[codex:450780] cb81fecf 0x5b3 -> 0x11c5
[codex:450780] 6b2a8f65 0x3f6 -> 0xe84
[codex:450780] 801ead1d 0x420 -> 0xf5c
[codex:450780] 3a8343ee 0x30c -> 0xb56
[codex:450780] 3cd18ca0 0x336 -> None
[codex:450780] 3f53c36c 0x3c3 -> 0xe27
[codex:450780] 2e2d726c 0x26a -> None
[codex:450780] 375b74c3 0x2f7 -> 0xb47
[codex:450780] 14ae3c09 0x180 -> 0x81e
[codex:450780] 15b21082 0x1c6 -> 0x839
[codex:450780] 233ecf78 0x20b -> 0x914
[codex:450780] 2ca40a33 0x23e -> 0x971
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Extending search for internal calls**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60<=op<=0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # parse selectors
[codex:450780] selectors=[]
[codex:450780] for i in range(len(ops)-5):
[codex:450780]     if ops[i][1]==0x80 and ops[i+1][1]==0x63 and ops[i+2][1]==0x14 and ops[i+3][1]==0x61 and ops[i+4][1]==0x57:
[codex:450780]         sel=ops[i+1][2].hex()
[codex:450780]         dest=int.from_bytes(ops[i+3][2],'big')
[codex:450780]         selectors.append((sel,dest))
[codex:450780] 
[codex:450780] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:450780] 
[codex:450780] for sel,entry in selectors:
[codex:450780]     idx=pc_to_idx[entry]
[codex:450780]     internal=None
[codex:450780]     # search next 200 ops for PUSH2 dest JUMP pattern; pick last one before STOP/RETURN? We'll take first JUMP after decoding.
[codex:450780]     for j in range(idx, min(idx+200, len(ops)-1)):
[codex:450780]         if ops[j][1]==0x61 and ops[j+1][1]==0x56:
[codex:450780]             internal=int.from_bytes(ops[j][2],'big')
[codex:450780]             break
[codex:450780]     print(sel, hex(entry), '->', hex(internal) if internal else None)
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 32ms:
[codex:450780] efcab173 0x67f -> 0x147f
[codex:450780] fa558b71 0x6a9 -> 0x149a
[codex:450780] fd404b4c 0x788 -> 0x1674
[codex:450780] cf6e4488 0x5c8 -> 0x11cb
[codex:450780] dfd1fb7a 0x5f2 -> 0x11e6
[codex:450780] 96aa7368 0x467 -> 0xf71
[codex:450780] 98a89897 0x4e4 -> 0x1054
[codex:450780] cb81fecf 0x5b3 -> 0x11c5
[codex:450780] 6b2a8f65 0x3f6 -> 0xe84
[codex:450780] 801ead1d 0x420 -> 0xf5c
[codex:450780] 3a8343ee 0x30c -> 0xb56
[codex:450780] 3cd18ca0 0x336 -> 0xc21
[codex:450780] 3f53c36c 0x3c3 -> 0xe27
[codex:450780] 2e2d726c 0x26a -> 0xa46
[codex:450780] 375b74c3 0x2f7 -> 0xb47
[codex:450780] 14ae3c09 0x180 -> 0x81e
[codex:450780] 15b21082 0x1c6 -> 0x839
[codex:450780] 233ecf78 0x20b -> 0x914
[codex:450780] 2ca40a33 0x23e -> 0x971
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Mapping call offsets to internal functions**
[codex:450780] 
[codex:450780] I'm going through each internal function's role and access controls to check if any external calls or token/ETH transfers happen without protection. To confirm this, I'll map call offsets in the disassembly to their nearest preceding internal function entries, setting up a script to associate calls with internal functions precisely. This will help determine which functions might allow unprotected actions.
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60<=op<=0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # internal function entries as mapped earlier
[codex:450780] entries = [0x81e,0x839,0x914,0x971,0xa46,0xb47,0xb56,0xc21,0xe27,0xe84,0xf5c,0xf71,0x1054,0x11c5,0x11cb,0x11e6,0x147f,0x149a,0x1674]
[codex:450780] entries = sorted(entries)
[codex:450780] 
[codex:450780] # find CALL opcodes
[codex:450780] calls=[]
[codex:450780] for pc,op,data in ops:
[codex:450780]     if op==0xf1: # CALL
[codex:450780]         calls.append(pc)
[codex:450780] 
[codex:450780] # map call to nearest preceding entry
[codex:450780] for c in calls:
[codex:450780]     prev = max([e for e in entries if e <= c], default=None)
[codex:450780]     print(f'CALL at {hex(c)} -> function entry {hex(prev) if prev else None}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 29ms:
[codex:450780] CALL at 0xb1f -> function entry 0xa46
[codex:450780] CALL at 0xd9c -> function entry 0xc21
[codex:450780] CALL at 0x102d -> function entry 0xf71
[codex:450780] CALL at 0x1160 -> function entry 0x1054
[codex:450780] CALL at 0x126a -> function entry 0x11e6
[codex:450780] CALL at 0x15e7 -> function entry 0x149a
[codex:450780] CALL at 0x1761 -> function entry 0x1674
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Mapping external calls and access controls**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60<=op<=0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] entries = [0x81e,0x839,0x914,0x971,0xa46,0xb47,0xb56,0xc21,0xe27,0xe84,0xf5c,0xf71,0x1054,0x11c5,0x11cb,0x11e6,0x147f,0x149a,0x1674]
[codex:450780] entries=sorted(entries)
[codex:450780] 
[codex:450780] for pc,op,data in ops:
[codex:450780]     if op==0x55:  # SSTORE
[codex:450780]         prev = max([e for e in entries if e <= pc], default=None)
[codex:450780]         print(f'SSTORE at {hex(pc)} -> function {hex(prev) if prev else None}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780] SSTORE at 0x8cb -> function 0x839
[codex:450780] SSTORE at 0x9ef -> function 0x971
[codex:450780] SSTORE at 0xa08 -> function 0x971
[codex:450780] SSTORE at 0xbcb -> function 0xb56
[codex:450780] SSTORE at 0xbe5 -> function 0xb56
[codex:450780] SSTORE at 0xf05 -> function 0xe84
[codex:450780] SSTORE at 0xf1e -> function 0xe84
[codex:450780] SSTORE at 0x1787 -> function 0x1674
[codex:450780] SSTORE at 0x1852 -> function 0x1674
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Mapping SSTORE operations and access control**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble
[codex:450780] opnames={}
[codex:450780] for i in range(256):
[codex:450780]     opnames[i]=f'OP{i:02x}'
[codex:450780] # fill names for readability
[codex:450780] basic={
[codex:450780] 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:450780] 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:450780] 0x20:'SHA3',
[codex:450780] 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:450780] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780] 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:450780] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:450780] }
[codex:450780] opnames.update(basic)
[codex:450780] 
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60 <= op <= 0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # find SSTORE positions and print window
[codex:450780] sstore_idxs=[i for i,(pc,op,data) in enumerate(ops) if op==0x55]
[codex:450780] for idx in sstore_idxs:
[codex:450780]     pc,op,data = ops[idx]
[codex:450780]     print('\\nSSTORE at', hex(pc))
[codex:450780]     for j in range(max(0, idx-10), min(len(ops), idx+10)):
[codex:450780]         pc2,op2,data2 = ops[j]
[codex:450780]         name=opnames[op2]
[codex:450780]         if 0x60<=op2<=0x7f:
[codex:450780]             print(f'{pc2:04x}: {name} {data2.hex()}')
[codex:450780]         else:
[codex:450780]             print(f'{pc2:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 30ms:
[codex:450780] 
[codex:450780] SSTORE at 0x8cb
[codex:450780] 08c1: NOT
[codex:450780] 08c2: OP90
[codex:450780] 08c3: OP92
[codex:450780] 08c4: AND
[codex:450780] 08c5: OP91
[codex:450780] 08c6: OP90
[codex:450780] 08c7: OP91
[codex:450780] 08c8: OR
[codex:450780] 08c9: OP90
[codex:450780] 08ca: OP92
[codex:450780] 08cb: SSTORE
[codex:450780] 08cc: OP82
[codex:450780] 08cd: MLOAD
[codex:450780] 08ce: OP84
[codex:450780] 08cf: OP81
[codex:450780] 08d0: MSTORE
[codex:450780] 08d1: CALLER
[codex:450780] 08d2: OP91
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Analyzing storage writes and access control**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble with names
[codex:450780] opnames={}
[codex:450780] for i in range(256): opnames[i]=f'OP{i:02x}'
[codex:450780] name_map={
[codex:450780] 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:450780] 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:450780] 0x20:'SHA3',
[codex:450780] 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:450780] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780] 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:450780] 0xf1:'CALL',0xf3:'RETURN',0xf4:'DELEGATECALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xfa:'STATICCALL'
[codex:450780] }
[codex:450780] for k,v in name_map.items(): opnames[k]=v
[codex:450780] 
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60<=op<=0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # print instructions from 0x0839 to 0x08e0
[codex:450780] start=0x0839; end=0x08e0
[codex:450780] for pc,op,data in ops:
[codex:450780]     if start <= pc <= end:
[codex:450780]         name=opnames[op]
[codex:450780]         if 0x60<=op<=0x7f:
[codex:450780]             print(f'{pc:04x}: {name} {data.hex()}')
[codex:450780]         else:
[codex:450780]             print(f'{pc:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 31ms:
[codex:450780] 0839: JUMPDEST
[codex:450780] 083a: OP60 00
[codex:450780] 083c: OP60 01
[codex:450780] 083e: OP60 01
[codex:450780] 0840: OP60 a0
[codex:450780] 0842: SHL
[codex:450780] 0843: SUB
[codex:450780] 0844: OP82
[codex:450780] 0845: AND
[codex:450780] 0846: OP61 0885
[codex:450780] 0849: JUMPI
[codex:450780] 084a: OP60 40
[codex:450780] 084c: OP80
[codex:450780] 084d: MLOAD
[codex:450780] 084e: OP62 461bcd
[codex:450780] 0852: OP60 e5
[codex:450780] 0854: SHL
[codex:450780] 0855: OP81
[codex:450780] 0856: MSTORE
[codex:450780] 0857: OP60 20
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Analyzing function calls and whitelist checks**
[codex:450780] exec
[codex:450780] /bin/bash -lc "python - <<'PY'
[codex:450780] import re
[codex:450780] from pathlib import Path
[codex:450780] code = Path('BYTECODE_BUNDLE.txt').read_text()
[codex:450780] hexstr = re.search(r'0x[0-9a-fA-F]+', code).group(0)[2:]
[codex:450780] 
[codex:450780] b=bytes.fromhex(hexstr)
[codex:450780] 
[codex:450780] # disassemble
[codex:450780] opnames={}
[codex:450780] for i in range(256): opnames[i]=f'OP{i:02x}'
[codex:450780] name_map={
[codex:450780] 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:450780] 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:450780] 0x20:'SHA3',0x30:'ADDRESS',0x31:'BALANCE',0x32:'ORIGIN',0x33:'CALLER',0x34:'CALLVALUE',0x35:'CALLDATALOAD',0x36:'CALLDATASIZE',0x37:'CALLDATACOPY',0x38:'CODESIZE',0x39:'CODECOPY',0x3a:'GASPRICE',0x3b:'EXTCODESIZE',0x3c:'EXTCODECOPY',0x3d:'RETURNDATASIZE',0x3e:'RETURNDATACOPY',0x3f:'EXTCODEHASH',
[codex:450780] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:450780] 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:450780] 0xf1:'CALL',0xf3:'RETURN',0xf4:'DELEGATECALL',0xfd:'REVERT',0xff:'SELFDESTRUCT',0xf0:'CREATE',0xfa:'STATICCALL'
[codex:450780] }
[codex:450780] for k,v in name_map.items(): opnames[k]=v
[codex:450780] 
[codex:450780] # disassemble
[codex:450780] pc=0
[codex:450780] ops=[]
[codex:450780] while pc < len(b):
[codex:450780]     op=b[pc]
[codex:450780]     if 0x60<=op<=0x7f:
[codex:450780]         n=op-0x5f
[codex:450780]         data=b[pc+1:pc+1+n]
[codex:450780]         ops.append((pc,op,data))
[codex:450780]         pc += 1+n
[codex:450780]     else:
[codex:450780]         ops.append((pc,op,b''))
[codex:450780]         pc += 1
[codex:450780] 
[codex:450780] # print function 0xa46 region 0xa46-0xb50
[codex:450780] start=0xa46; end=0xb50
[codex:450780] for pc,op,data in ops:
[codex:450780]     if start <= pc <= end:
[codex:450780]         name=opnames[op]
[codex:450780]         if 0x60<=op<=0x7f:
[codex:450780]             print(f'{pc:04x}: {name} {data.hex()}')
[codex:450780]         else:
[codex:450780]             print(f'{pc:04x}: {name}')
[codex:450780] PY" in /tmp/codex-multi-1zyi5_s9 succeeded in 29ms:
[codex:450780] 0a46: JUMPDEST
[codex:450780] 0a47: CALLER
[codex:450780] 0a48: OP60 00
[codex:450780] 0a4a: OP90
[codex:450780] 0a4b: OP81
[codex:450780] 0a4c: MSTORE
[codex:450780] 0a4d: OP60 03
[codex:450780] 0a4f: OP60 20
[codex:450780] 0a51: MSTORE
[codex:450780] 0a52: OP60 40
[codex:450780] 0a54: OP90
[codex:450780] 0a55: SHA3
[codex:450780] 0a56: SLOAD
[codex:450780] 0a57: OP60 ff
[codex:450780] 0a59: AND
[codex:450780] 0a5a: OP61 0a99
[codex:450780] 0a5d: JUMPI
[codex:450780] 0a5e: OP60 40
[codex:450780] 0a60: OP80
[codex:450780] 0a61: MLOAD
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Analyzing function behavior and output format**
[codex:450780] exec
[codex:450780] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-1zyi5_s9 succeeded in 5ms:
[codex:450780] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:450780] 
[codex:450780] thinking
[codex:450780] **Preparing final JSON output**
[codex:450780] codex
[codex:450780] {"no_findings":true,"summary":"Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.","findings":[]}
[codex:450780] tokens used
[codex:450780] 68,074
[codex:450780] {"no_findings":true,"summary":"Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T19:50:46.207547+00:00",
        "returncode": 0
    },
    "summary": "Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.",
    "raw_final": {
        "summary": "Reviewed the runtime bytecode bundle; all external value-transfer paths (CALL/transfer/transferFrom) are gated by owner/whitelist checks, and no unprotected delegatecall/selfdestruct or upgrade paths were identified.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
8
EXT*/BALANCE
6
Total opcodes
4337
Flags
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 0x0144
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x6b2a8f65
00000019: GT
0000001a: PUSH2 0x00c0
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xcf6e4488
00000024: GT
00000025: PUSH2 0x0074
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xefcab173
0000002f: GT
00000030: PUSH2 0x0059
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xefcab173
0000003a: EQ
0000003b: PUSH2 0x067f
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xfa558b71
00000045: EQ
00000046: PUSH2 0x06a9
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xfd404b4c
00000050: EQ
00000051: PUSH2 0x0788
00000054: JUMPI
00000055: PUSH2 0x0144
00000058: JUMP
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0xcf6e4488
00000060: EQ
00000061: PUSH2 0x05c8
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0xdfd1fb7a
0000006b: EQ
0000006c: PUSH2 0x05f2
0000006f: JUMPI
00000070: PUSH2 0x0144
00000073: JUMP
00000074: JUMPDEST
00000075: DUP1
00000076: PUSH4 0x96aa7368
0000007b: GT
0000007c: PUSH2 0x00a5
0000007f: JUMPI
00000080: DUP1
00000081: PUSH4 0x96aa7368
00000086: EQ
00000087: PUSH2 0x0467
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0x98a89897
00000091: EQ
00000092: PUSH2 0x04e4
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0xcb81fecf
0000009c: EQ
0000009d: PUSH2 0x05b3
000000a0: JUMPI
000000a1: PUSH2 0x0144
000000a4: JUMP
000000a5: JUMPDEST
000000a6: DUP1
000000a7: PUSH4 0x6b2a8f65
000000ac: EQ
000000ad: PUSH2 0x03f6
000000b0: JUMPI
000000b1: DUP1
000000b2: PUSH4 0x801ead1d
000000b7: EQ
000000b8: PUSH2 0x0420
000000bb: JUMPI
000000bc: PUSH2 0x0144
000000bf: JUMP
000000c0: JUMPDEST
000000c1: DUP1
000000c2: PUSH4 0x2e2d726c
000000c7: GT
000000c8: PUSH2 0x0117
000000cb: JUMPI
000000cc: DUP1
000000cd: PUSH4 0x3a8343ee
000000d2: GT
000000d3: PUSH2 0x00fc
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0x3a8343ee
000000dd: EQ
000000de: PUSH2 0x030c
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0x3cd18ca0
000000e8: EQ
000000e9: PUSH2 0x0336
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0x3f53c36c
000000f3: EQ
000000f4: PUSH2 0x03c3
000000f7: JUMPI
000000f8: PUSH2 0x0144
000000fb: JUMP
000000fc: JUMPDEST
000000fd: DUP1
000000fe: PUSH4 0x2e2d726c
00000103: EQ
00000104: PUSH2 0x026a
00000107: JUMPI
00000108: DUP1
00000109: PUSH4 0x375b74c3
0000010e: EQ
0000010f: PUSH2 0x02f7
00000112: JUMPI
00000113: PUSH2 0x0144
00000116: JUMP
00000117: JUMPDEST
00000118: DUP1
00000119: PUSH4 0x14ae3c09
0000011e: EQ
0000011f: PUSH2 0x0180
00000122: JUMPI
00000123: DUP1
00000124: PUSH4 0x15b21082
00000129: EQ
0000012a: PUSH2 0x01c6
0000012d: JUMPI
0000012e: DUP1
0000012f: PUSH4 0x233ecf78
00000134: EQ
00000135: PUSH2 0x020b
00000138: JUMPI
00000139: DUP1
0000013a: PUSH4 0x2ca40a33
0000013f: EQ
00000140: PUSH2 0x023e
00000143: JUMPI
00000144: JUMPDEST
00000145: PUSH1 0x40
00000147: DUP1
00000148: MLOAD
00000149: CALLER
0000014a: DUP2
0000014b: MSTORE
0000014c: CALLVALUE
0000014d: PUSH1 0x20
0000014f: DUP3
00000150: ADD
00000151: MSTORE
00000152: DUP2
00000153: MLOAD
00000154: PUSH32 0xa419615bc8fda4c87663805ee2a3597a6d71c1d476911d9892f340d965bc7bf1
00000175: SWAP3
00000176: SWAP2
00000177: DUP2
00000178: SWAP1
00000179: SUB
0000017a: SWAP1
0000017b: SWAP2
0000017c: ADD
0000017d: SWAP1
0000017e: LOG1
0000017f: STOP
00000180: JUMPDEST
00000181: CALLVALUE
00000182: DUP1
00000183: ISZERO
00000184: PUSH2 0x018c
00000187: JUMPI
00000188: PUSH1 0x00
0000018a: DUP1
0000018b: REVERT
0000018c: JUMPDEST
0000018d: POP
0000018e: PUSH2 0x01aa
00000191: PUSH1 0x04
00000193: DUP1
00000194: CALLDATASIZE
00000195: SUB
00000196: PUSH1 0x20
00000198: DUP2
00000199: LT
0000019a: ISZERO
0000019b: PUSH2 0x01a3
0000019e: JUMPI
0000019f: PUSH1 0x00
000001a1: DUP1
000001a2: REVERT
000001a3: JUMPDEST
000001a4: POP
000001a5: CALLDATALOAD
000001a6: PUSH2 0x081e
000001a9: JUMP
000001aa: JUMPDEST
000001ab: PUSH1 0x40
000001ad: DUP1
000001ae: MLOAD
000001af: PUSH1 0x01
000001b1: PUSH1 0x01
000001b3: PUSH1 0xa0
000001b5: SHL
000001b6: SUB
000001b7: SWAP1
000001b8: SWAP3
000001b9: AND
000001ba: DUP3
000001bb: MSTORE
000001bc: MLOAD
000001bd: SWAP1
000001be: DUP2
000001bf: SWAP1
000001c0: SUB
000001c1: PUSH1 0x20
000001c3: ADD
000001c4: SWAP1
000001c5: RETURN
000001c6: JUMPDEST
000001c7: CALLVALUE
000001c8: DUP1
000001c9: ISZERO
000001ca: PUSH2 0x01d2
000001cd: JUMPI
000001ce: PUSH1 0x00
000001d0: DUP1
000001d1: REVERT
000001d2: JUMPDEST
000001d3: POP
000001d4: PUSH2 0x01f9
000001d7: PUSH1 0x04
000001d9: DUP1
000001da: CALLDATASIZE
000001db: SUB
000001dc: PUSH1 0x20
000001de: DUP2
000001df: LT
000001e0: ISZERO
000001e1: PUSH2 0x01e9
000001e4: JUMPI
000001e5: PUSH1 0x00
000001e7: DUP1
000001e8: REVERT
000001e9: JUMPDEST
000001ea: POP
000001eb: CALLDATALOAD
000001ec: PUSH1 0x01
000001ee: PUSH1 0x01
000001f0: PUSH1 0xa0
000001f2: SHL
000001f3: SUB
000001f4: AND
000001f5: PUSH2 0x0839
000001f8: JUMP
000001f9: JUMPDEST
000001fa: PUSH1 0x40
000001fc: DUP1
000001fd: MLOAD
000001fe: SWAP2
000001ff: DUP3
00000200: MSTORE
00000201: MLOAD
00000202: SWAP1
00000203: DUP2
00000204: SWAP1
00000205: SUB
00000206: PUSH1 0x20
00000208: ADD
00000209: SWAP1
0000020a: RETURN
0000020b: JUMPDEST
0000020c: CALLVALUE
0000020d: DUP1
0000020e: ISZERO
0000020f: PUSH2 0x0217
00000212: JUMPI
00000213: PUSH1 0x00
00000215: DUP1
00000216: REVERT
00000217: JUMPDEST
00000218: POP
00000219: PUSH2 0x01f9
0000021c: PUSH1 0x04
0000021e: DUP1
0000021f: CALLDATASIZE
00000220: SUB
00000221: PUSH1 0x20
00000223: DUP2
00000224: LT
00000225: ISZERO
00000226: PUSH2 0x022e
00000229: JUMPI
0000022a: PUSH1 0x00
0000022c: DUP1
0000022d: REVERT
0000022e: JUMPDEST
0000022f: POP
00000230: CALLDATALOAD
00000231: PUSH1 0x01
00000233: PUSH1 0x01
00000235: PUSH1 0xa0
00000237: SHL
00000238: SUB
00000239: AND
0000023a: PUSH2 0x0914
0000023d: JUMP
0000023e: JUMPDEST
0000023f: CALLVALUE
00000240: DUP1
00000241: ISZERO
00000242: PUSH2 0x024a
00000245: JUMPI
00000246: PUSH1 0x00
00000248: DUP1
00000249: REVERT
0000024a: JUMPDEST
0000024b: POP
0000024c: PUSH2 0x0268
0000024f: PUSH1 0x04
00000251: DUP1
00000252: CALLDATASIZE
00000253: SUB
00000254: PUSH1 0x20
00000256: DUP2
00000257: LT
00000258: ISZERO
00000259: PUSH2 0x0261
0000025c: JUMPI
0000025d: PUSH1 0x00
0000025f: DUP1
00000260: REVERT
00000261: JUMPDEST
00000262: POP
00000263: CALLDATALOAD
00000264: PUSH2 0x0971
00000267: JUMP
00000268: JUMPDEST
00000269: STOP
0000026a: JUMPDEST
0000026b: CALLVALUE
0000026c: DUP1
0000026d: ISZERO
0000026e: PUSH2 0x0276
00000271: JUMPI
00000272: PUSH1 0x00
00000274: DUP1
00000275: REVERT
00000276: JUMPDEST
00000277: POP
00000278: PUSH2 0x0268
0000027b: PUSH1 0x04
0000027d: DUP1
0000027e: CALLDATASIZE
0000027f: SUB
00000280: PUSH1 0x40
00000282: DUP2
00000283: LT
00000284: ISZERO
00000285: PUSH2 0x028d
00000288: JUMPI
00000289: PUSH1 0x00
0000028b: DUP1
0000028c: REVERT
0000028d: JUMPDEST
0000028e: PUSH1 0x01
00000290: PUSH1 0x01
00000292: PUSH1 0xa0
00000294: SHL
00000295: SUB
00000296: DUP3
00000297: CALLDATALOAD
00000298: AND
00000299: SWAP2
0000029a: SWAP1
0000029b: DUP2
0000029c: ADD
0000029d: SWAP1
0000029e: PUSH1 0x40
000002a0: DUP2
000002a1: ADD
000002a2: PUSH1 0x20
000002a4: DUP3
000002a5: ADD
000002a6: CALLDATALOAD
000002a7: PUSH5 0x0100000000
000002ad: DUP2
000002ae: GT
000002af: ISZERO
000002b0: PUSH2 0x02b8
000002b3: JUMPI
000002b4: PUSH1 0x00
000002b6: DUP1
000002b7: REVERT
000002b8: JUMPDEST
000002b9: DUP3
000002ba: ADD
000002bb: DUP4
000002bc: PUSH1 0x20
000002be: DUP3
000002bf: ADD
000002c0: GT
000002c1: ISZERO
000002c2: PUSH2 0x02ca
000002c5: JUMPI
000002c6: PUSH1 0x00
000002c8: DUP1
000002c9: REVERT
000002ca: JUMPDEST
000002cb: DUP1
000002cc: CALLDATALOAD
000002cd: SWAP1
000002ce: PUSH1 0x20
000002d0: ADD
000002d1: SWAP2
000002d2: DUP5
000002d3: PUSH1 0x20
000002d5: DUP4
000002d6: MUL
000002d7: DUP5
000002d8: ADD
000002d9: GT
000002da: PUSH5 0x0100000000
000002e0: DUP4
000002e1: GT
000002e2: OR
000002e3: ISZERO
000002e4: PUSH2 0x02ec
000002e7: JUMPI
000002e8: PUSH1 0x00
000002ea: DUP1
000002eb: REVERT
000002ec: JUMPDEST
000002ed: POP
000002ee: SWAP1
000002ef: SWAP3
000002f0: POP
000002f1: SWAP1
000002f2: POP
000002f3: PUSH2 0x0a46
000002f6: JUMP
000002f7: JUMPDEST
000002f8: CALLVALUE
000002f9: DUP1
000002fa: ISZERO
000002fb: PUSH2 0x0303
000002fe: JUMPI
000002ff: PUSH1 0x00
00000301: DUP1
00000302: REVERT
00000303: JUMPDEST
00000304: POP
00000305: PUSH2 0x01aa
00000308: PUSH2 0x0b47
0000030b: JUMP
0000030c: JUMPDEST
0000030d: CALLVALUE
0000030e: DUP1
0000030f: ISZERO
00000310: PUSH2 0x0318
00000313: JUMPI
00000314: PUSH1 0x00
00000316: DUP1
00000317: REVERT
00000318: JUMPDEST
00000319: POP
0000031a: PUSH2 0x0268
0000031d: PUSH1 0x04
0000031f: DUP1
00000320: CALLDATASIZE
00000321: SUB
00000322: PUSH1 0x20
00000324: DUP2
00000325: LT
00000326: ISZERO
00000327: PUSH2 0x032f
0000032a: JUMPI
0000032b: PUSH1 0x00
0000032d: DUP1
0000032e: REVERT
0000032f: JUMPDEST
00000330: POP
00000331: CALLDATALOAD
00000332: PUSH2 0x0b56
00000335: JUMP
00000336: JUMPDEST
00000337: CALLVALUE
00000338: DUP1
00000339: ISZERO
0000033a: PUSH2 0x0342
0000033d: JUMPI
0000033e: PUSH1 0x00
00000340: DUP1
00000341: REVERT
00000342: JUMPDEST
00000343: POP
00000344: PUSH2 0x0268
00000347: PUSH1 0x04
00000349: DUP1
0000034a: CALLDATASIZE
0000034b: SUB
0000034c: PUSH1 0x40
0000034e: DUP2
0000034f: LT
00000350: ISZERO
00000351: PUSH2 0x0359
00000354: JUMPI
00000355: PUSH1 0x00
00000357: DUP1
00000358: REVERT
00000359: JUMPDEST
0000035a: PUSH1 0x01
0000035c: PUSH1 0x01
0000035e: PUSH1 0xa0
00000360: SHL
00000361: SUB
00000362: DUP3
00000363: CALLDATALOAD
00000364: AND
00000365: SWAP2
00000366: SWAP1
00000367: DUP2
00000368: ADD
00000369: SWAP1
0000036a: PUSH1 0x40
0000036c: DUP2
0000036d: ADD
0000036e: PUSH1 0x20
00000370: DUP3
00000371: ADD
00000372: CALLDATALOAD
00000373: PUSH5 0x0100000000
00000379: DUP2
0000037a: GT
0000037b: ISZERO
0000037c: PUSH2 0x0384
0000037f: JUMPI
00000380: PUSH1 0x00
00000382: DUP1
00000383: REVERT
00000384: JUMPDEST
00000385: DUP3
00000386: ADD
00000387: DUP4
00000388: PUSH1 0x20
0000038a: DUP3
0000038b: ADD
0000038c: GT
0000038d: ISZERO
0000038e: PUSH2 0x0396
00000391: JUMPI
00000392: PUSH1 0x00
00000394: DUP1
00000395: REVERT
00000396: JUMPDEST
00000397: DUP1
00000398: CALLDATALOAD
00000399: SWAP1
0000039a: PUSH1 0x20
0000039c: ADD
0000039d: SWAP2
0000039e: DUP5
0000039f: PUSH1 0x20
000003a1: DUP4
000003a2: MUL
000003a3: DUP5
000003a4: ADD
000003a5: GT
000003a6: PUSH5 0x0100000000
000003ac: DUP4
000003ad: GT
000003ae: OR
000003af: ISZERO
000003b0: PUSH2 0x03b8
000003b3: JUMPI
000003b4: PUSH1 0x00
000003b6: DUP1
000003b7: REVERT
000003b8: JUMPDEST
000003b9: POP
000003ba: SWAP1
000003bb: SWAP3
000003bc: POP
000003bd: SWAP1
000003be: POP
000003bf: PUSH2 0x0c21
000003c2: JUMP
000003c3: JUMPDEST
000003c4: CALLVALUE
000003c5: DUP1
000003c6: ISZERO
000003c7: PUSH2 0x03cf
000003ca: JUMPI
000003cb: PUSH1 0x00
000003cd: DUP1
000003ce: REVERT
000003cf: JUMPDEST
000003d0: POP
000003d1: PUSH2 0x01f9
000003d4: PUSH1 0x04
000003d6: DUP1
000003d7: CALLDATASIZE
000003d8: SUB
000003d9: PUSH1 0x20
000003db: DUP2
000003dc: LT
000003dd: ISZERO
000003de: PUSH2 0x03e6
000003e1: JUMPI
000003e2: PUSH1 0x00
000003e4: DUP1
000003e5: REVERT
000003e6: JUMPDEST
000003e7: POP
000003e8: CALLDATALOAD
000003e9: PUSH1 0x01
000003eb: PUSH1 0x01
000003ed: PUSH1 0xa0
000003ef: SHL
000003f0: SUB
000003f1: AND
000003f2: PUSH2 0x0e27
000003f5: JUMP
000003f6: JUMPDEST
000003f7: CALLVALUE
000003f8: DUP1
000003f9: ISZERO
000003fa: PUSH2 0x0402
000003fd: JUMPI
000003fe: PUSH1 0x00
00000400: DUP1
00000401: REVERT
00000402: JUMPDEST
00000403: POP
00000404: PUSH2 0x0268
00000407: PUSH1 0x04
00000409: DUP1
0000040a: CALLDATASIZE
0000040b: SUB
0000040c: PUSH1 0x20
0000040e: DUP2
0000040f: LT
00000410: ISZERO
00000411: PUSH2 0x0419
00000414: JUMPI
00000415: PUSH1 0x00
00000417: DUP1
00000418: REVERT
00000419: JUMPDEST
0000041a: POP
0000041b: CALLDATALOAD
0000041c: PUSH2 0x0e84
0000041f: JUMP
00000420: JUMPDEST
00000421: CALLVALUE
00000422: DUP1
00000423: ISZERO
00000424: PUSH2 0x042c
00000427: JUMPI
00000428: PUSH1 0x00
0000042a: DUP1
0000042b: REVERT
0000042c: JUMPDEST
0000042d: POP
0000042e: PUSH2 0x0453
00000431: PUSH1 0x04
00000433: DUP1
00000434: CALLDATASIZE
00000435: SUB
00000436: PUSH1 0x20
00000438: DUP2
00000439: LT
0000043a: ISZERO
0000043b: PUSH2 0x0443
0000043e: JUMPI
0000043f: PUSH1 0x00
00000441: DUP1
00000442: REVERT
00000443: JUMPDEST
00000444: POP
00000445: CALLDATALOAD
00000446: PUSH1 0x01
00000448: PUSH1 0x01
0000044a: PUSH1 0xa0
0000044c: SHL
0000044d: SUB
0000044e: AND
0000044f: PUSH2 0x0f5c
00000452: JUMP
00000453: JUMPDEST
00000454: PUSH1 0x40
00000456: DUP1
00000457: MLOAD
00000458: SWAP2
00000459: ISZERO
0000045a: ISZERO
0000045b: DUP3
0000045c: MSTORE
0000045d: MLOAD
0000045e: SWAP1
0000045f: DUP2
00000460: SWAP1
00000461: SUB
00000462: PUSH1 0x20
00000464: ADD
00000465: SWAP1
00000466: RETURN
00000467: JUMPDEST
00000468: CALLVALUE
00000469: DUP1
0000046a: ISZERO
0000046b: PUSH2 0x0473
0000046e: JUMPI
0000046f: PUSH1 0x00
00000471: DUP1
00000472: REVERT
00000473: JUMPDEST
00000474: POP
00000475: PUSH2 0x0268
00000478: PUSH1 0x04
0000047a: DUP1
0000047b: CALLDATASIZE
0000047c: SUB
0000047d: PUSH1 0x20
0000047f: DUP2
00000480: LT
00000481: ISZERO
00000482: PUSH2 0x048a
00000485: JUMPI
00000486: PUSH1 0x00
00000488: DUP1
00000489: REVERT
0000048a: JUMPDEST
0000048b: DUP2
0000048c: ADD
0000048d: SWAP1
0000048e: PUSH1 0x20
00000490: DUP2
00000491: ADD
00000492: DUP2
00000493: CALLDATALOAD
00000494: PUSH5 0x0100000000
0000049a: DUP2
0000049b: GT
0000049c: ISZERO
0000049d: PUSH2 0x04a5
000004a0: JUMPI
000004a1: PUSH1 0x00
000004a3: DUP1
000004a4: REVERT
000004a5: JUMPDEST
000004a6: DUP3
000004a7: ADD
000004a8: DUP4
000004a9: PUSH1 0x20
000004ab: DUP3
000004ac: ADD
000004ad: GT
000004ae: ISZERO
000004af: PUSH2 0x04b7
000004b2: JUMPI
000004b3: PUSH1 0x00
000004b5: DUP1
000004b6: REVERT
000004b7: JUMPDEST
000004b8: DUP1
000004b9: CALLDATALOAD
000004ba: SWAP1
000004bb: PUSH1 0x20
000004bd: ADD
000004be: SWAP2
000004bf: DUP5
000004c0: PUSH1 0x20
000004c2: DUP4
000004c3: MUL
000004c4: DUP5
000004c5: ADD
000004c6: GT
000004c7: PUSH5 0x0100000000
000004cd: DUP4
000004ce: GT
000004cf: OR
000004d0: ISZERO
000004d1: PUSH2 0x04d9
000004d4: JUMPI
000004d5: PUSH1 0x00
000004d7: DUP1
000004d8: REVERT
000004d9: JUMPDEST
000004da: POP
000004db: SWAP1
000004dc: SWAP3
000004dd: POP
000004de: SWAP1
000004df: POP
000004e0: PUSH2 0x0f71
000004e3: JUMP
000004e4: JUMPDEST
000004e5: CALLVALUE
000004e6: DUP1
000004e7: ISZERO
000004e8: PUSH2 0x04f0
000004eb: JUMPI
000004ec: PUSH1 0x00
000004ee: DUP1
000004ef: REVERT
000004f0: JUMPDEST
000004f1: POP
000004f2: PUSH2 0x0268
000004f5: PUSH1 0x04
000004f7: DUP1
000004f8: CALLDATASIZE
000004f9: SUB
000004fa: PUSH1 0x40
000004fc: DUP2
000004fd: LT
000004fe: ISZERO
000004ff: PUSH2 0x0507
00000502: JUMPI
00000503: PUSH1 0x00
00000505: DUP1
00000506: REVERT
00000507: JUMPDEST
00000508: DUP2
00000509: ADD
0000050a: SWAP1
0000050b: PUSH1 0x20
0000050d: DUP2
0000050e: ADD
0000050f: DUP2
00000510: CALLDATALOAD
00000511: PUSH5 0x0100000000
00000517: DUP2
00000518: GT
00000519: ISZERO
0000051a: PUSH2 0x0522
0000051d: JUMPI
0000051e: PUSH1 0x00
00000520: DUP1
00000521: REVERT
00000522: JUMPDEST
00000523: DUP3
00000524: ADD
00000525: DUP4
00000526: PUSH1 0x20
00000528: DUP3
00000529: ADD
0000052a: GT
0000052b: ISZERO
0000052c: PUSH2 0x0534
0000052f: JUMPI
00000530: PUSH1 0x00
00000532: DUP1
00000533: REVERT
00000534: JUMPDEST
00000535: DUP1
00000536: CALLDATALOAD
00000537: SWAP1
00000538: PUSH1 0x20
0000053a: ADD
0000053b: SWAP2
0000053c: DUP5
0000053d: PUSH1 0x20
0000053f: DUP4
00000540: MUL
00000541: DUP5
00000542: ADD
00000543: GT
00000544: PUSH5 0x0100000000
0000054a: DUP4
0000054b: GT
0000054c: OR
0000054d: ISZERO
0000054e: PUSH2 0x0556
00000551: JUMPI
00000552: PUSH1 0x00
00000554: DUP1
00000555: REVERT
00000556: JUMPDEST
00000557: SWAP2
00000558: SWAP4
00000559: SWAP1
0000055a: SWAP3
0000055b: SWAP1
0000055c: SWAP2
0000055d: PUSH1 0x20
0000055f: DUP2
00000560: ADD
00000561: SWAP1
00000562: CALLDATALOAD
00000563: PUSH5 0x0100000000
00000569: DUP2
0000056a: GT
0000056b: ISZERO
0000056c: PUSH2 0x0574
0000056f: JUMPI
00000570: PUSH1 0x00
00000572: DUP1
00000573: REVERT
00000574: JUMPDEST
00000575: DUP3
00000576: ADD
00000577: DUP4
00000578: PUSH1 0x20
0000057a: DUP3
0000057b: ADD
0000057c: GT
0000057d: ISZERO
0000057e: PUSH2 0x0586
00000581: JUMPI
00000582: PUSH1 0x00
00000584: DUP1
00000585: REVERT
00000586: JUMPDEST
00000587: DUP1
00000588: CALLDATALOAD
00000589: SWAP1
0000058a: PUSH1 0x20
0000058c: ADD
0000058d: SWAP2
0000058e: DUP5
0000058f: PUSH1 0x20
00000591: DUP4
00000592: MUL
00000593: DUP5
00000594: ADD
00000595: GT
00000596: PUSH5 0x0100000000
0000059c: DUP4
0000059d: GT
0000059e: OR
0000059f: ISZERO
000005a0: PUSH2 0x05a8
000005a3: JUMPI
000005a4: PUSH1 0x00
000005a6: DUP1
000005a7: REVERT
000005a8: JUMPDEST
000005a9: POP
000005aa: SWAP1
000005ab: SWAP3
000005ac: POP
000005ad: SWAP1
000005ae: POP
000005af: PUSH2 0x1054
000005b2: JUMP
000005b3: JUMPDEST
000005b4: CALLVALUE
000005b5: DUP1
000005b6: ISZERO
000005b7: PUSH2 0x05bf
000005ba: JUMPI
000005bb: PUSH1 0x00
000005bd: DUP1
000005be: REVERT
000005bf: JUMPDEST
000005c0: POP
000005c1: PUSH2 0x01f9
000005c4: PUSH2 0x11c5
000005c7: JUMP
000005c8: JUMPDEST
000005c9: CALLVALUE
000005ca: DUP1
000005cb: ISZERO
000005cc: PUSH2 0x05d4
000005cf: JUMPI
000005d0: PUSH1 0x00
000005d2: DUP1
000005d3: REVERT
000005d4: JUMPDEST
000005d5: POP
000005d6: PUSH2 0x01aa
000005d9: PUSH1 0x04
000005db: DUP1
000005dc: CALLDATASIZE
000005dd: SUB
000005de: PUSH1 0x20
000005e0: DUP2
000005e1: LT
000005e2: ISZERO
000005e3: PUSH2 0x05eb
000005e6: JUMPI
000005e7: PUSH1 0x00
000005e9: DUP1
000005ea: REVERT
000005eb: JUMPDEST
000005ec: POP
000005ed: CALLDATALOAD
000005ee: PUSH2 0x11cb
000005f1: JUMP
000005f2: JUMPDEST
000005f3: CALLVALUE
000005f4: DUP1
000005f5: ISZERO
000005f6: PUSH2 0x05fe
000005f9: JUMPI
000005fa: PUSH1 0x00
000005fc: DUP1
000005fd: REVERT
000005fe: JUMPDEST
000005ff: POP
00000600: PUSH2 0x0268
00000603: PUSH1 0x04
00000605: DUP1
00000606: CALLDATASIZE
00000607: SUB
00000608: PUSH1 0x40
0000060a: DUP2
0000060b: LT
0000060c: ISZERO
0000060d: PUSH2 0x0615
00000610: JUMPI
00000611: PUSH1 0x00
00000613: DUP1
00000614: REVERT
00000615: JUMPDEST
00000616: PUSH1 0x01
00000618: PUSH1 0x01
0000061a: PUSH1 0xa0
0000061c: SHL
0000061d: SUB
0000061e: DUP3
0000061f: CALLDATALOAD
00000620: AND
00000621: SWAP2
00000622: SWAP1
00000623: DUP2
00000624: ADD
00000625: SWAP1
00000626: PUSH1 0x40
00000628: DUP2
00000629: ADD
0000062a: PUSH1 0x20
0000062c: DUP3
0000062d: ADD
0000062e: CALLDATALOAD
0000062f: PUSH5 0x0100000000
00000635: DUP2
00000636: GT
00000637: ISZERO
00000638: PUSH2 0x0640
0000063b: JUMPI
0000063c: PUSH1 0x00
0000063e: DUP1
0000063f: REVERT
00000640: JUMPDEST
00000641: DUP3
00000642: ADD
00000643: DUP4
00000644: PUSH1 0x20
00000646: DUP3
00000647: ADD
00000648: GT
00000649: ISZERO
0000064a: PUSH2 0x0652
0000064d: JUMPI
0000064e: PUSH1 0x00
00000650: DUP1
00000651: REVERT
00000652: JUMPDEST
00000653: DUP1
00000654: CALLDATALOAD
00000655: SWAP1
00000656: PUSH1 0x20
00000658: ADD
00000659: SWAP2
0000065a: DUP5
0000065b: PUSH1 0x01
0000065d: DUP4
0000065e: MUL
0000065f: DUP5
00000660: ADD
00000661: GT
00000662: PUSH5 0x0100000000
00000668: DUP4
00000669: GT
0000066a: OR
0000066b: ISZERO
0000066c: PUSH2 0x0674
0000066f: JUMPI
00000670: PUSH1 0x00
00000672: DUP1
00000673: REVERT
00000674: JUMPDEST
00000675: POP
00000676: SWAP1
00000677: SWAP3
00000678: POP
00000679: SWAP1
0000067a: POP
0000067b: PUSH2 0x11e6
0000067e: JUMP
0000067f: JUMPDEST
00000680: CALLVALUE
00000681: DUP1
00000682: ISZERO
00000683: PUSH2 0x068b
00000686: JUMPI
00000687: PUSH1 0x00
00000689: DUP1
0000068a: REVERT
0000068b: JUMPDEST
0000068c: POP
0000068d: PUSH2 0x01aa
00000690: PUSH1 0x04
00000692: DUP1
00000693: CALLDATASIZE
00000694: SUB
00000695: PUSH1 0x20
00000697: DUP2
00000698: LT
00000699: ISZERO
0000069a: PUSH2 0x06a2
0000069d: JUMPI
0000069e: PUSH1 0x00
000006a0: DUP1
000006a1: REVERT
000006a2: JUMPDEST
000006a3: POP
000006a4: CALLDATALOAD
000006a5: PUSH2 0x147f
000006a8: JUMP
000006a9: JUMPDEST
000006aa: CALLVALUE
000006ab: DUP1
000006ac: ISZERO
000006ad: PUSH2 0x06b5
000006b0: JUMPI
000006b1: PUSH1 0x00
000006b3: DUP1
000006b4: REVERT
000006b5: JUMPDEST
000006b6: POP
000006b7: PUSH2 0x0268
000006ba: PUSH1 0x04
000006bc: DUP1
000006bd: CALLDATASIZE
000006be: SUB
000006bf: PUSH1 0x60
000006c1: DUP2
000006c2: LT
000006c3: ISZERO
000006c4: PUSH2 0x06cc
000006c7: JUMPI
000006c8: PUSH1 0x00
000006ca: DUP1
000006cb: REVERT
000006cc: JUMPDEST
000006cd: PUSH1 0x01
000006cf: PUSH1 0x01
000006d1: PUSH1 0xa0
000006d3: SHL
000006d4: SUB
000006d5: DUP3
000006d6: CALLDATALOAD
000006d7: AND
000006d8: SWAP2
000006d9: SWAP1
000006da: DUP2
000006db: ADD
000006dc: SWAP1
000006dd: PUSH1 0x40
000006df: DUP2
000006e0: ADD
000006e1: PUSH1 0x20
000006e3: DUP3
000006e4: ADD
000006e5: CALLDATALOAD
000006e6: PUSH5 0x0100000000
000006ec: DUP2
000006ed: GT
000006ee: ISZERO
000006ef: PUSH2 0x06f7
000006f2: JUMPI
000006f3: PUSH1 0x00
000006f5: DUP1
000006f6: REVERT
000006f7: JUMPDEST
000006f8: DUP3
000006f9: ADD
000006fa: DUP4
000006fb: PUSH1 0x20
000006fd: DUP3
000006fe: ADD
000006ff: GT
00000700: ISZERO
00000701: PUSH2 0x0709
00000704: JUMPI
00000705: PUSH1 0x00
00000707: DUP1
00000708: REVERT
00000709: JUMPDEST
0000070a: DUP1
0000070b: CALLDATALOAD
0000070c: SWAP1
0000070d: PUSH1 0x20
0000070f: ADD
00000710: SWAP2
00000711: DUP5
00000712: PUSH1 0x20
00000714: DUP4
00000715: MUL
00000716: DUP5
00000717: ADD
00000718: GT
00000719: PUSH5 0x0100000000
0000071f: DUP4
00000720: GT
00000721: OR
00000722: ISZERO
00000723: PUSH2 0x072b
00000726: JUMPI
00000727: PUSH1 0x00
00000729: DUP1
0000072a: REVERT
0000072b: JUMPDEST
0000072c: SWAP2
0000072d: SWAP4
0000072e: SWAP1
0000072f: SWAP3
00000730: SWAP1
00000731: SWAP2
00000732: PUSH1 0x20
00000734: DUP2
00000735: ADD
00000736: SWAP1
00000737: CALLDATALOAD
00000738: PUSH5 0x0100000000
0000073e: DUP2
0000073f: GT
00000740: ISZERO
00000741: PUSH2 0x0749
00000744: JUMPI
00000745: PUSH1 0x00
00000747: DUP1
00000748: REVERT
00000749: JUMPDEST
0000074a: DUP3
0000074b: ADD
0000074c: DUP4
0000074d: PUSH1 0x20
0000074f: DUP3
00000750: ADD
00000751: GT
00000752: ISZERO
00000753: PUSH2 0x075b
00000756: JUMPI
00000757: PUSH1 0x00
00000759: DUP1
0000075a: REVERT
0000075b: JUMPDEST
0000075c: DUP1
0000075d: CALLDATALOAD
0000075e: SWAP1
0000075f: PUSH1 0x20
00000761: ADD
00000762: SWAP2
00000763: DUP5
00000764: PUSH1 0x20
00000766: DUP4
00000767: MUL
00000768: DUP5
00000769: ADD
0000076a: GT
0000076b: PUSH5 0x0100000000
00000771: DUP4
00000772: GT
00000773: OR
00000774: ISZERO
00000775: PUSH2 0x077d
00000778: JUMPI
00000779: PUSH1 0x00
0000077b: DUP1
0000077c: REVERT
0000077d: JUMPDEST
0000077e: POP
0000077f: SWAP1
00000780: SWAP3
00000781: POP
00000782: SWAP1
00000783: POP
00000784: PUSH2 0x149a
00000787: JUMP
00000788: JUMPDEST
00000789: CALLVALUE
0000078a: DUP1
0000078b: ISZERO
0000078c: PUSH2 0x0794
0000078f: JUMPI
00000790: PUSH1 0x00
00000792: DUP1
00000793: REVERT
00000794: JUMPDEST
00000795: POP
00000796: PUSH2 0x0268
00000799: PUSH1 0x04
0000079b: DUP1
0000079c: CALLDATASIZE
0000079d: SUB
0000079e: PUSH1 0x60
000007a0: DUP2
000007a1: LT
000007a2: ISZERO
000007a3: PUSH2 0x07ab
000007a6: JUMPI
000007a7: PUSH1 0x00
000007a9: DUP1
000007aa: REVERT
000007ab: JUMPDEST
000007ac: PUSH1 0x01
000007ae: PUSH1 0x01
000007b0: PUSH1 0xa0
000007b2: SHL
000007b3: SUB
000007b4: DUP3
000007b5: CALLDATALOAD
000007b6: DUP2
000007b7: AND
000007b8: SWAP3
000007b9: PUSH1 0x20
000007bb: DUP2
000007bc: ADD
000007bd: CALLDATALOAD
000007be: SWAP1
000007bf: SWAP2
000007c0: AND
000007c1: SWAP2
000007c2: DUP2
000007c3: ADD
000007c4: SWAP1
000007c5: PUSH1 0x60
000007c7: DUP2
000007c8: ADD
000007c9: PUSH1 0x40
000007cb: DUP3
000007cc: ADD
000007cd: CALLDATALOAD
000007ce: PUSH5 0x0100000000
000007d4: DUP2
000007d5: GT
000007d6: ISZERO
000007d7: PUSH2 0x07df
000007da: JUMPI
000007db: PUSH1 0x00
000007dd: DUP1
000007de: REVERT
000007df: JUMPDEST
000007e0: DUP3
000007e1: ADD
000007e2: DUP4
000007e3: PUSH1 0x20
000007e5: DUP3
000007e6: ADD
000007e7: GT
000007e8: ISZERO
000007e9: PUSH2 0x07f1
000007ec: JUMPI
000007ed: PUSH1 0x00
000007ef: DUP1
000007f0: REVERT
000007f1: JUMPDEST
000007f2: DUP1
000007f3: CALLDATALOAD
000007f4: SWAP1
000007f5: PUSH1 0x20
000007f7: ADD
000007f8: SWAP2
000007f9: DUP5
000007fa: PUSH1 0x01
000007fc: DUP4
000007fd: MUL
000007fe: DUP5
000007ff: ADD
00000800: GT
00000801: PUSH5 0x0100000000
00000807: DUP4
00000808: GT
00000809: OR
0000080a: ISZERO
0000080b: PUSH2 0x0813
0000080e: JUMPI
0000080f: PUSH1 0x00
00000811: DUP1
00000812: REVERT
00000813: JUMPDEST
00000814: POP
00000815: SWAP1
00000816: SWAP3
00000817: POP
00000818: SWAP1
00000819: POP
0000081a: PUSH2 0x1674
0000081d: JUMP
0000081e: JUMPDEST
0000081f: PUSH1 0x04
00000821: PUSH1 0x20
00000823: MSTORE
00000824: PUSH1 0x00
00000826: SWAP1
00000827: DUP2
00000828: MSTORE
00000829: PUSH1 0x40
0000082b: SWAP1
0000082c: KECCAK256
0000082d: SLOAD
0000082e: PUSH1 0x01
00000830: PUSH1 0x01
00000832: PUSH1 0xa0
00000834: SHL
00000835: SUB
00000836: AND
00000837: DUP2
00000838: JUMP
00000839: JUMPDEST
0000083a: PUSH1 0x00
0000083c: PUSH1 0x01
0000083e: PUSH1 0x01
00000840: PUSH1 0xa0
00000842: SHL
00000843: SUB
00000844: DUP3
00000845: AND
00000846: PUSH2 0x0885
00000849: JUMPI
0000084a: PUSH1 0x40
0000084c: DUP1
0000084d: MLOAD
0000084e: PUSH3 0x461bcd
00000852: PUSH1 0xe5
00000854: SHL
00000855: DUP2
00000856: MSTORE
00000857: PUSH1 0x20
00000859: PUSH1 0x04
0000085b: DUP3
0000085c: ADD
0000085d: MSTORE
0000085e: PUSH1 0x0c
00000860: PUSH1 0x24
00000862: DUP3
00000863: ADD
00000864: MSTORE
00000865: PUSH12 0x7a65726f2061646472657373
00000872: PUSH1 0xa0
00000874: SHL
00000875: PUSH1 0x44
00000877: DUP3
00000878: ADD
00000879: MSTORE
0000087a: SWAP1
0000087b: MLOAD
0000087c: SWAP1
0000087d: DUP2
0000087e: SWAP1
0000087f: SUB
00000880: PUSH1 0x64
00000882: ADD
00000883: SWAP1
00000884: REVERT
00000885: JUMPDEST
00000886: PUSH2 0x088d
00000889: PUSH2 0x177c
0000088c: JUMP
0000088d: JUMPDEST
0000088e: PUSH1 0x40
00000890: DUP1
00000891: MLOAD
00000892: PUSH1 0x20
00000894: DUP1
00000895: DUP3
00000896: ADD
00000897: DUP4
00000898: MSTORE
00000899: PUSH1 0x01
0000089b: PUSH1 0x01
0000089d: PUSH1 0xa0
0000089f: SHL
000008a0: SUB
000008a1: DUP1
000008a2: DUP8
000008a3: AND
000008a4: DUP1
000008a5: DUP5
000008a6: MSTORE
000008a7: PUSH1 0x00
000008a9: DUP7
000008aa: DUP2
000008ab: MSTORE
000008ac: PUSH1 0x02
000008ae: DUP5
000008af: MSTORE
000008b0: DUP6
000008b1: SWAP1
000008b2: KECCAK256
000008b3: SWAP4
000008b4: MLOAD
000008b5: DUP5
000008b6: SLOAD
000008b7: SWAP3
000008b8: AND
000008b9: PUSH1 0x01
000008bb: PUSH1 0x01
000008bd: PUSH1 0xa0
000008bf: SHL
000008c0: SUB
000008c1: NOT
000008c2: SWAP1
000008c3: SWAP3
000008c4: AND
000008c5: SWAP2
000008c6: SWAP1
000008c7: SWAP2
000008c8: OR
000008c9: SWAP1
000008ca: SWAP3
000008cb: SSTORE
000008cc: DUP3
000008cd: MLOAD
000008ce: DUP5
000008cf: DUP2
000008d0: MSTORE
000008d1: CALLER
000008d2: SWAP2
000008d3: DUP2
000008d4: ADD
000008d5: SWAP2
000008d6: SWAP1
000008d7: SWAP2
000008d8: MSTORE
000008d9: DUP1
000008da: DUP4
000008db: ADD
000008dc: SWAP2
000008dd: SWAP1
000008de: SWAP2
000008df: MSTORE
000008e0: SWAP1
000008e1: MLOAD
000008e2: SWAP2
000008e3: SWAP3
000008e4: POP
000008e5: PUSH32 0xd76fc900a7e1a6fcf11d54b7ba943918df6c53a3128140658c389b3da1e997ba
00000906: SWAP2
00000907: SWAP1
00000908: DUP2
00000909: SWAP1
0000090a: SUB
0000090b: PUSH1 0x60
0000090d: ADD
0000090e: SWAP1
0000090f: LOG1
00000910: SWAP2
00000911: SWAP1
00000912: POP
00000913: JUMP
00000914: JUMPDEST
00000915: PUSH1 0x00
00000917: PUSH2 0x0921
0000091a: PUSH1 0x05
0000091c: DUP4
0000091d: PUSH2 0x17c5
00000920: JUMP
00000921: JUMPDEST
00000922: PUSH1 0x40
00000924: DUP1
00000925: MLOAD
00000926: DUP3
00000927: DUP2
00000928: MSTORE
00000929: CALLER
0000092a: PUSH1 0x20
0000092c: DUP3
0000092d: ADD
0000092e: MSTORE
0000092f: PUSH1 0x01
00000931: PUSH1 0x01
00000933: PUSH1 0xa0
00000935: SHL
00000936: SUB
00000937: DUP6
00000938: AND
00000939: DUP2
0000093a: DUP4
0000093b: ADD
0000093c: MSTORE
0000093d: SWAP1
0000093e: MLOAD
0000093f: SWAP2
00000940: SWAP3
00000941: POP
00000942: PUSH32 0x80484ea176012d2765209d6a93b423d605ad7bddfdd769252a85b53268f5a845
00000963: SWAP2
00000964: SWAP1
00000965: DUP2
00000966: SWAP1
00000967: SUB
00000968: PUSH1 0x60
0000096a: ADD
0000096b: SWAP1
0000096c: LOG1
0000096d: SWAP2
0000096e: SWAP1
0000096f: POP
00000970: JUMP
00000971: JUMPDEST
00000972: PUSH1 0x01
00000974: SLOAD
00000975: PUSH1 0x01
00000977: PUSH1 0x01
00000979: PUSH1 0xa0
0000097b: SHL
0000097c: SUB
0000097d: AND
0000097e: CALLER
0000097f: EQ
00000980: PUSH2 0x09bf
00000983: JUMPI
00000984: PUSH1 0x40
00000986: DUP1
00000987: MLOAD
00000988: PUSH3 0x461bcd
0000098c: PUSH1 0xe5
0000098e: SHL
0000098f: DUP2
00000990: MSTORE
00000991: PUSH1 0x20
00000993: PUSH1 0x04
00000995: DUP3
00000996: ADD
00000997: MSTORE
00000998: PUSH1 0x0c
0000099a: PUSH1 0x24
0000099c: DUP3
0000099d: ADD
0000099e: MSTORE
0000099f: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
000009ac: PUSH1 0xa2
000009ae: SHL
000009af: PUSH1 0x44
000009b1: DUP3
000009b2: ADD
000009b3: MSTORE
000009b4: SWAP1
000009b5: MLOAD
000009b6: SWAP1
000009b7: DUP2
000009b8: SWAP1
000009b9: SUB
000009ba: PUSH1 0x64
000009bc: ADD
000009bd: SWAP1
000009be: REVERT
000009bf: JUMPDEST
000009c0: PUSH1 0x00
000009c2: PUSH2 0x09cc
000009c5: PUSH1 0x05
000009c7: DUP4
000009c8: PUSH2 0x1857
000009cb: JUMP
000009cc: JUMPDEST
000009cd: PUSH1 0x01
000009cf: PUSH1 0x01
000009d1: PUSH1 0xa0
000009d3: SHL
000009d4: SUB
000009d5: DUP2
000009d6: AND
000009d7: PUSH1 0x00
000009d9: DUP2
000009da: DUP2
000009db: MSTORE
000009dc: PUSH1 0x03
000009de: PUSH1 0x20
000009e0: SWAP1
000009e1: DUP2
000009e2: MSTORE
000009e3: PUSH1 0x40
000009e5: DUP1
000009e6: DUP4
000009e7: KECCAK256
000009e8: DUP1
000009e9: SLOAD
000009ea: PUSH1 0xff
000009ec: NOT
000009ed: AND
000009ee: SWAP1
000009ef: SSTORE
000009f0: DUP7
000009f1: DUP4
000009f2: MSTORE
000009f3: PUSH1 0x05
000009f5: DUP3
000009f6: MSTORE
000009f7: SWAP2
000009f8: DUP3
000009f9: SWAP1
000009fa: KECCAK256
000009fb: DUP1
000009fc: SLOAD
000009fd: PUSH1 0x01
000009ff: PUSH1 0x01
00000a01: PUSH1 0xa0
00000a03: SHL
00000a04: SUB
00000a05: NOT
00000a06: AND
00000a07: SWAP1
00000a08: SSTORE
00000a09: DUP2
00000a0a: MLOAD
00000a0b: DUP7
00000a0c: DUP2
00000a0d: MSTORE
00000a0e: SWAP1
00000a0f: DUP2
00000a10: ADD
00000a11: SWAP3
00000a12: SWAP1
00000a13: SWAP3
00000a14: MSTORE
00000a15: DUP1
00000a16: MLOAD
00000a17: SWAP3
00000a18: SWAP4
00000a19: POP
00000a1a: PUSH32 0x18d5ef563b47e3b56210ead4e105d6fe2315717931d4c120135841bc9d6c7383
00000a3b: SWAP3
00000a3c: SWAP2
00000a3d: DUP3
00000a3e: SWAP1
00000a3f: SUB
00000a40: ADD
00000a41: SWAP1
00000a42: LOG1
00000a43: POP
00000a44: POP
00000a45: JUMP
00000a46: JUMPDEST
00000a47: CALLER
00000a48: PUSH1 0x00
00000a4a: SWAP1
00000a4b: DUP2
00000a4c: MSTORE
00000a4d: PUSH1 0x03
00000a4f: PUSH1 0x20
00000a51: MSTORE
00000a52: PUSH1 0x40
00000a54: SWAP1
00000a55: KECCAK256
00000a56: SLOAD
00000a57: PUSH1 0xff
00000a59: AND
00000a5a: PUSH2 0x0a99
00000a5d: JUMPI
00000a5e: PUSH1 0x40
00000a60: DUP1
00000a61: MLOAD
00000a62: PUSH3 0x461bcd
00000a66: PUSH1 0xe5
00000a68: SHL
00000a69: DUP2
00000a6a: MSTORE
00000a6b: PUSH1 0x20
00000a6d: PUSH1 0x04
00000a6f: DUP3
00000a70: ADD
00000a71: MSTORE
00000a72: PUSH1 0x0c
00000a74: PUSH1 0x24
00000a76: DUP3
00000a77: ADD
00000a78: MSTORE
00000a79: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
00000a86: PUSH1 0xa2
00000a88: SHL
00000a89: PUSH1 0x44
00000a8b: DUP3
00000a8c: ADD
00000a8d: MSTORE
00000a8e: SWAP1
00000a8f: MLOAD
00000a90: SWAP1
00000a91: DUP2
00000a92: SWAP1
00000a93: SUB
00000a94: PUSH1 0x64
00000a96: ADD
00000a97: SWAP1
00000a98: REVERT
00000a99: JUMPDEST
00000a9a: PUSH1 0x00
00000a9c: JUMPDEST
00000a9d: DUP2
00000a9e: DUP2
00000a9f: LT
00000aa0: ISZERO
00000aa1: PUSH2 0x0b41
00000aa4: JUMPI
00000aa5: PUSH1 0x00
00000aa7: DUP4
00000aa8: DUP4
00000aa9: DUP4
00000aaa: DUP2
00000aab: DUP2
00000aac: LT
00000aad: PUSH2 0x0ab2
00000ab0: JUMPI
00000ab1: INVALID
00000ab2: JUMPDEST
00000ab3: SWAP1
00000ab4: POP
00000ab5: PUSH1 0x20
00000ab7: MUL
00000ab8: ADD
00000ab9: CALLDATALOAD
00000aba: PUSH1 0x01
00000abc: PUSH1 0x01
00000abe: PUSH1 0xa0
00000ac0: SHL
00000ac1: SUB
00000ac2: AND
00000ac3: SWAP1
00000ac4: POP
00000ac5: DUP1
00000ac6: PUSH1 0x01
00000ac8: PUSH1 0x01
00000aca: PUSH1 0xa0
00000acc: SHL
00000acd: SUB
00000ace: AND
00000acf: PUSH4 0xe00af4a7
00000ad4: DUP7
00000ad5: PUSH1 0x40
00000ad7: MLOAD
00000ad8: DUP3
00000ad9: PUSH4 0xffffffff
00000ade: AND
00000adf: PUSH1 0xe0
00000ae1: SHL
00000ae2: DUP2
00000ae3: MSTORE
00000ae4: PUSH1 0x04
00000ae6: ADD
00000ae7: DUP1
00000ae8: DUP3
00000ae9: PUSH1 0x01
00000aeb: PUSH1 0x01
00000aed: PUSH1 0xa0
00000aef: SHL
00000af0: SUB
00000af1: AND
00000af2: PUSH1 0x01
00000af4: PUSH1 0x01
00000af6: PUSH1 0xa0
00000af8: SHL
00000af9: SUB
00000afa: AND
00000afb: DUP2
00000afc: MSTORE
00000afd: PUSH1 0x20
00000aff: ADD
00000b00: SWAP2
00000b01: POP
00000b02: POP
00000b03: PUSH1 0x00
00000b05: PUSH1 0x40
00000b07: MLOAD
00000b08: DUP1
00000b09: DUP4
00000b0a: SUB
00000b0b: DUP2
00000b0c: PUSH1 0x00
00000b0e: DUP8
00000b0f: DUP1
00000b10: EXTCODESIZE
00000b11: ISZERO
00000b12: DUP1
00000b13: ISZERO
00000b14: PUSH2 0x0b1c
00000b17: JUMPI
00000b18: PUSH1 0x00
00000b1a: DUP1
00000b1b: REVERT
00000b1c: JUMPDEST
00000b1d: POP
00000b1e: GAS
00000b1f: CALL
00000b20: ISZERO
00000b21: DUP1
00000b22: ISZERO
00000b23: PUSH2 0x0b30
00000b26: JUMPI
00000b27: RETURNDATASIZE
00000b28: PUSH1 0x00
00000b2a: DUP1
00000b2b: RETURNDATACOPY
00000b2c: RETURNDATASIZE
00000b2d: PUSH1 0x00
00000b2f: REVERT
00000b30: JUMPDEST
00000b31: POP
00000b32: POP
00000b33: PUSH1 0x01
00000b35: SWAP1
00000b36: SWAP4
00000b37: ADD
00000b38: SWAP3
00000b39: POP
00000b3a: PUSH2 0x0a9c
00000b3d: SWAP2
00000b3e: POP
00000b3f: POP
00000b40: JUMP
00000b41: JUMPDEST
00000b42: POP
00000b43: POP
00000b44: POP
00000b45: POP
00000b46: JUMP
00000b47: JUMPDEST
00000b48: PUSH1 0x01
00000b4a: SLOAD
00000b4b: PUSH1 0x01
00000b4d: PUSH1 0x01
00000b4f: PUSH1 0xa0
00000b51: SHL
00000b52: SUB
00000b53: AND
00000b54: DUP2
00000b55: JUMP
00000b56: JUMPDEST
00000b57: PUSH1 0x01
00000b59: SLOAD
00000b5a: PUSH1 0x01
00000b5c: PUSH1 0x01
00000b5e: PUSH1 0xa0
00000b60: SHL
00000b61: SUB
00000b62: AND
00000b63: CALLER
00000b64: EQ
00000b65: PUSH2 0x0ba4
00000b68: JUMPI
00000b69: PUSH1 0x40
00000b6b: DUP1
00000b6c: MLOAD
00000b6d: PUSH3 0x461bcd
00000b71: PUSH1 0xe5
00000b73: SHL
00000b74: DUP2
00000b75: MSTORE
00000b76: PUSH1 0x20
00000b78: PUSH1 0x04
00000b7a: DUP3
00000b7b: ADD
00000b7c: MSTORE
00000b7d: PUSH1 0x0c
00000b7f: PUSH1 0x24
00000b81: DUP3
00000b82: ADD
00000b83: MSTORE
00000b84: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
00000b91: PUSH1 0xa2
00000b93: SHL
00000b94: PUSH1 0x44
00000b96: DUP3
00000b97: ADD
00000b98: MSTORE
00000b99: SWAP1
00000b9a: MLOAD
00000b9b: SWAP1
00000b9c: DUP2
00000b9d: SWAP1
00000b9e: SUB
00000b9f: PUSH1 0x64
00000ba1: ADD
00000ba2: SWAP1
00000ba3: REVERT
00000ba4: JUMPDEST
00000ba5: PUSH2 0x0bad
00000ba8: DUP2
00000ba9: PUSH2 0x18d2
00000bac: JUMP
00000bad: JUMPDEST
00000bae: PUSH1 0x01
00000bb0: DUP1
00000bb1: SLOAD
00000bb2: PUSH1 0x01
00000bb4: PUSH1 0x01
00000bb6: PUSH1 0xa0
00000bb8: SHL
00000bb9: SUB
00000bba: SWAP3
00000bbb: DUP4
00000bbc: AND
00000bbd: PUSH1 0x01
00000bbf: PUSH1 0x01
00000bc1: PUSH1 0xa0
00000bc3: SHL
00000bc4: SUB
00000bc5: NOT
00000bc6: SWAP2
00000bc7: DUP3
00000bc8: AND
00000bc9: OR
00000bca: DUP3
00000bcb: SSTORE
00000bcc: PUSH1 0x00
00000bce: DUP5
00000bcf: DUP2
00000bd0: MSTORE
00000bd1: PUSH1 0x02
00000bd3: PUSH1 0x20
00000bd5: SWAP1
00000bd6: DUP2
00000bd7: MSTORE
00000bd8: PUSH1 0x40
00000bda: SWAP2
00000bdb: DUP3
00000bdc: SWAP1
00000bdd: KECCAK256
00000bde: DUP1
00000bdf: SLOAD
00000be0: SWAP1
00000be1: SWAP4
00000be2: AND
00000be3: SWAP1
00000be4: SWAP3
00000be5: SSTORE
00000be6: SWAP2
00000be7: SLOAD
00000be8: DUP3
00000be9: MLOAD
00000bea: DUP6
00000beb: DUP2
00000bec: MSTORE
00000bed: SWAP4
00000bee: AND
00000bef: SWAP1
00000bf0: DUP4
00000bf1: ADD
00000bf2: MSTORE
00000bf3: DUP1
00000bf4: MLOAD
00000bf5: PUSH32 0x9a99272c0f6b7a30ef9e76e684a7cd408bfd4f11a72f36a8e276253c920e442d
00000c16: SWAP3
00000c17: DUP2
00000c18: SWAP1
00000c19: SUB
00000c1a: SWAP1
00000c1b: SWAP2
00000c1c: ADD
00000c1d: SWAP1
00000c1e: LOG1
00000c1f: POP
00000c20: JUMP
00000c21: JUMPDEST
00000c22: CALLER
00000c23: PUSH1 0x00
00000c25: SWAP1
00000c26: DUP2
00000c27: MSTORE
00000c28: PUSH1 0x03
00000c2a: PUSH1 0x20
00000c2c: MSTORE
00000c2d: PUSH1 0x40
00000c2f: SWAP1
00000c30: KECCAK256
00000c31: SLOAD
00000c32: PUSH1 0xff
00000c34: AND
00000c35: PUSH2 0x0c74
00000c38: JUMPI
00000c39: PUSH1 0x40
00000c3b: DUP1
00000c3c: MLOAD
00000c3d: PUSH3 0x461bcd
00000c41: PUSH1 0xe5
00000c43: SHL
00000c44: DUP2
00000c45: MSTORE
00000c46: PUSH1 0x20
00000c48: PUSH1 0x04
00000c4a: DUP3
00000c4b: ADD
00000c4c: MSTORE
00000c4d: PUSH1 0x0c
00000c4f: PUSH1 0x24
00000c51: DUP3
00000c52: ADD
00000c53: MSTORE
00000c54: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
00000c61: PUSH1 0xa2
00000c63: SHL
00000c64: PUSH1 0x44
00000c66: DUP3
00000c67: ADD
00000c68: MSTORE
00000c69: SWAP1
00000c6a: MLOAD
00000c6b: SWAP1
00000c6c: DUP2
00000c6d: SWAP1
00000c6e: SUB
00000c6f: PUSH1 0x64
00000c71: ADD
00000c72: SWAP1
00000c73: REVERT
00000c74: JUMPDEST
00000c75: DUP3
00000c76: PUSH1 0x00
00000c78: JUMPDEST
00000c79: DUP3
00000c7a: DUP2
00000c7b: LT
00000c7c: ISZERO
00000c7d: PUSH2 0x0e20
00000c80: JUMPI
00000c81: PUSH1 0x00
00000c83: DUP5
00000c84: DUP5
00000c85: DUP4
00000c86: DUP2
00000c87: DUP2
00000c88: LT
00000c89: PUSH2 0x0c8e
00000c8c: JUMPI
00000c8d: INVALID
00000c8e: JUMPDEST
00000c8f: SWAP1
00000c90: POP
00000c91: PUSH1 0x20
00000c93: MUL
00000c94: ADD
00000c95: CALLDATALOAD
00000c96: PUSH1 0x01
00000c98: PUSH1 0x01
00000c9a: PUSH1 0xa0
00000c9c: SHL
00000c9d: SUB
00000c9e: AND
00000c9f: SWAP1
00000ca0: POP
00000ca1: PUSH1 0x00
00000ca3: DUP4
00000ca4: PUSH1 0x01
00000ca6: PUSH1 0x01
00000ca8: PUSH1 0xa0
00000caa: SHL
00000cab: SUB
00000cac: AND
00000cad: PUSH4 0x70a08231
00000cb2: DUP4
00000cb3: PUSH1 0x40
00000cb5: MLOAD
00000cb6: DUP3
00000cb7: PUSH4 0xffffffff
00000cbc: AND
00000cbd: PUSH1 0xe0
00000cbf: SHL
00000cc0: DUP2
00000cc1: MSTORE
00000cc2: PUSH1 0x04
00000cc4: ADD
00000cc5: DUP1
00000cc6: DUP3
00000cc7: PUSH1 0x01
00000cc9: PUSH1 0x01
00000ccb: PUSH1 0xa0
00000ccd: SHL
00000cce: SUB
00000ccf: AND
00000cd0: PUSH1 0x01
00000cd2: PUSH1 0x01
00000cd4: PUSH1 0xa0
00000cd6: SHL
00000cd7: SUB
00000cd8: AND
00000cd9: DUP2
00000cda: MSTORE
00000cdb: PUSH1 0x20
00000cdd: ADD
00000cde: SWAP2
00000cdf: POP
00000ce0: POP
00000ce1: PUSH1 0x20
00000ce3: PUSH1 0x40
00000ce5: MLOAD
00000ce6: DUP1
00000ce7: DUP4
00000ce8: SUB
00000ce9: DUP2
00000cea: DUP7
00000ceb: DUP1
00000cec: EXTCODESIZE
00000ced: ISZERO
00000cee: DUP1
00000cef: ISZERO
00000cf0: PUSH2 0x0cf8
00000cf3: JUMPI
00000cf4: PUSH1 0x00
00000cf6: DUP1
00000cf7: REVERT
00000cf8: JUMPDEST
00000cf9: POP
00000cfa: GAS
00000cfb: STATICCALL
00000cfc: ISZERO
00000cfd: DUP1
00000cfe: ISZERO
00000cff: PUSH2 0x0d0c
00000d02: JUMPI
00000d03: RETURNDATASIZE
00000d04: PUSH1 0x00
00000d06: DUP1
00000d07: RETURNDATACOPY
00000d08: RETURNDATASIZE
00000d09: PUSH1 0x00
00000d0b: REVERT
00000d0c: JUMPDEST
00000d0d: POP
00000d0e: POP
00000d0f: POP
00000d10: POP
00000d11: PUSH1 0x40
00000d13: MLOAD
00000d14: RETURNDATASIZE
00000d15: PUSH1 0x20
00000d17: DUP2
00000d18: LT
00000d19: ISZERO
00000d1a: PUSH2 0x0d22
00000d1d: JUMPI
00000d1e: PUSH1 0x00
00000d20: DUP1
00000d21: REVERT
00000d22: JUMPDEST
00000d23: POP
00000d24: MLOAD
00000d25: PUSH1 0x40
00000d27: DUP1
00000d28: MLOAD
00000d29: PUSH32 0x23b872dd00000000000000000000000000000000000000000000000000000000
00000d4a: DUP2
00000d4b: MSTORE
00000d4c: PUSH1 0x01
00000d4e: PUSH1 0x01
00000d50: PUSH1 0xa0
00000d52: SHL
00000d53: SUB
00000d54: DUP6
00000d55: DUP2
00000d56: AND
00000d57: PUSH1 0x04
00000d59: DUP4
00000d5a: ADD
00000d5b: MSTORE
00000d5c: ADDRESS
00000d5d: PUSH1 0x24
00000d5f: DUP4
00000d60: ADD
00000d61: MSTORE
00000d62: PUSH1 0x44
00000d64: DUP3
00000d65: ADD
00000d66: DUP5
00000d67: SWAP1
00000d68: MSTORE
00000d69: SWAP2
00000d6a: MLOAD
00000d6b: SWAP3
00000d6c: SWAP4
00000d6d: POP
00000d6e: SWAP1
00000d6f: DUP7
00000d70: AND
00000d71: SWAP2
00000d72: PUSH4 0x23b872dd
00000d77: SWAP2
00000d78: PUSH1 0x64
00000d7a: DUP1
00000d7b: DUP3
00000d7c: ADD
00000d7d: SWAP3
00000d7e: PUSH1 0x20
00000d80: SWAP3
00000d81: SWAP1
00000d82: SWAP2
00000d83: SWAP1
00000d84: DUP3
00000d85: SWAP1
00000d86: SUB
00000d87: ADD
00000d88: DUP2
00000d89: PUSH1 0x00
00000d8b: DUP8
00000d8c: DUP1
00000d8d: EXTCODESIZE
00000d8e: ISZERO
00000d8f: DUP1
00000d90: ISZERO
00000d91: PUSH2 0x0d99
00000d94: JUMPI
00000d95: PUSH1 0x00
00000d97: DUP1
00000d98: REVERT
00000d99: JUMPDEST
00000d9a: POP
00000d9b: GAS
00000d9c: CALL
00000d9d: ISZERO
00000d9e: DUP1
00000d9f: ISZERO
00000da0: PUSH2 0x0dad
00000da3: JUMPI
00000da4: RETURNDATASIZE
00000da5: PUSH1 0x00
00000da7: DUP1
00000da8: RETURNDATACOPY
00000da9: RETURNDATASIZE
00000daa: PUSH1 0x00
00000dac: REVERT
00000dad: JUMPDEST
00000dae: POP
00000daf: POP
00000db0: POP
00000db1: POP
00000db2: PUSH1 0x40
00000db4: MLOAD
00000db5: RETURNDATASIZE
00000db6: PUSH1 0x20
00000db8: DUP2
00000db9: LT
00000dba: ISZERO
00000dbb: PUSH2 0x0dc3
00000dbe: JUMPI
00000dbf: PUSH1 0x00
00000dc1: DUP1
00000dc2: REVERT
00000dc3: JUMPDEST
00000dc4: POP
00000dc5: MLOAD
00000dc6: PUSH2 0x0e16
00000dc9: JUMPI
00000dca: PUSH1 0x40
00000dcc: DUP1
00000dcd: MLOAD
00000dce: PUSH3 0x461bcd
00000dd2: PUSH1 0xe5
00000dd4: SHL
00000dd5: DUP2
00000dd6: MSTORE
00000dd7: PUSH1 0x20
00000dd9: PUSH1 0x04
00000ddb: DUP3
00000ddc: ADD
00000ddd: MSTORE
00000dde: PUSH1 0x12
00000de0: PUSH1 0x24
00000de2: DUP3
00000de3: ADD
00000de4: MSTORE
00000de5: PUSH32 0x7472616e7366657246726f6d2066616c73650000000000000000000000000000
00000e06: PUSH1 0x44
00000e08: DUP3
00000e09: ADD
00000e0a: MSTORE
00000e0b: SWAP1
00000e0c: MLOAD
00000e0d: SWAP1
00000e0e: DUP2
00000e0f: SWAP1
00000e10: SUB
00000e11: PUSH1 0x64
00000e13: ADD
00000e14: SWAP1
00000e15: REVERT
00000e16: JUMPDEST
00000e17: POP
00000e18: POP
00000e19: PUSH1 0x01
00000e1b: ADD
00000e1c: PUSH2 0x0c78
00000e1f: JUMP
00000e20: JUMPDEST
00000e21: POP
00000e22: POP
00000e23: POP
00000e24: POP
00000e25: POP
00000e26: JUMP
00000e27: JUMPDEST
00000e28: PUSH1 0x00
00000e2a: PUSH2 0x0e34
00000e2d: PUSH1 0x04
00000e2f: DUP4
00000e30: PUSH2 0x17c5
00000e33: JUMP
00000e34: JUMPDEST
00000e35: PUSH1 0x40
00000e37: DUP1
00000e38: MLOAD
00000e39: DUP3
00000e3a: DUP2
00000e3b: MSTORE
00000e3c: CALLER
00000e3d: PUSH1 0x20
00000e3f: DUP3
00000e40: ADD
00000e41: MSTORE
00000e42: PUSH1 0x01
00000e44: PUSH1 0x01
00000e46: PUSH1 0xa0
00000e48: SHL
00000e49: SUB
00000e4a: DUP6
00000e4b: AND
00000e4c: DUP2
00000e4d: DUP4
00000e4e: ADD
00000e4f: MSTORE
00000e50: SWAP1
00000e51: MLOAD
00000e52: SWAP2
00000e53: SWAP3
00000e54: POP
00000e55: PUSH32 0x86347f0dc6401085afc2e65b03928402543790cfec1c26238fb9d5384a0d0150
00000e76: SWAP2
00000e77: SWAP1
00000e78: DUP2
00000e79: SWAP1
00000e7a: SUB
00000e7b: PUSH1 0x60
00000e7d: ADD
00000e7e: SWAP1
00000e7f: LOG1
00000e80: SWAP2
00000e81: SWAP1
00000e82: POP
00000e83: JUMP
00000e84: JUMPDEST
00000e85: PUSH1 0x01
00000e87: SLOAD
00000e88: PUSH1 0x01
00000e8a: PUSH1 0x01
00000e8c: PUSH1 0xa0
00000e8e: SHL
00000e8f: SUB
00000e90: AND
00000e91: CALLER
00000e92: EQ
00000e93: PUSH2 0x0ed2
00000e96: JUMPI
00000e97: PUSH1 0x40
00000e99: DUP1
00000e9a: MLOAD
00000e9b: PUSH3 0x461bcd
00000e9f: PUSH1 0xe5
00000ea1: SHL
00000ea2: DUP2
00000ea3: MSTORE
00000ea4: PUSH1 0x20
00000ea6: PUSH1 0x04
00000ea8: DUP3
00000ea9: ADD
00000eaa: MSTORE
00000eab: PUSH1 0x0c
00000ead: PUSH1 0x24
00000eaf: DUP3
00000eb0: ADD
00000eb1: MSTORE
00000eb2: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
00000ebf: PUSH1 0xa2
00000ec1: SHL
00000ec2: PUSH1 0x44
00000ec4: DUP3
00000ec5: ADD
00000ec6: MSTORE
00000ec7: SWAP1
00000ec8: MLOAD
00000ec9: SWAP1
00000eca: DUP2
00000ecb: SWAP1
00000ecc: SUB
00000ecd: PUSH1 0x64
00000ecf: ADD
00000ed0: SWAP1
00000ed1: REVERT
00000ed2: JUMPDEST
00000ed3: PUSH1 0x00
00000ed5: PUSH2 0x0edf
00000ed8: PUSH1 0x04
00000eda: DUP4
00000edb: PUSH2 0x1857
00000ede: JUMP
00000edf: JUMPDEST
00000ee0: PUSH1 0x01
00000ee2: PUSH1 0x01
00000ee4: PUSH1 0xa0
00000ee6: SHL
00000ee7: SUB
00000ee8: DUP2
00000ee9: AND
00000eea: PUSH1 0x00
00000eec: DUP2
00000eed: DUP2
00000eee: MSTORE
00000eef: PUSH1 0x03
00000ef1: PUSH1 0x20
00000ef3: SWAP1
00000ef4: DUP2
00000ef5: MSTORE
00000ef6: PUSH1 0x40
00000ef8: DUP1
00000ef9: DUP4
00000efa: KECCAK256
00000efb: DUP1
00000efc: SLOAD
00000efd: PUSH1 0xff
00000eff: NOT
00000f00: AND
00000f01: PUSH1 0x01
00000f03: OR
00000f04: SWAP1
00000f05: SSTORE
00000f06: DUP7
00000f07: DUP4
00000f08: MSTORE
00000f09: PUSH1 0x04
00000f0b: DUP3
00000f0c: MSTORE
00000f0d: SWAP2
00000f0e: DUP3
00000f0f: SWAP1
00000f10: KECCAK256
00000f11: DUP1
00000f12: SLOAD
00000f13: PUSH1 0x01
00000f15: PUSH1 0x01
00000f17: PUSH1 0xa0
00000f19: SHL
00000f1a: SUB
00000f1b: NOT
00000f1c: AND
00000f1d: SWAP1
00000f1e: SSTORE
00000f1f: DUP2
00000f20: MLOAD
00000f21: DUP7
00000f22: DUP2
00000f23: MSTORE
00000f24: SWAP1
00000f25: DUP2
00000f26: ADD
00000f27: SWAP3
00000f28: SWAP1
00000f29: SWAP3
00000f2a: MSTORE
00000f2b: DUP1
00000f2c: MLOAD
00000f2d: SWAP3
00000f2e: SWAP4
00000f2f: POP
00000f30: PUSH32 0xd201726f779e2288dca2c25bc8608ac2616c615a445dbc0f8e7bb86101bcb393
00000f51: SWAP3
00000f52: SWAP2
00000f53: DUP3
00000f54: SWAP1
00000f55: SUB
00000f56: ADD
00000f57: SWAP1
00000f58: LOG1
00000f59: POP
00000f5a: POP
00000f5b: JUMP
00000f5c: JUMPDEST
00000f5d: PUSH1 0x03
00000f5f: PUSH1 0x20
00000f61: MSTORE
00000f62: PUSH1 0x00
00000f64: SWAP1
00000f65: DUP2
00000f66: MSTORE
00000f67: PUSH1 0x40
00000f69: SWAP1
00000f6a: KECCAK256
00000f6b: SLOAD
00000f6c: PUSH1 0xff
00000f6e: AND
00000f6f: DUP2
00000f70: JUMP
00000f71: JUMPDEST
00000f72: CALLER
00000f73: PUSH1 0x00
00000f75: SWAP1
00000f76: DUP2
00000f77: MSTORE
00000f78: PUSH1 0x03
00000f7a: PUSH1 0x20
00000f7c: MSTORE
00000f7d: PUSH1 0x40
00000f7f: SWAP1
00000f80: KECCAK256
00000f81: SLOAD
00000f82: PUSH1 0xff
00000f84: AND
00000f85: PUSH2 0x0fc4
00000f88: JUMPI
00000f89: PUSH1 0x40
00000f8b: DUP1
00000f8c: MLOAD
00000f8d: PUSH3 0x461bcd
00000f91: PUSH1 0xe5
00000f93: SHL
00000f94: DUP2
00000f95: MSTORE
00000f96: PUSH1 0x20
00000f98: PUSH1 0x04
00000f9a: DUP3
00000f9b: ADD
00000f9c: MSTORE
00000f9d: PUSH1 0x0c
00000f9f: PUSH1 0x24
00000fa1: DUP3
00000fa2: ADD
00000fa3: MSTORE
00000fa4: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
00000fb1: PUSH1 0xa2
00000fb3: SHL
00000fb4: PUSH1 0x44
00000fb6: DUP3
00000fb7: ADD
00000fb8: MSTORE
00000fb9: SWAP1
00000fba: MLOAD
00000fbb: SWAP1
00000fbc: DUP2
00000fbd: SWAP1
00000fbe: SUB
00000fbf: PUSH1 0x64
00000fc1: ADD
00000fc2: SWAP1
00000fc3: REVERT
00000fc4: JUMPDEST
00000fc5: PUSH1 0x00
00000fc7: JUMPDEST
00000fc8: DUP2
00000fc9: DUP2
00000fca: LT
00000fcb: ISZERO
00000fcc: PUSH2 0x104f
00000fcf: JUMPI
00000fd0: PUSH1 0x00
00000fd2: DUP4
00000fd3: DUP4
00000fd4: DUP4
00000fd5: DUP2
00000fd6: DUP2
00000fd7: LT
00000fd8: PUSH2 0x0fdd
00000fdb: JUMPI
00000fdc: INVALID
00000fdd: JUMPDEST
00000fde: SWAP1
00000fdf: POP
00000fe0: PUSH1 0x20
00000fe2: MUL
00000fe3: ADD
00000fe4: CALLDATALOAD
00000fe5: PUSH1 0x01
00000fe7: PUSH1 0x01
00000fe9: PUSH1 0xa0
00000feb: SHL
00000fec: SUB
00000fed: AND
00000fee: SWAP1
00000fef: POP
00000ff0: DUP1
00000ff1: PUSH1 0x01
00000ff3: PUSH1 0x01
00000ff5: PUSH1 0xa0
00000ff7: SHL
00000ff8: SUB
00000ff9: AND
00000ffa: PUSH4 0x90ec71bd
00000fff: PUSH1 0x40
00001001: MLOAD
00001002: DUP2
00001003: PUSH4 0xffffffff
00001008: AND
00001009: PUSH1 0xe0
0000100b: SHL
0000100c: DUP2
0000100d: MSTORE
0000100e: PUSH1 0x04
00001010: ADD
00001011: PUSH1 0x00
00001013: PUSH1 0x40
00001015: MLOAD
00001016: DUP1
00001017: DUP4
00001018: SUB
00001019: DUP2
0000101a: PUSH1 0x00
0000101c: DUP8
0000101d: DUP1
0000101e: EXTCODESIZE
0000101f: ISZERO
00001020: DUP1
00001021: ISZERO
00001022: PUSH2 0x102a
00001025: JUMPI
00001026: PUSH1 0x00
00001028: DUP1
00001029: REVERT
0000102a: JUMPDEST
0000102b: POP
0000102c: GAS
0000102d: CALL
0000102e: ISZERO
0000102f: DUP1
00001030: ISZERO
00001031: PUSH2 0x103e
00001034: JUMPI
00001035: RETURNDATASIZE
00001036: PUSH1 0x00
00001038: DUP1
00001039: RETURNDATACOPY
0000103a: RETURNDATASIZE
0000103b: PUSH1 0x00
0000103d: REVERT
0000103e: JUMPDEST
0000103f: POP
00001040: POP
00001041: PUSH1 0x01
00001043: SWAP1
00001044: SWAP4
00001045: ADD
00001046: SWAP3
00001047: POP
00001048: PUSH2 0x0fc7
0000104b: SWAP2
0000104c: POP
0000104d: POP
0000104e: JUMP
0000104f: JUMPDEST
00001050: POP
00001051: POP
00001052: POP
00001053: JUMP
00001054: JUMPDEST
00001055: CALLER
00001056: PUSH1 0x00
00001058: SWAP1
00001059: DUP2
0000105a: MSTORE
0000105b: PUSH1 0x03
0000105d: PUSH1 0x20
0000105f: MSTORE
00001060: PUSH1 0x40
00001062: SWAP1
00001063: KECCAK256
00001064: SLOAD
00001065: PUSH1 0xff
00001067: AND
00001068: PUSH2 0x10a7
0000106b: JUMPI
0000106c: PUSH1 0x40
0000106e: DUP1
0000106f: MLOAD
00001070: PUSH3 0x461bcd
00001074: PUSH1 0xe5
00001076: SHL
00001077: DUP2
00001078: MSTORE
00001079: PUSH1 0x20
0000107b: PUSH1 0x04
0000107d: DUP3
0000107e: ADD
0000107f: MSTORE
00001080: PUSH1 0x0c
00001082: PUSH1 0x24
00001084: DUP3
00001085: ADD
00001086: MSTORE
00001087: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
00001094: PUSH1 0xa2
00001096: SHL
00001097: PUSH1 0x44
00001099: DUP3
0000109a: ADD
0000109b: MSTORE
0000109c: SWAP1
0000109d: MLOAD
0000109e: SWAP1
0000109f: DUP2
000010a0: SWAP1
000010a1: SUB
000010a2: PUSH1 0x64
000010a4: ADD
000010a5: SWAP1
000010a6: REVERT
000010a7: JUMPDEST
000010a8: DUP3
000010a9: DUP2
000010aa: EQ
000010ab: PUSH2 0x10fb
000010ae: JUMPI
000010af: PUSH1 0x40
000010b1: DUP1
000010b2: MLOAD
000010b3: PUSH3 0x461bcd
000010b7: PUSH1 0xe5
000010b9: SHL
000010ba: DUP2
000010bb: MSTORE
000010bc: PUSH1 0x20
000010be: PUSH1 0x04
000010c0: DUP3
000010c1: ADD
000010c2: MSTORE
000010c3: PUSH1 0x11
000010c5: PUSH1 0x24
000010c7: DUP3
000010c8: ADD
000010c9: MSTORE
000010ca: PUSH32 0x6d69736d61746368656420617272617973000000000000000000000000000000
000010eb: PUSH1 0x44
000010ed: DUP3
000010ee: ADD
000010ef: MSTORE
000010f0: SWAP1
000010f1: MLOAD
000010f2: SWAP1
000010f3: DUP2
000010f4: SWAP1
000010f5: SUB
000010f6: PUSH1 0x64
000010f8: ADD
000010f9: SWAP1
000010fa: REVERT
000010fb: JUMPDEST
000010fc: PUSH1 0x00
000010fe: JUMPDEST
000010ff: DUP4
00001100: DUP2
00001101: LT
00001102: ISZERO
00001103: PUSH2 0x0e20
00001106: JUMPI
00001107: PUSH1 0x00
00001109: DUP6
0000110a: DUP6
0000110b: DUP4
0000110c: DUP2
0000110d: DUP2
0000110e: LT
0000110f: PUSH2 0x1114
00001112: JUMPI
00001113: INVALID
00001114: JUMPDEST
00001115: SWAP1
00001116: POP
00001117: PUSH1 0x20
00001119: MUL
0000111a: ADD
0000111b: CALLDATALOAD
0000111c: PUSH1 0x01
0000111e: PUSH1 0x01
00001120: PUSH1 0xa0
00001122: SHL
00001123: SUB
00001124: AND
00001125: SWAP1
00001126: POP
00001127: PUSH1 0x00
00001129: DUP5
0000112a: DUP5
0000112b: DUP5
0000112c: DUP2
0000112d: DUP2
0000112e: LT
0000112f: PUSH2 0x1134
00001132: JUMPI
00001133: INVALID
00001134: JUMPDEST
00001135: SWAP1
00001136: POP
00001137: PUSH1 0x20
00001139: MUL
0000113a: ADD
0000113b: CALLDATALOAD
0000113c: SWAP1
0000113d: POP
0000113e: DUP2
0000113f: PUSH1 0x01
00001141: PUSH1 0x01
00001143: PUSH1 0xa0
00001145: SHL
00001146: SUB
00001147: AND
00001148: PUSH2 0x08fc
0000114b: DUP3
0000114c: SWAP1
0000114d: DUP2
0000114e: ISZERO
0000114f: MUL
00001150: SWAP1
00001151: PUSH1 0x40
00001153: MLOAD
00001154: PUSH1 0x00
00001156: PUSH1 0x40
00001158: MLOAD
00001159: DUP1
0000115a: DUP4
0000115b: SUB
0000115c: DUP2
0000115d: DUP6
0000115e: DUP9
0000115f: DUP9
00001160: CALL
00001161: SWAP4
00001162: POP
00001163: POP
00001164: POP
00001165: POP
00001166: ISZERO
00001167: DUP1
00001168: ISZERO
00001169: PUSH2 0x1176
0000116c: JUMPI
0000116d: RETURNDATASIZE
0000116e: PUSH1 0x00
00001170: DUP1
00001171: RETURNDATACOPY
00001172: RETURNDATASIZE
00001173: PUSH1 0x00
00001175: REVERT
00001176: JUMPDEST
00001177: POP
00001178: PUSH1 0x40
0000117a: DUP1
0000117b: MLOAD
0000117c: PUSH1 0x01
0000117e: PUSH1 0x01
00001180: PUSH1 0xa0
00001182: SHL
00001183: SUB
00001184: DUP5
00001185: AND
00001186: DUP2
00001187: MSTORE
00001188: PUSH1 0x20
0000118a: DUP2
0000118b: ADD
0000118c: DUP4
0000118d: SWAP1
0000118e: MSTORE
0000118f: DUP2
00001190: MLOAD
00001191: PUSH32 0xf35d7b6a86398c5aabcd316353d6f069dbc1be6fa0ab49d809bfbf6d96f55575
000011b2: SWAP3
000011b3: SWAP2
000011b4: DUP2
000011b5: SWAP1
000011b6: SUB
000011b7: SWAP1
000011b8: SWAP2
000011b9: ADD
000011ba: SWAP1
000011bb: LOG1
000011bc: POP
000011bd: POP
000011be: PUSH1 0x01
000011c0: ADD
000011c1: PUSH2 0x10fe
000011c4: JUMP
000011c5: JUMPDEST
000011c6: PUSH1 0x00
000011c8: SLOAD
000011c9: DUP2
000011ca: JUMP
000011cb: JUMPDEST
000011cc: PUSH1 0x02
000011ce: PUSH1 0x20
000011d0: MSTORE
000011d1: PUSH1 0x00
000011d3: SWAP1
000011d4: DUP2
000011d5: MSTORE
000011d6: PUSH1 0x40
000011d8: SWAP1
000011d9: KECCAK256
000011da: SLOAD
000011db: PUSH1 0x01
000011dd: PUSH1 0x01
000011df: PUSH1 0xa0
000011e1: SHL
000011e2: SUB
000011e3: AND
000011e4: DUP2
000011e5: JUMP
000011e6: JUMPDEST
000011e7: CALLER
000011e8: PUSH1 0x00
000011ea: SWAP1
000011eb: DUP2
000011ec: MSTORE
000011ed: PUSH1 0x03
000011ef: PUSH1 0x20
000011f1: MSTORE
000011f2: PUSH1 0x40
000011f4: SWAP1
000011f5: KECCAK256
000011f6: SLOAD
000011f7: PUSH1 0xff
000011f9: AND
000011fa: PUSH2 0x1239
000011fd: JUMPI
000011fe: PUSH1 0x40
00001200: DUP1
00001201: MLOAD
00001202: PUSH3 0x461bcd
00001206: PUSH1 0xe5
00001208: SHL
00001209: DUP2
0000120a: MSTORE
0000120b: PUSH1 0x20
0000120d: PUSH1 0x04
0000120f: DUP3
00001210: ADD
00001211: MSTORE
00001212: PUSH1 0x0c
00001214: PUSH1 0x24
00001216: DUP3
00001217: ADD
00001218: MSTORE
00001219: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
00001226: PUSH1 0xa2
00001228: SHL
00001229: PUSH1 0x44
0000122b: DUP3
0000122c: ADD
0000122d: MSTORE
0000122e: SWAP1
0000122f: MLOAD
00001230: SWAP1
00001231: DUP2
00001232: SWAP1
00001233: SUB
00001234: PUSH1 0x64
00001236: ADD
00001237: SWAP1
00001238: REVERT
00001239: JUMPDEST
0000123a: PUSH1 0x00
0000123c: PUSH1 0x60
0000123e: DUP5
0000123f: PUSH1 0x01
00001241: PUSH1 0x01
00001243: PUSH1 0xa0
00001245: SHL
00001246: SUB
00001247: AND
00001248: DUP5
00001249: DUP5
0000124a: PUSH1 0x40
0000124c: MLOAD
0000124d: DUP1
0000124e: DUP4
0000124f: DUP4
00001250: DUP1
00001251: DUP3
00001252: DUP5
00001253: CALLDATACOPY
00001254: PUSH1 0x40
00001256: MLOAD
00001257: SWAP3
00001258: ADD
00001259: SWAP5
0000125a: POP
0000125b: PUSH1 0x00
0000125d: SWAP4
0000125e: POP
0000125f: SWAP1
00001260: SWAP2
00001261: POP
00001262: POP
00001263: DUP1
00001264: DUP4
00001265: SUB
00001266: DUP2
00001267: DUP4
00001268: DUP7
00001269: GAS
0000126a: CALL
0000126b: SWAP2
0000126c: POP
0000126d: POP
0000126e: RETURNDATASIZE
0000126f: DUP1
00001270: PUSH1 0x00
00001272: DUP2
00001273: EQ
00001274: PUSH2 0x1299
00001277: JUMPI
00001278: PUSH1 0x40
0000127a: MLOAD
0000127b: SWAP2
0000127c: POP
0000127d: PUSH1 0x1f
0000127f: NOT
00001280: PUSH1 0x3f
00001282: RETURNDATASIZE
00001283: ADD
00001284: AND
00001285: DUP3
00001286: ADD
00001287: PUSH1 0x40
00001289: MSTORE
0000128a: RETURNDATASIZE
0000128b: DUP3
0000128c: MSTORE
0000128d: RETURNDATASIZE
0000128e: PUSH1 0x00
00001290: PUSH1 0x20
00001292: DUP5
00001293: ADD
00001294: RETURNDATACOPY
00001295: PUSH2 0x129e
00001298: JUMP
00001299: JUMPDEST
0000129a: PUSH1 0x60
0000129c: SWAP2
0000129d: POP
0000129e: JUMPDEST
0000129f: POP
000012a0: SWAP2
000012a1: POP
000012a2: SWAP2
000012a3: POP
000012a4: DUP2
000012a5: ISZERO
000012a6: PUSH2 0x1393
000012a9: JUMPI
000012aa: PUSH32 0x18e614c03fae7d4f0ad0790905bc76b8690e946c477b2b8970403bcad27a9b96
000012cb: DUP6
000012cc: DUP6
000012cd: DUP6
000012ce: DUP5
000012cf: PUSH1 0x40
000012d1: MLOAD
000012d2: DUP1
000012d3: DUP6
000012d4: PUSH1 0x01
000012d6: PUSH1 0x01
000012d8: PUSH1 0xa0
000012da: SHL
000012db: SUB
000012dc: AND
000012dd: PUSH1 0x01
000012df: PUSH1 0x01
000012e1: PUSH1 0xa0
000012e3: SHL
000012e4: SUB
000012e5: AND
000012e6: DUP2
000012e7: MSTORE
000012e8: PUSH1 0x20
000012ea: ADD
000012eb: DUP1
000012ec: PUSH1 0x20
000012ee: ADD
000012ef: DUP1
000012f0: PUSH1 0x20
000012f2: ADD
000012f3: DUP4
000012f4: DUP2
000012f5: SUB
000012f6: DUP4
000012f7: MSTORE
000012f8: DUP7
000012f9: DUP7
000012fa: DUP3
000012fb: DUP2
000012fc: DUP2
000012fd: MSTORE
000012fe: PUSH1 0x20
00001300: ADD
00001301: SWAP3
00001302: POP
00001303: DUP1
00001304: DUP3
00001305: DUP5
00001306: CALLDATACOPY
00001307: PUSH1 0x00
00001309: DUP4
0000130a: DUP3
0000130b: ADD
0000130c: DUP2
0000130d: SWAP1
0000130e: MSTORE
0000130f: PUSH1 0x1f
00001311: SWAP1
00001312: SWAP2
00001313: ADD
00001314: PUSH1 0x1f
00001316: NOT
00001317: AND
00001318: SWAP1
00001319: SWAP3
0000131a: ADD
0000131b: DUP6
0000131c: DUP2
0000131d: SUB
0000131e: DUP5
0000131f: MSTORE
00001320: DUP7
00001321: MLOAD
00001322: DUP2
00001323: MSTORE
00001324: DUP7
00001325: MLOAD
00001326: PUSH1 0x20
00001328: SWAP2
00001329: DUP3
0000132a: ADD
0000132b: SWAP4
0000132c: SWAP2
0000132d: DUP9
0000132e: ADD
0000132f: SWAP3
00001330: POP
00001331: SWAP1
00001332: DUP2
00001333: SWAP1
00001334: DUP5
00001335: SWAP1
00001336: DUP5
00001337: SWAP1
00001338: JUMPDEST
00001339: DUP4
0000133a: DUP2
0000133b: LT
0000133c: ISZERO
0000133d: PUSH2 0x1350
00001340: JUMPI
00001341: DUP2
00001342: DUP2
00001343: ADD
00001344: MLOAD
00001345: DUP4
00001346: DUP3
00001347: ADD
00001348: MSTORE
00001349: PUSH1 0x20
0000134b: ADD
0000134c: PUSH2 0x1338
0000134f: JUMP
00001350: JUMPDEST
00001351: POP
00001352: POP
00001353: POP
00001354: POP
00001355: SWAP1
00001356: POP
00001357: SWAP1
00001358: DUP2
00001359: ADD
0000135a: SWAP1
0000135b: PUSH1 0x1f
0000135d: AND
0000135e: DUP1
0000135f: ISZERO
00001360: PUSH2 0x137d
00001363: JUMPI
00001364: DUP1
00001365: DUP3
00001366: SUB
00001367: DUP1
00001368: MLOAD
00001369: PUSH1 0x01
0000136b: DUP4
0000136c: PUSH1 0x20
0000136e: SUB
0000136f: PUSH2 0x0100
00001372: EXP
00001373: SUB
00001374: NOT
00001375: AND
00001376: DUP2
00001377: MSTORE
00001378: PUSH1 0x20
0000137a: ADD
0000137b: SWAP2
0000137c: POP
0000137d: JUMPDEST
0000137e: POP
0000137f: SWAP7
00001380: POP
00001381: POP
00001382: POP
00001383: POP
00001384: POP
00001385: POP
00001386: POP
00001387: PUSH1 0x40
00001389: MLOAD
0000138a: DUP1
0000138b: SWAP2
0000138c: SUB
0000138d: SWAP1
0000138e: LOG1
0000138f: PUSH2 0x0e20
00001392: JUMP
00001393: JUMPDEST
00001394: PUSH32 0xaba0bbd4bfc61304155c867f51e2bc1c6f844c4d852c9bdb15c2cd9c3c8e6274
000013b5: DUP6
000013b6: DUP6
000013b7: DUP6
000013b8: DUP5
000013b9: PUSH1 0x40
000013bb: MLOAD
000013bc: DUP1
000013bd: DUP6
000013be: PUSH1 0x01
000013c0: PUSH1 0x01
000013c2: PUSH1 0xa0
000013c4: SHL
000013c5: SUB
000013c6: AND
000013c7: PUSH1 0x01
000013c9: PUSH1 0x01
000013cb: PUSH1 0xa0
000013cd: SHL
000013ce: SUB
000013cf: AND
000013d0: DUP2
000013d1: MSTORE
000013d2: PUSH1 0x20
000013d4: ADD
000013d5: DUP1
000013d6: PUSH1 0x20
000013d8: ADD
000013d9: DUP1
000013da: PUSH1 0x20
000013dc: ADD
000013dd: DUP4
000013de: DUP2
000013df: SUB
000013e0: DUP4
000013e1: MSTORE
000013e2: DUP7
000013e3: DUP7
000013e4: DUP3
000013e5: DUP2
000013e6: DUP2
000013e7: MSTORE
000013e8: PUSH1 0x20
000013ea: ADD
000013eb: SWAP3
000013ec: POP
000013ed: DUP1
000013ee: DUP3
000013ef: DUP5
000013f0: CALLDATACOPY
000013f1: PUSH1 0x00
000013f3: DUP4
000013f4: DUP3
000013f5: ADD
000013f6: DUP2
000013f7: SWAP1
000013f8: MSTORE
000013f9: PUSH1 0x1f
000013fb: SWAP1
000013fc: SWAP2
000013fd: ADD
000013fe: PUSH1 0x1f
00001400: NOT
00001401: AND
00001402: SWAP1
00001403: SWAP3
00001404: ADD
00001405: DUP6
00001406: DUP2
00001407: SUB
00001408: DUP5
00001409: MSTORE
0000140a: DUP7
0000140b: MLOAD
0000140c: DUP2
0000140d: MSTORE
0000140e: DUP7
0000140f: MLOAD
00001410: PUSH1 0x20
00001412: SWAP2
00001413: DUP3
00001414: ADD
00001415: SWAP4
00001416: SWAP2
00001417: DUP9
00001418: ADD
00001419: SWAP3
0000141a: POP
0000141b: SWAP1
0000141c: DUP2
0000141d: SWAP1
0000141e: DUP5
0000141f: SWAP1
00001420: DUP5
00001421: SWAP1
00001422: JUMPDEST
00001423: DUP4
00001424: DUP2
00001425: LT
00001426: ISZERO
00001427: PUSH2 0x143a
0000142a: JUMPI
0000142b: DUP2
0000142c: DUP2
0000142d: ADD
0000142e: MLOAD
0000142f: DUP4
00001430: DUP3
00001431: ADD
00001432: MSTORE
00001433: PUSH1 0x20
00001435: ADD
00001436: PUSH2 0x1422
00001439: JUMP
0000143a: JUMPDEST
0000143b: POP
0000143c: POP
0000143d: POP
0000143e: POP
0000143f: SWAP1
00001440: POP
00001441: SWAP1
00001442: DUP2
00001443: ADD
00001444: SWAP1
00001445: PUSH1 0x1f
00001447: AND
00001448: DUP1
00001449: ISZERO
0000144a: PUSH2 0x1467
0000144d: JUMPI
0000144e: DUP1
0000144f: DUP3
00001450: SUB
00001451: DUP1
00001452: MLOAD
00001453: PUSH1 0x01
00001455: DUP4
00001456: PUSH1 0x20
00001458: SUB
00001459: PUSH2 0x0100
0000145c: EXP
0000145d: SUB
0000145e: NOT
0000145f: AND
00001460: DUP2
00001461: MSTORE
00001462: PUSH1 0x20
00001464: ADD
00001465: SWAP2
00001466: POP
00001467: JUMPDEST
00001468: POP
00001469: SWAP7
0000146a: POP
0000146b: POP
0000146c: POP
0000146d: POP
0000146e: POP
0000146f: POP
00001470: POP
00001471: PUSH1 0x40
00001473: MLOAD
00001474: DUP1
00001475: SWAP2
00001476: SUB
00001477: SWAP1
00001478: LOG1
00001479: POP
0000147a: POP
0000147b: POP
0000147c: POP
0000147d: POP
0000147e: JUMP
0000147f: JUMPDEST
00001480: PUSH1 0x05
00001482: PUSH1 0x20
00001484: MSTORE
00001485: PUSH1 0x00
00001487: SWAP1
00001488: DUP2
00001489: MSTORE
0000148a: PUSH1 0x40
0000148c: SWAP1
0000148d: KECCAK256
0000148e: SLOAD
0000148f: PUSH1 0x01
00001491: PUSH1 0x01
00001493: PUSH1 0xa0
00001495: SHL
00001496: SUB
00001497: AND
00001498: DUP2
00001499: JUMP
0000149a: JUMPDEST
0000149b: CALLER
0000149c: PUSH1 0x00
0000149e: SWAP1
0000149f: DUP2
000014a0: MSTORE
000014a1: PUSH1 0x03
000014a3: PUSH1 0x20
000014a5: MSTORE
000014a6: PUSH1 0x40
000014a8: SWAP1
000014a9: KECCAK256
000014aa: SLOAD
000014ab: PUSH1 0xff
000014ad: AND
000014ae: PUSH2 0x14ed
000014b1: JUMPI
000014b2: PUSH1 0x40
000014b4: DUP1
000014b5: MLOAD
000014b6: PUSH3 0x461bcd
000014ba: PUSH1 0xe5
000014bc: SHL
000014bd: DUP2
000014be: MSTORE
000014bf: PUSH1 0x20
000014c1: PUSH1 0x04
000014c3: DUP3
000014c4: ADD
000014c5: MSTORE
000014c6: PUSH1 0x0c
000014c8: PUSH1 0x24
000014ca: DUP3
000014cb: ADD
000014cc: MSTORE
000014cd: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
000014da: PUSH1 0xa2
000014dc: SHL
000014dd: PUSH1 0x44
000014df: DUP3
000014e0: ADD
000014e1: MSTORE
000014e2: SWAP1
000014e3: MLOAD
000014e4: SWAP1
000014e5: DUP2
000014e6: SWAP1
000014e7: SUB
000014e8: PUSH1 0x64
000014ea: ADD
000014eb: SWAP1
000014ec: REVERT
000014ed: JUMPDEST
000014ee: DUP3
000014ef: DUP2
000014f0: EQ
000014f1: PUSH2 0x1541
000014f4: JUMPI
000014f5: PUSH1 0x40
000014f7: DUP1
000014f8: MLOAD
000014f9: PUSH3 0x461bcd
000014fd: PUSH1 0xe5
000014ff: SHL
00001500: DUP2
00001501: MSTORE
00001502: PUSH1 0x20
00001504: PUSH1 0x04
00001506: DUP3
00001507: ADD
00001508: MSTORE
00001509: PUSH1 0x11
0000150b: PUSH1 0x24
0000150d: DUP3
0000150e: ADD
0000150f: MSTORE
00001510: PUSH32 0x6d69736d61746368656420617272617973000000000000000000000000000000
00001531: PUSH1 0x44
00001533: DUP3
00001534: ADD
00001535: MSTORE
00001536: SWAP1
00001537: MLOAD
00001538: SWAP1
00001539: DUP2
0000153a: SWAP1
0000153b: SUB
0000153c: PUSH1 0x64
0000153e: ADD
0000153f: SWAP1
00001540: REVERT
00001541: JUMPDEST
00001542: DUP5
00001543: PUSH1 0x00
00001545: JUMPDEST
00001546: DUP5
00001547: DUP2
00001548: LT
00001549: ISZERO
0000154a: PUSH2 0x166b
0000154d: JUMPI
0000154e: PUSH1 0x00
00001550: DUP7
00001551: DUP7
00001552: DUP4
00001553: DUP2
00001554: DUP2
00001555: LT
00001556: PUSH2 0x155b
00001559: JUMPI
0000155a: INVALID
0000155b: JUMPDEST
0000155c: SWAP1
0000155d: POP
0000155e: PUSH1 0x20
00001560: MUL
00001561: ADD
00001562: CALLDATALOAD
00001563: PUSH1 0x01
00001565: PUSH1 0x01
00001567: PUSH1 0xa0
00001569: SHL
0000156a: SUB
0000156b: AND
0000156c: SWAP1
0000156d: POP
0000156e: PUSH1 0x00
00001570: DUP6
00001571: DUP6
00001572: DUP5
00001573: DUP2
00001574: DUP2
00001575: LT
00001576: PUSH2 0x157b
00001579: JUMPI
0000157a: INVALID
0000157b: JUMPDEST
0000157c: SWAP1
0000157d: POP
0000157e: PUSH1 0x20
00001580: MUL
00001581: ADD
00001582: CALLDATALOAD
00001583: SWAP1
00001584: POP
00001585: DUP4
00001586: PUSH1 0x01
00001588: PUSH1 0x01
0000158a: PUSH1 0xa0
0000158c: SHL
0000158d: SUB
0000158e: AND
0000158f: PUSH4 0xa9059cbb
00001594: DUP4
00001595: DUP4
00001596: PUSH1 0x40
00001598: MLOAD
00001599: DUP4
0000159a: PUSH4 0xffffffff
0000159f: AND
000015a0: PUSH1 0xe0
000015a2: SHL
000015a3: DUP2
000015a4: MSTORE
000015a5: PUSH1 0x04
000015a7: ADD
000015a8: DUP1
000015a9: DUP4
000015aa: PUSH1 0x01
000015ac: PUSH1 0x01
000015ae: PUSH1 0xa0
000015b0: SHL
000015b1: SUB
000015b2: AND
000015b3: PUSH1 0x01
000015b5: PUSH1 0x01
000015b7: PUSH1 0xa0
000015b9: SHL
000015ba: SUB
000015bb: AND
000015bc: DUP2
000015bd: MSTORE
000015be: PUSH1 0x20
000015c0: ADD
000015c1: DUP3
000015c2: DUP2
000015c3: MSTORE
000015c4: PUSH1 0x20
000015c6: ADD
000015c7: SWAP3
000015c8: POP
000015c9: POP
000015ca: POP
000015cb: PUSH1 0x20
000015cd: PUSH1 0x40
000015cf: MLOAD
000015d0: DUP1
000015d1: DUP4
000015d2: SUB
000015d3: DUP2
000015d4: PUSH1 0x00
000015d6: DUP8
000015d7: DUP1
000015d8: EXTCODESIZE
000015d9: ISZERO
000015da: DUP1
000015db: ISZERO
000015dc: PUSH2 0x15e4
000015df: JUMPI
000015e0: PUSH1 0x00
000015e2: DUP1
000015e3: REVERT
000015e4: JUMPDEST
000015e5: POP
000015e6: GAS
000015e7: CALL
000015e8: ISZERO
000015e9: DUP1
000015ea: ISZERO
000015eb: PUSH2 0x15f8
000015ee: JUMPI
000015ef: RETURNDATASIZE
000015f0: PUSH1 0x00
000015f2: DUP1
000015f3: RETURNDATACOPY
000015f4: RETURNDATASIZE
000015f5: PUSH1 0x00
000015f7: REVERT
000015f8: JUMPDEST
000015f9: POP
000015fa: POP
000015fb: POP
000015fc: POP
000015fd: PUSH1 0x40
000015ff: MLOAD
00001600: RETURNDATASIZE
00001601: PUSH1 0x20
00001603: DUP2
00001604: LT
00001605: ISZERO
00001606: PUSH2 0x160e
00001609: JUMPI
0000160a: PUSH1 0x00
0000160c: DUP1
0000160d: REVERT
0000160e: JUMPDEST
0000160f: POP
00001610: MLOAD
00001611: PUSH2 0x1661
00001614: JUMPI
00001615: PUSH1 0x40
00001617: DUP1
00001618: MLOAD
00001619: PUSH3 0x461bcd
0000161d: PUSH1 0xe5
0000161f: SHL
00001620: DUP2
00001621: MSTORE
00001622: PUSH1 0x20
00001624: PUSH1 0x04
00001626: DUP3
00001627: ADD
00001628: MSTORE
00001629: PUSH1 0x0e
0000162b: PUSH1 0x24
0000162d: DUP3
0000162e: ADD
0000162f: MSTORE
00001630: PUSH32 0x7472616e736665722066616c7365000000000000000000000000000000000000
00001651: PUSH1 0x44
00001653: DUP3
00001654: ADD
00001655: MSTORE
00001656: SWAP1
00001657: MLOAD
00001658: SWAP1
00001659: DUP2
0000165a: SWAP1
0000165b: SUB
0000165c: PUSH1 0x64
0000165e: ADD
0000165f: SWAP1
00001660: REVERT
00001661: JUMPDEST
00001662: POP
00001663: POP
00001664: PUSH1 0x01
00001666: ADD
00001667: PUSH2 0x1545
0000166a: JUMP
0000166b: JUMPDEST
0000166c: POP
0000166d: POP
0000166e: POP
0000166f: POP
00001670: POP
00001671: POP
00001672: POP
00001673: JUMP
00001674: JUMPDEST
00001675: CALLER
00001676: PUSH1 0x00
00001678: SWAP1
00001679: DUP2
0000167a: MSTORE
0000167b: PUSH1 0x03
0000167d: PUSH1 0x20
0000167f: MSTORE
00001680: PUSH1 0x40
00001682: SWAP1
00001683: KECCAK256
00001684: SLOAD
00001685: PUSH1 0xff
00001687: AND
00001688: PUSH2 0x16c7
0000168b: JUMPI
0000168c: PUSH1 0x40
0000168e: DUP1
0000168f: MLOAD
00001690: PUSH3 0x461bcd
00001694: PUSH1 0xe5
00001696: SHL
00001697: DUP2
00001698: MSTORE
00001699: PUSH1 0x20
0000169b: PUSH1 0x04
0000169d: DUP3
0000169e: ADD
0000169f: MSTORE
000016a0: PUSH1 0x0c
000016a2: PUSH1 0x24
000016a4: DUP3
000016a5: ADD
000016a6: MSTORE
000016a7: PUSH12 0x1d5b985d5d1a1bdc9a5e9959
000016b4: PUSH1 0xa2
000016b6: SHL
000016b7: PUSH1 0x44
000016b9: DUP3
000016ba: ADD
000016bb: MSTORE
000016bc: SWAP1
000016bd: MLOAD
000016be: SWAP1
000016bf: DUP2
000016c0: SWAP1
000016c1: SUB
000016c2: PUSH1 0x64
000016c4: ADD
000016c5: SWAP1
000016c6: REVERT
000016c7: JUMPDEST
000016c8: PUSH1 0x40
000016ca: DUP1
000016cb: MLOAD
000016cc: PUSH32 0xdfd1fb7a00000000000000000000000000000000000000000000000000000000
000016ed: DUP2
000016ee: MSTORE
000016ef: PUSH1 0x01
000016f1: PUSH1 0x01
000016f3: PUSH1 0xa0
000016f5: SHL
000016f6: SUB
000016f7: DUP6
000016f8: DUP2
000016f9: AND
000016fa: PUSH1 0x04
000016fc: DUP4
000016fd: ADD
000016fe: SWAP1
000016ff: DUP2
00001700: MSTORE
00001701: PUSH1 0x24
00001703: DUP4
00001704: ADD
00001705: SWAP4
00001706: DUP5
00001707: MSTORE
00001708: PUSH1 0x44
0000170a: DUP4
0000170b: ADD
0000170c: DUP6
0000170d: SWAP1
0000170e: MSTORE
0000170f: SWAP1
00001710: DUP8
00001711: AND
00001712: SWAP3
00001713: PUSH4 0xdfd1fb7a
00001718: SWAP3
00001719: DUP8
0000171a: SWAP3
0000171b: DUP8
0000171c: SWAP3
0000171d: DUP8
0000171e: SWAP3
0000171f: PUSH1 0x64
00001721: ADD
00001722: DUP5
00001723: DUP5
00001724: DUP1
00001725: DUP3
00001726: DUP5
00001727: CALLDATACOPY
00001728: PUSH1 0x00
0000172a: DUP2
0000172b: DUP5
0000172c: ADD
0000172d: MSTORE
0000172e: PUSH1 0x1f
00001730: NOT
00001731: PUSH1 0x1f
00001733: DUP3
00001734: ADD
00001735: AND
00001736: SWAP1
00001737: POP
00001738: DUP1
00001739: DUP4
0000173a: ADD
0000173b: SWAP3
0000173c: POP
0000173d: POP
0000173e: POP
0000173f: SWAP5
00001740: POP
00001741: POP
00001742: POP
00001743: POP
00001744: POP
00001745: PUSH1 0x00
00001747: PUSH1 0x40
00001749: MLOAD
0000174a: DUP1
0000174b: DUP4
0000174c: SUB
0000174d: DUP2
0000174e: PUSH1 0x00
00001750: DUP8
00001751: DUP1
00001752: EXTCODESIZE
00001753: ISZERO
00001754: DUP1
00001755: ISZERO
00001756: PUSH2 0x175e
00001759: JUMPI
0000175a: PUSH1 0x00
0000175c: DUP1
0000175d: REVERT
0000175e: JUMPDEST
0000175f: POP
00001760: GAS
00001761: CALL
00001762: ISZERO
00001763: DUP1
00001764: ISZERO
00001765: PUSH2 0x1772
00001768: JUMPI
00001769: RETURNDATASIZE
0000176a: PUSH1 0x00
0000176c: DUP1
0000176d: RETURNDATACOPY
0000176e: RETURNDATASIZE
0000176f: PUSH1 0x00
00001771: REVERT
00001772: JUMPDEST
00001773: POP
00001774: POP
00001775: POP
00001776: POP
00001777: POP
00001778: POP
00001779: POP
0000177a: POP
0000177b: JUMP
0000177c: JUMPDEST
0000177d: PUSH1 0x00
0000177f: DUP1
00001780: SLOAD
00001781: PUSH1 0x01
00001783: ADD
00001784: SWAP1
00001785: DUP2
00001786: SWAP1
00001787: SSTORE
00001788: PUSH1 0x40
0000178a: DUP1
0000178b: MLOAD
0000178c: PUSH1 0x00
0000178e: NOT
0000178f: NUMBER
00001790: ADD
00001791: BLOCKHASH
00001792: PUSH1 0x20
00001794: DUP1
00001795: DUP4
00001796: ADD
00001797: SWAP2
00001798: SWAP1
00001799: SWAP2
0000179a: MSTORE
0000179b: ADDRESS
0000179c: PUSH1 0x60
0000179e: SHL
0000179f: DUP3
000017a0: DUP5
000017a1: ADD
000017a2: MSTORE
000017a3: PUSH1 0x54
000017a5: DUP1
000017a6: DUP4
000017a7: ADD
000017a8: SWAP5
000017a9: SWAP1
000017aa: SWAP5
000017ab: MSTORE
000017ac: DUP3
000017ad: MLOAD
000017ae: DUP1
000017af: DUP4
000017b0: SUB
000017b1: SWAP1
000017b2: SWAP5
000017b3: ADD
000017b4: DUP5
000017b5: MSTORE
000017b6: PUSH1 0x74
000017b8: SWAP1
000017b9: SWAP2
000017ba: ADD
000017bb: SWAP1
000017bc: SWAP2
000017bd: MSTORE
000017be: DUP2
000017bf: MLOAD
000017c0: SWAP2
000017c1: ADD
000017c2: KECCAK256
000017c3: SWAP1
000017c4: JUMP
000017c5: JUMPDEST
000017c6: PUSH1 0x00
000017c8: PUSH1 0x01
000017ca: PUSH1 0x01
000017cc: PUSH1 0xa0
000017ce: SHL
000017cf: SUB
000017d0: DUP3
000017d1: AND
000017d2: PUSH2 0x1811
000017d5: JUMPI
000017d6: PUSH1 0x40
000017d8: DUP1
000017d9: MLOAD
000017da: PUSH3 0x461bcd
000017de: PUSH1 0xe5
000017e0: SHL
000017e1: DUP2
000017e2: MSTORE
000017e3: PUSH1 0x20
000017e5: PUSH1 0x04
000017e7: DUP3
000017e8: ADD
000017e9: MSTORE
000017ea: PUSH1 0x0c
000017ec: PUSH1 0x24
000017ee: DUP3
000017ef: ADD
000017f0: MSTORE
000017f1: PUSH12 0x7a65726f2061646472657373
000017fe: PUSH1 0xa0
00001800: SHL
00001801: PUSH1 0x44
00001803: DUP3
00001804: ADD
00001805: MSTORE
00001806: SWAP1
00001807: MLOAD
00001808: SWAP1
00001809: DUP2
0000180a: SWAP1
0000180b: SUB
0000180c: PUSH1 0x64
0000180e: ADD
0000180f: SWAP1
00001810: REVERT
00001811: JUMPDEST
00001812: PUSH2 0x1819
00001815: PUSH2 0x177c
00001818: JUMP
00001819: JUMPDEST
0000181a: PUSH1 0x40
0000181c: DUP1
0000181d: MLOAD
0000181e: PUSH1 0x20
00001820: DUP1
00001821: DUP3
00001822: ADD
00001823: DUP4
00001824: MSTORE
00001825: PUSH1 0x01
00001827: PUSH1 0x01
00001829: PUSH1 0xa0
0000182b: SHL
0000182c: SUB
0000182d: SWAP6
0000182e: DUP7
0000182f: AND
00001830: DUP3
00001831: MSTORE
00001832: PUSH1 0x00
00001834: DUP5
00001835: DUP2
00001836: MSTORE
00001837: SWAP7
00001838: SWAP1
00001839: MSTORE
0000183a: SWAP5
0000183b: KECCAK256
0000183c: SWAP4
0000183d: MLOAD
0000183e: DUP5
0000183f: SLOAD
00001840: PUSH1 0x01
00001842: PUSH1 0x01
00001844: PUSH1 0xa0
00001846: SHL
00001847: SUB
00001848: NOT
00001849: AND
0000184a: SWAP4
0000184b: AND
0000184c: SWAP3
0000184d: SWAP1
0000184e: SWAP3
0000184f: OR
00001850: SWAP1
00001851: SWAP3
00001852: SSTORE
00001853: SWAP2
00001854: SWAP1
00001855: POP
00001856: JUMP
00001857: JUMPDEST
00001858: PUSH1 0x00
0000185a: DUP2
0000185b: DUP2
0000185c: MSTORE
0000185d: PUSH1 0x20
0000185f: DUP4
00001860: SWAP1
00001861: MSTORE
00001862: PUSH1 0x40
00001864: DUP2
00001865: KECCAK256
00001866: DUP1
00001867: SLOAD
00001868: PUSH1 0x01
0000186a: PUSH1 0x01
0000186c: PUSH1 0xa0
0000186e: SHL
0000186f: SUB
00001870: AND
00001871: PUSH2 0x18c1
00001874: JUMPI
00001875: PUSH1 0x40
00001877: DUP1
00001878: MLOAD
00001879: PUSH3 0x461bcd
0000187d: PUSH1 0xe5
0000187f: SHL
00001880: DUP2
00001881: MSTORE
00001882: PUSH1 0x20
00001884: PUSH1 0x04
00001886: DUP3
00001887: ADD
00001888: MSTORE
00001889: PUSH1 0x0e
0000188b: PUSH1 0x24
0000188d: DUP3
0000188e: ADD
0000188f: MSTORE
00001890: PUSH32 0x6e6f2073756368206c6f636b4964000000000000000000000000000000000000
000018b1: PUSH1 0x44
000018b3: DUP3
000018b4: ADD
000018b5: MSTORE
000018b6: SWAP1
000018b7: MLOAD
000018b8: SWAP1
000018b9: DUP2
000018ba: SWAP1
000018bb: SUB
000018bc: PUSH1 0x64
000018be: ADD
000018bf: SWAP1
000018c0: REVERT
000018c1: JUMPDEST
000018c2: SLOAD
000018c3: PUSH1 0x01
000018c5: PUSH1 0x01
000018c7: PUSH1 0xa0
000018c9: SHL
000018ca: SUB
000018cb: AND
000018cc: SWAP4
000018cd: SWAP3
000018ce: POP
000018cf: POP
000018d0: POP
000018d1: JUMP
000018d2: JUMPDEST
000018d3: PUSH1 0x00
000018d5: DUP2
000018d6: DUP2
000018d7: MSTORE
000018d8: PUSH1 0x02
000018da: PUSH1 0x20
000018dc: MSTORE
000018dd: PUSH1 0x40
000018df: DUP2
000018e0: KECCAK256
000018e1: DUP1
000018e2: SLOAD
000018e3: PUSH1 0x01
000018e5: PUSH1 0x01
000018e7: PUSH1 0xa0
000018e9: SHL
000018ea: SUB
000018eb: AND
000018ec: PUSH2 0x193c
000018ef: JUMPI
000018f0: PUSH1 0x40
000018f2: DUP1
000018f3: MLOAD
000018f4: PUSH3 0x461bcd
000018f8: PUSH1 0xe5
000018fa: SHL
000018fb: DUP2
000018fc: MSTORE
000018fd: PUSH1 0x20
000018ff: PUSH1 0x04
00001901: DUP3
00001902: ADD
00001903: MSTORE
00001904: PUSH1 0x0e
00001906: PUSH1 0x24
00001908: DUP3
00001909: ADD
0000190a: MSTORE
0000190b: PUSH32 0x6e6f2073756368206c6f636b4964000000000000000000000000000000000000
0000192c: PUSH1 0x44
0000192e: DUP3
0000192f: ADD
00001930: MSTORE
00001931: SWAP1
00001932: MLOAD
00001933: SWAP1
00001934: DUP2
00001935: SWAP1
00001936: SUB
00001937: PUSH1 0x64
00001939: ADD
0000193a: SWAP1
0000193b: REVERT
0000193c: JUMPDEST
0000193d: SLOAD
0000193e: PUSH1 0x01
00001940: PUSH1 0x01
00001942: PUSH1 0xa0
00001944: SHL
00001945: SUB
00001946: AND
00001947: SWAP3
00001948: SWAP2
00001949: POP
0000194a: POP
0000194b: JUMP
0000194c: INVALID
0000194d: LOG2
0000194e: PUSH6 0x627a7a723158
00001955: KECCAK256
00001956: UNKNOWN(0x0F)
00001957: DUP3
00001958: BASEFEE
00001959: UNKNOWN(0xED)
0000195a: UNKNOWN(0xD1)
0000195b: SWAP7
0000195c: SUB
0000195d: ADDMOD
0000195e: UNKNOWN(0xD4)
0000195f: EXP
00001960: UNKNOWN(0xEC)
00001961: UNKNOWN(0x2F)
00001962: SWAP13
00001963: SGT
00001964: UNKNOWN(0xCB)
00001965: MSTORE
00001966: SWAP13
00001967: UNKNOWN(0xA9)
00001968: UNKNOWN(0xB8)
00001969: UNKNOWN(0xC6)
0000196a: UNKNOWN(0x2A)
0000196b: SWAP8
0000196c: UNKNOWN(0x29)
0000196d: UNKNOWN(0x24)
0000196e: UNKNOWN(0x27)
0000196f: UNKNOWN(0xD1)
00001970: UNKNOWN(0xC4)
00001971: PUSH7 0x6470783564736f
00001979: PUSH13

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591
call_targets: 0x5f65f7b609678448494de4c87521cdf6cef1e932
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x5f65f7b609678448494de4c87521cdf6cef1e932"
    ],
    "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": "0xefcab173",
            "selector": "0xefcab173",
            "calldata_variants": [
                "0xefcab173",
                "0xefcab1730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa558b71",
            "selector": "0xfa558b71",
            "calldata_variants": [
                "0xfa558b71",
                "0xfa558b710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd404b4c",
            "selector": "0xfd404b4c",
            "calldata_variants": [
                "0xfd404b4c",
                "0xfd404b4c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcf6e4488",
            "selector": "0xcf6e4488",
            "calldata_variants": [
                "0xcf6e4488",
                "0xcf6e44880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdfd1fb7a",
            "selector": "0xdfd1fb7a",
            "calldata_variants": [
                "0xdfd1fb7a",
                "0xdfd1fb7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96aa7368",
            "selector": "0x96aa7368",
            "calldata_variants": [
                "0x96aa7368",
                "0x96aa73680000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98a89897",
            "selector": "0x98a89897",
            "calldata_variants": [
                "0x98a89897",
                "0x98a898970000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb81fecf",
            "selector": "0xcb81fecf",
            "calldata_variants": [
                "0xcb81fecf",
                "0xcb81fecf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2847,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3484,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4141,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 7,
    "guards_detected": []
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591
call_targets: 0x5f65f7b609678448494de4c87521cdf6cef1e932
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x8c5970e1997638de1afe069ab553b8e5a27dc114fe26cd9df72e1f129136a591",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x5f65f7b609678448494de4c87521cdf6cef1e932"
    ],
    "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": "0xefcab173",
            "selector": "0xefcab173",
            "calldata_variants": [
                "0xefcab173",
                "0xefcab1730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfa558b71",
            "selector": "0xfa558b71",
            "calldata_variants": [
                "0xfa558b71",
                "0xfa558b710000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xfd404b4c",
            "selector": "0xfd404b4c",
            "calldata_variants": [
                "0xfd404b4c",
                "0xfd404b4c0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcf6e4488",
            "selector": "0xcf6e4488",
            "calldata_variants": [
                "0xcf6e4488",
                "0xcf6e44880000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdfd1fb7a",
            "selector": "0xdfd1fb7a",
            "calldata_variants": [
                "0xdfd1fb7a",
                "0xdfd1fb7a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x96aa7368",
            "selector": "0x96aa7368",
            "calldata_variants": [
                "0x96aa7368",
                "0x96aa73680000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x98a89897",
            "selector": "0x98a89897",
            "calldata_variants": [
                "0x98a89897",
                "0x98a898970000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcb81fecf",
            "selector": "0xcb81fecf",
            "calldata_variants": [
                "0xcb81fecf",
                "0xcb81fecf0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2847,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3484,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4141,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 7,
    "guards_detected": [],
    "untrusted_call_count": 7
}
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": 6
}