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

Analysis Run

aba7d455-958d-45f4-99e5-807c87d03857

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 2, 2026 3:16 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
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31273 report.consolidate complete 1 / 1 3 months ago
110636 artifact.fetch complete 1 / 3 1 week ago
110637 tool.cast_disasm complete 1 / 3 1 week ago
110638 analysis.bundle complete 1 / 3 1 week ago
110639 capability.graph complete 1 / 3 1 week ago
110640 detector.run complete 1 / 3 1 week ago
110641 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.
View stderr
[codex:543046] OpenAI Codex v0.77.0 (research preview)
[codex:543046] --------
[codex:543046] workdir: /tmp/codex-multi-7_9jik4t
[codex:543046] model: gpt-5.2-codex
[codex:543046] provider: openai
[codex:543046] approval: never
[codex:543046] sandbox: read-only
[codex:543046] reasoning effort: xhigh
[codex:543046] reasoning summaries: auto
[codex:543046] session id: 019b7f3e-7e25-73b1-9985-c022c57bd81e
[codex:543046] --------
[codex:543046] user
[codex:543046] 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:543046] 
[codex:543046] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:543046] 
[codex:543046] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:543046] - Gas inefficiency, code quality, or best practices
[codex:543046] - Theoretical vulnerabilities without a clear extraction path
[codex:543046] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:543046] - Issues requiring social engineering or off-chain coordination
[codex:543046] 
[codex:543046] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:543046] - CALL/DELEGATECALL with controllable destination or calldata
[codex:543046] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:543046] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:543046] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:543046] - External calls before state updates (reentrancy)
[codex:543046] - SELFDESTRUCT with controllable beneficiary
[codex:543046] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:543046] 
[codex:543046] For each finding, you MUST explain:
[codex:543046] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:543046] 2. The concrete sequence of transactions to extract value
[codex:543046] 3. Why you believe this is exploitable (not just suspicious)
[codex:543046] 
[codex:543046] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:543046] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:543046] 
[codex:543046] Output MUST be valid JSON matching the provided schema.
[codex:543046] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:543046] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:543046] mcp startup: no servers
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Preparing to read BYTECODE_BUNDLE.txt**
[codex:543046] exec
[codex:543046] /bin/bash -lc ls in /tmp/codex-multi-7_9jik4t succeeded in 6ms:
[codex:543046] BYTECODE_BUNDLE.txt
[codex:543046] codex-output-schema.json
[codex:543046] exec
[codex:543046] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-7_9jik4t succeeded in 5ms:
[codex:543046] Runtime bytecode bundle for best-effort auditing.
[codex:543046] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:543046] 
[codex:543046] FILE: runtime_bytecode.hex
[codex:543046] 0x6080604052600436106100ab5760003560e01c806396de31e01161006457806396de31e01461016757806399f5e5cb14610187578063ade9b3741461019a578063c0ee0b8a146101c7578063ed3dae64146101e7578063f50c1ed1146101fa576100b2565b806306c74e8d146100b45780630f032cbe146100c757806310d1e85c146100f2578063709dd40e1461011257806374764850146101275780638b41871314610147576100b2565b366100b257005b005b6100b26100c236600461168b565b61020d565b3480156100d357600080fd5b506100dc610507565b6040516100e991906119fe565b60405180910390f35b3480156100fe57600080fd5b506100b261010d3660046113bf565b61050d565b34801561011e57600080fd5b506100b261075f565b34801561013357600080fd5b506100b261014236600461133b565b6107b8565b34801561015357600080fd5b506100b261016236600461129c565b610845565b34801561017357600080fd5b506100b261018236600461125d565b6108c8565b6100b261019536600461156d565b610914565b3480156101a657600080fd5b506101ba6101b536600461125d565b610992565b6040516100e991906118af565b3480156101d357600080fd5b506100b26101e2366004611366565b610aba565b6100b26101f5366004611426565b610ac0565b6100b2610208366004611613565b610af3565b60408051600380825260808201909252600091816020015b61022d610fb0565b815260200190600190039081610225575050604080516101008101825260018152600060208083018290528351608081018552828152949550919392840192918201908152602001600081526020018781525081526020016000815260200160008152602001306001600160a01b031681526020016000815260200160405180602001604052806000815250815250816000815181106102c957fe5b602090810291909101015260408051610100810190915280600881526020016000815260200160405180608001604052806000151581526020016000600181111561031057fe5b815260200160008152602001600081525081526020016000815260200160008152602001306001600160a01b0316815260200160008152602001848460405160200161035d9291906118ba565b6040516020818303038152906040528152508160018151811061037c57fe5b60209081029190910101526040805161010081019091528060008152602001600081526020016040518060800160405280600115158152602001600060018111156103c357fe5b8152602001600081526020018760020181525081526020016000815260200160008152602001306001600160a01b0316815260200160008152602001604051806020016040528060008152508152508160028151811061041f57fe5b6020908102919091010152604080516001808252818301909252600091816020015b610449611002565b8152602001906001900390816104415790505090506040518060400160405280306001600160a01b0316815260200160018152508160008151811061048a57fe5b602090810291909101015260405163a67a6a4560e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e9063a67a6a45906104ce908490869060040161178f565b600060405180830381600087803b1580156104e857600080fd5b505af11580156104fc573d6000803e3d6000fd5b505050505050505050565b60001981565b6000336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561054857600080fd5b505afa15801561055c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105809190611280565b90506000336001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156105bd57600080fd5b505afa1580156105d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f59190611280565b60405163e6a4390560e01b8152909150735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063e6a43905906106319085908590600401611775565b60206040518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106819190611280565b6001600160a01b0316336001600160a01b0316146106ba5760405162461bcd60e51b81526004016106b190611933565b60405180910390fd5b6001600160a01b03871630146106e25760405162461bcd60e51b81526004016106b1906119e1565b600080806106f2868801886115bc565b9250925092508060001461074957811561072a578089116107255760405162461bcd60e51b81526004016106b190611916565b610749565b8088116107495760405162461bcd60e51b81526004016106b1906119c4565b61075283610b45565b5050505050505050505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016106b190611950565b60405133904780156108fc02916000818181858888f193505050501580156107b5573d6000803e3d6000fd5b50565b6040516370a0823160e01b815281906001600160a01b038416906370a08231906107e6903090600401611748565b60206040518083038186803b1580156107fe57600080fd5b505afa158015610812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108369190611673565b101561084157600080fd5b5050565b33731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e146108785760405162461bcd60e51b81526004016106b19061196d565b6001600160a01b03831630146108a05760405162461bcd60e51b81526004016106b1906119e1565b6000818060200190518101906108b69190611458565b90506108c181610b45565b5050505050565b6000546001600160a01b031633146108f25760405162461bcd60e51b81526004016106b190611950565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461093e5760405162461bcd60e51b81526004016106b190611950565b416001600160a01b03821614156109675760405162461bcd60e51b81526004016106b19061198a565b416109845760405162461bcd60e51b81526004016106b1906119a7565b61098d82610b45565b505050565b600080546001600160a01b031633146109bd5760405162461bcd60e51b81526004016106b190611950565b6040516370a0823160e01b81526001600160a01b0383169063a9059cbb90339083906370a08231906109f3903090600401611748565b60206040518083038186803b158015610a0b57600080fd5b505afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190611673565b6040518363ffffffff1660e01b8152600401610a6092919061175c565b602060405180830381600087803b158015610a7a57600080fd5b505af1158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190611657565b90505b919050565b50505050565b6000546001600160a01b03163314610aea5760405162461bcd60e51b81526004016106b190611950565b61084181610b45565b6000546001600160a01b03163314610b1d5760405162461bcd60e51b81526004016106b190611950565b806001600160801b031643146109675760405162461bcd60e51b81526004016106b1906118f9565b6000805b8251811015610faa576000838281518110610b6057fe5b60200260200101516000015190506000848381518110610b7c57fe5b6020026020010151604001516001600160801b0316905060038260ff16901c60011660ff1660011415610c165773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610bf857600080fd5b505af1158015610c0c573d6000803e3d6000fd5b5050505050600090505b6001600483901c81161415610c29575060005b6000858481518110610c3757fe5b60200260200101516020015190506000868581518110610c5357fe5b602002602001015160800151905060005a905060016001600160a01b03841615610c8757600080845160208601888887f190505b60018087161415610cb5578060ff16600114610cb55760405162461bcd60e51b81526004016106b1906118dc565b8060ff16600114610ce85760ff8816610ccf5786600a0197505b600186811c81161415610ce85750505050505050610ab5565b6001600487901c81161415610eb5576000898881518110610d0557fe5b6020026020010151604001516001600160801b031690508060001415610db3576040516370a0823160e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190610d5c903090600401611748565b60206040518083038186803b158015610d7457600080fd5b505afa158015610d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dac9190611673565b9050610e4a565b8060011415610e4a576040516370a0823160e01b815260029073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190610df6903090600401611748565b60206040518083038186803b158015610e0e57600080fd5b505afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e469190611673565b0390505b604051632e1a7d4d60e01b815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90610e819084906004016119fe565b600060405180830381600087803b158015610e9b57600080fd5b505af1158015610eaf573d6000803e3d6000fd5b50505050505b6000898881518110610ec357fe5b6020026020010151606001516001600160801b0316905080600014610f97576001600288901c81161415610f8b576040516370a0823160e01b8152819073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190610f2a903090600401611748565b60206040518083038186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7a9190611673565b470111610f8657600080fd5b610f97565b804711610f9757600080fd5b505060019095019450610b499350505050565b50919050565b604080516101008101825260008082526020820152908101610fd0611019565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b604080518082019091526000808252602082015290565b604080516080810190915260008082526020820190815260200160008152602001600081525090565b8035610ab581611a9e565b8051610ab581611a9e565b600082601f830112611068578081fd5b8135602061107d61107883611a2a565b611a07565b82815281810190858301855b85811015611147578135880160a080601f19838d030112156110a9578889fd5b604080518281016001600160401b0382821081831117156110c657fe5b8184526110d48b8701611247565b83526110e1848701611042565b8b840152606091506110f4828701611231565b8484015260809350611107848701611231565b8383015293850135938085111561111c578c8dfd5b505061112c8d8a8587010161119a565b91810191909152865250509284019290840190600101611089565b5090979650505050505050565b60008083601f840112611165578182fd5b5081356001600160401b0381111561117b578182fd5b60208301915083602082850101111561119357600080fd5b9250929050565b600082601f8301126111aa578081fd5b81356111b861107882611a47565b8181528460208386010111156111cc578283fd5b816020850160208301379081016020019190915292915050565b600082601f8301126111f6578081fd5b815161120461107882611a47565b818152846020838601011115611218578283fd5b611229826020830160208701611a68565b949350505050565b8035610ab581611ac1565b8051610ab581611ac1565b8035610ab581611ad6565b8051610ab581611ad6565b60006020828403121561126e578081fd5b813561127981611a9e565b9392505050565b600060208284031215611291578081fd5b815161127981611a9e565b600080600083850360808112156112b1578283fd5b84356112bc81611a9e565b93506040601f19820112156112cf578283fd5b50604051604081016001600160401b0382821081831117156112ed57fe5b816040526020870135915061130182611a9e565b8183526040870135602084015291935060608601359180831115611323578384fd5b50506113318682870161119a565b9150509250925092565b6000806040838503121561134d578182fd5b823561135881611a9e565b946020939093013593505050565b6000806000806060858703121561137b578182fd5b843561138681611a9e565b93506020850135925060408501356001600160401b038111156113a7578283fd5b6113b387828801611154565b95989497509550505050565b6000806000806000608086880312156113d6578283fd5b85356113e181611a9e565b9450602086013593506040860135925060608601356001600160401b03811115611409578182fd5b61141588828901611154565b969995985093965092949392505050565b600060208284031215611437578081fd5b81356001600160401b0381111561144c578182fd5b61122984828501611058565b6000602080838503121561146a578182fd5b82516001600160401b0380821115611480578384fd5b818501915085601f830112611493578384fd5b81516114a161107882611a2a565b81815284810190848601875b8481101561155e578151870160a080601f19838f030112156114cd578a8bfd5b604080518281018181108b821117156114e257fe5b82526114ef848d01611252565b81526114fc82850161104d565b8c820152606061150d81860161123c565b838301526080925061152083860161123c565b90820152918301519189831115611535578c8dfd5b6115438f8d858701016111e6565b918101919091528652505092870192908701906001016114ad565b50909998505050505050505050565b6000806040838503121561157f578182fd5b82356001600160401b03811115611594578283fd5b6115a085828601611058565b92505060208301356115b181611a9e565b809150509250929050565b6000806000606084860312156115d0578081fd5b83356001600160401b038111156115e5578182fd5b6115f186828701611058565b935050602084013561160281611ab3565b929592945050506040919091013590565b60008060408385031215611625578182fd5b82356001600160401b0381111561163a578283fd5b61164685828601611058565b92505060208301356115b181611ac1565b600060208284031215611668578081fd5b815161127981611ab3565b600060208284031215611684578081fd5b5051919050565b60008060006060848603121561169f578081fd5b8335925060208401356001600160401b038111156116bb578182fd5b6116c78682870161119a565b925050604084013590509250925092565b6001600160a01b03169052565b600081518084526116fd816020860160208601611a68565b601f01601f19169290920160200192915050565b805115158252602081015161172581611a94565b6020830152604081015161173881611a94565b6040830152606090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6040808252835182820181905260009190606090818501906020808901865b838110156117dc57815180516001600160a01b031686528301518386015293860193908201906001016117ae565b5050868303818801528751808452818401925080820284018201898301885b8381101561189e57601f19878403018652815161016081516009811061181d57fe5b855281870151878601528a8201516118378c870182611711565b508982015160c081818801526080840151915060e0828189015260a085015192506118666101008901846116d8565b90840151610120880152909201516101408601829052915061188a818601836116e5565b9787019794505050908401906001016117fb565b50909b9a5050505050505050505050565b901515815260200190565b6000604082526118cd60408301856116e5565b90508260208301529392505050565b60208082526003908201526267727760e81b604082015260600190565b60208082526003908201526231b7b760e91b604082015260600190565b60208082526003908201526206263360ec1b604082015260600190565b6020808252600390820152621d58dd60ea1b604082015260600190565b60208082526003908201526262727360e81b604082015260600190565b602080825260039082015262736d6360e81b604082015260600190565b60208082526003908201526263686d60e81b604082015260600190565b60208082526003908201526231b43d60e91b604082015260600190565b60208082526003908201526262633160e81b604082015260600190565b6020808252600390820152620eaced60eb1b604082015260600190565b90815260200190565b6040518181016001600160401b0381118282101715611a2257fe5b604052919050565b60006001600160401b03821115611a3d57fe5b5060209081020190565b60006001600160401b03821115611a5a57fe5b50601f01601f191660200190565b60005b83811015611a83578181015183820152602001611a6b565b83811115610aba5750506000910152565b600281106107b557fe5b6001600160a01b03811681146107b557600080fd5b80151581146107b557600080fd5b6001600160801b03811681146107b557600080fd5b60ff811681146107b557600080fdfea2646970667358221220b50aa32462c73d238da4b4e2d33c7886f89adaba289b1589c9e80adb7926cebe64736f6c63430007060033
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Parsing and analyzing bytecode functions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] # extract hex after 0x
[codex:543046] m=re.search(r'0x([0-9a-fA-F]+)',code)
[codex:543046] hexstr=m.group(1)
[codex:543046] # disassemble
[codex:543046] opcodes=[]
[codex:543046] # opcode names
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # disassemble with pc
[codex:543046] pc=0
[codex:543046] ops=[]
[codex:543046] while pc<len(bs):
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         ops.append((pc,name,data.hex()))
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         ops.append((pc,name,None))
[codex:543046]         pc+=1
[codex:543046] 
[codex:543046] # find dangerous ops
[codex:543046] for op in ['DELEGATECALL','CALLCODE','SELFDESTRUCT']:
[codex:543046]     locs=[pc for pc,name,data in ops if name==op]
[codex:543046]     print(op,locs)
[codex:543046] 
[codex:543046] # count CALLs
[codex:543046] call_locs=[pc for pc,name,data in ops if name=='CALL']
[codex:543046] print('CALL count',len(call_locs))
[codex:543046] print('first 20 CALL pcs',call_locs[:20])
[codex:543046] 
[codex:543046] # find SSTORE
[codex:543046] sstore_locs=[pc for pc,name,data in ops if name=='SSTORE']
[codex:543046] print('SSTORE pcs',sstore_locs)
[codex:543046] 
[codex:543046] # find ecrecover: looking for precompile address 1? It's STATICCALL to address 0x01? We'll search for PUSH4 0x... not easy.
[codex:543046] 
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 38ms:
[codex:543046] DELEGATECALL []
[codex:543046] CALLCODE []
[codex:543046] SELFDESTRUCT []
[codex:543046] CALL count 6
[codex:543046] first 20 CALL pcs [1259, 1951, 2685, 3067, 3204, 3742]
[codex:543046] SSTORE pcs [2322]
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing CALL instructions for control flow**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] m=re.search(r'0x([0-9a-fA-F]+)',code)
[codex:543046] hexstr=m.group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode map
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] # disassemble into list
[codex:543046] ops=[]
[codex:543046] pc=0
[codex:543046] while pc<len(bs):
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         ops.append((pc,name,data.hex()))
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         ops.append((pc,name,None))
[codex:543046]         pc+=1
[codex:543046] 
[codex:543046] # map pc to index
[codex:543046] pc_to_idx={pc:i for i,(pc,_,_) in enumerate(ops)}
[codex:543046] call_pcs=[pc for pc,name,_ in ops if name=='CALL']
[codex:543046] for pc in call_pcs:
[codex:543046]     idx=pc_to_idx[pc]
[codex:543046]     start=max(0,idx-15)
[codex:543046]     end=min(len(ops),idx+10)
[codex:543046]     print('--- CALL at pc',pc,'---')
[codex:543046]     for i in range(start,end):
[codex:543046]         p,n,d=ops[i]
[codex:543046]         if d is None:
[codex:543046]             print(f'{p:04x}: {n}')
[codex:543046]         else:
[codex:543046]             print(f'{p:04x}: {n} {d}')
[codex:543046] 
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] --- CALL at pc 1259 ---
[codex:543046] 04d8: PUSH1 00
[codex:543046] 04da: DUP8
[codex:543046] 04db: DUP1
[codex:543046] 04dc: EXTCODESIZE
[codex:543046] 04dd: ISZERO
[codex:543046] 04de: DUP1
[codex:543046] 04df: ISZERO
[codex:543046] 04e0: PUSH2 04e8
[codex:543046] 04e3: JUMPI
[codex:543046] 04e4: PUSH1 00
[codex:543046] 04e6: DUP1
[codex:543046] 04e7: REVERT
[codex:543046] 04e8: JUMPDEST
[codex:543046] 04e9: POP
[codex:543046] 04ea: GAS
[codex:543046] 04eb: CALL
[codex:543046] 04ec: ISZERO
[codex:543046] 04ed: DUP1
[codex:543046] 04ee: ISZERO
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Mapping CALL instructions to functions and access control**
[codex:543046] 
[codex:543046] I’m inspecting the CALL instructions at various program counters to understand if any are user-controllable or lack access control. By mapping each CALL to its enclosing function via nearby JUMPDESTs and analyzing the dispatcher’s function selectors, I’ll check for owner restrictions or unprotected external calls that could pose vulnerabilities. This involves disassembling around function entries and parsing dispatcher jump addresses to confirm which functions require authorization before issuing CALLs.
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # Quick parse: find pattern PUSH4 <sel> EQ PUSH2 <dest> JUMPI
[codex:543046] # We'll scan for opcodes 0x63 (PUSH4) etc.
[codex:543046] 
[codex:543046] pc=0
[codex:543046] entries=[]
[codex:543046] # simple disasm
[codex:543046] while pc<len(bs):
[codex:543046]     op=bs[pc]
[codex:543046]     if op==0x63: # PUSH4
[codex:543046]         sel=int.from_bytes(bs[pc+1:pc+5],'big')
[codex:543046]         # check pattern: PUSH4 sel, ???, EQ, PUSH2 dest, JUMPI
[codex:543046]         # Actually dispatcher: DUP1 PUSH4 sel EQ PUSH2 dest JUMPI. We'll just parse next bytes to find PUSH2 dest after EQ.
[codex:543046]         # Let's just search forward 10 bytes for PUSH2.
[codex:543046]         for off in range(5,20):
[codex:543046]             if pc+off < len(bs) and bs[pc+off]==0x61: # PUSH2
[codex:543046]                 dest=int.from_bytes(bs[pc+off+1:pc+off+3],'big')
[codex:543046]                 # ensure JUMPI later
[codex:543046]                 # We will record and break
[codex:543046]                 entries.append((sel,dest,pc))
[codex:543046]                 break
[codex:543046]     pc+=1
[codex:543046] 
[codex:543046] # Remove duplicates by selector
[codex:543046] seen=set();
[codex:543046] unique=[]
[codex:543046] for sel,dest,pc in entries:
[codex:543046]     if sel not in seen:
[codex:543046]         seen.add(sel)
[codex:543046]         unique.append((sel,dest))
[codex:543046] 
[codex:543046] print('selectors:')
[codex:543046] for sel,dest in unique:
[codex:543046]     print(hex(sel), hex(dest))
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 25ms:
[codex:543046] selectors:
[codex:543046] 0x96de31e0 0x64
[codex:543046] 0x99f5e5cb 0x187
[codex:543046] 0xade9b374 0x19a
[codex:543046] 0xc0ee0b8a 0x1c7
[codex:543046] 0xed3dae64 0x1e7
[codex:543046] 0xf50c1ed1 0x1fa
[codex:543046] 0x6c74e8d 0xb4
[codex:543046] 0xf032cbe 0xc7
[codex:543046] 0x10d1e85c 0xf2
[codex:543046] 0x709dd40e 0x112
[codex:543046] 0x74764850 0x127
[codex:543046] 0x8b418713 0x147
[codex:543046] 0xa67a6a45 0x4ce
[codex:543046] 0xe6a43905 0x631
[codex:543046] 0x70a08231 0x7e6
[codex:543046] 0xa9059cbb 0x9f3
[codex:543046] 0xffffffff 0xa60
[codex:543046] 0x2e1a7d4d 0xe81
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing function entries for access control**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read()
[codex:543046] hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode names map for readability
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] entries=[0x00b4,0x00c7,0x00f2,0x0112,0x0127,0x0147,0x0167,0x0187,0x019a,0x01c7,0x01e7,0x01fa]
[codex:543046] 
[codex:543046] def disasm_from(pc,count=30):
[codex:543046]     i=0
[codex:543046]     cur=pc
[codex:543046]     res=[]
[codex:543046]     while i<count and cur<len(bs):
[codex:543046]         op=bs[cur]
[codex:543046]         name=names.get(op,'UNKNOWN')
[codex:543046]         if 0x60<=op<=0x7f:
[codex:543046]             n=op-0x5f
[codex:543046]             data=bs[cur+1:cur+1+n]
[codex:543046]             res.append(f'{cur:04x}: {name} {data.hex()}')
[codex:543046]             cur+=1+n
[codex:543046]         else:
[codex:543046]             res.append(f'{cur:04x}: {name}')
[codex:543046]             cur+=1
[codex:543046]         i+=1
[codex:543046]     return res
[codex:543046] 
[codex:543046] for pc in entries:
[codex:543046]     print(f'== function at {pc:04x} ==')
[codex:543046]     print('\\n'.join(disasm_from(pc,25)))
[codex:543046]     print()
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 30ms:
[codex:543046] == function at 00b4 ==
[codex:543046] 00b4: JUMPDEST
[codex:543046] 00b5: PUSH2 00b2
[codex:543046] 00b8: PUSH2 00c2
[codex:543046] 00bb: CALLDATASIZE
[codex:543046] 00bc: PUSH1 04
[codex:543046] 00be: PUSH2 168b
[codex:543046] 00c1: JUMP
[codex:543046] 00c2: JUMPDEST
[codex:543046] 00c3: PUSH2 020d
[codex:543046] 00c6: JUMP
[codex:543046] 00c7: JUMPDEST
[codex:543046] 00c8: CALLVALUE
[codex:543046] 00c9: DUP1
[codex:543046] 00ca: ISZERO
[codex:543046] 00cb: PUSH2 00d3
[codex:543046] 00ce: JUMPI
[codex:543046] 00cf: PUSH1 00
[codex:543046] 00d1: DUP1
[codex:543046] 00d2: REVERT
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing function selectors and callvalue checks**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode names
[codex:543046] names={
[codex:543046] 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:543046] 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:543046] 0x20:'SHA3',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] # disasm around 0x04c0-0x0505
[codex:543046] start=0x04b0; end=0x0508
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 26ms:
[codex:543046] 04b0: PUSH10 4b0c3659614e4e9063a6
[codex:543046] 04bb: PUSH27 6a45906104ce908490869060040161178f565b6000604051808303
[codex:543046] 04d7: DUP2
[codex:543046] 04d8: PUSH1 00
[codex:543046] 04da: DUP8
[codex:543046] 04db: DUP1
[codex:543046] 04dc: EXTCODESIZE
[codex:543046] 04dd: ISZERO
[codex:543046] 04de: DUP1
[codex:543046] 04df: ISZERO
[codex:543046] 04e0: PUSH2 04e8
[codex:543046] 04e3: JUMPI
[codex:543046] 04e4: PUSH1 00
[codex:543046] 04e6: DUP1
[codex:543046] 04e7: REVERT
[codex:543046] 04e8: JUMPDEST
[codex:543046] 04e9: POP
[codex:543046] 04ea: GAS
[codex:543046] 04eb: CALL
[codex:543046] 04ec: ISZERO
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing disassembly starting points**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # list JUMPDESTs around 0x0400-0x0500
[codex:543046] for pc,b in enumerate(bs):
[codex:543046]     if b==0x5b and 0x0400<=pc<=0x0500:
[codex:543046]         print(hex(pc))
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 27ms:
[codex:543046] 0x41f
[codex:543046] 0x441
[codex:543046] 0x449
[codex:543046] 0x48a
[codex:543046] 0x4ce
[codex:543046] 0x4e8
[codex:543046] 0x4fc
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Examining code from 0x4ce to 0x4ff**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # opcode names map (short)
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x4ce; end=0x50a
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 26ms:
[codex:543046] 04ce: JUMPDEST
[codex:543046] 04cf: PUSH1 00
[codex:543046] 04d1: PUSH1 40
[codex:543046] 04d3: MLOAD
[codex:543046] 04d4: DUP1
[codex:543046] 04d5: DUP4
[codex:543046] 04d6: SUB
[codex:543046] 04d7: DUP2
[codex:543046] 04d8: PUSH1 00
[codex:543046] 04da: DUP8
[codex:543046] 04db: DUP1
[codex:543046] 04dc: EXTCODESIZE
[codex:543046] 04dd: ISZERO
[codex:543046] 04de: DUP1
[codex:543046] 04df: ISZERO
[codex:543046] 04e0: PUSH2 04e8
[codex:543046] 04e3: JUMPI
[codex:543046] 04e4: PUSH1 00
[codex:543046] 04e6: DUP1
[codex:543046] 04e7: REVERT
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing CALL arguments and contract addresses**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map abbreviated
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x050d; end=0x06f0
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 25ms:
[codex:543046] 050d: JUMPDEST
[codex:543046] 050e: PUSH1 00
[codex:543046] 0510: CALLER
[codex:543046] 0511: PUSH1 01
[codex:543046] 0513: PUSH1 01
[codex:543046] 0515: PUSH1 a0
[codex:543046] 0517: SHL
[codex:543046] 0518: SUB
[codex:543046] 0519: AND
[codex:543046] 051a: PUSH4 0dfe1681
[codex:543046] 051f: PUSH1 40
[codex:543046] 0521: MLOAD
[codex:543046] 0522: DUP2
[codex:543046] 0523: PUSH4 ffffffff
[codex:543046] 0528: AND
[codex:543046] 0529: PUSH1 e0
[codex:543046] 052b: SHL
[codex:543046] 052c: DUP2
[codex:543046] 052d: MSTORE
[codex:543046] 052e: PUSH1 04
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing Uniswap V2 pair validation functions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x07b8; end=0x0846
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 23ms:
[codex:543046] 07b8: JUMPDEST
[codex:543046] 07b9: PUSH1 40
[codex:543046] 07bb: MLOAD
[codex:543046] 07bc: PUSH4 70a08231
[codex:543046] 07c1: PUSH1 e0
[codex:543046] 07c3: SHL
[codex:543046] 07c4: DUP2
[codex:543046] 07c5: MSTORE
[codex:543046] 07c6: DUP2
[codex:543046] 07c7: SWAP1
[codex:543046] 07c8: PUSH1 01
[codex:543046] 07ca: PUSH1 01
[codex:543046] 07cc: PUSH1 a0
[codex:543046] 07ce: SHL
[codex:543046] 07cf: SUB
[codex:543046] 07d0: DUP5
[codex:543046] 07d1: AND
[codex:543046] 07d2: SWAP1
[codex:543046] 07d3: PUSH4 70a08231
[codex:543046] 07d8: SWAP1
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing contract functions 0x07b8 and 0x0845**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x0845; end=0x0900
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] 0845: JUMPDEST
[codex:543046] 0846: CALLER
[codex:543046] 0847: PUSH20 1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e
[codex:543046] 085c: EQ
[codex:543046] 085d: PUSH2 0878
[codex:543046] 0860: JUMPI
[codex:543046] 0861: PUSH1 40
[codex:543046] 0863: MLOAD
[codex:543046] 0864: PUSH3 461bcd
[codex:543046] 0868: PUSH1 e5
[codex:543046] 086a: SHL
[codex:543046] 086b: DUP2
[codex:543046] 086c: MSTORE
[codex:543046] 086d: PUSH1 04
[codex:543046] 086f: ADD
[codex:543046] 0870: PUSH2 06b1
[codex:543046] 0873: SWAP1
[codex:543046] 0874: PUSH2 196d
[codex:543046] 0877: JUMP
[codex:543046] 0878: JUMPDEST
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing function access restrictions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x0914; end=0x0993
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 23ms:
[codex:543046] 0914: JUMPDEST
[codex:543046] 0915: PUSH1 00
[codex:543046] 0917: SLOAD
[codex:543046] 0918: PUSH1 01
[codex:543046] 091a: PUSH1 01
[codex:543046] 091c: PUSH1 a0
[codex:543046] 091e: SHL
[codex:543046] 091f: SUB
[codex:543046] 0920: AND
[codex:543046] 0921: CALLER
[codex:543046] 0922: EQ
[codex:543046] 0923: PUSH2 093e
[codex:543046] 0926: JUMPI
[codex:543046] 0927: PUSH1 40
[codex:543046] 0929: MLOAD
[codex:543046] 092a: PUSH3 461bcd
[codex:543046] 092e: PUSH1 e5
[codex:543046] 0930: SHL
[codex:543046] 0931: DUP2
[codex:543046] 0932: MSTORE
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing owner-only functions and coinbase checks**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x0af3; end=0x0b30
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] 0af3: JUMPDEST
[codex:543046] 0af4: PUSH1 00
[codex:543046] 0af6: SLOAD
[codex:543046] 0af7: PUSH1 01
[codex:543046] 0af9: PUSH1 01
[codex:543046] 0afb: PUSH1 a0
[codex:543046] 0afd: SHL
[codex:543046] 0afe: SUB
[codex:543046] 0aff: AND
[codex:543046] 0b00: CALLER
[codex:543046] 0b01: EQ
[codex:543046] 0b02: PUSH2 0b1d
[codex:543046] 0b05: JUMPI
[codex:543046] 0b06: PUSH1 40
[codex:543046] 0b08: MLOAD
[codex:543046] 0b09: PUSH3 461bcd
[codex:543046] 0b0d: PUSH1 e5
[codex:543046] 0b0f: SHL
[codex:543046] 0b10: DUP2
[codex:543046] 0b11: MSTORE
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing potential unprotected executor vulnerability**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] caller_pcs=[i for i,b in enumerate(bs) if b==0x33]
[codex:543046] print('CALLER pcs', [hex(pc) for pc in caller_pcs])
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 23ms:
[codex:543046] CALLER pcs ['0x12d', '0x510', '0x585', '0x68b', '0x6af', '0x76c', '0x78d', '0x846', '0x8d5', '0x921', '0x9a0', '0x9dc', '0xacd', '0xb00', '0x1925', '0x1b1a']
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing CALLER usage and contract interactions**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] # search for selector 095ea7b3
[codex:543046] print('095ea7b3' in hexstr)
[codex:543046] # list occurrences of push4 095ea7b3
[codex:543046] for m in re.finditer('63'+'095ea7b3',hexstr):
[codex:543046]     print('occ at',m.start()//2)
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 24ms:
[codex:543046] False
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing Uniswap V2 callback security**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x0675; end=0x0720
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 28ms:
[codex:543046] 0675: DUP2
[codex:543046] 0676: ADD
[codex:543046] 0677: SWAP1
[codex:543046] 0678: PUSH2 0681
[codex:543046] 067b: SWAP2
[codex:543046] 067c: SWAP1
[codex:543046] 067d: PUSH2 1280
[codex:543046] 0680: JUMP
[codex:543046] 0681: JUMPDEST
[codex:543046] 0682: PUSH1 01
[codex:543046] 0684: PUSH1 01
[codex:543046] 0686: PUSH1 a0
[codex:543046] 0688: SHL
[codex:543046] 0689: SUB
[codex:543046] 068a: AND
[codex:543046] 068b: CALLER
[codex:543046] 068c: PUSH1 01
[codex:543046] 068e: PUSH1 01
[codex:543046] 0690: PUSH1 a0
[codex:543046] 0692: SHL
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing contract function access and safety**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x00b0; end=0x00b8
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 29ms:
[codex:543046] 00b0: JUMPI
[codex:543046] 00b1: STOP
[codex:543046] 00b2: JUMPDEST
[codex:543046] 00b3: STOP
[codex:543046] 00b4: JUMPDEST
[codex:543046] 00b5: PUSH2 00b2
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Tracing call arguments and external call**
[codex:543046] 
[codex:543046] I'm examining the memory setup and function calls around 0x020d to understand parameters and whether an external call uses contract funds to send value to an attacker. To confirm this, I'm planning to disassemble the code from 0x041f to 0x04ce to reconstruct the CALL stack and verify the value argument passed, focusing on the external call’s security implications.
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x041f; end=0x04cf
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 24ms:
[codex:543046] 041f: JUMPDEST
[codex:543046] 0420: PUSH1 20
[codex:543046] 0422: SWAP1
[codex:543046] 0423: DUP2
[codex:543046] 0424: MUL
[codex:543046] 0425: SWAP2
[codex:543046] 0426: SWAP1
[codex:543046] 0427: SWAP2
[codex:543046] 0428: ADD
[codex:543046] 0429: ADD
[codex:543046] 042a: MSTORE
[codex:543046] 042b: PUSH1 40
[codex:543046] 042d: DUP1
[codex:543046] 042e: MLOAD
[codex:543046] 042f: PUSH1 01
[codex:543046] 0431: DUP1
[codex:543046] 0432: DUP3
[codex:543046] 0433: MSTORE
[codex:543046] 0434: DUP2
[codex:543046] 0435: DUP4
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing external contract calls and value handling**
[codex:543046] 
[codex:543046] I'm working through the call data preparation and stack setup for an external contract call, focusing on how value and calldata offsets are managed. It looks like this function doesn't forward ETH (`value` is zero), uses `address(this)` in calls possibly for security, and carefully sets call parameters. I'm also checking owner-only functions for safe ETH transfer logic and potential reentrancy risks, concluding no obvious exploits so far but want to verify related owner checks and call sequences around 0x0aba.
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x0aba; end=0x0b1e
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 27ms:
[codex:543046] 0aba: JUMPDEST
[codex:543046] 0abb: POP
[codex:543046] 0abc: POP
[codex:543046] 0abd: POP
[codex:543046] 0abe: POP
[codex:543046] 0abf: JUMP
[codex:543046] 0ac0: JUMPDEST
[codex:543046] 0ac1: PUSH1 00
[codex:543046] 0ac3: SLOAD
[codex:543046] 0ac4: PUSH1 01
[codex:543046] 0ac6: PUSH1 01
[codex:543046] 0ac8: PUSH1 a0
[codex:543046] 0aca: SHL
[codex:543046] 0acb: SUB
[codex:543046] 0acc: AND
[codex:543046] 0acd: CALLER
[codex:543046] 0ace: EQ
[codex:543046] 0acf: PUSH2 0aea
[codex:543046] 0ad2: JUMPI
[codex:543046] 0ad3: PUSH1 40
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Analyzing function access and storage safety**
[codex:543046] exec
[codex:543046] /bin/bash -lc "python - <<'PY'
[codex:543046] import re
[codex:543046] code=open('BYTECODE_BUNDLE.txt').read(); hexstr=re.search(r'0x([0-9a-fA-F]+)',code).group(1)
[codex:543046] bs=bytes.fromhex(hexstr)
[codex:543046] # names map
[codex:543046] names={
[codex:543046] 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:543046] 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',
[codex:543046] 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:543046] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:543046] 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:543046] 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:543046] 0x80:'DUP1',0x81:'DUP2',0x82:'DUP3',0x83:'DUP4',0x84:'DUP5',0x85:'DUP6',0x86:'DUP7',0x87:'DUP8',0x88:'DUP9',0x89:'DUP10',0x8a:'DUP11',0x8b:'DUP12',0x8c:'DUP13',0x8d:'DUP14',0x8e:'DUP15',0x8f:'DUP16',
[codex:543046] 0x90:'SWAP1',0x91:'SWAP2',0x92:'SWAP3',0x93:'SWAP4',0x94:'SWAP5',0x95:'SWAP6',0x96:'SWAP7',0x97:'SWAP8',0x98:'SWAP9',0x99:'SWAP10',0x9a:'SWAP11',0x9b:'SWAP12',0x9c:'SWAP13',0x9d:'SWAP14',0x9e:'SWAP15',0x9f:'SWAP16',
[codex:543046] 0xa0:'LOG0',0xa1:'LOG1',0xa2:'LOG2',0xa3:'LOG3',0xa4:'LOG4',
[codex:543046] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'
[codex:543046] }
[codex:543046] 
[codex:543046] start=0x08f0; end=0x0920
[codex:543046] pc=start
[codex:543046] while pc<end:
[codex:543046]     op=bs[pc]
[codex:543046]     name=names.get(op,'UNKNOWN')
[codex:543046]     if 0x60<=op<=0x7f:
[codex:543046]         n=op-0x5f
[codex:543046]         data=bs[pc+1:pc+1+n]
[codex:543046]         print(f'{pc:04x}: {name} {data.hex()}')
[codex:543046]         pc+=1+n
[codex:543046]     else:
[codex:543046]         print(f'{pc:04x}: {name}')
[codex:543046]         pc+=1
[codex:543046] PY" in /tmp/codex-multi-7_9jik4t succeeded in 24ms:
[codex:543046] 08f0: POP
[codex:543046] 08f1: JUMP
[codex:543046] 08f2: JUMPDEST
[codex:543046] 08f3: PUSH1 00
[codex:543046] 08f5: DUP1
[codex:543046] 08f6: SLOAD
[codex:543046] 08f7: PUSH1 01
[codex:543046] 08f9: PUSH1 01
[codex:543046] 08fb: PUSH1 a0
[codex:543046] 08fd: SHL
[codex:543046] 08fe: SUB
[codex:543046] 08ff: NOT
[codex:543046] 0900: AND
[codex:543046] 0901: PUSH1 01
[codex:543046] 0903: PUSH1 01
[codex:543046] 0905: PUSH1 a0
[codex:543046] 0907: SHL
[codex:543046] 0908: SUB
[codex:543046] 0909: SWAP3
[codex:543046] 090a: SWAP1
[codex:543046] 
[codex:543046] thinking
[codex:543046] **Evaluating contract for exploits**
[codex:543046] codex
[codex:543046] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.","findings":[]}
[codex:543046] tokens used
[codex:543046] 91,060
[codex:543046] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-02T15:16:39.817206+00:00",
        "returncode": 0
    },
    "summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.",
    "raw_final": {
        "summary": "No concrete, exploitable value-extraction path identified from the provided runtime bytecode alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
14
EXT*/BALANCE
13
Total opcodes
4958
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00ab
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x96de31e0
00000019: GT
0000001a: PUSH2 0x0064
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x96de31e0
00000024: EQ
00000025: PUSH2 0x0167
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x99f5e5cb
0000002f: EQ
00000030: PUSH2 0x0187
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xade9b374
0000003a: EQ
0000003b: PUSH2 0x019a
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xc0ee0b8a
00000045: EQ
00000046: PUSH2 0x01c7
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xed3dae64
00000050: EQ
00000051: PUSH2 0x01e7
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf50c1ed1
0000005b: EQ
0000005c: PUSH2 0x01fa
0000005f: JUMPI
00000060: PUSH2 0x00b2
00000063: JUMP
00000064: JUMPDEST
00000065: DUP1
00000066: PUSH4 0x06c74e8d
0000006b: EQ
0000006c: PUSH2 0x00b4
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x0f032cbe
00000076: EQ
00000077: PUSH2 0x00c7
0000007a: JUMPI
0000007b: DUP1
0000007c: PUSH4 0x10d1e85c
00000081: EQ
00000082: PUSH2 0x00f2
00000085: JUMPI
00000086: DUP1
00000087: PUSH4 0x709dd40e
0000008c: EQ
0000008d: PUSH2 0x0112
00000090: JUMPI
00000091: DUP1
00000092: PUSH4 0x74764850
00000097: EQ
00000098: PUSH2 0x0127
0000009b: JUMPI
0000009c: DUP1
0000009d: PUSH4 0x8b418713
000000a2: EQ
000000a3: PUSH2 0x0147
000000a6: JUMPI
000000a7: PUSH2 0x00b2
000000aa: JUMP
000000ab: JUMPDEST
000000ac: CALLDATASIZE
000000ad: PUSH2 0x00b2
000000b0: JUMPI
000000b1: STOP
000000b2: JUMPDEST
000000b3: STOP
000000b4: JUMPDEST
000000b5: PUSH2 0x00b2
000000b8: PUSH2 0x00c2
000000bb: CALLDATASIZE
000000bc: PUSH1 0x04
000000be: PUSH2 0x168b
000000c1: JUMP
000000c2: JUMPDEST
000000c3: PUSH2 0x020d
000000c6: JUMP
000000c7: JUMPDEST
000000c8: CALLVALUE
000000c9: DUP1
000000ca: ISZERO
000000cb: PUSH2 0x00d3
000000ce: JUMPI
000000cf: PUSH1 0x00
000000d1: DUP1
000000d2: REVERT
000000d3: JUMPDEST
000000d4: POP
000000d5: PUSH2 0x00dc
000000d8: PUSH2 0x0507
000000db: JUMP
000000dc: JUMPDEST
000000dd: PUSH1 0x40
000000df: MLOAD
000000e0: PUSH2 0x00e9
000000e3: SWAP2
000000e4: SWAP1
000000e5: PUSH2 0x19fe
000000e8: JUMP
000000e9: JUMPDEST
000000ea: PUSH1 0x40
000000ec: MLOAD
000000ed: DUP1
000000ee: SWAP2
000000ef: SUB
000000f0: SWAP1
000000f1: RETURN
000000f2: JUMPDEST
000000f3: CALLVALUE
000000f4: DUP1
000000f5: ISZERO
000000f6: PUSH2 0x00fe
000000f9: JUMPI
000000fa: PUSH1 0x00
000000fc: DUP1
000000fd: REVERT
000000fe: JUMPDEST
000000ff: POP
00000100: PUSH2 0x00b2
00000103: PUSH2 0x010d
00000106: CALLDATASIZE
00000107: PUSH1 0x04
00000109: PUSH2 0x13bf
0000010c: JUMP
0000010d: JUMPDEST
0000010e: PUSH2 0x050d
00000111: JUMP
00000112: JUMPDEST
00000113: CALLVALUE
00000114: DUP1
00000115: ISZERO
00000116: PUSH2 0x011e
00000119: JUMPI
0000011a: PUSH1 0x00
0000011c: DUP1
0000011d: REVERT
0000011e: JUMPDEST
0000011f: POP
00000120: PUSH2 0x00b2
00000123: PUSH2 0x075f
00000126: JUMP
00000127: JUMPDEST
00000128: CALLVALUE
00000129: DUP1
0000012a: ISZERO
0000012b: PUSH2 0x0133
0000012e: JUMPI
0000012f: PUSH1 0x00
00000131: DUP1
00000132: REVERT
00000133: JUMPDEST
00000134: POP
00000135: PUSH2 0x00b2
00000138: PUSH2 0x0142
0000013b: CALLDATASIZE
0000013c: PUSH1 0x04
0000013e: PUSH2 0x133b
00000141: JUMP
00000142: JUMPDEST
00000143: PUSH2 0x07b8
00000146: JUMP
00000147: JUMPDEST
00000148: CALLVALUE
00000149: DUP1
0000014a: ISZERO
0000014b: PUSH2 0x0153
0000014e: JUMPI
0000014f: PUSH1 0x00
00000151: DUP1
00000152: REVERT
00000153: JUMPDEST
00000154: POP
00000155: PUSH2 0x00b2
00000158: PUSH2 0x0162
0000015b: CALLDATASIZE
0000015c: PUSH1 0x04
0000015e: PUSH2 0x129c
00000161: JUMP
00000162: JUMPDEST
00000163: PUSH2 0x0845
00000166: JUMP
00000167: JUMPDEST
00000168: CALLVALUE
00000169: DUP1
0000016a: ISZERO
0000016b: PUSH2 0x0173
0000016e: JUMPI
0000016f: PUSH1 0x00
00000171: DUP1
00000172: REVERT
00000173: JUMPDEST
00000174: POP
00000175: PUSH2 0x00b2
00000178: PUSH2 0x0182
0000017b: CALLDATASIZE
0000017c: PUSH1 0x04
0000017e: PUSH2 0x125d
00000181: JUMP
00000182: JUMPDEST
00000183: PUSH2 0x08c8
00000186: JUMP
00000187: JUMPDEST
00000188: PUSH2 0x00b2
0000018b: PUSH2 0x0195
0000018e: CALLDATASIZE
0000018f: PUSH1 0x04
00000191: PUSH2 0x156d
00000194: JUMP
00000195: JUMPDEST
00000196: PUSH2 0x0914
00000199: JUMP
0000019a: JUMPDEST
0000019b: CALLVALUE
0000019c: DUP1
0000019d: ISZERO
0000019e: PUSH2 0x01a6
000001a1: JUMPI
000001a2: PUSH1 0x00
000001a4: DUP1
000001a5: REVERT
000001a6: JUMPDEST
000001a7: POP
000001a8: PUSH2 0x01ba
000001ab: PUSH2 0x01b5
000001ae: CALLDATASIZE
000001af: PUSH1 0x04
000001b1: PUSH2 0x125d
000001b4: JUMP
000001b5: JUMPDEST
000001b6: PUSH2 0x0992
000001b9: JUMP
000001ba: JUMPDEST
000001bb: PUSH1 0x40
000001bd: MLOAD
000001be: PUSH2 0x00e9
000001c1: SWAP2
000001c2: SWAP1
000001c3: PUSH2 0x18af
000001c6: JUMP
000001c7: JUMPDEST
000001c8: CALLVALUE
000001c9: DUP1
000001ca: ISZERO
000001cb: PUSH2 0x01d3
000001ce: JUMPI
000001cf: PUSH1 0x00
000001d1: DUP1
000001d2: REVERT
000001d3: JUMPDEST
000001d4: POP
000001d5: PUSH2 0x00b2
000001d8: PUSH2 0x01e2
000001db: CALLDATASIZE
000001dc: PUSH1 0x04
000001de: PUSH2 0x1366
000001e1: JUMP
000001e2: JUMPDEST
000001e3: PUSH2 0x0aba
000001e6: JUMP
000001e7: JUMPDEST
000001e8: PUSH2 0x00b2
000001eb: PUSH2 0x01f5
000001ee: CALLDATASIZE
000001ef: PUSH1 0x04
000001f1: PUSH2 0x1426
000001f4: JUMP
000001f5: JUMPDEST
000001f6: PUSH2 0x0ac0
000001f9: JUMP
000001fa: JUMPDEST
000001fb: PUSH2 0x00b2
000001fe: PUSH2 0x0208
00000201: CALLDATASIZE
00000202: PUSH1 0x04
00000204: PUSH2 0x1613
00000207: JUMP
00000208: JUMPDEST
00000209: PUSH2 0x0af3
0000020c: JUMP
0000020d: JUMPDEST
0000020e: PUSH1 0x40
00000210: DUP1
00000211: MLOAD
00000212: PUSH1 0x03
00000214: DUP1
00000215: DUP3
00000216: MSTORE
00000217: PUSH1 0x80
00000219: DUP3
0000021a: ADD
0000021b: SWAP1
0000021c: SWAP3
0000021d: MSTORE
0000021e: PUSH1 0x00
00000220: SWAP2
00000221: DUP2
00000222: PUSH1 0x20
00000224: ADD
00000225: JUMPDEST
00000226: PUSH2 0x022d
00000229: PUSH2 0x0fb0
0000022c: JUMP
0000022d: JUMPDEST
0000022e: DUP2
0000022f: MSTORE
00000230: PUSH1 0x20
00000232: ADD
00000233: SWAP1
00000234: PUSH1 0x01
00000236: SWAP1
00000237: SUB
00000238: SWAP1
00000239: DUP2
0000023a: PUSH2 0x0225
0000023d: JUMPI
0000023e: POP
0000023f: POP
00000240: PUSH1 0x40
00000242: DUP1
00000243: MLOAD
00000244: PUSH2 0x0100
00000247: DUP2
00000248: ADD
00000249: DUP3
0000024a: MSTORE
0000024b: PUSH1 0x01
0000024d: DUP2
0000024e: MSTORE
0000024f: PUSH1 0x00
00000251: PUSH1 0x20
00000253: DUP1
00000254: DUP4
00000255: ADD
00000256: DUP3
00000257: SWAP1
00000258: MSTORE
00000259: DUP4
0000025a: MLOAD
0000025b: PUSH1 0x80
0000025d: DUP2
0000025e: ADD
0000025f: DUP6
00000260: MSTORE
00000261: DUP3
00000262: DUP2
00000263: MSTORE
00000264: SWAP5
00000265: SWAP6
00000266: POP
00000267: SWAP2
00000268: SWAP4
00000269: SWAP3
0000026a: DUP5
0000026b: ADD
0000026c: SWAP3
0000026d: SWAP2
0000026e: DUP3
0000026f: ADD
00000270: SWAP1
00000271: DUP2
00000272: MSTORE
00000273: PUSH1 0x20
00000275: ADD
00000276: PUSH1 0x00
00000278: DUP2
00000279: MSTORE
0000027a: PUSH1 0x20
0000027c: ADD
0000027d: DUP8
0000027e: DUP2
0000027f: MSTORE
00000280: POP
00000281: DUP2
00000282: MSTORE
00000283: PUSH1 0x20
00000285: ADD
00000286: PUSH1 0x00
00000288: DUP2
00000289: MSTORE
0000028a: PUSH1 0x20
0000028c: ADD
0000028d: PUSH1 0x00
0000028f: DUP2
00000290: MSTORE
00000291: PUSH1 0x20
00000293: ADD
00000294: ADDRESS
00000295: PUSH1 0x01
00000297: PUSH1 0x01
00000299: PUSH1 0xa0
0000029b: SHL
0000029c: SUB
0000029d: AND
0000029e: DUP2
0000029f: MSTORE
000002a0: PUSH1 0x20
000002a2: ADD
000002a3: PUSH1 0x00
000002a5: DUP2
000002a6: MSTORE
000002a7: PUSH1 0x20
000002a9: ADD
000002aa: PUSH1 0x40
000002ac: MLOAD
000002ad: DUP1
000002ae: PUSH1 0x20
000002b0: ADD
000002b1: PUSH1 0x40
000002b3: MSTORE
000002b4: DUP1
000002b5: PUSH1 0x00
000002b7: DUP2
000002b8: MSTORE
000002b9: POP
000002ba: DUP2
000002bb: MSTORE
000002bc: POP
000002bd: DUP2
000002be: PUSH1 0x00
000002c0: DUP2
000002c1: MLOAD
000002c2: DUP2
000002c3: LT
000002c4: PUSH2 0x02c9
000002c7: JUMPI
000002c8: INVALID
000002c9: JUMPDEST
000002ca: PUSH1 0x20
000002cc: SWAP1
000002cd: DUP2
000002ce: MUL
000002cf: SWAP2
000002d0: SWAP1
000002d1: SWAP2
000002d2: ADD
000002d3: ADD
000002d4: MSTORE
000002d5: PUSH1 0x40
000002d7: DUP1
000002d8: MLOAD
000002d9: PUSH2 0x0100
000002dc: DUP2
000002dd: ADD
000002de: SWAP1
000002df: SWAP2
000002e0: MSTORE
000002e1: DUP1
000002e2: PUSH1 0x08
000002e4: DUP2
000002e5: MSTORE
000002e6: PUSH1 0x20
000002e8: ADD
000002e9: PUSH1 0x00
000002eb: DUP2
000002ec: MSTORE
000002ed: PUSH1 0x20
000002ef: ADD
000002f0: PUSH1 0x40
000002f2: MLOAD
000002f3: DUP1
000002f4: PUSH1 0x80
000002f6: ADD
000002f7: PUSH1 0x40
000002f9: MSTORE
000002fa: DUP1
000002fb: PUSH1 0x00
000002fd: ISZERO
000002fe: ISZERO
000002ff: DUP2
00000300: MSTORE
00000301: PUSH1 0x20
00000303: ADD
00000304: PUSH1 0x00
00000306: PUSH1 0x01
00000308: DUP2
00000309: GT
0000030a: ISZERO
0000030b: PUSH2 0x0310
0000030e: JUMPI
0000030f: INVALID
00000310: JUMPDEST
00000311: DUP2
00000312: MSTORE
00000313: PUSH1 0x20
00000315: ADD
00000316: PUSH1 0x00
00000318: DUP2
00000319: MSTORE
0000031a: PUSH1 0x20
0000031c: ADD
0000031d: PUSH1 0x00
0000031f: DUP2
00000320: MSTORE
00000321: POP
00000322: DUP2
00000323: MSTORE
00000324: PUSH1 0x20
00000326: ADD
00000327: PUSH1 0x00
00000329: DUP2
0000032a: MSTORE
0000032b: PUSH1 0x20
0000032d: ADD
0000032e: PUSH1 0x00
00000330: DUP2
00000331: MSTORE
00000332: PUSH1 0x20
00000334: ADD
00000335: ADDRESS
00000336: PUSH1 0x01
00000338: PUSH1 0x01
0000033a: PUSH1 0xa0
0000033c: SHL
0000033d: SUB
0000033e: AND
0000033f: DUP2
00000340: MSTORE
00000341: PUSH1 0x20
00000343: ADD
00000344: PUSH1 0x00
00000346: DUP2
00000347: MSTORE
00000348: PUSH1 0x20
0000034a: ADD
0000034b: DUP5
0000034c: DUP5
0000034d: PUSH1 0x40
0000034f: MLOAD
00000350: PUSH1 0x20
00000352: ADD
00000353: PUSH2 0x035d
00000356: SWAP3
00000357: SWAP2
00000358: SWAP1
00000359: PUSH2 0x18ba
0000035c: JUMP
0000035d: JUMPDEST
0000035e: PUSH1 0x40
00000360: MLOAD
00000361: PUSH1 0x20
00000363: DUP2
00000364: DUP4
00000365: SUB
00000366: SUB
00000367: DUP2
00000368: MSTORE
00000369: SWAP1
0000036a: PUSH1 0x40
0000036c: MSTORE
0000036d: DUP2
0000036e: MSTORE
0000036f: POP
00000370: DUP2
00000371: PUSH1 0x01
00000373: DUP2
00000374: MLOAD
00000375: DUP2
00000376: LT
00000377: PUSH2 0x037c
0000037a: JUMPI
0000037b: INVALID
0000037c: JUMPDEST
0000037d: PUSH1 0x20
0000037f: SWAP1
00000380: DUP2
00000381: MUL
00000382: SWAP2
00000383: SWAP1
00000384: SWAP2
00000385: ADD
00000386: ADD
00000387: MSTORE
00000388: PUSH1 0x40
0000038a: DUP1
0000038b: MLOAD
0000038c: PUSH2 0x0100
0000038f: DUP2
00000390: ADD
00000391: SWAP1
00000392: SWAP2
00000393: MSTORE
00000394: DUP1
00000395: PUSH1 0x00
00000397: DUP2
00000398: MSTORE
00000399: PUSH1 0x20
0000039b: ADD
0000039c: PUSH1 0x00
0000039e: DUP2
0000039f: MSTORE
000003a0: PUSH1 0x20
000003a2: ADD
000003a3: PUSH1 0x40
000003a5: MLOAD
000003a6: DUP1
000003a7: PUSH1 0x80
000003a9: ADD
000003aa: PUSH1 0x40
000003ac: MSTORE
000003ad: DUP1
000003ae: PUSH1 0x01
000003b0: ISZERO
000003b1: ISZERO
000003b2: DUP2
000003b3: MSTORE
000003b4: PUSH1 0x20
000003b6: ADD
000003b7: PUSH1 0x00
000003b9: PUSH1 0x01
000003bb: DUP2
000003bc: GT
000003bd: ISZERO
000003be: PUSH2 0x03c3
000003c1: JUMPI
000003c2: INVALID
000003c3: JUMPDEST
000003c4: DUP2
000003c5: MSTORE
000003c6: PUSH1 0x20
000003c8: ADD
000003c9: PUSH1 0x00
000003cb: DUP2
000003cc: MSTORE
000003cd: PUSH1 0x20
000003cf: ADD
000003d0: DUP8
000003d1: PUSH1 0x02
000003d3: ADD
000003d4: DUP2
000003d5: MSTORE
000003d6: POP
000003d7: DUP2
000003d8: MSTORE
000003d9: PUSH1 0x20
000003db: ADD
000003dc: PUSH1 0x00
000003de: DUP2
000003df: MSTORE
000003e0: PUSH1 0x20
000003e2: ADD
000003e3: PUSH1 0x00
000003e5: DUP2
000003e6: MSTORE
000003e7: PUSH1 0x20
000003e9: ADD
000003ea: ADDRESS
000003eb: PUSH1 0x01
000003ed: PUSH1 0x01
000003ef: PUSH1 0xa0
000003f1: SHL
000003f2: SUB
000003f3: AND
000003f4: DUP2
000003f5: MSTORE
000003f6: PUSH1 0x20
000003f8: ADD
000003f9: PUSH1 0x00
000003fb: DUP2
000003fc: MSTORE
000003fd: PUSH1 0x20
000003ff: ADD
00000400: PUSH1 0x40
00000402: MLOAD
00000403: DUP1
00000404: PUSH1 0x20
00000406: ADD
00000407: PUSH1 0x40
00000409: MSTORE
0000040a: DUP1
0000040b: PUSH1 0x00
0000040d: DUP2
0000040e: MSTORE
0000040f: POP
00000410: DUP2
00000411: MSTORE
00000412: POP
00000413: DUP2
00000414: PUSH1 0x02
00000416: DUP2
00000417: MLOAD
00000418: DUP2
00000419: LT
0000041a: PUSH2 0x041f
0000041d: JUMPI
0000041e: INVALID
0000041f: JUMPDEST
00000420: PUSH1 0x20
00000422: SWAP1
00000423: DUP2
00000424: MUL
00000425: SWAP2
00000426: SWAP1
00000427: SWAP2
00000428: ADD
00000429: ADD
0000042a: MSTORE
0000042b: PUSH1 0x40
0000042d: DUP1
0000042e: MLOAD
0000042f: PUSH1 0x01
00000431: DUP1
00000432: DUP3
00000433: MSTORE
00000434: DUP2
00000435: DUP4
00000436: ADD
00000437: SWAP1
00000438: SWAP3
00000439: MSTORE
0000043a: PUSH1 0x00
0000043c: SWAP2
0000043d: DUP2
0000043e: PUSH1 0x20
00000440: ADD
00000441: JUMPDEST
00000442: PUSH2 0x0449
00000445: PUSH2 0x1002
00000448: JUMP
00000449: JUMPDEST
0000044a: DUP2
0000044b: MSTORE
0000044c: PUSH1 0x20
0000044e: ADD
0000044f: SWAP1
00000450: PUSH1 0x01
00000452: SWAP1
00000453: SUB
00000454: SWAP1
00000455: DUP2
00000456: PUSH2 0x0441
00000459: JUMPI
0000045a: SWAP1
0000045b: POP
0000045c: POP
0000045d: SWAP1
0000045e: POP
0000045f: PUSH1 0x40
00000461: MLOAD
00000462: DUP1
00000463: PUSH1 0x40
00000465: ADD
00000466: PUSH1 0x40
00000468: MSTORE
00000469: DUP1
0000046a: ADDRESS
0000046b: PUSH1 0x01
0000046d: PUSH1 0x01
0000046f: PUSH1 0xa0
00000471: SHL
00000472: SUB
00000473: AND
00000474: DUP2
00000475: MSTORE
00000476: PUSH1 0x20
00000478: ADD
00000479: PUSH1 0x01
0000047b: DUP2
0000047c: MSTORE
0000047d: POP
0000047e: DUP2
0000047f: PUSH1 0x00
00000481: DUP2
00000482: MLOAD
00000483: DUP2
00000484: LT
00000485: PUSH2 0x048a
00000488: JUMPI
00000489: INVALID
0000048a: JUMPDEST
0000048b: PUSH1 0x20
0000048d: SWAP1
0000048e: DUP2
0000048f: MUL
00000490: SWAP2
00000491: SWAP1
00000492: SWAP2
00000493: ADD
00000494: ADD
00000495: MSTORE
00000496: PUSH1 0x40
00000498: MLOAD
00000499: PUSH4 0xa67a6a45
0000049e: PUSH1 0xe0
000004a0: SHL
000004a1: DUP2
000004a2: MSTORE
000004a3: PUSH20 0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e
000004b8: SWAP1
000004b9: PUSH4 0xa67a6a45
000004be: SWAP1
000004bf: PUSH2 0x04ce
000004c2: SWAP1
000004c3: DUP5
000004c4: SWAP1
000004c5: DUP7
000004c6: SWAP1
000004c7: PUSH1 0x04
000004c9: ADD
000004ca: PUSH2 0x178f
000004cd: JUMP
000004ce: JUMPDEST
000004cf: PUSH1 0x00
000004d1: PUSH1 0x40
000004d3: MLOAD
000004d4: DUP1
000004d5: DUP4
000004d6: SUB
000004d7: DUP2
000004d8: PUSH1 0x00
000004da: DUP8
000004db: DUP1
000004dc: EXTCODESIZE
000004dd: ISZERO
000004de: DUP1
000004df: ISZERO
000004e0: PUSH2 0x04e8
000004e3: JUMPI
000004e4: PUSH1 0x00
000004e6: DUP1
000004e7: REVERT
000004e8: JUMPDEST
000004e9: POP
000004ea: GAS
000004eb: CALL
000004ec: ISZERO
000004ed: DUP1
000004ee: ISZERO
000004ef: PUSH2 0x04fc
000004f2: JUMPI
000004f3: RETURNDATASIZE
000004f4: PUSH1 0x00
000004f6: DUP1
000004f7: RETURNDATACOPY
000004f8: RETURNDATASIZE
000004f9: PUSH1 0x00
000004fb: REVERT
000004fc: JUMPDEST
000004fd: POP
000004fe: POP
000004ff: POP
00000500: POP
00000501: POP
00000502: POP
00000503: POP
00000504: POP
00000505: POP
00000506: JUMP
00000507: JUMPDEST
00000508: PUSH1 0x00
0000050a: NOT
0000050b: DUP2
0000050c: JUMP
0000050d: JUMPDEST
0000050e: PUSH1 0x00
00000510: CALLER
00000511: PUSH1 0x01
00000513: PUSH1 0x01
00000515: PUSH1 0xa0
00000517: SHL
00000518: SUB
00000519: AND
0000051a: PUSH4 0x0dfe1681
0000051f: PUSH1 0x40
00000521: MLOAD
00000522: DUP2
00000523: PUSH4 0xffffffff
00000528: AND
00000529: PUSH1 0xe0
0000052b: SHL
0000052c: DUP2
0000052d: MSTORE
0000052e: PUSH1 0x04
00000530: ADD
00000531: PUSH1 0x20
00000533: PUSH1 0x40
00000535: MLOAD
00000536: DUP1
00000537: DUP4
00000538: SUB
00000539: DUP2
0000053a: DUP7
0000053b: DUP1
0000053c: EXTCODESIZE
0000053d: ISZERO
0000053e: DUP1
0000053f: ISZERO
00000540: PUSH2 0x0548
00000543: JUMPI
00000544: PUSH1 0x00
00000546: DUP1
00000547: REVERT
00000548: JUMPDEST
00000549: POP
0000054a: GAS
0000054b: STATICCALL
0000054c: ISZERO
0000054d: DUP1
0000054e: ISZERO
0000054f: PUSH2 0x055c
00000552: JUMPI
00000553: RETURNDATASIZE
00000554: PUSH1 0x00
00000556: DUP1
00000557: RETURNDATACOPY
00000558: RETURNDATASIZE
00000559: PUSH1 0x00
0000055b: REVERT
0000055c: JUMPDEST
0000055d: POP
0000055e: POP
0000055f: POP
00000560: POP
00000561: PUSH1 0x40
00000563: MLOAD
00000564: RETURNDATASIZE
00000565: PUSH1 0x1f
00000567: NOT
00000568: PUSH1 0x1f
0000056a: DUP3
0000056b: ADD
0000056c: AND
0000056d: DUP3
0000056e: ADD
0000056f: DUP1
00000570: PUSH1 0x40
00000572: MSTORE
00000573: POP
00000574: DUP2
00000575: ADD
00000576: SWAP1
00000577: PUSH2 0x0580
0000057a: SWAP2
0000057b: SWAP1
0000057c: PUSH2 0x1280
0000057f: JUMP
00000580: JUMPDEST
00000581: SWAP1
00000582: POP
00000583: PUSH1 0x00
00000585: CALLER
00000586: PUSH1 0x01
00000588: PUSH1 0x01
0000058a: PUSH1 0xa0
0000058c: SHL
0000058d: SUB
0000058e: AND
0000058f: PUSH4 0xd21220a7
00000594: PUSH1 0x40
00000596: MLOAD
00000597: DUP2
00000598: PUSH4 0xffffffff
0000059d: AND
0000059e: PUSH1 0xe0
000005a0: SHL
000005a1: DUP2
000005a2: MSTORE
000005a3: PUSH1 0x04
000005a5: ADD
000005a6: PUSH1 0x20
000005a8: PUSH1 0x40
000005aa: MLOAD
000005ab: DUP1
000005ac: DUP4
000005ad: SUB
000005ae: DUP2
000005af: DUP7
000005b0: DUP1
000005b1: EXTCODESIZE
000005b2: ISZERO
000005b3: DUP1
000005b4: ISZERO
000005b5: PUSH2 0x05bd
000005b8: JUMPI
000005b9: PUSH1 0x00
000005bb: DUP1
000005bc: REVERT
000005bd: JUMPDEST
000005be: POP
000005bf: GAS
000005c0: STATICCALL
000005c1: ISZERO
000005c2: DUP1
000005c3: ISZERO
000005c4: PUSH2 0x05d1
000005c7: JUMPI
000005c8: RETURNDATASIZE
000005c9: PUSH1 0x00
000005cb: DUP1
000005cc: RETURNDATACOPY
000005cd: RETURNDATASIZE
000005ce: PUSH1 0x00
000005d0: REVERT
000005d1: JUMPDEST
000005d2: POP
000005d3: POP
000005d4: POP
000005d5: POP
000005d6: PUSH1 0x40
000005d8: MLOAD
000005d9: RETURNDATASIZE
000005da: PUSH1 0x1f
000005dc: NOT
000005dd: PUSH1 0x1f
000005df: DUP3
000005e0: ADD
000005e1: AND
000005e2: DUP3
000005e3: ADD
000005e4: DUP1
000005e5: PUSH1 0x40
000005e7: MSTORE
000005e8: POP
000005e9: DUP2
000005ea: ADD
000005eb: SWAP1
000005ec: PUSH2 0x05f5
000005ef: SWAP2
000005f0: SWAP1
000005f1: PUSH2 0x1280
000005f4: JUMP
000005f5: JUMPDEST
000005f6: PUSH1 0x40
000005f8: MLOAD
000005f9: PUSH4 0xe6a43905
000005fe: PUSH1 0xe0
00000600: SHL
00000601: DUP2
00000602: MSTORE
00000603: SWAP1
00000604: SWAP2
00000605: POP
00000606: PUSH20 0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f
0000061b: SWAP1
0000061c: PUSH4 0xe6a43905
00000621: SWAP1
00000622: PUSH2 0x0631
00000625: SWAP1
00000626: DUP6
00000627: SWAP1
00000628: DUP6
00000629: SWAP1
0000062a: PUSH1 0x04
0000062c: ADD
0000062d: PUSH2 0x1775
00000630: JUMP
00000631: JUMPDEST
00000632: PUSH1 0x20
00000634: PUSH1 0x40
00000636: MLOAD
00000637: DUP1
00000638: DUP4
00000639: SUB
0000063a: DUP2
0000063b: DUP7
0000063c: DUP1
0000063d: EXTCODESIZE
0000063e: ISZERO
0000063f: DUP1
00000640: ISZERO
00000641: PUSH2 0x0649
00000644: JUMPI
00000645: PUSH1 0x00
00000647: DUP1
00000648: REVERT
00000649: JUMPDEST
0000064a: POP
0000064b: GAS
0000064c: STATICCALL
0000064d: ISZERO
0000064e: DUP1
0000064f: ISZERO
00000650: PUSH2 0x065d
00000653: JUMPI
00000654: RETURNDATASIZE
00000655: PUSH1 0x00
00000657: DUP1
00000658: RETURNDATACOPY
00000659: RETURNDATASIZE
0000065a: PUSH1 0x00
0000065c: REVERT
0000065d: JUMPDEST
0000065e: POP
0000065f: POP
00000660: POP
00000661: POP
00000662: PUSH1 0x40
00000664: MLOAD
00000665: RETURNDATASIZE
00000666: PUSH1 0x1f
00000668: NOT
00000669: PUSH1 0x1f
0000066b: DUP3
0000066c: ADD
0000066d: AND
0000066e: DUP3
0000066f: ADD
00000670: DUP1
00000671: PUSH1 0x40
00000673: MSTORE
00000674: POP
00000675: DUP2
00000676: ADD
00000677: SWAP1
00000678: PUSH2 0x0681
0000067b: SWAP2
0000067c: SWAP1
0000067d: PUSH2 0x1280
00000680: JUMP
00000681: JUMPDEST
00000682: PUSH1 0x01
00000684: PUSH1 0x01
00000686: PUSH1 0xa0
00000688: SHL
00000689: SUB
0000068a: AND
0000068b: CALLER
0000068c: PUSH1 0x01
0000068e: PUSH1 0x01
00000690: PUSH1 0xa0
00000692: SHL
00000693: SUB
00000694: AND
00000695: EQ
00000696: PUSH2 0x06ba
00000699: JUMPI
0000069a: PUSH1 0x40
0000069c: MLOAD
0000069d: PUSH3 0x461bcd
000006a1: PUSH1 0xe5
000006a3: SHL
000006a4: DUP2
000006a5: MSTORE
000006a6: PUSH1 0x04
000006a8: ADD
000006a9: PUSH2 0x06b1
000006ac: SWAP1
000006ad: PUSH2 0x1933
000006b0: JUMP
000006b1: JUMPDEST
000006b2: PUSH1 0x40
000006b4: MLOAD
000006b5: DUP1
000006b6: SWAP2
000006b7: SUB
000006b8: SWAP1
000006b9: REVERT
000006ba: JUMPDEST
000006bb: PUSH1 0x01
000006bd: PUSH1 0x01
000006bf: PUSH1 0xa0
000006c1: SHL
000006c2: SUB
000006c3: DUP8
000006c4: AND
000006c5: ADDRESS
000006c6: EQ
000006c7: PUSH2 0x06e2
000006ca: JUMPI
000006cb: PUSH1 0x40
000006cd: MLOAD
000006ce: PUSH3 0x461bcd
000006d2: PUSH1 0xe5
000006d4: SHL
000006d5: DUP2
000006d6: MSTORE
000006d7: PUSH1 0x04
000006d9: ADD
000006da: PUSH2 0x06b1
000006dd: SWAP1
000006de: PUSH2 0x19e1
000006e1: JUMP
000006e2: JUMPDEST
000006e3: PUSH1 0x00
000006e5: DUP1
000006e6: DUP1
000006e7: PUSH2 0x06f2
000006ea: DUP7
000006eb: DUP9
000006ec: ADD
000006ed: DUP9
000006ee: PUSH2 0x15bc
000006f1: JUMP
000006f2: JUMPDEST
000006f3: SWAP3
000006f4: POP
000006f5: SWAP3
000006f6: POP
000006f7: SWAP3
000006f8: POP
000006f9: DUP1
000006fa: PUSH1 0x00
000006fc: EQ
000006fd: PUSH2 0x0749
00000700: JUMPI
00000701: DUP2
00000702: ISZERO
00000703: PUSH2 0x072a
00000706: JUMPI
00000707: DUP1
00000708: DUP10
00000709: GT
0000070a: PUSH2 0x0725
0000070d: JUMPI
0000070e: PUSH1 0x40
00000710: MLOAD
00000711: PUSH3 0x461bcd
00000715: PUSH1 0xe5
00000717: SHL
00000718: DUP2
00000719: MSTORE
0000071a: PUSH1 0x04
0000071c: ADD
0000071d: PUSH2 0x06b1
00000720: SWAP1
00000721: PUSH2 0x1916
00000724: JUMP
00000725: JUMPDEST
00000726: PUSH2 0x0749
00000729: JUMP
0000072a: JUMPDEST
0000072b: DUP1
0000072c: DUP9
0000072d: GT
0000072e: PUSH2 0x0749
00000731: JUMPI
00000732: PUSH1 0x40
00000734: MLOAD
00000735: PUSH3 0x461bcd
00000739: PUSH1 0xe5
0000073b: SHL
0000073c: DUP2
0000073d: MSTORE
0000073e: PUSH1 0x04
00000740: ADD
00000741: PUSH2 0x06b1
00000744: SWAP1
00000745: PUSH2 0x19c4
00000748: JUMP
00000749: JUMPDEST
0000074a: PUSH2 0x0752
0000074d: DUP4
0000074e: PUSH2 0x0b45
00000751: JUMP
00000752: JUMPDEST
00000753: POP
00000754: POP
00000755: POP
00000756: POP
00000757: POP
00000758: POP
00000759: POP
0000075a: POP
0000075b: POP
0000075c: POP
0000075d: POP
0000075e: JUMP
0000075f: JUMPDEST
00000760: PUSH1 0x00
00000762: SLOAD
00000763: PUSH1 0x01
00000765: PUSH1 0x01
00000767: PUSH1 0xa0
00000769: SHL
0000076a: SUB
0000076b: AND
0000076c: CALLER
0000076d: EQ
0000076e: PUSH2 0x0789
00000771: JUMPI
00000772: PUSH1 0x40
00000774: MLOAD
00000775: PUSH3 0x461bcd
00000779: PUSH1 0xe5
0000077b: SHL
0000077c: DUP2
0000077d: MSTORE
0000077e: PUSH1 0x04
00000780: ADD
00000781: PUSH2 0x06b1
00000784: SWAP1
00000785: PUSH2 0x1950
00000788: JUMP
00000789: JUMPDEST
0000078a: PUSH1 0x40
0000078c: MLOAD
0000078d: CALLER
0000078e: SWAP1
0000078f: SELFBALANCE
00000790: DUP1
00000791: ISZERO
00000792: PUSH2 0x08fc
00000795: MUL
00000796: SWAP2
00000797: PUSH1 0x00
00000799: DUP2
0000079a: DUP2
0000079b: DUP2
0000079c: DUP6
0000079d: DUP9
0000079e: DUP9
0000079f: CALL
000007a0: SWAP4
000007a1: POP
000007a2: POP
000007a3: POP
000007a4: POP
000007a5: ISZERO
000007a6: DUP1
000007a7: ISZERO
000007a8: PUSH2 0x07b5
000007ab: JUMPI
000007ac: RETURNDATASIZE
000007ad: PUSH1 0x00
000007af: DUP1
000007b0: RETURNDATACOPY
000007b1: RETURNDATASIZE
000007b2: PUSH1 0x00
000007b4: REVERT
000007b5: JUMPDEST
000007b6: POP
000007b7: JUMP
000007b8: JUMPDEST
000007b9: PUSH1 0x40
000007bb: MLOAD
000007bc: PUSH4 0x70a08231
000007c1: PUSH1 0xe0
000007c3: SHL
000007c4: DUP2
000007c5: MSTORE
000007c6: DUP2
000007c7: SWAP1
000007c8: PUSH1 0x01
000007ca: PUSH1 0x01
000007cc: PUSH1 0xa0
000007ce: SHL
000007cf: SUB
000007d0: DUP5
000007d1: AND
000007d2: SWAP1
000007d3: PUSH4 0x70a08231
000007d8: SWAP1
000007d9: PUSH2 0x07e6
000007dc: SWAP1
000007dd: ADDRESS
000007de: SWAP1
000007df: PUSH1 0x04
000007e1: ADD
000007e2: PUSH2 0x1748
000007e5: JUMP
000007e6: JUMPDEST
000007e7: PUSH1 0x20
000007e9: PUSH1 0x40
000007eb: MLOAD
000007ec: DUP1
000007ed: DUP4
000007ee: SUB
000007ef: DUP2
000007f0: DUP7
000007f1: DUP1
000007f2: EXTCODESIZE
000007f3: ISZERO
000007f4: DUP1
000007f5: ISZERO
000007f6: PUSH2 0x07fe
000007f9: JUMPI
000007fa: PUSH1 0x00
000007fc: DUP1
000007fd: REVERT
000007fe: JUMPDEST
000007ff: POP
00000800: GAS
00000801: STATICCALL
00000802: ISZERO
00000803: DUP1
00000804: ISZERO
00000805: PUSH2 0x0812
00000808: JUMPI
00000809: RETURNDATASIZE
0000080a: PUSH1 0x00
0000080c: DUP1
0000080d: RETURNDATACOPY
0000080e: RETURNDATASIZE
0000080f: PUSH1 0x00
00000811: REVERT
00000812: JUMPDEST
00000813: POP
00000814: POP
00000815: POP
00000816: POP
00000817: PUSH1 0x40
00000819: MLOAD
0000081a: RETURNDATASIZE
0000081b: PUSH1 0x1f
0000081d: NOT
0000081e: PUSH1 0x1f
00000820: DUP3
00000821: ADD
00000822: AND
00000823: DUP3
00000824: ADD
00000825: DUP1
00000826: PUSH1 0x40
00000828: MSTORE
00000829: POP
0000082a: DUP2
0000082b: ADD
0000082c: SWAP1
0000082d: PUSH2 0x0836
00000830: SWAP2
00000831: SWAP1
00000832: PUSH2 0x1673
00000835: JUMP
00000836: JUMPDEST
00000837: LT
00000838: ISZERO
00000839: PUSH2 0x0841
0000083c: JUMPI
0000083d: PUSH1 0x00
0000083f: DUP1
00000840: REVERT
00000841: JUMPDEST
00000842: POP
00000843: POP
00000844: JUMP
00000845: JUMPDEST
00000846: CALLER
00000847: PUSH20 0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e
0000085c: EQ
0000085d: PUSH2 0x0878
00000860: JUMPI
00000861: PUSH1 0x40
00000863: MLOAD
00000864: PUSH3 0x461bcd
00000868: PUSH1 0xe5
0000086a: SHL
0000086b: DUP2
0000086c: MSTORE
0000086d: PUSH1 0x04
0000086f: ADD
00000870: PUSH2 0x06b1
00000873: SWAP1
00000874: PUSH2 0x196d
00000877: JUMP
00000878: JUMPDEST
00000879: PUSH1 0x01
0000087b: PUSH1 0x01
0000087d: PUSH1 0xa0
0000087f: SHL
00000880: SUB
00000881: DUP4
00000882: AND
00000883: ADDRESS
00000884: EQ
00000885: PUSH2 0x08a0
00000888: JUMPI
00000889: PUSH1 0x40
0000088b: MLOAD
0000088c: PUSH3 0x461bcd
00000890: PUSH1 0xe5
00000892: SHL
00000893: DUP2
00000894: MSTORE
00000895: PUSH1 0x04
00000897: ADD
00000898: PUSH2 0x06b1
0000089b: SWAP1
0000089c: PUSH2 0x19e1
0000089f: JUMP
000008a0: JUMPDEST
000008a1: PUSH1 0x00
000008a3: DUP2
000008a4: DUP1
000008a5: PUSH1 0x20
000008a7: ADD
000008a8: SWAP1
000008a9: MLOAD
000008aa: DUP2
000008ab: ADD
000008ac: SWAP1
000008ad: PUSH2 0x08b6
000008b0: SWAP2
000008b1: SWAP1
000008b2: PUSH2 0x1458
000008b5: JUMP
000008b6: JUMPDEST
000008b7: SWAP1
000008b8: POP
000008b9: PUSH2 0x08c1
000008bc: DUP2
000008bd: PUSH2 0x0b45
000008c0: JUMP
000008c1: JUMPDEST
000008c2: POP
000008c3: POP
000008c4: POP
000008c5: POP
000008c6: POP
000008c7: JUMP
000008c8: JUMPDEST
000008c9: PUSH1 0x00
000008cb: SLOAD
000008cc: PUSH1 0x01
000008ce: PUSH1 0x01
000008d0: PUSH1 0xa0
000008d2: SHL
000008d3: SUB
000008d4: AND
000008d5: CALLER
000008d6: EQ
000008d7: PUSH2 0x08f2
000008da: JUMPI
000008db: PUSH1 0x40
000008dd: MLOAD
000008de: PUSH3 0x461bcd
000008e2: PUSH1 0xe5
000008e4: SHL
000008e5: DUP2
000008e6: MSTORE
000008e7: PUSH1 0x04
000008e9: ADD
000008ea: PUSH2 0x06b1
000008ed: SWAP1
000008ee: PUSH2 0x1950
000008f1: JUMP
000008f2: JUMPDEST
000008f3: PUSH1 0x00
000008f5: DUP1
000008f6: SLOAD
000008f7: PUSH1 0x01
000008f9: PUSH1 0x01
000008fb: PUSH1 0xa0
000008fd: SHL
000008fe: SUB
000008ff: NOT
00000900: AND
00000901: PUSH1 0x01
00000903: PUSH1 0x01
00000905: PUSH1 0xa0
00000907: SHL
00000908: SUB
00000909: SWAP3
0000090a: SWAP1
0000090b: SWAP3
0000090c: AND
0000090d: SWAP2
0000090e: SWAP1
0000090f: SWAP2
00000910: OR
00000911: SWAP1
00000912: SSTORE
00000913: JUMP
00000914: JUMPDEST
00000915: PUSH1 0x00
00000917: SLOAD
00000918: PUSH1 0x01
0000091a: PUSH1 0x01
0000091c: PUSH1 0xa0
0000091e: SHL
0000091f: SUB
00000920: AND
00000921: CALLER
00000922: EQ
00000923: PUSH2 0x093e
00000926: JUMPI
00000927: PUSH1 0x40
00000929: MLOAD
0000092a: PUSH3 0x461bcd
0000092e: PUSH1 0xe5
00000930: SHL
00000931: DUP2
00000932: MSTORE
00000933: PUSH1 0x04
00000935: ADD
00000936: PUSH2 0x06b1
00000939: SWAP1
0000093a: PUSH2 0x1950
0000093d: JUMP
0000093e: JUMPDEST
0000093f: COINBASE
00000940: PUSH1 0x01
00000942: PUSH1 0x01
00000944: PUSH1 0xa0
00000946: SHL
00000947: SUB
00000948: DUP3
00000949: AND
0000094a: EQ
0000094b: ISZERO
0000094c: PUSH2 0x0967
0000094f: JUMPI
00000950: PUSH1 0x40
00000952: MLOAD
00000953: PUSH3 0x461bcd
00000957: PUSH1 0xe5
00000959: SHL
0000095a: DUP2
0000095b: MSTORE
0000095c: PUSH1 0x04
0000095e: ADD
0000095f: PUSH2 0x06b1
00000962: SWAP1
00000963: PUSH2 0x198a
00000966: JUMP
00000967: JUMPDEST
00000968: COINBASE
00000969: PUSH2 0x0984
0000096c: JUMPI
0000096d: PUSH1 0x40
0000096f: MLOAD
00000970: PUSH3 0x461bcd
00000974: PUSH1 0xe5
00000976: SHL
00000977: DUP2
00000978: MSTORE
00000979: PUSH1 0x04
0000097b: ADD
0000097c: PUSH2 0x06b1
0000097f: SWAP1
00000980: PUSH2 0x19a7
00000983: JUMP
00000984: JUMPDEST
00000985: PUSH2 0x098d
00000988: DUP3
00000989: PUSH2 0x0b45
0000098c: JUMP
0000098d: JUMPDEST
0000098e: POP
0000098f: POP
00000990: POP
00000991: JUMP
00000992: JUMPDEST
00000993: PUSH1 0x00
00000995: DUP1
00000996: SLOAD
00000997: PUSH1 0x01
00000999: PUSH1 0x01
0000099b: PUSH1 0xa0
0000099d: SHL
0000099e: SUB
0000099f: AND
000009a0: CALLER
000009a1: EQ
000009a2: PUSH2 0x09bd
000009a5: JUMPI
000009a6: PUSH1 0x40
000009a8: MLOAD
000009a9: PUSH3 0x461bcd
000009ad: PUSH1 0xe5
000009af: SHL
000009b0: DUP2
000009b1: MSTORE
000009b2: PUSH1 0x04
000009b4: ADD
000009b5: PUSH2 0x06b1
000009b8: SWAP1
000009b9: PUSH2 0x1950
000009bc: JUMP
000009bd: JUMPDEST
000009be: PUSH1 0x40
000009c0: MLOAD
000009c1: PUSH4 0x70a08231
000009c6: PUSH1 0xe0
000009c8: SHL
000009c9: DUP2
000009ca: MSTORE
000009cb: PUSH1 0x01
000009cd: PUSH1 0x01
000009cf: PUSH1 0xa0
000009d1: SHL
000009d2: SUB
000009d3: DUP4
000009d4: AND
000009d5: SWAP1
000009d6: PUSH4 0xa9059cbb
000009db: SWAP1
000009dc: CALLER
000009dd: SWAP1
000009de: DUP4
000009df: SWAP1
000009e0: PUSH4 0x70a08231
000009e5: SWAP1
000009e6: PUSH2 0x09f3
000009e9: SWAP1
000009ea: ADDRESS
000009eb: SWAP1
000009ec: PUSH1 0x04
000009ee: ADD
000009ef: PUSH2 0x1748
000009f2: JUMP
000009f3: JUMPDEST
000009f4: PUSH1 0x20
000009f6: PUSH1 0x40
000009f8: MLOAD
000009f9: DUP1
000009fa: DUP4
000009fb: SUB
000009fc: DUP2
000009fd: DUP7
000009fe: DUP1
000009ff: EXTCODESIZE
00000a00: ISZERO
00000a01: DUP1
00000a02: ISZERO
00000a03: PUSH2 0x0a0b
00000a06: JUMPI
00000a07: PUSH1 0x00
00000a09: DUP1
00000a0a: REVERT
00000a0b: JUMPDEST
00000a0c: POP
00000a0d: GAS
00000a0e: STATICCALL
00000a0f: ISZERO
00000a10: DUP1
00000a11: ISZERO
00000a12: PUSH2 0x0a1f
00000a15: JUMPI
00000a16: RETURNDATASIZE
00000a17: PUSH1 0x00
00000a19: DUP1
00000a1a: RETURNDATACOPY
00000a1b: RETURNDATASIZE
00000a1c: PUSH1 0x00
00000a1e: REVERT
00000a1f: JUMPDEST
00000a20: POP
00000a21: POP
00000a22: POP
00000a23: POP
00000a24: PUSH1 0x40
00000a26: MLOAD
00000a27: RETURNDATASIZE
00000a28: PUSH1 0x1f
00000a2a: NOT
00000a2b: PUSH1 0x1f
00000a2d: DUP3
00000a2e: ADD
00000a2f: AND
00000a30: DUP3
00000a31: ADD
00000a32: DUP1
00000a33: PUSH1 0x40
00000a35: MSTORE
00000a36: POP
00000a37: DUP2
00000a38: ADD
00000a39: SWAP1
00000a3a: PUSH2 0x0a43
00000a3d: SWAP2
00000a3e: SWAP1
00000a3f: PUSH2 0x1673
00000a42: JUMP
00000a43: JUMPDEST
00000a44: PUSH1 0x40
00000a46: MLOAD
00000a47: DUP4
00000a48: PUSH4 0xffffffff
00000a4d: AND
00000a4e: PUSH1 0xe0
00000a50: SHL
00000a51: DUP2
00000a52: MSTORE
00000a53: PUSH1 0x04
00000a55: ADD
00000a56: PUSH2 0x0a60
00000a59: SWAP3
00000a5a: SWAP2
00000a5b: SWAP1
00000a5c: PUSH2 0x175c
00000a5f: JUMP
00000a60: JUMPDEST
00000a61: PUSH1 0x20
00000a63: PUSH1 0x40
00000a65: MLOAD
00000a66: DUP1
00000a67: DUP4
00000a68: SUB
00000a69: DUP2
00000a6a: PUSH1 0x00
00000a6c: DUP8
00000a6d: DUP1
00000a6e: EXTCODESIZE
00000a6f: ISZERO
00000a70: DUP1
00000a71: ISZERO
00000a72: PUSH2 0x0a7a
00000a75: JUMPI
00000a76: PUSH1 0x00
00000a78: DUP1
00000a79: REVERT
00000a7a: JUMPDEST
00000a7b: POP
00000a7c: GAS
00000a7d: CALL
00000a7e: ISZERO
00000a7f: DUP1
00000a80: ISZERO
00000a81: PUSH2 0x0a8e
00000a84: JUMPI
00000a85: RETURNDATASIZE
00000a86: PUSH1 0x00
00000a88: DUP1
00000a89: RETURNDATACOPY
00000a8a: RETURNDATASIZE
00000a8b: PUSH1 0x00
00000a8d: REVERT
00000a8e: JUMPDEST
00000a8f: POP
00000a90: POP
00000a91: POP
00000a92: POP
00000a93: PUSH1 0x40
00000a95: MLOAD
00000a96: RETURNDATASIZE
00000a97: PUSH1 0x1f
00000a99: NOT
00000a9a: PUSH1 0x1f
00000a9c: DUP3
00000a9d: ADD
00000a9e: AND
00000a9f: DUP3
00000aa0: ADD
00000aa1: DUP1
00000aa2: PUSH1 0x40
00000aa4: MSTORE
00000aa5: POP
00000aa6: DUP2
00000aa7: ADD
00000aa8: SWAP1
00000aa9: PUSH2 0x0ab2
00000aac: SWAP2
00000aad: SWAP1
00000aae: PUSH2 0x1657
00000ab1: JUMP
00000ab2: JUMPDEST
00000ab3: SWAP1
00000ab4: POP
00000ab5: JUMPDEST
00000ab6: SWAP2
00000ab7: SWAP1
00000ab8: POP
00000ab9: JUMP
00000aba: JUMPDEST
00000abb: POP
00000abc: POP
00000abd: POP
00000abe: POP
00000abf: JUMP
00000ac0: JUMPDEST
00000ac1: PUSH1 0x00
00000ac3: SLOAD
00000ac4: PUSH1 0x01
00000ac6: PUSH1 0x01
00000ac8: PUSH1 0xa0
00000aca: SHL
00000acb: SUB
00000acc: AND
00000acd: CALLER
00000ace: EQ
00000acf: PUSH2 0x0aea
00000ad2: JUMPI
00000ad3: PUSH1 0x40
00000ad5: MLOAD
00000ad6: PUSH3 0x461bcd
00000ada: PUSH1 0xe5
00000adc: SHL
00000add: DUP2
00000ade: MSTORE
00000adf: PUSH1 0x04
00000ae1: ADD
00000ae2: PUSH2 0x06b1
00000ae5: SWAP1
00000ae6: PUSH2 0x1950
00000ae9: JUMP
00000aea: JUMPDEST
00000aeb: PUSH2 0x0841
00000aee: DUP2
00000aef: PUSH2 0x0b45
00000af2: JUMP
00000af3: JUMPDEST
00000af4: PUSH1 0x00
00000af6: SLOAD
00000af7: PUSH1 0x01
00000af9: PUSH1 0x01
00000afb: PUSH1 0xa0
00000afd: SHL
00000afe: SUB
00000aff: AND
00000b00: CALLER
00000b01: EQ
00000b02: PUSH2 0x0b1d
00000b05: JUMPI
00000b06: PUSH1 0x40
00000b08: MLOAD
00000b09: PUSH3 0x461bcd
00000b0d: PUSH1 0xe5
00000b0f: SHL
00000b10: DUP2
00000b11: MSTORE
00000b12: PUSH1 0x04
00000b14: ADD
00000b15: PUSH2 0x06b1
00000b18: SWAP1
00000b19: PUSH2 0x1950
00000b1c: JUMP
00000b1d: JUMPDEST
00000b1e: DUP1
00000b1f: PUSH1 0x01
00000b21: PUSH1 0x01
00000b23: PUSH1 0x80
00000b25: SHL
00000b26: SUB
00000b27: AND
00000b28: NUMBER
00000b29: EQ
00000b2a: PUSH2 0x0967
00000b2d: JUMPI
00000b2e: PUSH1 0x40
00000b30: MLOAD
00000b31: PUSH3 0x461bcd
00000b35: PUSH1 0xe5
00000b37: SHL
00000b38: DUP2
00000b39: MSTORE
00000b3a: PUSH1 0x04
00000b3c: ADD
00000b3d: PUSH2 0x06b1
00000b40: SWAP1
00000b41: PUSH2 0x18f9
00000b44: JUMP
00000b45: JUMPDEST
00000b46: PUSH1 0x00
00000b48: DUP1
00000b49: JUMPDEST
00000b4a: DUP3
00000b4b: MLOAD
00000b4c: DUP2
00000b4d: LT
00000b4e: ISZERO
00000b4f: PUSH2 0x0faa
00000b52: JUMPI
00000b53: PUSH1 0x00
00000b55: DUP4
00000b56: DUP3
00000b57: DUP2
00000b58: MLOAD
00000b59: DUP2
00000b5a: LT
00000b5b: PUSH2 0x0b60
00000b5e: JUMPI
00000b5f: INVALID
00000b60: JUMPDEST
00000b61: PUSH1 0x20
00000b63: MUL
00000b64: PUSH1 0x20
00000b66: ADD
00000b67: ADD
00000b68: MLOAD
00000b69: PUSH1 0x00
00000b6b: ADD
00000b6c: MLOAD
00000b6d: SWAP1
00000b6e: POP
00000b6f: PUSH1 0x00
00000b71: DUP5
00000b72: DUP4
00000b73: DUP2
00000b74: MLOAD
00000b75: DUP2
00000b76: LT
00000b77: PUSH2 0x0b7c
00000b7a: JUMPI
00000b7b: INVALID
00000b7c: JUMPDEST
00000b7d: PUSH1 0x20
00000b7f: MUL
00000b80: PUSH1 0x20
00000b82: ADD
00000b83: ADD
00000b84: MLOAD
00000b85: PUSH1 0x40
00000b87: ADD
00000b88: MLOAD
00000b89: PUSH1 0x01
00000b8b: PUSH1 0x01
00000b8d: PUSH1 0x80
00000b8f: SHL
00000b90: SUB
00000b91: AND
00000b92: SWAP1
00000b93: POP
00000b94: PUSH1 0x03
00000b96: DUP3
00000b97: PUSH1 0xff
00000b99: AND
00000b9a: SWAP1
00000b9b: SHR
00000b9c: PUSH1 0x01
00000b9e: AND
00000b9f: PUSH1 0xff
00000ba1: AND
00000ba2: PUSH1 0x01
00000ba4: EQ
00000ba5: ISZERO
00000ba6: PUSH2 0x0c16
00000ba9: JUMPI
00000baa: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000bbf: PUSH1 0x01
00000bc1: PUSH1 0x01
00000bc3: PUSH1 0xa0
00000bc5: SHL
00000bc6: SUB
00000bc7: AND
00000bc8: PUSH4 0xd0e30db0
00000bcd: DUP3
00000bce: PUSH1 0x40
00000bd0: MLOAD
00000bd1: DUP3
00000bd2: PUSH4 0xffffffff
00000bd7: AND
00000bd8: PUSH1 0xe0
00000bda: SHL
00000bdb: DUP2
00000bdc: MSTORE
00000bdd: PUSH1 0x04
00000bdf: ADD
00000be0: PUSH1 0x00
00000be2: PUSH1 0x40
00000be4: MLOAD
00000be5: DUP1
00000be6: DUP4
00000be7: SUB
00000be8: DUP2
00000be9: DUP6
00000bea: DUP9
00000beb: DUP1
00000bec: EXTCODESIZE
00000bed: ISZERO
00000bee: DUP1
00000bef: ISZERO
00000bf0: PUSH2 0x0bf8
00000bf3: JUMPI
00000bf4: PUSH1 0x00
00000bf6: DUP1
00000bf7: REVERT
00000bf8: JUMPDEST
00000bf9: POP
00000bfa: GAS
00000bfb: CALL
00000bfc: ISZERO
00000bfd: DUP1
00000bfe: ISZERO
00000bff: PUSH2 0x0c0c
00000c02: JUMPI
00000c03: RETURNDATASIZE
00000c04: PUSH1 0x00
00000c06: DUP1
00000c07: RETURNDATACOPY
00000c08: RETURNDATASIZE
00000c09: PUSH1 0x00
00000c0b: REVERT
00000c0c: JUMPDEST
00000c0d: POP
00000c0e: POP
00000c0f: POP
00000c10: POP
00000c11: POP
00000c12: PUSH1 0x00
00000c14: SWAP1
00000c15: POP
00000c16: JUMPDEST
00000c17: PUSH1 0x01
00000c19: PUSH1 0x04
00000c1b: DUP4
00000c1c: SWAP1
00000c1d: SHR
00000c1e: DUP2
00000c1f: AND
00000c20: EQ
00000c21: ISZERO
00000c22: PUSH2 0x0c29
00000c25: JUMPI
00000c26: POP
00000c27: PUSH1 0x00
00000c29: JUMPDEST
00000c2a: PUSH1 0x00
00000c2c: DUP6
00000c2d: DUP5
00000c2e: DUP2
00000c2f: MLOAD
00000c30: DUP2
00000c31: LT
00000c32: PUSH2 0x0c37
00000c35: JUMPI
00000c36: INVALID
00000c37: JUMPDEST
00000c38: PUSH1 0x20
00000c3a: MUL
00000c3b: PUSH1 0x20
00000c3d: ADD
00000c3e: ADD
00000c3f: MLOAD
00000c40: PUSH1 0x20
00000c42: ADD
00000c43: MLOAD
00000c44: SWAP1
00000c45: POP
00000c46: PUSH1 0x00
00000c48: DUP7
00000c49: DUP6
00000c4a: DUP2
00000c4b: MLOAD
00000c4c: DUP2
00000c4d: LT
00000c4e: PUSH2 0x0c53
00000c51: JUMPI
00000c52: INVALID
00000c53: JUMPDEST
00000c54: PUSH1 0x20
00000c56: MUL
00000c57: PUSH1 0x20
00000c59: ADD
00000c5a: ADD
00000c5b: MLOAD
00000c5c: PUSH1 0x80
00000c5e: ADD
00000c5f: MLOAD
00000c60: SWAP1
00000c61: POP
00000c62: PUSH1 0x00
00000c64: GAS
00000c65: SWAP1
00000c66: POP
00000c67: PUSH1 0x01
00000c69: PUSH1 0x01
00000c6b: PUSH1 0x01
00000c6d: PUSH1 0xa0
00000c6f: SHL
00000c70: SUB
00000c71: DUP5
00000c72: AND
00000c73: ISZERO
00000c74: PUSH2 0x0c87
00000c77: JUMPI
00000c78: PUSH1 0x00
00000c7a: DUP1
00000c7b: DUP5
00000c7c: MLOAD
00000c7d: PUSH1 0x20
00000c7f: DUP7
00000c80: ADD
00000c81: DUP9
00000c82: DUP9
00000c83: DUP8
00000c84: CALL
00000c85: SWAP1
00000c86: POP
00000c87: JUMPDEST
00000c88: PUSH1 0x01
00000c8a: DUP1
00000c8b: DUP8
00000c8c: AND
00000c8d: EQ
00000c8e: ISZERO
00000c8f: PUSH2 0x0cb5
00000c92: JUMPI
00000c93: DUP1
00000c94: PUSH1 0xff
00000c96: AND
00000c97: PUSH1 0x01
00000c99: EQ
00000c9a: PUSH2 0x0cb5
00000c9d: JUMPI
00000c9e: PUSH1 0x40
00000ca0: MLOAD
00000ca1: PUSH3 0x461bcd
00000ca5: PUSH1 0xe5
00000ca7: SHL
00000ca8: DUP2
00000ca9: MSTORE
00000caa: PUSH1 0x04
00000cac: ADD
00000cad: PUSH2 0x06b1
00000cb0: SWAP1
00000cb1: PUSH2 0x18dc
00000cb4: JUMP
00000cb5: JUMPDEST
00000cb6: DUP1
00000cb7: PUSH1 0xff
00000cb9: AND
00000cba: PUSH1 0x01
00000cbc: EQ
00000cbd: PUSH2 0x0ce8
00000cc0: JUMPI
00000cc1: PUSH1 0xff
00000cc3: DUP9
00000cc4: AND
00000cc5: PUSH2 0x0ccf
00000cc8: JUMPI
00000cc9: DUP7
00000cca: PUSH1 0x0a
00000ccc: ADD
00000ccd: SWAP8
00000cce: POP
00000ccf: JUMPDEST
00000cd0: PUSH1 0x01
00000cd2: DUP7
00000cd3: DUP2
00000cd4: SHR
00000cd5: DUP2
00000cd6: AND
00000cd7: EQ
00000cd8: ISZERO
00000cd9: PUSH2 0x0ce8
00000cdc: JUMPI
00000cdd: POP
00000cde: POP
00000cdf: POP
00000ce0: POP
00000ce1: POP
00000ce2: POP
00000ce3: POP
00000ce4: PUSH2 0x0ab5
00000ce7: JUMP
00000ce8: JUMPDEST
00000ce9: PUSH1 0x01
00000ceb: PUSH1 0x04
00000ced: DUP8
00000cee: SWAP1
00000cef: SHR
00000cf0: DUP2
00000cf1: AND
00000cf2: EQ
00000cf3: ISZERO
00000cf4: PUSH2 0x0eb5
00000cf7: JUMPI
00000cf8: PUSH1 0x00
00000cfa: DUP10
00000cfb: DUP9
00000cfc: DUP2
00000cfd: MLOAD
00000cfe: DUP2
00000cff: LT
00000d00: PUSH2 0x0d05
00000d03: JUMPI
00000d04: INVALID
00000d05: JUMPDEST
00000d06: PUSH1 0x20
00000d08: MUL
00000d09: PUSH1 0x20
00000d0b: ADD
00000d0c: ADD
00000d0d: MLOAD
00000d0e: PUSH1 0x40
00000d10: ADD
00000d11: MLOAD
00000d12: PUSH1 0x01
00000d14: PUSH1 0x01
00000d16: PUSH1 0x80
00000d18: SHL
00000d19: SUB
00000d1a: AND
00000d1b: SWAP1
00000d1c: POP
00000d1d: DUP1
00000d1e: PUSH1 0x00
00000d20: EQ
00000d21: ISZERO
00000d22: PUSH2 0x0db3
00000d25: JUMPI
00000d26: PUSH1 0x40
00000d28: MLOAD
00000d29: PUSH4 0x70a08231
00000d2e: PUSH1 0xe0
00000d30: SHL
00000d31: DUP2
00000d32: MSTORE
00000d33: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000d48: SWAP1
00000d49: PUSH4 0x70a08231
00000d4e: SWAP1
00000d4f: PUSH2 0x0d5c
00000d52: SWAP1
00000d53: ADDRESS
00000d54: SWAP1
00000d55: PUSH1 0x04
00000d57: ADD
00000d58: PUSH2 0x1748
00000d5b: JUMP
00000d5c: JUMPDEST
00000d5d: PUSH1 0x20
00000d5f: PUSH1 0x40
00000d61: MLOAD
00000d62: DUP1
00000d63: DUP4
00000d64: SUB
00000d65: DUP2
00000d66: DUP7
00000d67: DUP1
00000d68: EXTCODESIZE
00000d69: ISZERO
00000d6a: DUP1
00000d6b: ISZERO
00000d6c: PUSH2 0x0d74
00000d6f: JUMPI
00000d70: PUSH1 0x00
00000d72: DUP1
00000d73: REVERT
00000d74: JUMPDEST
00000d75: POP
00000d76: GAS
00000d77: STATICCALL
00000d78: ISZERO
00000d79: DUP1
00000d7a: ISZERO
00000d7b: PUSH2 0x0d88
00000d7e: JUMPI
00000d7f: RETURNDATASIZE
00000d80: PUSH1 0x00
00000d82: DUP1
00000d83: RETURNDATACOPY
00000d84: RETURNDATASIZE
00000d85: PUSH1 0x00
00000d87: REVERT
00000d88: JUMPDEST
00000d89: POP
00000d8a: POP
00000d8b: POP
00000d8c: POP
00000d8d: PUSH1 0x40
00000d8f: MLOAD
00000d90: RETURNDATASIZE
00000d91: PUSH1 0x1f
00000d93: NOT
00000d94: PUSH1 0x1f
00000d96: DUP3
00000d97: ADD
00000d98: AND
00000d99: DUP3
00000d9a: ADD
00000d9b: DUP1
00000d9c: PUSH1 0x40
00000d9e: MSTORE
00000d9f: POP
00000da0: DUP2
00000da1: ADD
00000da2: SWAP1
00000da3: PUSH2 0x0dac
00000da6: SWAP2
00000da7: SWAP1
00000da8: PUSH2 0x1673
00000dab: JUMP
00000dac: JUMPDEST
00000dad: SWAP1
00000dae: POP
00000daf: PUSH2 0x0e4a
00000db2: JUMP
00000db3: JUMPDEST
00000db4: DUP1
00000db5: PUSH1 0x01
00000db7: EQ
00000db8: ISZERO
00000db9: PUSH2 0x0e4a
00000dbc: JUMPI
00000dbd: PUSH1 0x40
00000dbf: MLOAD
00000dc0: PUSH4 0x70a08231
00000dc5: PUSH1 0xe0
00000dc7: SHL
00000dc8: DUP2
00000dc9: MSTORE
00000dca: PUSH1 0x02
00000dcc: SWAP1
00000dcd: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000de2: SWAP1
00000de3: PUSH4 0x70a08231
00000de8: SWAP1
00000de9: PUSH2 0x0df6
00000dec: SWAP1
00000ded: ADDRESS
00000dee: SWAP1
00000def: PUSH1 0x04
00000df1: ADD
00000df2: PUSH2 0x1748
00000df5: JUMP
00000df6: JUMPDEST
00000df7: PUSH1 0x20
00000df9: PUSH1 0x40
00000dfb: MLOAD
00000dfc: DUP1
00000dfd: DUP4
00000dfe: SUB
00000dff: DUP2
00000e00: DUP7
00000e01: DUP1
00000e02: EXTCODESIZE
00000e03: ISZERO
00000e04: DUP1
00000e05: ISZERO
00000e06: PUSH2 0x0e0e
00000e09: JUMPI
00000e0a: PUSH1 0x00
00000e0c: DUP1
00000e0d: REVERT
00000e0e: JUMPDEST
00000e0f: POP
00000e10: GAS
00000e11: STATICCALL
00000e12: ISZERO
00000e13: DUP1
00000e14: ISZERO
00000e15: PUSH2 0x0e22
00000e18: JUMPI
00000e19: RETURNDATASIZE
00000e1a: PUSH1 0x00
00000e1c: DUP1
00000e1d: RETURNDATACOPY
00000e1e: RETURNDATASIZE
00000e1f: PUSH1 0x00
00000e21: REVERT
00000e22: JUMPDEST
00000e23: POP
00000e24: POP
00000e25: POP
00000e26: POP
00000e27: PUSH1 0x40
00000e29: MLOAD
00000e2a: RETURNDATASIZE
00000e2b: PUSH1 0x1f
00000e2d: NOT
00000e2e: PUSH1 0x1f
00000e30: DUP3
00000e31: ADD
00000e32: AND
00000e33: DUP3
00000e34: ADD
00000e35: DUP1
00000e36: PUSH1 0x40
00000e38: MSTORE
00000e39: POP
00000e3a: DUP2
00000e3b: ADD
00000e3c: SWAP1
00000e3d: PUSH2 0x0e46
00000e40: SWAP2
00000e41: SWAP1
00000e42: PUSH2 0x1673
00000e45: JUMP
00000e46: JUMPDEST
00000e47: SUB
00000e48: SWAP1
00000e49: POP
00000e4a: JUMPDEST
00000e4b: PUSH1 0x40
00000e4d: MLOAD
00000e4e: PUSH4 0x2e1a7d4d
00000e53: PUSH1 0xe0
00000e55: SHL
00000e56: DUP2
00000e57: MSTORE
00000e58: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000e6d: SWAP1
00000e6e: PUSH4 0x2e1a7d4d
00000e73: SWAP1
00000e74: PUSH2 0x0e81
00000e77: SWAP1
00000e78: DUP5
00000e79: SWAP1
00000e7a: PUSH1 0x04
00000e7c: ADD
00000e7d: PUSH2 0x19fe
00000e80: JUMP
00000e81: JUMPDEST
00000e82: PUSH1 0x00
00000e84: PUSH1 0x40
00000e86: MLOAD
00000e87: DUP1
00000e88: DUP4
00000e89: SUB
00000e8a: DUP2
00000e8b: PUSH1 0x00
00000e8d: DUP8
00000e8e: DUP1
00000e8f: EXTCODESIZE
00000e90: ISZERO
00000e91: DUP1
00000e92: ISZERO
00000e93: PUSH2 0x0e9b
00000e96: JUMPI
00000e97: PUSH1 0x00
00000e99: DUP1
00000e9a: REVERT
00000e9b: JUMPDEST
00000e9c: POP
00000e9d: GAS
00000e9e: CALL
00000e9f: ISZERO
00000ea0: DUP1
00000ea1: ISZERO
00000ea2: PUSH2 0x0eaf
00000ea5: JUMPI
00000ea6: RETURNDATASIZE
00000ea7: PUSH1 0x00
00000ea9: DUP1
00000eaa: RETURNDATACOPY
00000eab: RETURNDATASIZE
00000eac: PUSH1 0x00
00000eae: REVERT
00000eaf: JUMPDEST
00000eb0: POP
00000eb1: POP
00000eb2: POP
00000eb3: POP
00000eb4: POP
00000eb5: JUMPDEST
00000eb6: PUSH1 0x00
00000eb8: DUP10
00000eb9: DUP9
00000eba: DUP2
00000ebb: MLOAD
00000ebc: DUP2
00000ebd: LT
00000ebe: PUSH2 0x0ec3
00000ec1: JUMPI
00000ec2: INVALID
00000ec3: JUMPDEST
00000ec4: PUSH1 0x20
00000ec6: MUL
00000ec7: PUSH1 0x20
00000ec9: ADD
00000eca: ADD
00000ecb: MLOAD
00000ecc: PUSH1 0x60
00000ece: ADD
00000ecf: MLOAD
00000ed0: PUSH1 0x01
00000ed2: PUSH1 0x01
00000ed4: PUSH1 0x80
00000ed6: SHL
00000ed7: SUB
00000ed8: AND
00000ed9: SWAP1
00000eda: POP
00000edb: DUP1
00000edc: PUSH1 0x00
00000ede: EQ
00000edf: PUSH2 0x0f97
00000ee2: JUMPI
00000ee3: PUSH1 0x01
00000ee5: PUSH1 0x02
00000ee7: DUP9
00000ee8: SWAP1
00000ee9: SHR
00000eea: DUP2
00000eeb: AND
00000eec: EQ
00000eed: ISZERO
00000eee: PUSH2 0x0f8b
00000ef1: JUMPI
00000ef2: PUSH1 0x40
00000ef4: MLOAD
00000ef5: PUSH4 0x70a08231
00000efa: PUSH1 0xe0
00000efc: SHL
00000efd: DUP2
00000efe: MSTORE
00000eff: DUP2
00000f00: SWAP1
00000f01: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000f16: SWAP1
00000f17: PUSH4 0x70a08231
00000f1c: SWAP1
00000f1d: PUSH2 0x0f2a
00000f20: SWAP1
00000f21: ADDRESS
00000f22: SWAP1
00000f23: PUSH1 0x04
00000f25: ADD
00000f26: PUSH2 0x1748
00000f29: JUMP
00000f2a: JUMPDEST
00000f2b: PUSH1 0x20
00000f2d: PUSH1 0x40
00000f2f: MLOAD
00000f30: DUP1
00000f31: DUP4
00000f32: SUB
00000f33: DUP2
00000f34: DUP7
00000f35: DUP1
00000f36: EXTCODESIZE
00000f37: ISZERO
00000f38: DUP1
00000f39: ISZERO
00000f3a: PUSH2 0x0f42
00000f3d: JUMPI
00000f3e: PUSH1 0x00
00000f40: DUP1
00000f41: REVERT
00000f42: JUMPDEST
00000f43: POP
00000f44: GAS
00000f45: STATICCALL
00000f46: ISZERO
00000f47: DUP1
00000f48: ISZERO
00000f49: PUSH2 0x0f56
00000f4c: JUMPI
00000f4d: RETURNDATASIZE
00000f4e: PUSH1 0x00
00000f50: DUP1
00000f51: RETURNDATACOPY
00000f52: RETURNDATASIZE
00000f53: PUSH1 0x00
00000f55: REVERT
00000f56: JUMPDEST
00000f57: POP
00000f58: POP
00000f59: POP
00000f5a: POP
00000f5b: PUSH1 0x40
00000f5d: MLOAD
00000f5e: RETURNDATASIZE
00000f5f: PUSH1 0x1f
00000f61: NOT
00000f62: PUSH1 0x1f
00000f64: DUP3
00000f65: ADD
00000f66: AND
00000f67: DUP3
00000f68: ADD
00000f69: DUP1
00000f6a: PUSH1 0x40
00000f6c: MSTORE
00000f6d: POP
00000f6e: DUP2
00000f6f: ADD
00000f70: SWAP1
00000f71: PUSH2 0x0f7a
00000f74: SWAP2
00000f75: SWAP1
00000f76: PUSH2 0x1673
00000f79: JUMP
00000f7a: JUMPDEST
00000f7b: SELFBALANCE
00000f7c: ADD
00000f7d: GT
00000f7e: PUSH2 0x0f86
00000f81: JUMPI
00000f82: PUSH1 0x00
00000f84: DUP1
00000f85: REVERT
00000f86: JUMPDEST
00000f87: PUSH2 0x0f97
00000f8a: JUMP
00000f8b: JUMPDEST
00000f8c: DUP1
00000f8d: SELFBALANCE
00000f8e: GT
00000f8f: PUSH2 0x0f97
00000f92: JUMPI
00000f93: PUSH1 0x00
00000f95: DUP1
00000f96: REVERT
00000f97: JUMPDEST
00000f98: POP
00000f99: POP
00000f9a: PUSH1 0x01
00000f9c: SWAP1
00000f9d: SWAP6
00000f9e: ADD
00000f9f: SWAP5
00000fa0: POP
00000fa1: PUSH2 0x0b49
00000fa4: SWAP4
00000fa5: POP
00000fa6: POP
00000fa7: POP
00000fa8: POP
00000fa9: JUMP
00000faa: JUMPDEST
00000fab: POP
00000fac: SWAP2
00000fad: SWAP1
00000fae: POP
00000faf: JUMP
00000fb0: JUMPDEST
00000fb1: PUSH1 0x40
00000fb3: DUP1
00000fb4: MLOAD
00000fb5: PUSH2 0x0100
00000fb8: DUP2
00000fb9: ADD
00000fba: DUP3
00000fbb: MSTORE
00000fbc: PUSH1 0x00
00000fbe: DUP1
00000fbf: DUP3
00000fc0: MSTORE
00000fc1: PUSH1 0x20
00000fc3: DUP3
00000fc4: ADD
00000fc5: MSTORE
00000fc6: SWAP1
00000fc7: DUP2
00000fc8: ADD
00000fc9: PUSH2 0x0fd0
00000fcc: PUSH2 0x1019
00000fcf: JUMP
00000fd0: JUMPDEST
00000fd1: DUP2
00000fd2: MSTORE
00000fd3: PUSH1 0x20
00000fd5: ADD
00000fd6: PUSH1 0x00
00000fd8: DUP2
00000fd9: MSTORE
00000fda: PUSH1 0x20
00000fdc: ADD
00000fdd: PUSH1 0x00
00000fdf: DUP2
00000fe0: MSTORE
00000fe1: PUSH1 0x20
00000fe3: ADD
00000fe4: PUSH1 0x00
00000fe6: PUSH1 0x01
00000fe8: PUSH1 0x01
00000fea: PUSH1 0xa0
00000fec: SHL
00000fed: SUB
00000fee: AND
00000fef: DUP2
00000ff0: MSTORE
00000ff1: PUSH1 0x20
00000ff3: ADD
00000ff4: PUSH1 0x00
00000ff6: DUP2
00000ff7: MSTORE
00000ff8: PUSH1 0x20
00000ffa: ADD
00000ffb: PUSH1 0x60
00000ffd: DUP2
00000ffe: MSTORE
00000fff: POP
00001000: SWAP1
00001001: JUMP
00001002: JUMPDEST
00001003: PUSH1 0x40
00001005: DUP1
00001006: MLOAD
00001007: DUP1
00001008: DUP3
00001009: ADD
0000100a: SWAP1
0000100b: SWAP2
0000100c: MSTORE
0000100d: PUSH1 0x00
0000100f: DUP1
00001010: DUP3
00001011: MSTORE
00001012: PUSH1 0x20
00001014: DUP3
00001015: ADD
00001016: MSTORE
00001017: SWAP1
00001018: JUMP
00001019: JUMPDEST
0000101a: PUSH1 0x40
0000101c: DUP1
0000101d: MLOAD
0000101e: PUSH1 0x80
00001020: DUP2
00001021: ADD
00001022: SWAP1
00001023: SWAP2
00001024: MSTORE
00001025: PUSH1 0x00
00001027: DUP1
00001028: DUP3
00001029: MSTORE
0000102a: PUSH1 0x20
0000102c: DUP3
0000102d: ADD
0000102e: SWAP1
0000102f: DUP2
00001030: MSTORE
00001031: PUSH1 0x20
00001033: ADD
00001034: PUSH1 0x00
00001036: DUP2
00001037: MSTORE
00001038: PUSH1 0x20
0000103a: ADD
0000103b: PUSH1 0x00
0000103d: DUP2
0000103e: MSTORE
0000103f: POP
00001040: SWAP1
00001041: JUMP
00001042: JUMPDEST
00001043: DUP1
00001044: CALLDATALOAD
00001045: PUSH2 0x0ab5
00001048: DUP2
00001049: PUSH2 0x1a9e
0000104c: JUMP
0000104d: JUMPDEST
0000104e: DUP1
0000104f: MLOAD
00001050: PUSH2 0x0ab5
00001053: DUP2
00001054: PUSH2 0x1a9e
00001057: JUMP
00001058: JUMPDEST
00001059: PUSH1 0x00
0000105b: DUP3
0000105c: PUSH1 0x1f
0000105e: DUP4
0000105f: ADD
00001060: SLT
00001061: PUSH2 0x1068
00001064: JUMPI
00001065: DUP1
00001066: DUP2
00001067: REVERT
00001068: JUMPDEST
00001069: DUP2
0000106a: CALLDATALOAD
0000106b: PUSH1 0x20
0000106d: PUSH2 0x107d
00001070: PUSH2 0x1078
00001073: DUP4
00001074: PUSH2 0x1a2a
00001077: JUMP
00001078: JUMPDEST
00001079: PUSH2 0x1a07
0000107c: JUMP
0000107d: JUMPDEST
0000107e: DUP3
0000107f: DUP2
00001080: MSTORE
00001081: DUP2
00001082: DUP2
00001083: ADD
00001084: SWAP1
00001085: DUP6
00001086: DUP4
00001087: ADD
00001088: DUP6
00001089: JUMPDEST
0000108a: DUP6
0000108b: DUP2
0000108c: LT
0000108d: ISZERO
0000108e: PUSH2 0x1147
00001091: JUMPI
00001092: DUP2
00001093: CALLDATALOAD
00001094: DUP9
00001095: ADD
00001096: PUSH1 0xa0
00001098: DUP1
00001099: PUSH1 0x1f
0000109b: NOT
0000109c: DUP4
0000109d: DUP14
0000109e: SUB
0000109f: ADD
000010a0: SLT
000010a1: ISZERO
000010a2: PUSH2 0x10a9
000010a5: JUMPI
000010a6: DUP9
000010a7: DUP10
000010a8: REVERT
000010a9: JUMPDEST
000010aa: PUSH1 0x40
000010ac: DUP1
000010ad: MLOAD
000010ae: DUP3
000010af: DUP2
000010b0: ADD
000010b1: PUSH1 0x01
000010b3: PUSH1 0x01
000010b5: PUSH1 0x40
000010b7: SHL
000010b8: SUB
000010b9: DUP3
000010ba: DUP3
000010bb: LT
000010bc: DUP2
000010bd: DUP4
000010be: GT
000010bf: OR
000010c0: ISZERO
000010c1: PUSH2 0x10c6
000010c4: JUMPI
000010c5: INVALID
000010c6: JUMPDEST
000010c7: DUP2
000010c8: DUP5
000010c9: MSTORE
000010ca: PUSH2 0x10d4
000010cd: DUP12
000010ce: DUP8
000010cf: ADD
000010d0: PUSH2 0x1247
000010d3: JUMP
000010d4: JUMPDEST
000010d5: DUP4
000010d6: MSTORE
000010d7: PUSH2 0x10e1
000010da: DUP5
000010db: DUP8
000010dc: ADD
000010dd: PUSH2 0x1042
000010e0: JUMP
000010e1: JUMPDEST
000010e2: DUP12
000010e3: DUP5
000010e4: ADD
000010e5: MSTORE
000010e6: PUSH1 0x60
000010e8: SWAP2
000010e9: POP
000010ea: PUSH2 0x10f4
000010ed: DUP3
000010ee: DUP8
000010ef: ADD
000010f0: PUSH2 0x1231
000010f3: JUMP
000010f4: JUMPDEST
000010f5: DUP5
000010f6: DUP5
000010f7: ADD
000010f8: MSTORE
000010f9: PUSH1 0x80
000010fb: SWAP4
000010fc: POP
000010fd: PUSH2 0x1107
00001100: DUP5
00001101: DUP8
00001102: ADD
00001103: PUSH2 0x1231
00001106: JUMP
00001107: JUMPDEST
00001108: DUP4
00001109: DUP4
0000110a: ADD
0000110b: MSTORE
0000110c: SWAP4
0000110d: DUP6
0000110e: ADD
0000110f: CALLDATALOAD
00001110: SWAP4
00001111: DUP1
00001112: DUP6
00001113: GT
00001114: ISZERO
00001115: PUSH2 0x111c
00001118: JUMPI
00001119: DUP13
0000111a: DUP14
0000111b: REVERT
0000111c: JUMPDEST
0000111d: POP
0000111e: POP
0000111f: PUSH2 0x112c
00001122: DUP14
00001123: DUP11
00001124: DUP6
00001125: DUP8
00001126: ADD
00001127: ADD
00001128: PUSH2 0x119a
0000112b: JUMP
0000112c: JUMPDEST
0000112d: SWAP2
0000112e: DUP2
0000112f: ADD
00001130: SWAP2
00001131: SWAP1
00001132: SWAP2
00001133: MSTORE
00001134: DUP7
00001135: MSTORE
00001136: POP
00001137: POP
00001138: SWAP3
00001139: DUP5
0000113a: ADD
0000113b: SWAP3
0000113c: SWAP1
0000113d: DUP5
0000113e: ADD
0000113f: SWAP1
00001140: PUSH1 0x01
00001142: ADD
00001143: PUSH2 0x1089
00001146: JUMP
00001147: JUMPDEST
00001148: POP
00001149: SWAP1
0000114a: SWAP8
0000114b: SWAP7
0000114c: POP
0000114d: POP
0000114e: POP
0000114f: POP
00001150: POP
00001151: POP
00001152: POP
00001153: JUMP
00001154: JUMPDEST
00001155: PUSH1 0x00
00001157: DUP1
00001158: DUP4
00001159: PUSH1 0x1f
0000115b: DUP5
0000115c: ADD
0000115d: SLT
0000115e: PUSH2 0x1165
00001161: JUMPI
00001162: DUP2
00001163: DUP3
00001164: REVERT
00001165: JUMPDEST
00001166: POP
00001167: DUP2
00001168: CALLDATALOAD
00001169: PUSH1 0x01
0000116b: PUSH1 0x01
0000116d: PUSH1 0x40
0000116f: SHL
00001170: SUB
00001171: DUP2
00001172: GT
00001173: ISZERO
00001174: PUSH2 0x117b
00001177: JUMPI
00001178: DUP2
00001179: DUP3
0000117a: REVERT
0000117b: JUMPDEST
0000117c: PUSH1 0x20
0000117e: DUP4
0000117f: ADD
00001180: SWAP2
00001181: POP
00001182: DUP4
00001183: PUSH1 0x20
00001185: DUP3
00001186: DUP6
00001187: ADD
00001188: ADD
00001189: GT
0000118a: ISZERO
0000118b: PUSH2 0x1193
0000118e: JUMPI
0000118f: PUSH1 0x00
00001191: DUP1
00001192: REVERT
00001193: JUMPDEST
00001194: SWAP3
00001195: POP
00001196: SWAP3
00001197: SWAP1
00001198: POP
00001199: JUMP
0000119a: JUMPDEST
0000119b: PUSH1 0x00
0000119d: DUP3
0000119e: PUSH1 0x1f
000011a0: DUP4
000011a1: ADD
000011a2: SLT
000011a3: PUSH2 0x11aa
000011a6: JUMPI
000011a7: DUP1
000011a8: DUP2
000011a9: REVERT
000011aa: JUMPDEST
000011ab: DUP2
000011ac: CALLDATALOAD
000011ad: PUSH2 0x11b8
000011b0: PUSH2 0x1078
000011b3: DUP3
000011b4: PUSH2 0x1a47
000011b7: JUMP
000011b8: JUMPDEST
000011b9: DUP2
000011ba: DUP2
000011bb: MSTORE
000011bc: DUP5
000011bd: PUSH1 0x20
000011bf: DUP4
000011c0: DUP7
000011c1: ADD
000011c2: ADD
000011c3: GT
000011c4: ISZERO
000011c5: PUSH2 0x11cc
000011c8: JUMPI
000011c9: DUP3
000011ca: DUP4
000011cb: REVERT
000011cc: JUMPDEST
000011cd: DUP2
000011ce: PUSH1 0x20
000011d0: DUP6
000011d1: ADD
000011d2: PUSH1 0x20
000011d4: DUP4
000011d5: ADD
000011d6: CALLDATACOPY
000011d7: SWAP1
000011d8: DUP2
000011d9: ADD
000011da: PUSH1 0x20
000011dc: ADD
000011dd: SWAP2
000011de: SWAP1
000011df: SWAP2
000011e0: MSTORE
000011e1: SWAP3
000011e2: SWAP2
000011e3: POP
000011e4: POP
000011e5: JUMP
000011e6: JUMPDEST
000011e7: PUSH1 0x00
000011e9: DUP3
000011ea: PUSH1 0x1f
000011ec: DUP4
000011ed: ADD
000011ee: SLT
000011ef: PUSH2 0x11f6
000011f2: JUMPI
000011f3: DUP1
000011f4: DUP2
000011f5: REVERT
000011f6: JUMPDEST
000011f7: DUP2
000011f8: MLOAD
000011f9: PUSH2 0x1204
000011fc: PUSH2 0x1078
000011ff: DUP3
00001200: PUSH2 0x1a47
00001203: JUMP
00001204: JUMPDEST
00001205: DUP2
00001206: DUP2
00001207: MSTORE
00001208: DUP5
00001209: PUSH1 0x20
0000120b: DUP4
0000120c: DUP7
0000120d: ADD
0000120e: ADD
0000120f: GT
00001210: ISZERO
00001211: PUSH2 0x1218
00001214: JUMPI
00001215: DUP3
00001216: DUP4
00001217: REVERT
00001218: JUMPDEST
00001219: PUSH2 0x1229
0000121c: DUP3
0000121d: PUSH1 0x20
0000121f: DUP4
00001220: ADD
00001221: PUSH1 0x20
00001223: DUP8
00001224: ADD
00001225: PUSH2 0x1a68
00001228: JUMP
00001229: JUMPDEST
0000122a: SWAP5
0000122b: SWAP4
0000122c: POP
0000122d: POP
0000122e: POP
0000122f: POP
00001230: JUMP
00001231: JUMPDEST
00001232: DUP1
00001233: CALLDATALOAD
00001234: PUSH2 0x0ab5
00001237: DUP2
00001238: PUSH2 0x1ac1
0000123b: JUMP
0000123c: JUMPDEST
0000123d: DUP1
0000123e: MLOAD
0000123f: PUSH2 0x0ab5
00001242: DUP2
00001243: PUSH2 0x1ac1
00001246: JUMP
00001247: JUMPDEST
00001248: DUP1
00001249: CALLDATALOAD
0000124a: PUSH2 0x0ab5
0000124d: DUP2
0000124e: PUSH2 0x1ad6
00001251: JUMP
00001252: JUMPDEST
00001253: DUP1
00001254: MLOAD
00001255: PUSH2 0x0ab5
00001258: DUP2
00001259: PUSH2 0x1ad6
0000125c: JUMP
0000125d: JUMPDEST
0000125e: PUSH1 0x00
00001260: PUSH1 0x20
00001262: DUP3
00001263: DUP5
00001264: SUB
00001265: SLT
00001266: ISZERO
00001267: PUSH2 0x126e
0000126a: JUMPI
0000126b: DUP1
0000126c: DUP2
0000126d: REVERT
0000126e: JUMPDEST
0000126f: DUP2
00001270: CALLDATALOAD
00001271: PUSH2 0x1279
00001274: DUP2
00001275: PUSH2 0x1a9e
00001278: JUMP
00001279: JUMPDEST
0000127a: SWAP4
0000127b: SWAP3
0000127c: POP
0000127d: POP
0000127e: POP
0000127f: JUMP
00001280: JUMPDEST
00001281: PUSH1 0x00
00001283: PUSH1 0x20
00001285: DUP3
00001286: DUP5
00001287: SUB
00001288: SLT
00001289: ISZERO
0000128a: PUSH2 0x1291
0000128d: JUMPI
0000128e: DUP1
0000128f: DUP2
00001290: REVERT
00001291: JUMPDEST
00001292: DUP2
00001293: MLOAD
00001294: PUSH2 0x1279
00001297: DUP2
00001298: PUSH2 0x1a9e
0000129b: JUMP
0000129c: JUMPDEST
0000129d: PUSH1 0x00
0000129f: DUP1
000012a0: PUSH1 0x00
000012a2: DUP4
000012a3: DUP6
000012a4: SUB
000012a5: PUSH1 0x80
000012a7: DUP2
000012a8: SLT
000012a9: ISZERO
000012aa: PUSH2 0x12b1
000012ad: JUMPI
000012ae: DUP3
000012af: DUP4
000012b0: REVERT
000012b1: JUMPDEST
000012b2: DUP5
000012b3: CALLDATALOAD
000012b4: PUSH2 0x12bc
000012b7: DUP2
000012b8: PUSH2 0x1a9e
000012bb: JUMP
000012bc: JUMPDEST
000012bd: SWAP4
000012be: POP
000012bf: PUSH1 0x40
000012c1: PUSH1 0x1f
000012c3: NOT
000012c4: DUP3
000012c5: ADD
000012c6: SLT
000012c7: ISZERO
000012c8: PUSH2 0x12cf
000012cb: JUMPI
000012cc: DUP3
000012cd: DUP4
000012ce: REVERT
000012cf: JUMPDEST
000012d0: POP
000012d1: PUSH1 0x40
000012d3: MLOAD
000012d4: PUSH1 0x40
000012d6: DUP2
000012d7: ADD
000012d8: PUSH1 0x01
000012da: PUSH1 0x01
000012dc: PUSH1 0x40
000012de: SHL
000012df: SUB
000012e0: DUP3
000012e1: DUP3
000012e2: LT
000012e3: DUP2
000012e4: DUP4
000012e5: GT
000012e6: OR
000012e7: ISZERO
000012e8: PUSH2 0x12ed
000012eb: JUMPI
000012ec: INVALID
000012ed: JUMPDEST
000012ee: DUP2
000012ef: PUSH1 0x40
000012f1: MSTORE
000012f2: PUSH1 0x20
000012f4: DUP8
000012f5: ADD
000012f6: CALLDATALOAD
000012f7: SWAP2
000012f8: POP
000012f9: PUSH2 0x1301
000012fc: DUP3
000012fd: PUSH2 0x1a9e
00001300: JUMP
00001301: JUMPDEST
00001302: DUP2
00001303: DUP4
00001304: MSTORE
00001305: PUSH1 0x40
00001307: DUP8
00001308: ADD
00001309: CALLDATALOAD
0000130a: PUSH1 0x20
0000130c: DUP5
0000130d: ADD
0000130e: MSTORE
0000130f: SWAP2
00001310: SWAP4
00001311: POP
00001312: PUSH1 0x60
00001314: DUP7
00001315: ADD
00001316: CALLDATALOAD
00001317: SWAP2
00001318: DUP1
00001319: DUP4
0000131a: GT
0000131b: ISZERO
0000131c: PUSH2 0x1323
0000131f: JUMPI
00001320: DUP4
00001321: DUP5
00001322: REVERT
00001323: JUMPDEST
00001324: POP
00001325: POP
00001326: PUSH2 0x1331
00001329: DUP7
0000132a: DUP3
0000132b: DUP8
0000132c: ADD
0000132d: PUSH2 0x119a
00001330: JUMP
00001331: JUMPDEST
00001332: SWAP2
00001333: POP
00001334: POP
00001335: SWAP3
00001336: POP
00001337: SWAP3
00001338: POP
00001339: SWAP3
0000133a: JUMP
0000133b: JUMPDEST
0000133c: PUSH1 0x00
0000133e: DUP1
0000133f: PUSH1 0x40
00001341: DUP4
00001342: DUP6
00001343: SUB
00001344: SLT
00001345: ISZERO
00001346: PUSH2 0x134d
00001349: JUMPI
0000134a: DUP2
0000134b: DUP3
0000134c: REVERT
0000134d: JUMPDEST
0000134e: DUP3
0000134f: CALLDATALOAD
00001350: PUSH2 0x1358
00001353: DUP2
00001354: PUSH2 0x1a9e
00001357: JUMP
00001358: JUMPDEST
00001359: SWAP5
0000135a: PUSH1 0x20
0000135c: SWAP4
0000135d: SWAP1
0000135e: SWAP4
0000135f: ADD
00001360: CALLDATALOAD
00001361: SWAP4
00001362: POP
00001363: POP
00001364: POP
00001365: JUMP
00001366: JUMPDEST
00001367: PUSH1 0x00
00001369: DUP1
0000136a: PUSH1 0x00
0000136c: DUP1
0000136d: PUSH1 0x60
0000136f: DUP6
00001370: DUP8
00001371: SUB
00001372: SLT
00001373: ISZERO
00001374: PUSH2 0x137b
00001377: JUMPI
00001378: DUP2
00001379: DUP3
0000137a: REVERT
0000137b: JUMPDEST
0000137c: DUP5
0000137d: CALLDATALOAD
0000137e: PUSH2 0x1386
00001381: DUP2
00001382: PUSH2 0x1a9e
00001385: JUMP
00001386: JUMPDEST
00001387: SWAP4
00001388: POP
00001389: PUSH1 0x20
0000138b: DUP6
0000138c: ADD
0000138d: CALLDATALOAD
0000138e: SWAP3
0000138f: POP
00001390: PUSH1 0x40
00001392: DUP6
00001393: ADD
00001394: CALLDATALOAD
00001395: PUSH1 0x01
00001397: PUSH1 0x01
00001399: PUSH1 0x40
0000139b: SHL
0000139c: SUB
0000139d: DUP2
0000139e: GT
0000139f: ISZERO
000013a0: PUSH2 0x13a7
000013a3: JUMPI
000013a4: DUP3
000013a5: DUP4
000013a6: REVERT
000013a7: JUMPDEST
000013a8: PUSH2 0x13b3
000013ab: DUP8
000013ac: DUP3
000013ad: DUP9
000013ae: ADD
000013af: PUSH2 0x1154
000013b2: JUMP
000013b3: JUMPDEST
000013b4: SWAP6
000013b5: SWAP9
000013b6: SWAP5
000013b7: SWAP8
000013b8: POP
000013b9: SWAP6
000013ba: POP
000013bb: POP
000013bc: POP
000013bd: POP
000013be: JUMP
000013bf: JUMPDEST
000013c0: PUSH1 0x00
000013c2: DUP1
000013c3: PUSH1 0x00
000013c5: DUP1
000013c6: PUSH1 0x00
000013c8: PUSH1 0x80
000013ca: DUP7
000013cb: DUP9
000013cc: SUB
000013cd: SLT
000013ce: ISZERO
000013cf: PUSH2 0x13d6
000013d2: JUMPI
000013d3: DUP3
000013d4: DUP4
000013d5: REVERT
000013d6: JUMPDEST
000013d7: DUP6
000013d8: CALLDATALOAD
000013d9: PUSH2 0x13e1
000013dc: DUP2
000013dd: PUSH2 0x1a9e
000013e0: JUMP
000013e1: JUMPDEST
000013e2: SWAP5
000013e3: POP
000013e4: PUSH1 0x20
000013e6: DUP7
000013e7: ADD
000013e8: CALLDATALOAD
000013e9: SWAP4
000013ea: POP
000013eb: PUSH1 0x40
000013ed: DUP7
000013ee: ADD
000013ef: CALLDATALOAD
000013f0: SWAP3
000013f1: POP
000013f2: PUSH1 0x60
000013f4: DUP7
000013f5: ADD
000013f6: CALLDATALOAD
000013f7: PUSH1 0x01
000013f9: PUSH1 0x01
000013fb: PUSH1 0x40
000013fd: SHL
000013fe: SUB
000013ff: DUP2
00001400: GT
00001401: ISZERO
00001402: PUSH2 0x1409
00001405: JUMPI
00001406: DUP2
00001407: DUP3
00001408: REVERT
00001409: JUMPDEST
0000140a: PUSH2 0x1415
0000140d: DUP9
0000140e: DUP3
0000140f: DUP10
00001410: ADD
00001411: PUSH2 0x1154
00001414: JUMP
00001415: JUMPDEST
00001416: SWAP7
00001417: SWAP10
00001418: SWAP6
00001419: SWAP9
0000141a: POP
0000141b: SWAP4
0000141c: SWAP7
0000141d: POP
0000141e: SWAP3
0000141f: SWAP5
00001420: SWAP4
00001421: SWAP3
00001422: POP
00001423: POP
00001424: POP
00001425: JUMP
00001426: JUMPDEST
00001427: PUSH1 0x00
00001429: PUSH1 0x20
0000142b: DUP3
0000142c: DUP5
0000142d: SUB
0000142e: SLT
0000142f: ISZERO
00001430: PUSH2 0x1437
00001433: JUMPI
00001434: DUP1
00001435: DUP2
00001436: REVERT
00001437: JUMPDEST
00001438: DUP2
00001439: CALLDATALOAD
0000143a: PUSH1 0x01
0000143c: PUSH1 0x01
0000143e: PUSH1 0x40
00001440: SHL
00001441: SUB
00001442: DUP2
00001443: GT
00001444: ISZERO
00001445: PUSH2 0x144c
00001448: JUMPI
00001449: DUP2
0000144a: DUP3
0000144b: REVERT
0000144c: JUMPDEST
0000144d: PUSH2 0x1229
00001450: DUP5
00001451: DUP3
00001452: DUP6
00001453: ADD
00001454: PUSH2 0x1058
00001457: JUMP
00001458: JUMPDEST
00001459: PUSH1 0x00
0000145b: PUSH1 0x20
0000145d: DUP1
0000145e: DUP4
0000145f: DUP6
00001460: SUB
00001461: SLT
00001462: ISZERO
00001463: PUSH2 0x146a
00001466: JUMPI
00001467: DUP2
00001468: DUP3
00001469: REVERT
0000146a: JUMPDEST
0000146b: DUP3
0000146c: MLOAD
0000146d: PUSH1 0x01
0000146f: PUSH1 0x01
00001471: PUSH1 0x40
00001473: SHL
00001474: SUB
00001475: DUP1
00001476: DUP3
00001477: GT
00001478: ISZERO
00001479: PUSH2 0x1480
0000147c: JUMPI
0000147d: DUP4
0000147e: DUP5
0000147f: REVERT
00001480: JUMPDEST
00001481: DUP2
00001482: DUP6
00001483: ADD
00001484: SWAP2
00001485: POP
00001486: DUP6
00001487: PUSH1 0x1f
00001489: DUP4
0000148a: ADD
0000148b: SLT
0000148c: PUSH2 0x1493
0000148f: JUMPI
00001490: DUP4
00001491: DUP5
00001492: REVERT
00001493: JUMPDEST
00001494: DUP2
00001495: MLOAD
00001496: PUSH2 0x14a1
00001499: PUSH2 0x1078
0000149c: DUP3
0000149d: PUSH2 0x1a2a
000014a0: JUMP
000014a1: JUMPDEST
000014a2: DUP2
000014a3: DUP2
000014a4: MSTORE
000014a5: DUP5
000014a6: DUP2
000014a7: ADD
000014a8: SWAP1
000014a9: DUP5
000014aa: DUP7
000014ab: ADD
000014ac: DUP8
000014ad: JUMPDEST
000014ae: DUP5
000014af: DUP2
000014b0: LT
000014b1: ISZERO
000014b2: PUSH2 0x155e
000014b5: JUMPI
000014b6: DUP2
000014b7: MLOAD
000014b8: DUP8
000014b9: ADD
000014ba: PUSH1 0xa0
000014bc: DUP1
000014bd: PUSH1 0x1f
000014bf: NOT
000014c0: DUP4
000014c1: DUP16
000014c2: SUB
000014c3: ADD
000014c4: SLT
000014c5: ISZERO
000014c6: PUSH2 0x14cd
000014c9: JUMPI
000014ca: DUP11
000014cb: DUP12
000014cc: REVERT
000014cd: JUMPDEST
000014ce: PUSH1 0x40
000014d0: DUP1
000014d1: MLOAD
000014d2: DUP3
000014d3: DUP2
000014d4: ADD
000014d5: DUP2
000014d6: DUP2
000014d7: LT
000014d8: DUP12
000014d9: DUP3
000014da: GT
000014db: OR
000014dc: ISZERO
000014dd: PUSH2 0x14e2
000014e0: JUMPI
000014e1: INVALID
000014e2: JUMPDEST
000014e3: DUP3
000014e4: MSTORE
000014e5: PUSH2 0x14ef
000014e8: DUP5
000014e9: DUP14
000014ea: ADD
000014eb: PUSH2 0x1252
000014ee: JUMP
000014ef: JUMPDEST
000014f0: DUP2
000014f1: MSTORE
000014f2: PUSH2 0x14fc
000014f5: DUP3
000014f6: DUP6
000014f7: ADD
000014f8: PUSH2 0x104d
000014fb: JUMP
000014fc: JUMPDEST
000014fd: DUP13
000014fe: DUP3
000014ff: ADD
00001500: MSTORE
00001501: PUSH1 0x60
00001503: PUSH2 0x150d
00001506: DUP2
00001507: DUP7
00001508: ADD
00001509: PUSH2 0x123c
0000150c: JUMP
0000150d: JUMPDEST
0000150e: DUP4
0000150f: DUP4
00001510: ADD
00001511: MSTORE
00001512: PUSH1 0x80
00001514: SWAP3
00001515: POP
00001516: PUSH2 0x1520
00001519: DUP4
0000151a: DUP7
0000151b: ADD
0000151c: PUSH2 0x123c
0000151f: JUMP
00001520: JUMPDEST
00001521: SWAP1
00001522: DUP3
00001523: ADD
00001524: MSTORE
00001525: SWAP2
00001526: DUP4
00001527: ADD
00001528: MLOAD
00001529: SWAP2
0000152a: DUP10
0000152b: DUP4
0000152c: GT
0000152d: ISZERO
0000152e: PUSH2 0x1535
00001531: JUMPI
00001532: DUP13
00001533: DUP14
00001534: REVERT
00001535: JUMPDEST
00001536: PUSH2 0x1543
00001539: DUP16
0000153a: DUP14
0000153b: DUP6
0000153c: DUP8
0000153d: ADD
0000153e: ADD
0000153f: PUSH2 0x11e6
00001542: JUMP
00001543: JUMPDEST
00001544: SWAP2
00001545: DUP2
00001546: ADD
00001547: SWAP2
00001548: SWAP1
00001549: SWAP2
0000154a: MSTORE
0000154b: DUP7
0000154c: MSTORE
0000154d: POP
0000154e: POP
0000154f: SWAP3
00001550: DUP8
00001551: ADD
00001552: SWAP3
00001553: SWAP1
00001554: DUP8
00001555: ADD
00001556: SWAP1
00001557: PUSH1 0x01
00001559: ADD
0000155a: PUSH2 0x14ad
0000155d: JUMP
0000155e: JUMPDEST
0000155f: POP
00001560: SWAP1
00001561: SWAP10
00001562: SWAP9
00001563: POP
00001564: POP
00001565: POP
00001566: POP
00001567: POP
00001568: POP
00001569: POP
0000156a: POP
0000156b: POP
0000156c: JUMP
0000156d: JUMPDEST
0000156e: PUSH1 0x00
00001570: DUP1
00001571: PUSH1 0x40
00001573: DUP4
00001574: DUP6
00001575: SUB
00001576: SLT
00001577: ISZERO
00001578: PUSH2 0x157f
0000157b: JUMPI
0000157c: DUP2
0000157d: DUP3
0000157e: REVERT
0000157f: JUMPDEST
00001580: DUP3
00001581: CALLDATALOAD
00001582: PUSH1 0x01
00001584: PUSH1 0x01
00001586: PUSH1 0x40
00001588: SHL
00001589: SUB
0000158a: DUP2
0000158b: GT
0000158c: ISZERO
0000158d: PUSH2 0x1594
00001590: JUMPI
00001591: DUP3
00001592: DUP4
00001593: REVERT
00001594: JUMPDEST
00001595: PUSH2 0x15a0
00001598: DUP6
00001599: DUP3
0000159a: DUP7
0000159b: ADD
0000159c: PUSH2 0x1058
0000159f: JUMP
000015a0: JUMPDEST
000015a1: SWAP3
000015a2: POP
000015a3: POP
000015a4: PUSH1 0x20
000015a6: DUP4
000015a7: ADD
000015a8: CALLDATALOAD
000015a9: PUSH2 0x15b1
000015ac: DUP2
000015ad: PUSH2 0x1a9e
000015b0: JUMP
000015b1: JUMPDEST
000015b2: DUP1
000015b3: SWAP2
000015b4: POP
000015b5: POP
000015b6: SWAP3
000015b7: POP
000015b8: SWAP3
000015b9: SWAP1
000015ba: POP
000015bb: JUMP
000015bc: JUMPDEST
000015bd: PUSH1 0x00
000015bf: DUP1
000015c0: PUSH1 0x00
000015c2: PUSH1 0x60
000015c4: DUP5
000015c5: DUP7
000015c6: SUB
000015c7: SLT
000015c8: ISZERO
000015c9: PUSH2 0x15d0
000015cc: JUMPI
000015cd: DUP1
000015ce: DUP2
000015cf: REVERT
000015d0: JUMPDEST
000015d1: DUP4
000015d2: CALLDATALOAD
000015d3: PUSH1 0x01
000015d5: PUSH1 0x01
000015d7: PUSH1 0x40
000015d9: SHL
000015da: SUB
000015db: DUP2
000015dc: GT
000015dd: ISZERO
000015de: PUSH2 0x15e5
000015e1: JUMPI
000015e2: DUP2
000015e3: DUP3
000015e4: REVERT
000015e5: JUMPDEST
000015e6: PUSH2 0x15f1
000015e9: DUP7
000015ea: DUP3
000015eb: DUP8
000015ec: ADD
000015ed: PUSH2 0x1058
000015f0: JUMP
000015f1: JUMPDEST
000015f2: SWAP4
000015f3: POP
000015f4: POP
000015f5: PUSH1 0x20
000015f7: DUP5
000015f8: ADD
000015f9: CALLDATALOAD
000015fa: PUSH2 0x1602
000015fd: DUP2
000015fe: PUSH2 0x1ab3
00001601: JUMP
00001602: JUMPDEST
00001603: SWAP3
00001604: SWAP6
00001605: SWAP3
00001606: SWAP5
00001607: POP
00001608: POP
00001609: POP
0000160a: PUSH1 0x40
0000160c: SWAP2
0000160d: SWAP1
0000160e: SWAP2
0000160f: ADD
00001610: CALLDATALOAD
00001611: SWAP1
00001612: JUMP
00001613: JUMPDEST
00001614: PUSH1 0x00
00001616: DUP1
00001617: PUSH1 0x40
00001619: DUP4
0000161a: DUP6
0000161b: SUB
0000161c: SLT
0000161d: ISZERO
0000161e: PUSH2 0x1625
00001621: JUMPI
00001622: DUP2
00001623: DUP3
00001624: REVERT
00001625: JUMPDEST
00001626: DUP3
00001627: CALLDATALOAD
00001628: PUSH1 0x01
0000162a: PUSH1 0x01
0000162c: PUSH1 0x40
0000162e: SHL
0000162f: SUB
00001630: DUP2
00001631: GT
00001632: ISZERO
00001633: PUSH2 0x163a
00001636: JUMPI
00001637: DUP3
00001638: DUP4
00001639: REVERT
0000163a: JUMPDEST
0000163b: PUSH2 0x1646
0000163e: DUP6
0000163f: DUP3
00001640: DUP7
00001641: ADD
00001642: PUSH2 0x1058
00001645: JUMP
00001646: JUMPDEST
00001647: SWAP3
00001648: POP
00001649: POP
0000164a: PUSH1 0x20
0000164c: DUP4
0000164d: ADD
0000164e: CALLDATALOAD
0000164f: PUSH2 0x15b1
00001652: DUP2
00001653: PUSH2 0x1ac1
00001656: JUMP
00001657: JUMPDEST
00001658: PUSH1 0x00
0000165a: PUSH1 0x20
0000165c: DUP3
0000165d: DUP5
0000165e: SUB
0000165f: SLT
00001660: ISZERO
00001661: PUSH2 0x1668
00001664: JUMPI
00001665: DUP1
00001666: DUP2
00001667: REVERT
00001668: JUMPDEST
00001669: DUP2
0000166a: MLOAD
0000166b: PUSH2 0x1279
0000166e: DUP2
0000166f: PUSH2 0x1ab3
00001672: JUMP
00001673: JUMPDEST
00001674: PUSH1 0x00
00001676: PUSH1 0x20
00001678: DUP3
00001679: DUP5
0000167a: SUB
0000167b: SLT
0000167c: ISZERO
0000167d: PUSH2 0x1684
00001680: JUMPI
00001681: DUP1
00001682: DUP2
00001683: REVERT
00001684: JUMPDEST
00001685: POP
00001686: MLOAD
00001687: SWAP2
00001688: SWAP1
00001689: POP
0000168a: JUMP
0000168b: JUMPDEST
0000168c: PUSH1 0x00
0000168e: DUP1
0000168f: PUSH1 0x00
00001691: PUSH1 0x60
00001693: DUP5
00001694: DUP7
00001695: SUB
00001696: SLT
00001697: ISZERO
00001698: PUSH2 0x169f
0000169b: JUMPI
0000169c: DUP1
0000169d: DUP2
0000169e: REVERT
0000169f: JUMPDEST
000016a0: DUP4
000016a1: CALLDATALOAD
000016a2: SWAP3
000016a3: POP
000016a4: PUSH1 0x20
000016a6: DUP5
000016a7: ADD
000016a8: CALLDATALOAD
000016a9: PUSH1 0x01
000016ab: PUSH1 0x01
000016ad: PUSH1 0x40
000016af: SHL
000016b0: SUB
000016b1: DUP2
000016b2: GT
000016b3: ISZERO
000016b4: PUSH2 0x16bb
000016b7: JUMPI
000016b8: DUP2
000016b9: DUP3
000016ba: REVERT
000016bb: JUMPDEST
000016bc: PUSH2 0x16c7
000016bf: DUP7
000016c0: DUP3
000016c1: DUP8
000016c2: ADD
000016c3: PUSH2 0x119a
000016c6: JUMP
000016c7: JUMPDEST
000016c8: SWAP3
000016c9: POP
000016ca: POP
000016cb: PUSH1 0x40
000016cd: DUP5
000016ce: ADD
000016cf: CALLDATALOAD
000016d0: SWAP1
000016d1: POP
000016d2: SWAP3
000016d3: POP
000016d4: SWAP3
000016d5: POP
000016d6: SWAP3
000016d7: JUMP
000016d8: JUMPDEST
000016d9: PUSH1 0x01
000016db: PUSH1 0x01
000016dd: PUSH1 0xa0
000016df: SHL
000016e0: SUB
000016e1: AND
000016e2: SWAP1
000016e3: MSTORE
000016e4: JUMP
000016e5: JUMPDEST
000016e6: PUSH1 0x00
000016e8: DUP2
000016e9: MLOAD
000016ea: DUP1
000016eb: DUP5
000016ec: MSTORE
000016ed: PUSH2 0x16fd
000016f0: DUP2
000016f1: PUSH1 0x20
000016f3: DUP7
000016f4: ADD
000016f5: PUSH1 0x20
000016f7: DUP7
000016f8: ADD
000016f9: PUSH2 0x1a68
000016fc: JUMP
000016fd: JUMPDEST
000016fe: PUSH1 0x1f
00001700: ADD
00001701: PUSH1 0x1f
00001703: NOT
00001704: AND
00001705: SWAP3
00001706: SWAP1
00001707: SWAP3
00001708: ADD
00001709: PUSH1 0x20
0000170b: ADD
0000170c: SWAP3
0000170d: SWAP2
0000170e: POP
0000170f: POP
00001710: JUMP
00001711: JUMPDEST
00001712: DUP1
00001713: MLOAD
00001714: ISZERO
00001715: ISZERO
00001716: DUP3
00001717: MSTORE
00001718: PUSH1 0x20
0000171a: DUP2
0000171b: ADD
0000171c: MLOAD
0000171d: PUSH2 0x1725
00001720: DUP2
00001721: PUSH2 0x1a94
00001724: JUMP
00001725: JUMPDEST
00001726: PUSH1 0x20
00001728: DUP4
00001729: ADD
0000172a: MSTORE
0000172b: PUSH1 0x40
0000172d: DUP2
0000172e: ADD
0000172f: MLOAD
00001730: PUSH2 0x1738
00001733: DUP2
00001734: PUSH2 0x1a94
00001737: JUMP
00001738: JUMPDEST
00001739: PUSH1 0x40
0000173b: DUP4
0000173c: ADD
0000173d: MSTORE
0000173e: PUSH1 0x60
00001740: SWAP1
00001741: DUP2
00001742: ADD
00001743: MLOAD
00001744: SWAP2
00001745: ADD
00001746: MSTORE
00001747: JUMP
00001748: JUMPDEST
00001749: PUSH1 0x01
0000174b: PUSH1 0x01
0000174d: PUSH1 0xa0
0000174f: SHL
00001750: SUB
00001751: SWAP2
00001752: SWAP1
00001753: SWAP2
00001754: AND
00001755: DUP2
00001756: MSTORE
00001757: PUSH1 0x20
00001759: ADD
0000175a: SWAP1
0000175b: JUMP
0000175c: JUMPDEST
0000175d: PUSH1 0x01
0000175f: PUSH1 0x01
00001761: PUSH1 0xa0
00001763: SHL
00001764: SUB
00001765: SWAP3
00001766: SWAP1
00001767: SWAP3
00001768: AND
00001769: DUP3
0000176a: MSTORE
0000176b: PUSH1 0x20
0000176d: DUP3
0000176e: ADD
0000176f: MSTORE
00001770: PUSH1 0x40
00001772: ADD
00001773: SWAP1
00001774: JUMP
00001775: JUMPDEST
00001776: PUSH1 0x01
00001778: PUSH1 0x01
0000177a: PUSH1 0xa0
0000177c: SHL
0000177d: SUB
0000177e: SWAP3
0000177f: DUP4
00001780: AND
00001781: DUP2
00001782: MSTORE
00001783: SWAP2
00001784: AND
00001785: PUSH1 0x20
00001787: DUP3
00001788: ADD
00001789: MSTORE
0000178a: PUSH1 0x40
0000178c: ADD
0000178d: SWAP1
0000178e: JUMP
0000178f: JUMPDEST
00001790: PUSH1 0x40
00001792: DUP1
00001793: DUP3
00001794: MSTORE
00001795: DUP4
00001796: MLOAD
00001797: DUP3
00001798: DUP3
00001799: ADD
0000179a: DUP2
0000179b: SWAP1
0000179c: MSTORE
0000179d: PUSH1 0x00
0000179f: SWAP2
000017a0: SWAP1
000017a1: PUSH1 0x60
000017a3: SWAP1
000017a4: DUP2
000017a5: DUP6
000017a6: ADD
000017a7: SWAP1
000017a8: PUSH1 0x20
000017aa: DUP1
000017ab: DUP10
000017ac: ADD
000017ad: DUP7
000017ae: JUMPDEST
000017af: DUP4
000017b0: DUP2
000017b1: LT
000017b2: ISZERO
000017b3: PUSH2 0x17dc
000017b6: JUMPI
000017b7: DUP2
000017b8: MLOAD
000017b9: DUP1
000017ba: MLOAD
000017bb: PUSH1 0x01
000017bd: PUSH1 0x01
000017bf: PUSH1 0xa0
000017c1: SHL
000017c2: SUB
000017c3: AND
000017c4: DUP7
000017c5: MSTORE
000017c6: DUP4
000017c7: ADD
000017c8: MLOAD
000017c9: DUP4
000017ca: DUP7
000017cb: ADD
000017cc: MSTORE
000017cd: SWAP4
000017ce: DUP7
000017cf: ADD
000017d0: SWAP4
000017d1: SWAP1
000017d2: DUP3
000017d3: ADD
000017d4: SWAP1
000017d5: PUSH1 0x01
000017d7: ADD
000017d8: PUSH2 0x17ae
000017db: JUMP
000017dc: JUMPDEST
000017dd: POP
000017de: POP
000017df: DUP7
000017e0: DUP4
000017e1: SUB
000017e2: DUP2
000017e3: DUP9
000017e4: ADD
000017e5: MSTORE
000017e6: DUP8
000017e7: MLOAD
000017e8: DUP1
000017e9: DUP5
000017ea: MSTORE
000017eb: DUP2
000017ec: DUP5
000017ed: ADD
000017ee: SWAP3
000017ef: POP
000017f0: DUP1
000017f1: DUP3
000017f2: MUL
000017f3: DUP5
000017f4: ADD
000017f5: DUP3
000017f6: ADD
000017f7: DUP10
000017f8: DUP4
000017f9: ADD
000017fa: DUP9
000017fb: JUMPDEST
000017fc: DUP4
000017fd: DUP2
000017fe: LT
000017ff: ISZERO
00001800: PUSH2 0x189e
00001803: JUMPI
00001804: PUSH1 0x1f
00001806: NOT
00001807: DUP8
00001808: DUP5
00001809: SUB
0000180a: ADD
0000180b: DUP7
0000180c: MSTORE
0000180d: DUP2
0000180e: MLOAD
0000180f: PUSH2 0x0160
00001812: DUP2
00001813: MLOAD
00001814: PUSH1 0x09
00001816: DUP2
00001817: LT
00001818: PUSH2 0x181d
0000181b: JUMPI
0000181c: INVALID
0000181d: JUMPDEST
0000181e: DUP6
0000181f: MSTORE
00001820: DUP2
00001821: DUP8
00001822: ADD
00001823: MLOAD
00001824: DUP8
00001825: DUP7
00001826: ADD
00001827: MSTORE
00001828: DUP11
00001829: DUP3
0000182a: ADD
0000182b: MLOAD
0000182c: PUSH2 0x1837
0000182f: DUP13
00001830: DUP8
00001831: ADD
00001832: DUP3
00001833: PUSH2 0x1711
00001836: JUMP
00001837: JUMPDEST
00001838: POP
00001839: DUP10
0000183a: DUP3
0000183b: ADD
0000183c: MLOAD
0000183d: PUSH1 0xc0
0000183f: DUP2
00001840: DUP2
00001841: DUP9
00001842: ADD
00001843: MSTORE
00001844: PUSH1 0x80
00001846: DUP5
00001847: ADD
00001848: MLOAD
00001849: SWAP2
0000184a: POP
0000184b: PUSH1 0xe0
0000184d: DUP3
0000184e: DUP2
0000184f: DUP10
00001850: ADD
00001851: MSTORE
00001852: PUSH1 0xa0
00001854: DUP6
00001855: ADD
00001856: MLOAD
00001857: SWAP3
00001858: POP
00001859: PUSH2 0x1866
0000185c: PUSH2 0x0100
0000185f: DUP10
00001860: ADD
00001861: DUP5
00001862: PUSH2 0x16d8
00001865: JUMP
00001866: JUMPDEST
00001867: SWAP1
00001868: DUP5
00001869: ADD
0000186a: MLOAD
0000186b: PUSH2 0x0120
0000186e: DUP9
0000186f: ADD
00001870: MSTORE
00001871: SWAP1
00001872: SWAP3
00001873: ADD
00001874: MLOAD
00001875: PUSH2 0x0140
00001878: DUP7
00001879: ADD
0000187a: DUP3
0000187b: SWAP1
0000187c: MSTORE
0000187d: SWAP2
0000187e: POP
0000187f: PUSH2 0x188a
00001882: DUP2
00001883: DUP7
00001884: ADD
00001885: DUP4
00001886: PUSH2 0x16e5
00001889: JUMP
0000188a: JUMPDEST
0000188b: SWAP8
0000188c: DUP8
0000188d: ADD
0000188e: SWAP8
0000188f: SWAP5
00001890: POP
00001891: POP
00001892: POP
00001893: SWAP1
00001894: DUP5
00001895: ADD
00001896: SWAP1
00001897: PUSH1 0x01
00001899: ADD
0000189a: PUSH2 0x17fb
0000189d: JUMP
0000189e: JUMPDEST
0000189f: POP
000018a0: SWAP1
000018a1: SWAP12
000018a2: SWAP11
000018a3: POP
000018a4: POP
000018a5: POP
000018a6: POP
000018a7: POP
000018a8: POP
000018a9: POP
000018aa: POP
000018ab: POP
000018ac: POP
000018ad: POP
000018ae: JUMP
000018af: JUMPDEST
000018b0: SWAP1
000018b1: ISZERO
000018b2: ISZERO
000018b3: DUP2
000018b4: MSTORE
000018b5: PUSH1 0x20
000018b7: ADD
000018b8: SWAP1
000018b9: JUMP
000018ba: JUMPDEST
000018bb: PUSH1 0x00
000018bd: PUSH1 0x40
000018bf: DUP3
000018c0: MSTORE
000018c1: PUSH2 0x18cd
000018c4: PUSH1 0x40
000018c6: DUP4
000018c7: ADD
000018c8: DUP6
000018c9: PUSH2 0x16e5
000018cc: JUMP
000018cd: JUMPDEST
000018ce: SWAP1
000018cf: POP
000018d0: DUP3
000018d1: PUSH1 0x20
000018d3: DUP4
000018d4: ADD
000018d5: MSTORE
000018d6: SWAP4
000018d7: SWAP3
000018d8: POP
000018d9: POP
000018da: POP
000018db: JUMP
000018dc: JUMPDEST
000018dd: PUSH1 0x20
000018df: DUP1
000018e0: DUP3
000018e1: MSTORE
000018e2: PUSH1 0x03
000018e4: SWAP1
000018e5: DUP3
000018e6: ADD
000018e7: MSTORE
000018e8: PUSH3 0x677277
000018ec: PUSH1 0xe8
000018ee: SHL
000018ef: PUSH1 0x40
000018f1: DUP3
000018f2: ADD
000018f3: MSTORE
000018f4: PUSH1 0x60
000018f6: ADD
000018f7: SWAP1
000018f8: JUMP
000018f9: JUMPDEST
000018fa: PUSH1 0x20
000018fc: DUP1
000018fd: DUP3
000018fe: MSTORE
000018ff: PUSH1 0x03
00001901: SWAP1
00001902: DUP3
00001903: ADD
00001904: MSTORE
00001905: PUSH3 0x31b7b7
00001909: PUSH1 0xe9
0000190b: SHL
0000190c: PUSH1 0x40
0000190e: DUP3
0000190f: ADD
00001910: MSTORE
00001911: PUSH1 0x60
00001913: ADD
00001914: SWAP1
00001915: JUMP
00001916: JUMPDEST
00001917: PUSH1 0x20
00001919: DUP1
0000191a: DUP3
0000191b: MSTORE
0000191c: PUSH1 0x03
0000191e: SWAP1
0000191f: DUP3
00001920: ADD
00001921: MSTORE
00001922: PUSH3 0x062633
00001926: PUSH1 0xec
00001928: SHL
00001929: PUSH1 0x40
0000192b: DUP3
0000192c: ADD
0000192d: MSTORE
0000192e: PUSH1 0x60
00001930: ADD
00001931: SWAP1
00001932: JUMP
00001933: JUMPDEST
00001934: PUSH1 0x20
00001936: DUP1
00001937: DUP3
00001938: MSTORE
00001939: PUSH1 0x03
0000193b: SWAP1
0000193c: DUP3
0000193d: ADD
0000193e: MSTORE
0000193f: PUSH3 0x1d58dd
00001943: PUSH1 0xea
00001945: SHL
00001946: PUSH1 0x40
00001948: DUP3
00001949: ADD
0000194a: MSTORE
0000194b: PUSH1 0x60
0000194d: ADD
0000194e: SWAP1
0000194f: JUMP
00001950: JUMPDEST
00001951: PUSH1 0x20
00001953: DUP1
00001954: DUP3
00001955: MSTORE
00001956: PUSH1 0x03
00001958: SWAP1
00001959: DUP3
0000195a: ADD
0000195b: MSTORE
0000195c: PUSH3 0x627273
00001960: PUSH1 0xe8
00001962: SHL
00001963: PUSH1 0x40
00001965: DUP3
00001966: ADD
00001967: MSTORE
00001968: PUSH1 0x60
0000196a: ADD
0000196b: SWAP1
0000196c: JUMP
0000196d: JUMPDEST
0000196e: PUSH1 0x20
00001970: DUP1
00001971: DUP3
00001972: MSTORE
00001973: PUSH1 0x03
00001975: SWAP1
00001976: DUP3
00001977: ADD
00001978: MSTORE
00001979: PUSH3 0x736d63
0000197d: PUSH1 0xe8
0000197f: SHL
00001980: PUSH1 0x40
00001982: DUP3
00001983: ADD
00001984: MSTORE
00001985: PUSH1 0x60
00001987: ADD
00001988: SWAP1
00001989: JUMP
0000198a: JUMPDEST
0000198b: PUSH1 0x20
0000198d: DUP1
0000198e: DUP3
0000198f: MSTORE
00001990: PUSH1 0x03
00001992: SWAP1
00001993: DUP3
00001994: ADD
00001995: MSTORE
00001996: PUSH3 0x63686d
0000199a: PUSH1 0xe8
0000199c: SHL
0000199d: PUSH1 0x40
0000199f: DUP3
000019a0: ADD
000019a1: MSTORE
000019a2: PUSH1 0x60
000019a4: ADD
000019a5: SWAP1
000019a6: JUMP
000019a7: JUMPDEST
000019a8: PUSH1 0x20
000019aa: DUP1
000019ab: DUP3
000019ac: MSTORE
000019ad: PUSH1 0x03
000019af: SWAP1
000019b0: DUP3
000019b1: ADD
000019b2: MSTORE
000019b3: PUSH3 0x31b43d
000019b7: PUSH1 0xe9
000019b9: SHL
000019ba: PUSH1 0x40
000019bc: DUP3
000019bd: ADD
000019be: MSTORE
000019bf: PUSH1 0x60
000019c1: ADD
000019c2: SWAP1
000019c3: JUMP
000019c4: JUMPDEST
000019c5: PUSH1 0x20
000019c7: DUP1
000019c8: DUP3
000019c9: MSTORE
000019ca: PUSH1 0x03
000019cc: SWAP1
000019cd: DUP3
000019ce: ADD
000019cf: MSTORE
000019d0: PUSH3 0x626331
000019d4: PUSH1 0xe8
000019d6: SHL
000019d7: PUSH1 0x40
000019d9: DUP3
000019da: ADD
000019db: MSTORE
000019dc: PUSH1 0x60
000019de: ADD
000019df: SWAP1
000019e0: JUMP
000019e1: JUMPDEST
000019e2: PUSH1 0x20
000019e4: DUP1
000019e5: DUP3
000019e6: MSTORE
000019e7: PUSH1 0x03
000019e9: SWAP1
000019ea: DUP3
000019eb: ADD
000019ec: MSTORE
000019ed: PUSH3 0x0eaced
000019f1: PUSH1 0xeb
000019f3: SHL
000019f4: PUSH1 0x40
000019f6: DUP3
000019f7: ADD
000019f8: MSTORE
000019f9: PUSH1 0x60
000019fb: ADD
000019fc: SWAP1
000019fd: JUMP
000019fe: JUMPDEST
000019ff: SWAP1
00001a00: DUP2
00001a01: MSTORE
00001a02: PUSH1 0x20
00001a04: ADD
00001a05: SWAP1
00001a06: JUMP
00001a07: JUMPDEST
00001a08: PUSH1 0x40
00001a0a: MLOAD
00001a0b: DUP2
00001a0c: DUP2
00001a0d: ADD
00001a0e: PUSH1 0x01
00001a10: PUSH1 0x01
00001a12: PUSH1 0x40
00001a14: SHL
00001a15: SUB
00001a16: DUP2
00001a17: GT
00001a18: DUP3
00001a19: DUP3
00001a1a: LT
00001a1b: OR
00001a1c: ISZERO
00001a1d: PUSH2 0x1a22
00001a20: JUMPI
00001a21: INVALID
00001a22: JUMPDEST
00001a23: PUSH1 0x40
00001a25: MSTORE
00001a26: SWAP2
00001a27: SWAP1
00001a28: POP
00001a29: JUMP
00001a2a: JUMPDEST
00001a2b: PUSH1 0x00
00001a2d: PUSH1 0x01
00001a2f: PUSH1 0x01
00001a31: PUSH1 0x40
00001a33: SHL
00001a34: SUB
00001a35: DUP3
00001a36: GT
00001a37: ISZERO
00001a38: PUSH2 0x1a3d
00001a3b: JUMPI
00001a3c: INVALID
00001a3d: JUMPDEST
00001a3e: POP
00001a3f: PUSH1 0x20
00001a41: SWAP1
00001a42: DUP2
00001a43: MUL
00001a44: ADD
00001a45: SWAP1
00001a46: JUMP
00001a47: JUMPDEST
00001a48: PUSH1 0x00
00001a4a: PUSH1 0x01
00001a4c: PUSH1 0x01
00001a4e: PUSH1 0x40
00001a50: SHL
00001a51: SUB
00001a52: DUP3
00001a53: GT
00001a54: ISZERO
00001a55: PUSH2 0x1a5a
00001a58: JUMPI
00001a59: INVALID
00001a5a: JUMPDEST
00001a5b: POP
00001a5c: PUSH1 0x1f
00001a5e: ADD
00001a5f: PUSH1 0x1f
00001a61: NOT
00001a62: AND
00001a63: PUSH1 0x20
00001a65: ADD
00001a66: SWAP1
00001a67: JUMP
00001a68: JUMPDEST
00001a69: PUSH1 0x00
00001a6b: JUMPDEST
00001a6c: DUP4
00001a6d: DUP2
00001a6e: LT
00001a6f: ISZERO
00001a70: PUSH2 0x1a83
00001a73: JUMPI
00001a74: DUP2
00001a75: DUP2
00001a76: ADD
00001a77: MLOAD
00001a78: DUP4
00001a79: DUP3
00001a7a: ADD
00001a7b: MSTORE
00001a7c: PUSH1 0x20
00001a7e: ADD
00001a7f: PUSH2 0x1a6b
00001a82: JUMP
00001a83: JUMPDEST
00001a84: DUP4
00001a85: DUP2
00001a86: GT
00001a87: ISZERO
00001a88: PUSH2 0x0aba
00001a8b: JUMPI
00001a8c: POP
00001a8d: POP
00001a8e: PUSH1 0x00
00001a90: SWAP2
00001a91: ADD
00001a92: MSTORE
00001a93: JUMP
00001a94: JUMPDEST
00001a95: PUSH1 0x02
00001a97: DUP2
00001a98: LT
00001a99: PUSH2 0x07b5
00001a9c: JUMPI
00001a9d: INVALID
00001a9e: JUMPDEST
00001a9f: PUSH1 0x01
00001aa1: PUSH1 0x01
00001aa3: PUSH1 0xa0
00001aa5: SHL
00001aa6: SUB
00001aa7: DUP2
00001aa8: AND
00001aa9: DUP2
00001aaa: EQ
00001aab: PUSH2 0x07b5
00001aae: JUMPI
00001aaf: PUSH1 0x00
00001ab1: DUP1
00001ab2: REVERT
00001ab3: JUMPDEST
00001ab4: DUP1
00001ab5: ISZERO
00001ab6: ISZERO
00001ab7: DUP2
00001ab8: EQ
00001ab9: PUSH2 0x07b5
00001abc: JUMPI
00001abd: PUSH1 0x00
00001abf: DUP1
00001ac0: REVERT
00001ac1: JUMPDEST
00001ac2: PUSH1 0x01
00001ac4: PUSH1 0x01
00001ac6: PUSH1 0x80
00001ac8: SHL
00001ac9: SUB
00001aca: DUP2
00001acb: AND
00001acc: DUP2
00001acd: EQ
00001ace: PUSH2 0x07b5
00001ad1: JUMPI
00001ad2: PUSH1 0x00
00001ad4: DUP1
00001ad5: REVERT
00001ad6: JUMPDEST
00001ad7: PUSH1 0xff
00001ad9: DUP2
00001ada: AND
00001adb: DUP2
00001adc: EQ
00001add: PUSH2 0x07b5
00001ae0: JUMPI
00001ae1: PUSH1 0x00
00001ae3: DUP1
00001ae4: REVERT
00001ae5: INVALID
00001ae6: LOG2
00001ae7: PUSH5 0x6970667358
00001aed: UNKNOWN(0x22)
00001aee: SLT
00001aef: KECCAK256
00001af0: UNKNOWN(0xB5)
00001af1: EXP
00001af2: LOG3
00001af3: UNKNOWN(0x24)
00001af4: PUSH3 0xc73d23
00001af8: DUP14
00001af9: LOG4
00001afa: UNKNOWN(0xB4)
00001afb: UNKNOWN(0xE2)
00001afc: UNKNOWN(0xD3)
00001afd: EXTCODECOPY
00001afe: PUSH25 0x86f89adaba289b1589c9e80adb7926cebe64736f6c63430007
00001b18: MOD
00001b19: STOP
00001b1a: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43
call_targets: 0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77"
    ],
    "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": "0x96de31e0",
            "selector": "0x96de31e0",
            "calldata_variants": [
                "0x96de31e0",
                "0x96de31e00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x99f5e5cb",
            "selector": "0x99f5e5cb",
            "calldata_variants": [
                "0x99f5e5cb",
                "0x99f5e5cb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xade9b374",
            "selector": "0xade9b374",
            "calldata_variants": [
                "0xade9b374",
                "0xade9b3740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc0ee0b8a",
            "selector": "0xc0ee0b8a",
            "calldata_variants": [
                "0xc0ee0b8a",
                "0xc0ee0b8a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xed3dae64",
            "selector": "0xed3dae64",
            "calldata_variants": [
                "0xed3dae64",
                "0xed3dae640000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf50c1ed1",
            "selector": "0xf50c1ed1",
            "calldata_variants": [
                "0xf50c1ed1",
                "0xf50c1ed10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06c74e8d",
            "selector": "0x06c74e8d",
            "calldata_variants": [
                "0x06c74e8d",
                "0x06c74e8d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0f032cbe",
            "selector": "0x0f032cbe",
            "calldata_variants": [
                "0x0f032cbe",
                "0x0f032cbe0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1259,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1951,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2685,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 6,
    "guards_detected": [
        {
            "pc": 2140,
            "type": "msg_sender_eq_const",
            "value": 1.7136517151476955e+47
        },
        {
            "pc": 2118,
            "type": "msg_sender_eq_const",
            "value": "0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e"
        }
    ],
    "untrusted_call_count": 6
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43
call_targets: 0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x2ccb2366c4dac374364a4479f2c93a0ad66f40d0e34106d37facd3412f783e43",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x283949d7c2ad3c8bca304df6aa5d9a2a78e02b77"
    ],
    "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": "0x96de31e0",
            "selector": "0x96de31e0",
            "calldata_variants": [
                "0x96de31e0",
                "0x96de31e00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x99f5e5cb",
            "selector": "0x99f5e5cb",
            "calldata_variants": [
                "0x99f5e5cb",
                "0x99f5e5cb0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xade9b374",
            "selector": "0xade9b374",
            "calldata_variants": [
                "0xade9b374",
                "0xade9b3740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc0ee0b8a",
            "selector": "0xc0ee0b8a",
            "calldata_variants": [
                "0xc0ee0b8a",
                "0xc0ee0b8a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xed3dae64",
            "selector": "0xed3dae64",
            "calldata_variants": [
                "0xed3dae64",
                "0xed3dae640000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf50c1ed1",
            "selector": "0xf50c1ed1",
            "calldata_variants": [
                "0xf50c1ed1",
                "0xf50c1ed10000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06c74e8d",
            "selector": "0x06c74e8d",
            "calldata_variants": [
                "0x06c74e8d",
                "0x06c74e8d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0f032cbe",
            "selector": "0x0f032cbe",
            "calldata_variants": [
                "0x0f032cbe",
                "0x0f032cbe0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1259,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1951,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2685,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 6,
    "guards_detected": [
        {
            "pc": 2140,
            "type": "msg_sender_eq_const",
            "value": 1.7136517151476955e+47
        },
        {
            "pc": 2118,
            "type": "msg_sender_eq_const",
            "value": "0x1e0447b19bb6ecfdae1e4ae1694b0c3659614e4e"
        }
    ]
}
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": 13
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 14
}